Hey guys.
As said in the topic title, I’m currently developing a 2.5D Dodgeball game, very similar in the style of Super Dodge Ball back on the NES. I plan to render/compile all the assets in 3D, but keep things on a XY plane.
However, I’m having a lot more difficulty with a couple of things more than I thought I would. No matter what variables I try to define, the game just will not do what I want it to do, and unfortunately since there aren’t many dodgeball games, I don’t have much information to go off of, so I’m doing this completely blind. Perhaps someone here might know of a solution.
Okay, issues:
BOUNDARIES: I have 4 main components/areas I want to establish for the court. 1) Attack Zones, 2)Side Zones, 3) End Zones, and 4) Centerline, just like in… well… dodgeball. I want to set up specific areas for Team A and Team B. Both teams are allowed in the Centerline, but (Unless player/AI has possession of the ball and is doing a running dash) I want it so that normally, each team can only navigate in their respective Home Locations. I.E. I don’t want Team B bum rushing onto Team A’s side of the field to attack the players/retrieve the ball when Team A has possession of the ball.
I can’t figure out how to establish individual NavMeshes to create each zone and specifically tie it to Team A and Team B. All I know how to do is establish a NavMesh, but it’s applying to all* AI, not two separate AI algorithms.
BALL/AI SENSING: In relation to the boundaries, here’s the other major issue I’m having. The dodgeball is much more complex than I originally gave it credit for. I’m still trying to figure out how to classify the dodgeball itself, since it most certainly could be an actor, pawn, or physicsbody. There will be only one ball in play throughout the entire game (Just like in Super Dodge Ball). The ball itself won’t move, unless activated by Player/AI picking it up, then it’ll be attached/equipped to that person once activated. (Tried using the “SetOwner” function and game didn’t want to interpret the ball as a valid variable). Much later on, I’m going to use an RPG-like stat system for the players, so each player in throwing the ball will have different calculated variables, so my line of thinking was just making it a static mesh/physics body that can be edited depending on who it’s owner is.
Basically I want the ball being fairly dynamic when it’s not colliding with any of the players. When it does collide with a mesh, I want the ball’s inertia to stop after registering as a hit event (during applying damage to the hit player) and kinda slowly comes to a dead drop to the ground, instead of immediately flying back to the original team (Who threw the ball) field, if you apply normal physics to it. I’m doing this mostly for balancing and so that the game has enough time to calculate/apply damage and the teammate AI’s state will be set to idle until the ball comes to a complete halt on the court before picking it up.
The other problem I’m having is getting the AI to detect the ball in the first place. I know how to set up AI detecting Player via detecting controller input or player walking in the line of sight of AI view. Setting up AI to just primarily focus on sensing where the ball is in relation to them/their home zone is the tricky part. I dunno how to set up the ball as a variable that’s valid for getting the AI Sense to know that the ball is the main target, then the state will change once the ball is either in their possession, or the enemy’s possession.
I’ve tried looking up various methods of controller handles and AI logic nodes, but it’s generally for a basic platforming and third person game, not confined in such a short space with different variables depicting how/what an AI needs to interpret/do in relation to what’s going on the field.
Any help or hints to what I need to kinda narrow down my selections would be immensely helpful. Thanks guys!