So You Want to Make Your Own Stickman Fighter Epic Battle
I spent way too long trying to build a custom Stickman Fighter Epic Battle mod after I got annoyed that the default character moves felt floaty. What I figured out over the next few months ended up being more about timing and input handling than any fancy graphics work. The engine this is built on, RAG Doll Fighter or similar 2D frameworks, doesn't care how clean your art is. It cares about frame data and collision boxes. Everyone starts by drawing stick figures and slapping together a kick and a punch animation. That part takes an afternoon. The part nobody tells you about is the hitstop and recovery frames. In the base game, when a character gets hit, the opponent freezes for about 4 to 8 frames depending on the attack strength. If you skip implementing that correctly, your fighting game feels like it is running through mud or completely loose, and players will click away with abandon because there is no weight to anything. I learned this the hard way during my second build. I had all the animations in place, the movement felt decent, but every match played the same as a casual rhythm game. Punches landed with no feedback at all. I checked the collision detection first because that is usually the culprit, but the hitboxes were firing correctly. The issue was buried in the state machine. My characters never actually entered a hitstun state. They just kept playing their attack animation through the contact frame, which means the attacker could cancel into another move before the opponent even registered they got hit. That is an immediate combo breaker for anyone who tested it, but completely invisible to you while you are building because everything still registers as a hit.
The fix was inserting a rigid state lock. When a hitbox connects, both characters are forced into their respective stun states for the exact duration defined in the move data. No input from either player during that window. In practice this added roughly two weeks of iteration because getting the frame counts right required playtesting against actual human opponents, not just watching your own code. The numbers in the manual are suggestions. You adjust them until the matchups feel fair, which is usually after you have broken something three or four times.
Setting Up the Core Engine
You do not need a full Unity project for this. Most people who ship functional Stickman Fighter Epic Battle games start with a simpler setup. I used a combination of Pygame and a custom animation controller, but the same principles apply whether you are using Godot, Phaser, or whatever framework you prefer. The critical pieces are the sprite sheet parser, the input handler, and the collision system. For the sprite sheets, each character needs separate sheets for idle, walk, jump, crouch, and every attack move. I store these as JSON arrays where each entry maps to a frame number and a duration in milliseconds. A standard punch might run for 32 frames at 60fps, which gives you roughly half a second of animation time. Break that down into startup, active, and recovery frames, and you already have your move data structure. The input handler is where most beginners fail. You need a buffer system that accepts input up to 10 frames before the action actually occurs. This is called input buffering and it makes the difference between a character that responds perfectly and one that feels unresponsive. Without a buffer, pressing jump at exactly frame 59 of a landing animation when the game checks input at frame 60 will cause the jump to register on the next cycle, which feels laggy. With a 10-frame buffer, the input is queued and executed the moment the character becomes airborne.
Get the Full Details
For collision, use axis-aligned bounding boxes for the hitboxes and hurtboxes. A hitbox is the area where an attack can connect. A hurtbox is the area where a character can be hit. You separate these two so that a wide sweeping kick has a large hitbox but the character body still has a consistent hurtbox regardless of pose. Tracking this per frame through the animation data is tedious but necessary. I used a spreadsheet to map each frame of each animation to its corresponding hitbox and hurtbox coordinates, then wrote a loader that reads those values into the game loop.
Build Process and Common Pitfalls
The actual build process is straightforward once you have the assets and the core systems in place. Export your animations as individual frames or a sprite sheet. Set up the state machine with clear transitions between idle, moving, attacking, and stunned. Wire the input handler to read keyboard or controller input and queue commands. Implement the collision detection to check hitbox against hurtbox every frame. Add the hitstop and recovery logic. Then test. Testing is the part where things usually fall apart. I recommend you build a debug mode that overlays hitboxes and hurtboxes on screen during gameplay. Without this, you are guessing at collision points and wasting hours adjusting numbers that are already close to correct. With the debug overlay, you can see immediately if a punch hitbox is too short or if a kick recovery frame is leaving the character exposed for too long. Another pitfall to watch for is the combo system. If you want players to chain attacks together, you need a combo counter and a damage scaling formula. Otherwise early hits do full damage and later hits in a sequence do full damage again, which breaks the balance completely. Most fighting games reduce damage by a percentage after the second or third consecutive hit. A typical formula looks like damage multiplied by 0.8 to the power of combo hits minus one. This means the fourth hit does roughly fifty-two percent of the original damage. It is not perfect but it stops players from infinite chaining and keeps matches from ending in three seconds.
Where This Approach Breaks Down
Building a functional Stickman Fighter Epic Battle from scratch this way is fine if you are doing it for learning or a small mod. The approach does not scale well if you want to add online multiplayer, which requires a server architecture with rollback netcode to handle lag. Syncing state between two machines in a fighting game is a much larger engineering problem than the local version. If you plan to add multiplayer, you should integrate a netcode library from the start rather than retrofitting it later. Retrofitting netcode into an existing project almost never works cleanly and usually requires rewriting the entire input and state system. There is also the asset creation bottleneck. Hand-drawing animation frames for multiple characters is extremely time consuming. A single character with eight moves and four basic states might need over two hundred individual frames. If you are not skilled at animation yourself, you will either need to learn quickly or find existing assets to modify. Some developers skip this by using procedural stick figure rendering, which generates the limb positions mathematically based on animation data rather than drawing each frame. This is faster and gives you smooth interpolation between poses, but it looks less polished than hand-drawn sprites. You have to decide which tradeoff matters more for your project. If you want a pre-built version to experiment with, searching the web for a released Stickman Fighter Epic Battle executable or source code is the quickest path. There are several open source versions on GitHub that you can modify directly, which saves you from building the engine yourself. The downside of using someone else code is that you inherit whatever architecture choices they made, and those choices may not align with what you need. Still, for most people modifying an existing project is faster than starting from zero, and the codebase gives you a reference for how the systems actually connect.

The short version of all this is that the hardest part of making a fighting game is not the graphics or the movement. It is the frame data and the state management. Get those right and everything else follows. Get them wrong and no amount of visual polish will make the game feel good to play.