← Back to KO Casino

πŸ₯Š Character Maker β€” Complete Guide

Build a fighter from scratch or from a sprite sheet, give it animations and moves, test it against the AI, and publish it for everyone to play. The maker exports real MUGEN-format files (SFF, AIR, CNS, CMD, SND), so what you build runs on the actual fighting engine.

You must be logged in to use the Character Maker. This guide is long on purpose β€” skim the table of contents and jump to what you need.

1. How a fighter is built (concepts) 2. Interface tour 3. Standard action numbers 4. Importing a sprite sheet 5. Drawing & the pixel editor 6. Animations & frames 7. Hit & hurt boxes (Clsn) 8. Moves & commands 9. Input notation & controls 10. Sounds 11. Character settings 12. Testing your fighter 13. Save, publish, export 14. Troubleshooting 15. Glossary 16. Full walkthrough

1. How a fighter is built (concepts)

A MUGEN-style fighter is four things working together. The maker hides most of the file-format detail, but understanding the pieces makes everything click:

The key mental model: an attack is an Action number that is BOTH an animation and a state. You draw/import the animation under, say, action 200; you add a move whose Anim/state # is 200 and whose Input is the button that triggers it. Press the button β†’ the engine changes to state 200 β†’ it plays animation 200 and applies the hit.

2. Interface tour

The maker is three columns with a test area underneath.

Left column

Center column

Right column

Bottom β€” βš” Test Your Fighter

The full fight area: a roster, library pickers, stage, P1/P2 controls, the fight canvas, and FIGHT β€” so you can build and test in one place.

3. Standard action numbers

The engine triggers specific action numbers for built-in behavior. Number your animations to match so your fighter behaves correctly. Action 0 is required β€” it's the resting/idle animation; without it the fighter won't show.

Action #Used forNotes
0Stand / idleRequired. Played whenever the fighter is at rest.
10–12Crouch (down, hold, up)Played while holding Down.
20Walk forward21 = walk back.
40Jump (up)41/42 = jump fwd/back; 43–47 = land/air-transitions.
100Run / dash forward105 = hop back.
120–155Guard (stand/crouch/air)Played while blocking.
200Stand light attackThe default punch move points here.
210 / 230 / 240Strong punch / light kick / strong kickAdd more attacks on these.
5000–5080Get-hit / hurt / knockdown5000 = light stand hit; great to have at least one.
190Round intro posePlays once at round start, then returns to idle.
180Win posePlays on victory.

You can use any number for custom moves (e.g. 1000, 1010) and point a move's Anim/state # at it. The numbers above are the ones the engine looks for on its own.

4. Importing a sprite sheet

Click πŸ–Ό Import sprite sheet…. A sprite sheet is one image holding many small poses. The importer turns regions of it into animation frames, one move at a time.

Step by step

  1. Choose File β€” load a PNG or JPG. The full sheet appears, scaled up.
  2. The top-left pixel is treated as the transparent background. Make sure your sheet's background is a flat color in that corner.
  3. Drag a box around the first sprite of the move you want. The selection sets the cell's position and size. You can fine-tune the numbers by hand: Col offset (x), Row (y), Cell W, Cell H.
  4. Set the target Action # (see section 3) and how many Frames to grab.
  5. Choose how to import:
    • ⬆ Import row β†’ action β€” grabs Frames cells in a row, each Cell W apart. Best when the sprites are evenly spaced.
    • οΌ‹ Add 1 frame β€” appends just the selected cell as one frame. Use this for messy sheets where sprites are different sizes / unevenly spaced: drag a box around each pose individually and add them one by one. Each frame keeps its own width, so nothing is squished.
  6. The frames you've imported for the current Action # appear in the frame strip. To fix a frame that's cut off: click it in the strip, drag a new (wider) box on the sheet, then ↻ Replace selected.
  7. Change the Action # and repeat for the next move.

Importer options

ControlWhat it does
Col offset (x) / Row (y)Top-left corner of the first cell, in sheet pixels.
Cell W / Cell HSize of one sprite cell. Height becomes the canvas height on the first import; width is preserved per-frame by aspect.
FramesHow many cells across "Import row" grabs.
Action #Which animation the imported frames go into.
ColorsMax palette size (e.g. 32). More colors = closer to the source, bigger palette.
BG toleranceHow aggressively near-background pixels are made transparent. Raise this for JPGs whose "white" isn't pure white (kills speckles).
Tip: The first import sets your character's canvas size and palette. Import your cleanest small pose (an idle frame) first so the canvas height is sensible; later frames keep that height and their own widths.

5. Drawing & the pixel editor

You can build or touch up any frame by hand.

Palette

Click a swatch to paint with it. Slot 0 = transparent (the "erase" color). To recolor a swatch, pick a color in the color box and press SET SLOT.

Tools

Onion skin

The slider ghosts the previous frame underneath the current one so you can line up motion. Set it to 0 to turn it off.

Per-frame width

Each frame has its own width (px) field. If a wide pose (an extended punch, a projectile) is being clipped, increase that frame's width. The height stays uniform across the character.

Flip H / Flip V

Mirror the current frame horizontally or vertically β€” handy for reusing a pose facing the other way, or flipping a knockdown.

The axis

The gold crosshair is the axis (the fighter's feet center / origin). Keep the feet near the bottom of the canvas and centered on the vertical axis line so the fighter stands correctly and lines up with the floor and the opponent.

6. Animations & frames

Animation feel: 4–8 ticks per frame is a typical walk/attack speed. Idles can be slow (8–12). A snappy attack uses a couple of fast startup frames, a hit frame, then slower recovery frames.

7. Hit & hurt boxes (Clsn)

Collision boxes decide what connects. Under the editor, toggle draw Clsn2 (hurt) or draw Clsn1 (attack), then drag on the canvas to add a box; click an existing box to delete it.

BoxColorMeaning
Clsn2BlueHurtbox / body β€” where this fighter can be hit. Put one on (almost) every frame, covering the body.
Clsn1RedAttack box β€” where this fighter hits the opponent. Put one only on the active frames of an attack (the frames where the fist/foot/projectile is out).

The rule: an attack lands only when the attacker's current frame has a red Clsn1 that overlaps a frame of the opponent that has a blue Clsn2. If your attacks pass through the enemy, you're missing a red box on the active frame (or the enemy is missing body boxes).

8. Moves & commands

In πŸ₯Š Moves, each card maps an input to an attack. + MOVE adds another.

FieldWhat it means
CommandA name for the move (e.g. punch, fireball). Just a label.
InputThe button or motion that triggers it (section 9).
Anim/state #The action number the move plays. This is the one field that ties the move to its animation/attack (e.g. 200).
Typenormal, projectile, or throw (below).
DamageLife removed on a clean hit.
KnockbackHow far the opponent is pushed/launched.
Hit-stunHow long the opponent is stunned after being hit (in ticks).
SoundOptional voice/SFX played when the move fires (section 10).

Move types

The default fighter already has a punch: Command punch, Input x, Anim/state # 200. Import or draw an animation as action 200 and that move works immediately.

9. Input notation & controls

Directions are relative to facing

Inputs are written the way fighting games do, relative to the way your fighter faces:

TokenMeans
F / BForward (toward opponent) / Back (away)
U / DUp / Down
DF DB UF UBThe four diagonals
a b c x y zThe six attack buttons
~Release (e.g. ~D = release Down β€” used in charge moves)
/Hold
commasSeparate steps of a motion, in order

Examples:

Keyboard & gamepad mapping

So you know which real keys press which buttons:

MoveJumpa b c x y zStart/Pause
Player 1WASDWFGHVBNR
Player 2Arrow keys↑Numpad 456123Numpad Enter
GamepadD-pad / left stickβ€”Face + shoulder buttons (standard layout)Start

So a move with Input x is pressed with the V key (Player 1). A move on y is the B key, and so on. A key only does something if a move uses that button β€” unmapped buttons do nothing by design.

10. Sounds

In πŸ”Š Sounds, import WAV files. Each is stored at a (group, sample) address and packed into the character's .snd. Attach a sound to a move via the move's Sound dropdown (a hit voice / swing SFX), or set the intro voice that plays during the round-intro pose. Keep clips short; they play once when the move fires.

11. Character settings

12. Testing your fighter

Scroll to βš” Test Your Fighter at the bottom of the maker:

  1. Press β†’ Add to test roster (center column) to send your current fighter down to the roster.
  2. Add an opponent from the built-in or community library (the + Fighter / + Add buttons), and optionally pick a Stage.
  3. Click two fighters in the roster to set P1 and P2.
  4. Set P1 to a controller (Keyboard / Gamepad) and leave P2 on AI (or pick AI difficulty).
  5. Press β–Ά FIGHT!
  6. Mid-fight, press P / Esc / Start to pause β€” your fighter's move list is shown on screen with the exact keys to press.
Reading a test fight: if a move whiffs through the opponent, revisit your Clsn1 boxes. If the fighter T-poses or vanishes, you're missing action 0. If it never attacks on its own as P2-AI, the AI needs commands that map to your moves (they do, if you wired moves on standard buttons).

13. Save, publish, export

In the ☁ Your account panel:

14. Troubleshooting

SymptomCause & fix
Fighter is invisible / T-poses / won't moveNo action 0 (idle). Import or draw one and number it 0.
Part of a pose is cut offThat frame's width (px) is too small. Increase it, or re-import the frame with a wider box (↻ Replace selected).
A pose looks squished/stretchedThe import cell's aspect didn't match. Re-grab it with οΌ‹ Add 1 frame using a box that matches the sprite's shape.
Attacks pass through the opponentMissing a red Clsn1 box on the attack's active frame, or the opponent has no blue Clsn2 body box.
The attack hits too early or too lateThe red box is on a startup/recovery frame. Put it only on the strike frame(s).
A button does nothingNo move uses that button. Map a move's Input to it (remember x = the V key for P1).
White speckles around imported spritesRaise BG tolerance in the importer (especially for JPGs). PNGs with real transparency are cleanest.
Sounds didn't carry after publishingCommunity publish ships the fighter's logic + sprites; use Save to account to preserve a project with its imported sounds.

15. Glossary

ActionAn animation, identified by a number. Also doubles as the state number for moves.
Axis / originThe reference point of a sprite β€” the fighter's feet center.
Clsn1 / Clsn2Collision boxes: attack (red) / hurt-body (blue).
TickOne engine step, β‰ˆ 1/60 of a second. Frame times and stun are measured in ticks.
StateA mode the fighter is in (idle, walking, attacking). Moves are states you switch into.
ctrlWhether the player has control. You can only start a move when you have control β€” that's why you can't cancel mid-attack.
HitstunThe time the victim can't act after being hit.
SFF / AIR / CNS / CMD / SNDThe five MUGEN files: sprites / animations / states / commands / sounds.

16. Full walkthrough β€” blank to published

  1. Name it. Set the Name in the Character panel.
  2. Get an idle. Open the sprite-sheet importer, drag a box around a standing pose, set Action # = 0, and οΌ‹ Add 1 frame for 2–4 standing frames. Close the importer β€” you should see your fighter in the Live Preview.
  3. Add a walk. Re-open the importer, set Action # = 20, and add 4–6 walking frames.
  4. Add an attack. Set Action # = 200 and add the punch frames (startup β†’ strike β†’ recovery). Set the strike frame's time a touch longer so it reads.
  5. Box it. On every frame give the body a blue Clsn2. On the punch's strike frame, add a red Clsn1 over the fist.
  6. Wire the move. In Moves, confirm the default punch / x / 200 (or edit it); set Damage/Knockback/Hit-stun to taste.
  7. Test. β†’ Add to test roster, add an opponent, set P1 to Keyboard, FIGHT, and press V to punch. Pause with P to review the moves.
  8. Polish. Fix clipped frames (per-frame width), tune box timing, add a hurt (5000), intro (190), and win (180).
  9. Save + publish. πŸ’Ύ Save to account, then ⬆ Publish to community.

That's everything. Build something ridiculous β€” and remember, the house keeps the bugs.

← Back to KO Casino