Every item of each tool, in section order, with its meaning · unit · default. The “?” in the tools links to the matching section here.
Units and coordinates
| Term | Meaning |
|---|
| Coordinates | The screen is 960 wide × 540 tall. Positions and sizes of characters · stages · obstacles are all px on this basis. If you made art on a 480 basis (base 480), the engine supports drawing it at 2× — choose 480 in Character Forge “Name and stats” → “Base resolution” for characters, and in Stage Forge step 8 “Obstacle definitions” → “Base width” for obstacles. |
| Background art coordinates | A background layer's vertical position (Y) · the floor image position · horizon Y are on a half-size screen (480 × 270). This differs from the floor lines (floor top · bottom), so enter the floor lines first before adding art and the tool aligns it for you. |
| Frame | Unit of time. 1 frame = 1/60 s; 60 frames = 1 s. Startup · active · recovery, cooldowns, invincibility and so on are all in frames. |
| Floor band | The strip characters can walk up and down (depth) in — from floor top to floor bottom. Wider makes dodging easier. |
| Depth | Distance in the screen's up-down direction. An attack hits only when depth is close as well as horizontal reach. |
| Gate | The right end of the stage area where a wave ends (horizontal px). The camera stops here, and it opens only after that wave's enemies are all defeated. |
| Multiplier | 1 is the default. 2 is double, 0.5 is half. |
| Damage · HP | Damage is subtracted straight from HP. Difficulty (enemy HP · damage multipliers) is applied on top. |
Sprite Forge
1 Add images
Add one PNG per action pose. They line up in file name order, and the English word in each file name assigns the action (see the “File names” table in chapter 2).
| Item | Meaning · unit · default |
|---|
| FileChoose PNGs Sorted by file name. Transparent PNGs stay as they are; solid backgrounds are | Choose several at once. Put the character name in front of the file names (officer_idle_1.png) and that front part becomes the character name. |
2 Remove background
Removes the background from images with a solid background. If you add only transparent images, this step doesn't appear.
| Item | Meaning · unit · default |
|---|
| ButtonAuto from corners | Treats the color of the image's four corners as background. Usually enough. |
| ButtonCorner color per image | When background colors differ between images — uses each image's own corner color. |
| ButtonSuggest a background color for next time | Suggests a background color for making new art — one the character doesn't use, so it's removed cleanly. |
| FileSuggest from concept art | Add one character concept image and it suggests a background color that isn't in that image. |
| FieldTolerance | How similar a color to the background gets removed. Higher removes more (lower it if edges get eaten). example 60 |
3 Align and assign
Crops each image to its content, aligns the feet to the same height, and places them in equal cells. This alignment decides how accurate the anchor (foot position) is.
| Item | Meaning · unit · default |
|---|
| FieldTarget height (px) | The character's height in game (px on the 960 basis). Default 140. Match hero and enemy heights here. example 140 |
| FieldDefault facing | Which way the character in the art faces. The engine flips it for the other direction. |
| FieldVariant set name | Files whose names start with v_, contain +, or contain this name go into the variant set (power-up · rage look) cells. |
4 Finished sheet
The sheet with cells joined in one row. Download with “Save character JSON” in the bottom bar. “Merge into existing character” replaces only the art (sheet · cell size · anchor · facing) and keeps actions · moves · stats · effects.
5 Pixel cleanup
Generated art is soft art that looks like pixel art. This fits it to pixel rules — remove edge background · fill holes · match colors to reference frames · reduce to a palette · clean alpha. It uses rules only, no trained model.
| Item | Meaning · unit · default |
|---|
| ButtonSheet assembled above (step 4) | Cleans up the sheet you just made in steps 3 · 4. |
| FileLoad a sheet image | Cleans up an existing sheet image (PNG). Image only, no character JSON. |
| FileCharacter JSON (to swap art only) | Add a character JSON and it cleans that sheet, then puts the result back into the same character, replacing only the art. |
| FieldFrame count (cell width may be fractional) | How many cells to split the sheet into. Cell width = sheet width ÷ frame count. example 1 |
| FieldReference frames (e.g. 0-3) | Cell numbers (range) used as the reference for color · size. Usually the idle cells (0-1). Other cells are color-matched to these. |
| FileLoad palette (.gpl) | Uses the same color list (GIMP palette) as another character. Reducing to a loaded palette keeps colors consistent between characters. |
| ButtonClean up | Runs the cleanup with the settings above. |
| ButtonAfter | Toggles between before and after cleanup. |
| ButtonShow filled holes | Marks the spots filled by hole filling in color. |
| Button2× | Zoom (2× · 3× · 4×) — view only. |
| ButtonDark background | Preview background color — view only. |
| ButtonLight background | Preview background color — view only. |
| ButtonPink background | Preview background color — good for spotting leftover background specks. |
| ButtonFoot jitter check | Checks whether the foot position jitters between cells. Find it here when walking · idle look shaky. |
| ButtonFlicker check | Checks for a color · shape that pops up in just one cell between others. |
| ButtonShow changes | Marks what the cleanup changed. |
| ButtonCleaned sheet PNG | Downloads just the cleaned sheet image. |
| ButtonPalette .gpl | Downloads the palette used for cleanup (to use the same colors on another character). |
| ButtonCharacter JSON (art only) | Downloads the loaded character JSON with only the cleaned art put in. |
| ButtonApply to sheet 4 | Puts the cleaned art back into the step 4 sheet (then save it as character JSON). |
Character Forge
1 Load sprite sheet
Opens a sheet image (PNG) or an existing character JSON. One sheet is one character. Choose an Aseprite JSON along with it to use its cell data as is.
| Item | Meaning · unit · default |
|---|
| FileChoose PNG (+ Aseprite JSON optional) One sheet is one character. An existing Character JS | Choose one of sheet PNG · character JSON · Aseprite JSON (or PNG + Aseprite JSON). |
| ButtonKeep settings, replace art only | Keeps the current settings (actions · moves · stats) and replaces only the sheet art. The cell count must match. |
2 Frame split
How many cells to split the sheet into. Detected automatically; fix it if wrong.
| Item | Meaning · unit · default |
|---|
| FieldFrame width | Width of one cell (px). Frame width × frame count = sheet width. example 459 |
| FieldFrame count | Number of cells. example 43 |
3 Anchor and facing
The anchor is the point under the character's feet — where it touches the floor in game. Facing is the way the character in the art looks.
| Item | Meaning · unit · default |
|---|
| FieldCenter X | Horizontal position of the anchor within the cell (px). Usually the middle of the body. example 278 |
| FieldFoot Y | Vertical position of the anchor within the cell (px) — the height of the soles. Raise it if the character looks like it floats, lower it if it sinks in. example 196 |
| Button◀ Left | The character in the art faces left. |
| ButtonRight ▶ | The character in the art faces right. |
· Name and stats
A small section inside step 3: name · HP · speed · size · behavior.
| Item | Meaning · unit · default |
|---|
| FieldDisplay name | The name shown on screen (HUD · boss name). |
| Fieldid (letters · numbers) | The name that refers to this character in stages · games. Letters · numbers · _ only. If blank, it's made from the display name (a non-colliding code if the name has no Latin letters). |
| FieldMax HP | HP (default 100). Enemy tier · difficulty multipliers are applied. example 180 |
| FieldMove speed | Walking speed (px/frame). Characters made in Sprite Forge start at 1.45. For the hero it's handling; for enemies, how fast they chase. example 2.106 |
| FieldDraw scale | Scales only the art (hitboxes stay the same). 1 is the default. example 1.1471 |
| FieldRun speed multiplier | Run speed = move speed × this value (dashMul). Blank uses the engine default. example 1.754 |
| FieldDash attack multiplier | Damage multiplier for attacks while running (dashAtk, default 1.7). |
| FieldBase resolution | Which screen size this character was drawn for (base). 960 is the default (pixels around 128px, no scaling). If you drew it small for a 480 × 270 screen (pixels around 64px), choose 480 — the engine draws it at 2×. example 960 |
| FieldBehavior style | How it behaves when used as an enemy — humanoid (walks up and hits) · tank (keeps distance, shells · rushes) · flyer (floats, fires · dives) · grappler (grabs and throws). See “Enemy design” below. example humanoid |
| FieldBuild · traits | Turns the four traits below on and off. |
| ToggleLaunch immune — not launched by launching attacks | noLaunch. For heavy enemies · bosses. |
| ToggleCan't be grabbed — the hero can't grab it | noGrab. For big enemies · floating enemies. |
| ToggleAir invincible — can't be hit while airborne | airInv. For enemies that dodge jump attacks. |
| ToggleKnocked down by any attack | alwaysDown. For grunts that always fall to a single hit. |
4 Special skills
Turns on special skills for enemies · bosses. Several can be on at once; the ones you turn on come out as “Spawn options” JSON to paste into “Other options (JSON)” of a Stage Forge wave. What's available depends on the behavior style. See the “Special skills” table below.
| Item | Meaning · unit · default |
|---|
| ToggleGrab | Turn on to use this special skill. Settings · defaults · meanings are in the “Special skills” table below. |
| ToggleCollapsing floor | Turn on to use this special skill. Settings · defaults · meanings are in the “Special skills” table below. |
| ToggleMortar | Turn on to use this special skill. Settings · defaults · meanings are in the “Special skills” table below. |
| ToggleSuper mode | Turn on to use this special skill. Settings · defaults · meanings are in the “Special skills” table below. |
| ToggleForbidden spell | Turn on to use this special skill. Settings · defaults · meanings are in the “Special skills” table below. |
| ToggleClone | Turn on to use this special skill. Settings · defaults · meanings are in the “Special skills” table below. |
| ToggleInvincible counter | Turn on to use this special skill. Settings · defaults · meanings are in the “Special skills” table below. |
| FieldSpawn options (paste into the stage) | Settings JSON for the special skills you turned on. Copy and paste it into “Other options (JSON)” of an enemy group in a Stage Forge wave. |
Special skills
Grab (grab · styles humanoid) — Grabs when close, lifts and throws. Needs reach · lift · throw cells.
| Field | Meaning | Default |
|---|
holdTime | Hold time (frames) | 110 |
struggleN | Presses to break free | 18 |
holdX | Held person X | -48 |
holdZ | Held person height | 120 |
throwDir | Throw direction | alt |
throwKb | Throw strength | 9 |
throwLift | Throw height | 8 |
holdHideHero | Hide hero while holding | False |
Collapsing floor (quake · styles humanoid, tank) — Rides on the active window of the chosen attack. A crack runs out and becomes a hole.
| Field | Meaning | Default |
|---|
from | Trigger HP (0~1) | 1 |
cool | Cooldown (frames) | 420 |
holeW | Hole width | 56 |
holeH | Hole height | 36 |
max | Max holes | 5 |
bigW | Big hole width | 96 |
bigAfter | HP for big holes | 0.35 |
collapse | Until collapse (frames) | 36 |
holeArt | Hole image id | |
Mortar (mortar · styles humanoid, tank) — Fired upward, it drops after a shadow telegraph. The aim point is fixed the moment it fires.
| Field | Meaning | Default |
|---|
warn | Shadow telegraph (frames) | 42 |
radius | Blast radius | 117 |
fall | Fall speed | 12 |
h | Start height | 420 |
cool | Cooldown (frames) | 210 |
dmg | Damage | 999 |
art | Falling shell id | |
Super mode (ultra · styles humanoid, tank) — Runs invincibly to the far side from the hero, then fires from where it stands. Needs run cells.
| Field | Meaning | Default |
|---|
from | Trigger HP (0~1) | 0.8 |
first | First trigger (frames) | 150 |
gap | Cooldown (frames) | 270 |
speed | Run speed | 7 |
edge | Distance from the edge | 80 |
lane | Depth matching speed | 3 |
moves | Moves used at the edge (comma) | |
Forbidden spell (forbid · styles humanoid) — While the screen freezes, it casts “don't do this.” It doesn't block — breaking it is punished.
| Field | Meaning | Default |
|---|
at | Trigger HP (comma) | 0.75,0.45,0.2 |
order | Forbid order (| groups mean one of them) | combo|jump, kick|punch, up|down |
duration | Duration (frames) | 720 |
grace | Grace (frames) | 30 |
penalty | Share taken when broken (comma) | 0.5,0.75,1.0 |
release | Release at (share of max HP) | 0.15 |
bIn | Fade to dark (frames) | 30 |
bHold | Magic circle (frames) | 110 |
bOut | Fade back (frames) | 26 |
dim | Darkness (0~1) | 0.86 |
markFx | Floor mark id | |
Clone (summon · styles humanoid, tank) — Summons a weak copy of itself. Clones aren't registered as bosses.
| Field | Meaning | Default |
|---|
char | Clone character id | |
hpMul | HP multiplier | 0.4 |
dmgMul | Damage multiplier | 0.6 |
speedMul | Speed multiplier | 1 |
max | Max count | 1 |
cool | Cooldown (frames) | 420 |
from | Trigger HP (0~1) | 0.95 |
dieWithOwner | Falls with its owner | True |
noForbid | Forbid spell doesn't affect clones | True |
Invincible counter (counter · styles humanoid, tank, flyer) — When hit in a string, hits back invincibly. Stops the stick-close-and-mash strategy.
| Field | Meaning | Default |
|---|
counterHits | Consecutive hits | 3 |
counterWin | Window for those hits (frames) | 90 |
counterMove | Counter move number (from 0) | 0 |
counterInv | Invincible while countering (frames) | 70 |
risingInv | Invincible when rising to counter (frames) | 40 |
counterOnCombo | Count a combo hit as consecutive | True |
5 Action assignment
Which cells to use, in what order and at what speed, for each action (idle · walk · hurt …). Actions you didn't draw use another action per the fallback table. See the “Action cells” table below.
| Item | Meaning · unit · default |
|---|
| ButtonBase | Action assignment for the base look. |
| Button+ Variant | Adds a variant set (power-up · rage look). Each variant has its own action assignment. |
| Button+ Add attack | Adds another hand · foot attack (chains up to 3 hand hits · 2 foot hits). |
| ButtonClear selected action | Clears the cell assignment of the selected action (it then uses another action per the fallback table). |
Action cells · fallbacks
| Action | Required | Used instead when missing |
|---|
idle | Yes | — |
walk | Yes | — |
hurt | — | idle |
down | — | hurt |
jump | — | idle |
jatk | — | First hand attack |
jkick | — | First foot attack · else jump attack |
dash | — | walk |
carry | — | idle |
push | — | walk |
throw | — | Hand finisher |
grab | — | First hand attack |
dashatk | — | Basic attack |
blitz | — | Jump kick |
guard | — | idle |
rest | — | idle |
wreck | — | Darken idle cells |
6 Attack values
Timing · damage · reach for each attack. The table above has one row per move; below is for giving each cell its own hitbox. See the “Attack columns” table below for what each column means.
| Item | Meaning · unit · default |
|---|
| ButtonBreath Off | Breath (fire · breath reaching forward) — when on, a long hitbox reaching forward instead of a melee hitbox. |
| ButtonProjectile Off | Projectile (shot) — when on, it fires a shot instead of a melee hitbox. The shot image is in step 9 “Shot images”. |
| FieldBody half-width hw | Half-width of the character's body (px) — the hurtbox · collision width. Set automatically from the art width when the sheet is loaded. example 41 |
| FieldAttack reach | Base reach (reach, px). Each move's reach × multiplies this. example 97 |
| FieldHurtbox | Shows · adjusts the hurtbox in the preview. |
| Attack columns | Meaning |
|---|
| Attack | Move name. Combos · special skills refer to it by this name. |
| Type | Hand / foot — which button it comes out on. Moves of the same type chain in order. |
| Startup | startup, frames. From the button press until the hitbox appears. Shorter is faster. |
| Active | active, frames. How long the hitbox is live. When it ends, you can chain into the next hit. |
| Recovery | recover, frames. From the end of the hitbox until you can move again. Longer means a bigger penalty for whiffing. |
| Hit frame | hitFrame. Cell number of the hitting pose. When set, that cell shows up timed to the start of the hitbox (blank spreads cells evenly over the whole time). |
| Damage | dmg. Amount taken from HP. |
| Reach × | reachMul. Multiplier on base reach (attack reach). 1.3–1.7 for far-reaching moves like kicks. |
| Launch | launch. When on, the hit enemy is lifted into the air. Usually only on the last hit. |
| Effect | Which of the effects added in step 9 to attach to this move. |
| Per-cell hitbox — cell · reach × · depth | For giving a cell its own hitbox. Reach × · depth (px) change only on that cell. |
| Values with no field in the tool (write directly in JSON) | Shake (shake) · freeze (freeze, frames) · knockback (knockback) · launch height (lift) · multi-hit (hits · hitGap) · angled knockback (angled) · damage as a share of max HP (dmgPct) have no field in the tool. Open the saved character JSON in a text editor and write them in that move's entry (inside attacks or kicks); only that move uses the value. Example: "shake": 12, "freeze": 8. They're kept even if you reopen and save in Character Forge. |
7 Command combos
Special moves done by pressing buttons in order (up to 5 per character). See the “Combo fields” table below.
| Item | Meaning · unit · default |
|---|
| Button− Step | Removes one input step (minimum 2). |
| Button+ Step | Adds one input step (maximum 4). |
| ButtonLaunch | This combo launches the opponent (launch). Press to switch to “No launch”. |
| ButtonArmor | Armor while performing (not interrupted when hit, takes reduced damage). On by default. |
| ButtonNo launch | This combo doesn't launch the opponent. Press to switch to “Launch”. |
| Button+ Add combo | Adds a combo. |
| Combo fields | Meaning |
|---|
| Name | Combo name. Shown by this name in the move list · special skills. |
| Input | input. 2–4 steps. Each step is hand · foot · jump · special or a simultaneous press (hand+foot, etc.). Buttons pressed within 6 frames merge into one step. |
| Frames | Cells this combo uses. |
| Startup · active · recovery · damage | Same as the attack columns. |
| Hits · gap | hits · hitGap. Combos that hit several times (multi-hit) and the frames between hits. |
| Knockback · launch | knockback · lift. How far the hit opponent flies and how high it rises. |
| Shake · freeze | shake · freeze (frames). Screen shake and the pause at impact (hitstop). |
| Armor | armor. While performing, hits don't interrupt it — it just takes reduced damage (on by default). armorTo (frames kept) · armorCut (damage multiplier taken, default 0.5). |
| Invincible | inv. Invincible frames right after activation (default 0). |
| Super gauge | cost. Super gauge slots used (shown as “Super 1” in the move list). |
Choices for an input step — hand Hand · foot Foot · jmp Jump · spc Special · hand+foot Hand+Foot · hand+jmp Hand+Jump · hand+spc Hand+Special · foot+jmp Foot+Jump · foot+spc Foot+Special · jmp+spc Jump+Special
8 Preview
Plays actions · moves. Turn on “Show hitboxes” to overlay attack boxes (red) · hurtboxes (green).
| Item | Meaning · unit · default |
|---|
| ButtonAction · move · effect names | Action · move name buttons — press to play that action or move. The buttons depend on the loaded character. |
| ButtonGrab | Turn on to use this special skill. Settings · defaults · meanings are in the “Special skills” table below. |
| ButtonShow hitboxes | Overlays attack boxes · hurtboxes · collision boxes. |
· Other
Below the preview — other effects attached to actions, such as dash effects · auras.
| Item | Meaning · unit · default |
|---|
| ButtonAction · move · effect names | Effect name buttons — press to preview that effect. They depend on the effects added in step 9. |
| ButtonTurn off | Turns off this other effect. |
9 Effect
Effect art attached to moves (sword trails · flames, etc.). Pick the effects added here in the “Effect” column of the step 6 attack table.
| Item | Meaning · unit · default |
|---|
| ButtonDelete | Deletes this image. |
| ButtonBehind | Draws the effect behind the character (default is in front). |
| ButtonLoop | Loops the effect (auras, etc.). |
| File+ Add effect image | Adds a horizontal effect sheet PNG. |
· Shot images
Projectile (shot) art. Moves with projectile on fire this image.
| Item | Meaning · unit · default |
|---|
| File+ Add shot image | Adds a shot sheet PNG. |
10 Pose edit
Move · erase · flip · resize the art in each cell. Parts moved outside the cell are cropped when saved, so a warning appears.
| Item | Meaning · unit · default |
|---|
| ButtonOpen pose editor | Opens the pose editor. |
11 Character JSON
The character JSON to be saved. Download with “Save character JSON” in the bottom bar.
| Item | Meaning · unit · default |
|---|
| ButtonEmbed PNG: on | Packs the sheet art inside the JSON (keep this on — if off, you have to carry the image file separately). |
| ButtonCopy | Copies the JSON to the clipboard. |
Stage Forge
1 Preview
Draws the stage. Move the camera with the bar below; on wide screens you can keep it pinned at the top while editing the sections below.
| Item | Meaning · unit · default |
|---|
| ButtonFloor band | Shows the band characters walk in (floor top ~ bottom) in the preview. |
| ButtonGates · enemy spawns | Shows each wave's gate line and where enemies appear. |
| ButtonAuto scroll | Scrolls the camera to the end automatically. |
| ButtonPin preview | Keeps the preview pinned at the top of the screen (on by default on wide screens, remembered). |
2 Basic info
Name · music · floor lines. Enter the floor lines before adding background art and the art is placed to match them.
| Item | Meaning · unit · default |
|---|
| File+ Load stage JSON (continue editing) | Opens a saved stage JSON to keep editing. |
| FieldStage name | The name shown on screen (stage name · results). |
| Fieldid (letters · numbers) | The name that refers to this stage in the game. If blank, made from the name (a non-colliding code if it has no Latin letters). |
| FieldBGM (blank uses the game's shared track) | A track used only in this stage (URL or file). Blank uses Game Forge's default BGM. The number beside it is this track's volume multiplier (1 default). |
| File+ BGM file | Packs a track file (ogg · mp3) in directly. |
| FieldBoss BGM (blank continues the track above) | Track to switch to on the boss wave. Blank keeps the track above. |
| File+ Boss BGM file | Packs the boss track file in directly. |
| FieldHorizon Y | Horizon height of the procedural background (default street art). Background art coordinates (270 basis). Unused when art fills everything. example 162 |
| FieldFloor top | Innermost (top of screen) height characters can walk. px on the 960 × 540 basis (e.g. 340). example 340 |
| FieldFloor bottom | Frontmost (bottom of screen) height characters can walk (e.g. 512). The difference from the top is the floor band width. example 512 |
| ButtonHide dotted line | Whether to show the gate line on the game screen (handy while testing). |
3 Theme
Colors and props of the procedural background (night street) the engine draws when there's no art. Unused when art fills everything.
| Item | Meaning · unit · default |
|---|
| ButtonBuildings | Draws building silhouettes in the procedural background. |
| ButtonStreetlights | Draws streetlights in the procedural background. |
| ButtonForeground silhouettes | Draws foreground silhouettes passing in front of characters. |
4 Floor and background images
Adds the floor image (parallax 1.0 — same speed as the screen) and background layers (the smaller the parallax, the farther). See the “Background layers” table below for layer fields.
| Item | Meaning · unit · default |
|---|
| File+ Floor image (horizontally tiling PNG) | The floor image characters stand on. Repeats horizontally. When added, its top edge aligns to the floor top. |
| ButtonAlign background · floor vertically | After changing the floor lines or horizon, press to re-align the bottom of every background layer and the floor image to the floor line. |
| File+ Add background layers (multiple allowed) | Adds background art as layers. Add the farthest first. |
| ButtonOpaque | Whether to add an image with transparent parts as opaque. Leave it transparent and turn on “Front” to make a foreground drawn in front of characters. |
| ButtonProcedural background on | The engine's default night-street background. Turn off if art fills everything. |
| ButtonTile | Repeats this layer horizontally (art whose left and right edges connect). |
Background layer · floor image fields
| Field | Meaning |
|---|
| Parallax | Scroll speed relative to the camera. 0.2 far background · 1.0 same as the floor · 1.2+ objects in front. |
| Y | Height of the layer art's top edge (background art coordinates, 270 basis). When added, its bottom aligns to the floor. |
| Scale | Size of the layer art. |
| Tile | Repeat horizontally. |
| Front | Foreground drawn in front of characters. |
| Floor image Y · scale | Height of the floor image's top edge (270 basis) and its size. |
5 Waves
The unit enemies come in. For each wave the camera moves to the gate (end of the area), and defeating all enemies leads to the next wave. See the “Wave card” table for card fields, “Enemy archetypes” for types, and the “Spawn options” table for other options.
| Item | Meaning · unit · default |
|---|
| File+ Load character list | Loads characters to choose as enemies (a game JSON · several character JSONs). “Play in engine” also uses this list. |
| ButtonClothes only | Applies the color field's hue to clothes only (skin · hair stay). |
| ButtonPress | A string of attacks right after landing a hit (press). Turn on for an enemy that keeps pushing. |
| ButtonCharge | A charge sprinting in from the screen edge (charge). |
| ButtonCollapsing floor | This enemy's slam collapses the floor (quake — special skill). |
| ExpandOther options (JSON) | Write options without a field as JSON, or paste text from Character Forge special skills. Use null to remove an option. See the “Spawn options” table for the list. |
| ButtonUse foot moves | This enemy also uses foot attacks (useKick). |
| ButtonUse combos | This enemy uses command combos (useCombo). |
| Button+ Enemy group | Adds another enemy group to the wave. |
| ButtonCombo | Choose the combos this group uses (blank for all). |
| Button+ Add wave | Adds another wave. Place its gate at least 700 after the previous wave. |
| ButtonBoth | Appears in both 1P · 2P. |
| Button1P | Appears only in 1P. |
| Button2P (coming in an update) | Only in 2P — 2P co-op is coming in an update. |
Wave card
| Field | Meaning |
|---|
| Gate | End of this wave's area (horizontal px). First gate 1200 or more, 700 or more between waves. |
| Max at once | Maximum number on screen at once (blank for all). |
| Hint · number | Text briefly shown at the start of the wave and how long it shows (frames, default 240). |
| Tier | Grunt · elite · boss · final — HP · size · moves used · score differ (“Enemy tiers” table). |
| Count | Number of enemies in this group. |
| Side | Right ▶ · ◀ left · both ◀▶. |
| Color | Tint (crimson · blue · violet · gold · pale · silver · bronze · steel). Makes the same art look like a different enemy. |
| Display name | Renames only this group (boss names, etc.). |
| Type | Enemy archetype — choosing one fills in behavior options at once (“Enemy archetypes” table). |
| Combo frequency (0~1) | Combo frequency for this placement only (comboFreq) — the chance of choosing a combo when one is within reach. Blank uses the character value → tier default. The old comboBias is also read. |
| Modes | Both · 1P only · 2P only. |
| Character | Auto (distributed among characters with the grunt role) or a specific character. |
| Drop | Item dropped when the wave is cleared (defined in step 9). |
| Banner | Large text shown at the start of the wave (e.g. BOSS). |
Enemy tiers
Tier multipliers apply to the character’s HP · size. Rage is switching to the variant look (or a red tint if none) when HP drops below that ratio.
| Tier | HP | Size | Moves used | Rage | Score |
|---|
| Grunt (grunt) | × 1 | × 1 | 1 hand-type hit | — | 120 |
| Elite (mini) | × 2.4 | × 1.25 | 1 hand-type hit | — | 600 |
| Boss (boss) | × 5.6 | × 1.5 | All hand · foot · combo | 35% | 2000 |
| Final (final) | × 9.0 | × 1.7 | All hand · foot · combo | 45% | 5000 |
Behavior styles
| Style | Behavior | Actions used |
|---|
| humanoid | Approaches and hits. Weaves in depth as it closes in | idle · walk · attack |
| tank | Keeps distance and shells, swats when close, rushes periodically. No jumping · launch immune | idle · walk · attack |
| flyer | Floats, fires and dives. Ground attacks don't reach it | jump (hover) · jatk (dive) · attack |
| grappler | Grabs and throws. Launch immune | idle · walk · first attack (grab pose) |
Enemy archetypes
Choosing one under “Type” on a wave card fills in these behavior options at once.
| Type | Tier | Description |
|---|
| Relentless brawler | Grunt | Sticks close and hits in a string. Gives you no room to back off |
| Off-screen charger | Grunt | Runs in from the screen edge, kicks, and exits the other side |
| Counter swordsman | Elite | Hits back once it has taken enough hits, and punishes whiffs |
| Lunging rusher | Elite | Backs off, then lunges in all at once |
| Artillery tank (boss) | Boss | Fires from range, breathes when close, rushes now and then |
| Teleport → phase-2 boss | Boss | Appears behind you when you're far. When defeated, its true form rises |
| Landing flyer boss | Boss | Floats and throws, then dives. The only opening is while it's landed |
| Counter · desperation final boss | Final | Hits back and punishes whiffs. When defeated, it rises in another form |
| Grab-and-throw powerhouse | Elite | Grabs you up close. Mash to break free |
Spawn options (Other options JSON)
Values written in “Other options (JSON)” of a wave’s enemy group. Units are frames · px; multipliers default to 1.
| Option | Meaning |
|---|
| airInv | Can't be hit while airborne |
| alwaysDown | Knocked down by any attack |
| armor | Super armor (ignores stagger). On by default |
| band | Tank — distance kept from the hero |
| blink | Teleport — vanishes when you're far and appears behind you |
| breathRange | Distance at which it uses breath |
| charge | A charge sprinting in from the screen edge |
| chargeGap | Tank — rush cycle (frames) |
| comboFreq | Combo frequency — the chance of choosing a combo when one is within reach (0 ~ 1). The old name comboBias is also read |
| combos | List of combo names to use (blank for all) |
| cool | Rest frames between attacks (smaller is more aggressive) |
| counterFx | Effect shown in counter stance |
| counterFxLife | Counter effect length (frames) |
| counterHits | Invincible counter — number of consecutive hits |
| counterInv | Invincibility while hitting back (frames) |
| counterMove | Move number used to hit back (from 0) |
| counterOnCombo | Counts a single combo hit as consecutive hits |
| counterWin | Invincible counter — time window for those hits (frames) |
| desperate | An area-wide instant kill used when HP runs out |
| diveRange | Flyer — dives when within this distance |
| diveSafe | Flyer — doesn't attack while descending |
| dmgMul | Damage multiplier |
| forbid | Forbidden spell (special skill) |
| grab | Grab (special skill) |
| holdHideHero | Hides the hero while holding (when the art already shows them) |
| holdTime | Hold time (frames) |
| holdX | Horizontal spot to place the held hero |
| holdZ | Height to place the held hero |
| hover | Flyer — hover height |
| hpMul | HP multiplier (on top of the tier default) |
| kite | Throws from a distance, then dives |
| landHits | Flyer — after landing, takes this many hits then counters and rises |
| landT | Flyer — frames it rests after landing |
| liftBlast | Impact hitting the ground as it rises |
| mortar | Mortar (special skill) |
| name | Display name |
| nextForm | Next form after defeat (phase-2 boss) |
| palette | Only changes colors to use it as a different enemy |
| part | Part battle — fight the boss split into parts |
| press | Pressure that chains right after landing a hit |
| punishRange | Distance for punishing whiffed attacks |
| punishWhiff | Punishes whiffed combos |
| quake | Collapsing floor (special skill) |
| rage | HP ratio that triggers rage (0 means no rage) |
| reachMul | Reach multiplier |
| risingInv | Invincibility when rising with a counter (frames) |
| rush | A rush closing the distance and lunging in |
| scale | Size multiplier |
| speedMul | Move speed multiplier |
| struggleN | Presses needed to break free when grabbed |
| summon | Clone (special skill) |
| throwDir | Throw direction — back · front · alt · random |
| throwFly | Frames it doesn't slow down while thrown |
| throwKb | Throw speed |
| throwLift | Throw height |
| tint | Tint |
| ultra | Super mode (special skill) |
| useCombo | Use combos |
| useKick | Use foot attacks |
◆ Placement editor
Drag gates · obstacles · enemy groups on the stage. Each wave shows its placeable range and problems (⚠).
| Item | Meaning · unit · default |
|---|
| ExpandPlacement rules | Expands the rules for gates · obstacle ranges · enemy spawn spots. |
| Button+ Wave obstacle | An obstacle that appears only in this wave's span. |
| Button+ Always-on obstacle | An obstacle placed from start to finish. |
| ButtonDelete | Deletes the selected item. |
| ButtonNormal | Tier of the selected enemy group. |
| Button+ Add enemy group | Adds an enemy group to this wave. |
6 Clear cutscene
The cutscene after clearing the stage (video or slides). If none, it goes straight to the next stage.
| Item | Meaning · unit · default |
|---|
| FieldVideo URL (mp4/webm) | Cutscene video URL. You can also pack in the file directly. |
| File+ Add slide images (instead of video) | Shows several images in turn. Each can have text. |
| ToggleContinue music | Keeps the stage track playing through the cutscene (keepBgm). |
7 Obstacle placement
Places obstacles defined in step 8 on the stage. Each placement can have its own size · drop.
| Item | Meaning · unit · default |
|---|
| Button+ Add obstacle | Places one obstacle (starts with the project's first obstacle). |
8 Load obstacles
Loads obstacles (obstacles.json) made in Asset Forge. Loaded obstacles appear in the step 7 placement list. Create · edit them in Asset Forge “Properties”.
| Item | Meaning · unit · default |
|---|
| File+ Load obstacle JSON | Loads obstacles.json (several allowed; the same id is replaced by the newer one). |
9 Load items
Loads items (items.json) made in Asset Forge. Loaded items can be chosen as drops for waves · obstacles. Create · edit them in Asset Forge “Properties”.
| Item | Meaning · unit · default |
|---|
| File+ Load item JSON | Loads items.json (several allowed; the same id is replaced by the newer one). |
10 Stage JSON
The stage JSON to be saved. Download with “Save stage” in the bottom bar.
| Item | Meaning · unit · default |
|---|
| ButtonCopy | Copies the JSON to the clipboard. |
Game Forge
1 Game info
Game-wide settings — title · supported modes · difficulty · slash mode · continue · results screen.
| Item | Meaning · unit · default |
|---|
| FieldGame title | File name · browser tab · title screen title. |
| FieldSupported modes | Which of 1P · 2P the game supports (2P co-op is coming in an update). |
| FieldDifficulty select | Adds a difficulty row to the title. Levels are in the “Difficulty” table below — enemy HP · damage · rest time multipliers. example on |
| ButtonReset to default | Resets this section to defaults. |
| FieldTitle screen menu | Whether to show the title menu (start · difficulty · slash). |
| FieldSlash mode | A mode toggled separately from difficulty. When on, the hero's attack range × reach (default 1.5) and hurtbox × hurt (default 0.7). Enemies stay the same. example on |
| ToggleOn from the start | Starts with slash mode on by default. |
| FieldContinue | Continue after game over — countdown (countdown seconds, default 10) · count (limit, 0 = unlimited) · share of score kept on continue (scoreKeep, default 0.5). example on |
| FieldResults screen | Shows a results screen when the game ends. example on |
| ToggleTime | Time taken on the results screen. |
| ToggleEnemies defeated | Number of enemies defeated on the results screen. |
| ToggleHigh score | High score on the results screen (remembered by the browser). |
| File+ Load a game JSON in progress (continue editing) | Opens a saved game JSON (or the sample game package) to keep editing. |
Difficulty
Multipliers for enemy HP (hp) · damage (dmg) · rest between attacks (rest, higher attacks less). The hero’s abilities · telegraph times stay the same. Names · multipliers can be changed in difficulty.levels of the game JSON.
| Level | Name | Enemy HP | Enemy damage | Rest time |
|---|
| easy | Easy | 0.75 | 0.7 | 1.4 |
| normal | Normal | 1 | 1 | 1 |
| hard | Hard | 1.35 | 1.3 | 0.8 |
2 Character
Characters used in the game and their roles (hero · grunt · boss). With several heroes, a character select screen appears.
| Item | Meaning · unit · default |
|---|
| File+ Add character JSON (multiple allowed) | Adds character JSONs. Set each row's role with the hero · grunt · boss tags. |
3 Stage order
Play order. Top to bottom.
| Item | Meaning · unit · default |
|---|
| File+ Add stage JSON (multiple allowed) | Adds stage JSONs. Reorder with the arrows, remove with ×. |
4 Items and obstacles
Item · obstacle definitions the stages use (items.json · obstacles.json) and shared effect art.
| Item | Meaning · unit · default |
|---|
| File+ Add item / obstacle JSON (multiple allowed) | Adds items.json · obstacles.json. Missing ones show up in step 9 Check. |
| FieldHit spark | Spark art shown on hits (horizontal sheet PNG + frame count). Blank uses the engine default. |
| FieldPowered hit spark | Sparks on strong attacks · while powered up. |
| FieldExplosive | Explosion art for explosive obstacles · enemies blowing up. |
5 Title · release
Subtitle and title text, plus building for release.
| Item | Meaning · unit · default |
|---|
| FieldSubtitle | Small text under the title. |
| ToggleDon't draw title text on the title screen | Turn on when the title art already contains the title (title · subtitle aren't drawn). |
| ToggleBuild for release (hide authoring items) | Turn on when building a game for others — authoring buttons are hidden and “Press Enter to start” · the first-time guide appear. |
6 Presentation
Notice screen · opening · ending · tracks · credits. Steps you don't add are skipped. The number beside each track is its volume multiplier (1 default).
| Item | Meaning · unit · default |
|---|
| File+ Title background image | Title screen art (960 × 540 recommended). |
| File+ Character select background | Art for the select screen shown when there are several heroes. |
| File+ Copyright notice · studio logo (shown first when the game opens) | The notice screen shown first when the game opens (several images). If “Skippable”, press to advance. |
| FieldIntro video URL (skippable after 3 s) | URL of the opening video shown at start. Skippable after 3 s. |
| File+ Intro video file (pack in instead of a URL) | Packs the opening video file (mp4 · webm) into the game. |
| File+ Intro slide images (instead of video) | Opening as several images, with text on each. |
| ToggleContinue music | Keeps the track playing into the next screen after this sequence ends. |
| FieldEnding video URL (not skippable) | Video shown after clearing the last stage. |
| File+ Ending video file (pack in instead of a URL) | Packs the ending video file in. |
| File+ Ending slide images | Ending as several images. |
| FieldMusic | Group of track fields. Each track is a URL or file; the number beside it is the volume. |
| FieldDefault BGM | Track used when a stage has none. |
| File+ Default BGM file | Packs the track file in. |
| FieldBoss track | Shared boss-wave track (when a stage has no boss track). |
| File+ Boss track file | Packs the track file in. |
| FieldTitle track | Title screen track. |
| File+ Title track file | Packs the track file in. |
| FieldOpening track | Track during the opening (intro). |
| File+ Opening track file | Packs the track file in. |
| FieldMid-slide track | Track for cutscenes between stages. |
| File+ Mid-slide track file | Packs the track file in. |
| FieldEnding track | Track during the ending. |
| File+ Ending track file | Packs the track file in. |
| FieldCredits track | Track during the credits. |
| File+ Credits track file | Packs the track file in. |
| FieldCredits (one per line; start with # for large text) | Text that scrolls after the ending. One per line; start with # for a large heading; divider lines like ── title ── work too. |
7 Controls · screen · hit feel
Default PC keys · screen scale · grabs · hit feel. See the “Control keys” table for keys and the “Hit feel” table for hit feel.
| Item | Meaning · unit · default |
|---|
| ButtonDefault (arrow keys + QWER) | Resets the key layout to default (arrow keys to move + Q W E R). It can also be changed in-game under “Key settings”; these are the starting values. |
| FieldPC max scale | Maximum scale for enlarging the game on PC. Without a limit, pixels grow too big on large screens (about 3 recommended). |
| FieldInteger scaling only (1 = yes) | 1 scales only by whole numbers (2×, 3×) so pixels look even. 0 fills more of the screen but is slightly blurrier. |
| ButtonMobile fullscreen on | Shows a fullscreen button on phones. |
| ButtonGrab on | Turns on grabs (walk into an enemy up close; after grabbing, attack = knee strike, back direction + attack = throw). |
Control keys
| Action | Name |
|---|
| l | Left |
| r | Right |
| u | Up |
| d | Down |
| hand | Hand |
| foot | Foot |
| jmp | Jump |
| spc | Special |
| start | Start |
Hit feel
Tune it in-game in “◎ Hit studio”, press “Copy settings” and paste into step 7. Blank uses the defaults below.
| Value | Meaning | Default |
|---|
| freezeMul | Hitstop multiplier — pauses longer at the moment of impact | 1.30 |
| shakeMul | Screen shake multiplier | 1.25 |
| shakeTime | Shake duration (frames) | 15 |
| shakeAxis | Shake direction x · y · xy · radial | xy |
| jitter | Jitter amplitude during hitstop (px) | 3 |
| flash | White flash on hit (frames) | 7 |
| flashColor | Flash color | #ffffff |
| knockMul | Knockback distance multiplier | 1.15 |
| liftMul | Launch height multiplier | 1.10 |
| glance | Effect ratio for glancing hits | 0.5 |
| glanceBand | Beyond this depth difference, a hit counts as glancing | 9 |
| comboShake | Shake increase per combo hit | 0.12 |
| comboFreeze | Hitstop increase per combo hit (frames) | 0.9 |
| comboCap | Max hits the increase applies to | 8 |
| ghostN | Number of dash afterimages | 4 |
| ghostA | Afterimage opacity | 0.34 |
| ghostSil | 1 draws afterimages as silhouettes | 0 |
8 Screen display (HUD)
Position · size · color · art of on-screen displays such as the HP bar · name · score · lives. See the “HUD elements” table below.
| Item | Meaning · unit · default |
|---|
| File+ Back panel | Panel art laid behind the HUD. |
| File✓ Fill image | HP bar fill art (✓ when added). |
| ButtonClear | Removes the added art. |
| File✓ Danger image | Fill art that switches in when HP is low. |
| File✓ Frame | Frame art around the HP bar. |
| File✓ Life icon | Icon showing the number of lives. |
| File✓ Super icon | Icon for super gauge slots. |
| ButtonReset to default | Resets this section to defaults. |
HUD elements
Per element: on (on) · x · y (half-size screen basis) · size (size or w · h) · color (color) · image (img).
| Element | Name | Default |
|---|
| panel | Back panel | on True · x 0 · y 0 · w 0 · h 0 |
| name | Character name | on True · x 12 · y 16 · size 9 · color #f2ecdd |
| hp | HP bar | on True · x 12 · y 20 · w 124 · h 7 · color #3fe3ff · low #ff2f7e · back #2e2140 · edge #150d1e · fill Fill image · fillLow Danger image · frame Frame · frameX 0 · frameY 0 · frameW 0 · frameH 0 |
| lives | Lives left | on True · x 12 · y 40 · size 9 · color #f2ecdd · text LIVES · icon Life icon · iw 9 · ih 9 · gap 11 |
| special | Super slots | on True · x 66 · y 33 · w 5 · h 7 · gap 8 · color #3fe3ff · icon Super icon |
| fever | Power-up gauge | on True · x 150 · y 16 · w 80 · h 5 · size 9 · color #ff9c3f |
| score | Score | on True · x 12 · y 18 · size 11 · color #ff9c3f |
| stage | Stage name | on True · x 12 · y 32 · size 9 · color #f2ecdd |
| left | Enemies left | on True · x 10 · y 52 · size 10 · color rgba(242,236,221,.5) · text ENEMIES LEFT |
| banner | Wave banner | on True · y 94 · size 20 · color #ff2f7e |
| hint | Wave hint | on True · y 116 · size 12 · color #ffd24a |
| hits | Combo count | on True · x 13 · y 62 · size 18 · color #ffd24a |
◇ Translation sheet
Exports game text (title · subtitles · credits · names) as CSV, then imports the translation back into the game.
| Item | Meaning · unit · default |
|---|
| ButtonExport translation sheet | Downloads the list of text to translate as CSV. |
| FileImport translation sheet | Adds the CSV with translations filled in. The game shows text in the player's language. |
9 Check
Shows problems such as missing characters · items · obstacles or settings that don't match the modes. If there are problems, you're asked once when saving · building.
10 Build as a single file
Choose the engine file once (remembered) and the whole game comes out as a single HTML file.
| Item | Meaning · unit · default |
|---|
| File+ Choose neon-precinct.html | Choose engine/neon-precinct.html from the bundle. It's remembered from then on. |
OpenBOR Importer
1 Load
Choose the folder with the text files and sprites of a character you made yourself for OpenBOR. Every time you choose, a rights notice appears, and nothing loads until you press “OK — continue” (there is no “don't show again”). Image paths in the text files (data/chars/…) are found in the folder; projectile characters (type none · projectile) are left out of the list and used along with the character.
| Item | Meaning · unit · default |
|---|
| File+ Choose OpenBOR folder | Choose the whole OpenBOR game folder (or data folder). Image paths in the text files (data/chars/…) are found inside it. Images with the same name in several characters are told apart by path. |
| File+ Choose multiple files | When you can't choose a folder — choose a character text file and its images together. Files are matched by name without paths, so choose one character's files at a time. |
2 Animation mapping
Maps OpenBOR animations to our slots — idle · walk · run → dash · jump · jumpattack → jump hand attack · pain → hurt · fall → down · grab · throw · block → guard · runattack → dash attack, attack1 ~ N → hand attacks, freespecial · special → command combos (for enemies, throwing moves become hand attacks). You can change them in the table. Reads both the official syntax (image top-left coordinates · one-line attack) and the anchor-relative format (negative coordinates · abox), and shows scripts (@script · @cmd) · missing images · anchor mismatches as notices.
| Item | Meaning · unit · default |
|---|
| ToggleSnap the anchor to the feet in the image | Uses the lowest opaque row in each image (the feet) as the anchor instead of offset. Turn on when offset doesn't match the feet and characters look sunk or floating (the notice shows how many px it's off). |
3 Enemy AI · role
For enemies (type enemy), sets the behavior style (humanoid · tank · flyer) from aimove · gravity · projectile, nograb → grab immune, and builds suggested spawn options from aggression · nopain (cool · stagger · band). It reminds you to set the role in Game Forge (enemy → grunt or boss, player → hero).
| Item | Meaning · unit · default |
|---|
| ButtonCopy | Copies the spawn options JSON to the clipboard. |
4 Make character JSON
Converts per the table above and downloads one character JSON — sheet (one row aligned on the anchor), delay 1/100 s → 1/60 s frames, bbox → half-width, attack boxes → startup · active · recovery · reach, damage, health, speed (10 → 1.45), com → command combos, custknife → projectile · shot image. 480 base is the default. Open the result in Character Forge to refine it.
| Item | Meaning · unit · default |
|---|
| ButtonMake character JSON | Converts per the table above and downloads the character JSON. Animations set to “Don't import” are left out. Open it in Character Forge to refine the anchor · hitboxes · moves. |
Asset Forge
Handles characters · items · obstacles · effects. Items · obstacles are created here and their properties set, and every asset is matched in position · size frame by frame while comparing against the hero. Edits are baked into the art when saved.
| Item | Meaning |
|---|
| + Load JSON | Open several character · item · obstacle · effect JSONs together. Choose from the list on the left. |
| + New item · + New obstacle | Creates a new item · obstacle. Add the image (horizontal PNG strip) and set values under “Properties” on the right. When you add an image, the frame count is guessed assuming square cells. |
| Properties | id · name · kind · values · image · frames · fps of the selected item · obstacle. Only the fields needed for the kind appear. See the “Obstacle definition fields” · “Obstacle kinds” · “Item kinds” tables below. |
| Save this only · group by kind · save all | Downloads just the selected one · one file per kind (items.json · obstacles.json) · everything in one (only clickable when there is something to save). Load them in Stage Forge steps 8 · 9. |
| Play · fps | Plays the selected item. fps = cells per second. |
| Compare with hero · load hero | Stands the hero character beside it to compare size. |
| Frame adjust — overlay previous frame · opacity | Overlays the previous cell semi-transparently to check for jitter. |
| Below floor | Extends the area below the floor line. For crates drawn at an angle, the bent line at the bottom corner must touch the floor line to look grounded. |
| Move · eraser · flip horizontally | Moves · erases · flips the art in this cell. 1px at a time with ◀ ▶ ▲ ▼. |
| Size · target height · fit | Art scale. Enter a target height (px) and press “Fit” to size it to that height. |
| Revert this frame · revert all | Reverts edits for one cell · all cells. |
| Bake into image | Applies the edited position · size to the art. |
| Details — anchor · hitbox · actual size | Shows the point under the feet, the hitbox, and the actual in-game size. |
| Overlay effect · fix | Overlays an effect on a character move to line it up. |
Obstacle definition fields
| Field | Meaning |
|---|
| id · name | The name referred to by placements · drops, and the display name. |
| Kind | Seven behaviors — table below. |
| hw · depth · height | Hitbox half-width · depth · height (px, 960 basis). Can be smaller than the art. |
| Image · frames · fps | Sheet PNG, cell count, playback speed. |
| Base width | Which screen size the art was drawn for. 960 is the default (art as-is). If you drew it small for a 480 × 270 screen, choose 480 — the engine draws it at 2×. |
| Hits hero only | Fire · rolling barrels — if off, enemies get hurt too. |
| Drop | Item dropped when it breaks. |
Obstacle kinds
| Kind | Action | Kind-specific fields |
|---|
| solid | Unbreakable (blocks) | — |
| breakable | Breakable | HP (hp) |
| explosive | Explosive | HP · blast radius (blastR) · blast damage (blastDmg) |
| hazard | Damage over time (passable) | Damage (dmg) · interval (tick, frames) |
| falling | Falls from the sky | HP · fall speed (fall) · landing impact (impact) |
| mover | Rolls side to side | Speed (vx) · contact damage (dmg) |
| platform | Platform (can stand on) | — (can stand on it; its height is the platform height) |
Item kinds
Fields — id · name · kind · amount (amount) · duration (duration, frames) · text (text) · color · image · frames · fps.
| Kind | Name | Meaning |
|---|
| heal | HP recovery | HP recovery — by amount (e.g. 35), shows text |
| fever | Fever (power-up) | Fever (power-up) — stronger attacks for duration frames (e.g. 900) |
| special | Super gauge | Super gauge — fills amount slots |
| life | Extra life | Extra life |
Engine dev screen
The authoring screen you see when opening engine/neon-precinct.html directly, or in a game built without “for release”.
| Item | Meaning |
|---|
| Load game / character / stage JSON | Load several JSONs and play right away. If hero · stage are empty, the first ones are used. |
| Roster — hero · grunts · boss · stage | Tap the chips to choose the characters · starting stage for this run. |
| START | Starts the game. |
| AUTO | Auto play — runs to the end hands-free. |
| Sandbag | Puts up a target that never fights back or dies (for testing moves). |
| ◎ Hit studio | Adjusts hit feel · sound. Paste into Game Forge step 7 with “Copy settings”. |
| ⚙ Key settings | PC key layout. |
| Language (top left) | Screen language (한국어 · English · 日本語). Opens in the browser language; any other language opens in English. |
| Pause | Esc · P or the “Ⅱ” in the screen corner. While paused, T returns to the title. Move list · sound settings. |
Glossary
| Item | Meaning |
|---|
| Anchor | The point under a character's feet — where it touches the floor. |
| Floor band | The strip characters can walk up and down in. |
| Gate | The end of the area where a wave ends — where the camera stops. |
| Wave | The unit enemies come in. Defeat them all to move on. |
| Tier | Grunt · elite · boss · final. HP · size · moves · score. |
| Behavior style | How an enemy behaves (humanoid · tank · flyer · grappler). |
| Spawn options | Behavior · special skill settings (JSON) attached to a wave's enemy group. |
| Special skills | Grab · collapsing floor · mortar · super mode · forbidden spell · clone · invincible counter. |
| Hit frame | The pose cell shown timed to the start of the attack hitbox (hitFrame). |
| Startup · active · recovery | The three phases of an attack (frames). |
| Hitstop | The brief pause of the screen at the moment of impact (freeze). |
| Launch | The hit opponent is lifted into the air (launch · lift). |
| Armor | A state where hits don't interrupt. |
| Variant set | Cells for another look during power-up · rage. |
| Parallax | How much slower a background layer scrolls than the camera. |
| Procedural background | The default background the engine draws without art. |
| Part battle | Fighting a boss split into several parts. |
| Slash mode | A mode that widens the hero's attack range and narrows the hurtbox. |
| For release | A build setting that hides authoring items and builds the player-facing screens. |
| Frame | 1/60 s. |
Troubleshooting
| Item | Meaning |
|---|
| A character looks like it floats or sinks into the floor | Adjust “Foot Y” in Character Forge step 3. If it differs per cell, fix it cell by cell in Asset Forge. |
| The background is pushed down, or the floor image doesn't show | Enter the floor lines in Stage Forge step 2 first, then “Align background · floor vertically” in step 4. |
| ⚠ at the top of a wave card | The reason is written there — gate spacing (700 or more), enemies appearing beyond the next gate, obstacles out of range, and so on. |
| Enemies don't appear | Check the character list · roles (grunt · boss). Missing characters show up in Game Forge step 9 Check. |
| “Play in engine” doesn't open | Allow pop-ups in the browser. The engine must be in the engine/ folder of the same bundle as the tools. |
| Authoring buttons show in the built game | Turn on “Build for release” in Game Forge step 5 and build again. |
| Obstacles look like dotted boxes · items like diamonds | That obstacle · item has no art. Add art in Stage Forge steps 8 · 9. |
| Can't jump over rolling barrels | Shrink the hitbox (half-width · height). The art can stay as it is. You have to run at it and jump. |
| Part of the art is cut off after pose editing | Parts moved outside the cell are cropped (a warning appears). Reduce the move · size, or widen the cell in step 2. |
| The game file is too large | Mostly video · music. Shorten the video or use slides, and use ogg for music. |
| A warning appears when closing | There are unsaved edits. Save, then close. |
Usage scope · license
The engine · tools · scripts are under a free license (LICENSE at the top of the bundle — this English version is authoritative) — The engine · tools are free to use when downloaded from the official distribution channel (neonprecinct.com), and games you make can be sold freely with no royalty. Reselling or redistributing the software (even unmodified or free of charge), distributing modified versions, and distributing it under another name are not allowed — engine files included in your games are the exception. Sharing a link to the official channel is fine. For how far you can reuse the sample's (Hyakki Yako) art · sound, see “Usage scope” in samples/hyakki-yako/README.md.
| Item | Meaning |
|---|
| Use of generative AI | Portions of the artwork, sound, and English/Japanese translations in this product were created with the assistance of generative AI tools. See “How this sample was made” in the sample README. |