Note — Results May VaryThe prompts and example videos in this guide were produced with the Verse8 Auto LLM model available at the time of writing (May 2026). The models offered by Verse8 may change over time, and by the nature of LLMs the same prompt does not always produce identical output. As such, the exact results shown in the videos are not guaranteed. Please treat the prompts as directional guidance and implementation references, not exact reproductions. If a result differs from your expectation, we recommend iterating on the prompts or trying a different model.
1. Base Setup Prompt
Initial setup prompt that the feature prompts in the sections below build on top of.Build a 2D side-view game featuring a MapleStory character using
Phaser 3 + TypeScript + Vite + Bun.
[Project setup]
- Canvas 1280×720, Arcade physics, gravity Y 1500
- Debug rendering togglable at runtime (D or F1)
[Maple character configuration]
- Use the Maple MCP to look up the following assets and save them as a render plan JSON:
- body id 2000, head id 12000
- one default face / one default hair
- one 1H Sword (AAT=1 recommended)
- one coat / pants / shoes
- Required action states (minimum):
stand1, walk1, jump, prone, proneStab, swingO1, swingO2, stabO1
- Merge the saved JSONs into a single render plan and preload all textures.
[Rendering]
- Use the MapleSprite / queueRenderPlan helpers under src/__system__/maple/
- Never modify src/__system__/ directly
- The player class extends MapleSprite
- scale 2, race "human", default facing "left"
- Control direction only via setFacing("left" | "right") — do not use setFlip
- Never hard-code Maple action names. Use weapon-aware methods (walk(), stand(), attack())
[Scene]
- A single MainScene
- A large static floor at the bottom + 2~3 platforms at varying heights
- Camera follows the player
[Hitboxes]
- Standing: 30×60, offset (-15, -40)
- Prone : 40×20, offset (-20, -17)
* The top edge is for visual alignment only — do not lower it further.
[Navel correction — IMPORTANT]
- Maple sprites render relative to the navel, so the visual floor differs per pose.
- Entering prone : first y += 17, then swap action / hitbox
- standUp : first y -= 17, then swap hitbox / action
2. Feature Prompts
The prompts in this section build on top of the Base Setup in Section 1. Start with 2.1 to ensure MapleStory assets are applied correctly, then follow the sections in order.2.1. Applying MapleStory Assets
If MapleStory assets are not being applied properly, prefix the prompt with instructions to use the proper MapleStory assets, such as “Using the Maple MCP, [specific action],” so the AI can search for and apply the relevant MapleStory assets.2.2. Character Actions
Copy each prompt below into Verse8 as-is. Applying them sequentially gives the best result.2-2-1. Horizontal movement

Use the Maple MCP
Horizontal movement
Move with the Left / Right arrow keys.
- Move speed 200
- ← / → : set horizontal velocity + update facing + (on ground) walk action
- No input : horizontal velocity 0 + (on ground) stand action
- Movement input is ignored while attacking or prone.
2-2-2. Jump

Use the Maple MCP
Jump
Jump with the Up arrow key.
- Jump power 900
- Can only jump while on the ground
- jump action while airborne
- Jump input is ignored while attacking or prone.
2-2-3. Prone

Use the Maple MCP
Prone
Press the Down arrow to lie down; release to stand up.
- Prone while ↓ is held; standUp on release
- Movement / jump input ignored while prone (for attacks, see the prone variant in the [Attack] section)
- Each prone entry / standUp triggers exactly once (no re-entry)
- Cannot enter prone or standUp while attacking
- Before standUp, check overhead collision: if any collidable body (excluding self) overlaps the area the standing hitbox would occupy, defer standUp
- standUp is disabled for 100ms after prone entry (debounce)
- If entering prone while moving, decelerate horizontal velocity to 0 over 300ms; otherwise stop immediately
- On prone enter / exit, always apply the navel correction (y ±17) from [Base Setup].
2-2-4. Attack (ground / jump / prone)

Use the Maple MCP
Attack
Attack with Space. The variant for standing / airborne / prone is selected automatically.
Common rules
- One Space press = exactly one motion playback. No looping even while held.
- The next attack is only allowed after (a) the key is released and (b) the previous animation has finished.
- Use press-edge detection (e.g. JustDown). Do not use `isDown`.
- Call via weapon-aware methods. Do not hard-code action names.
- All other input (move / jump / prone / standUp / extra attack) is ignored during an attack.
- On attack end (~500ms), clear the attack flag / hitbox.
Basic attack (ground, standing)
- Auto-selects a swing / stab variant based on weapon AAT (e.g. 1H Sword → swingO1)
- Halve horizontal velocity (inertial weight)
- On end, if stopped and grounded → stand action
Jump attack (airborne)
- Triggered by Space while jumping or falling
- Preserve horizontal / vertical inertia (no velocity change; gravity / falling proceed normally)
- On end, return to `jump` if still airborne; stand / walk if landed
Prone attack
- Triggered by Space while prone
- Auto-selects a weapon-aware prone variant (e.g. 1H Sword → `proneStab`)
- Keep horizontal velocity at 0 (no inertial change)
- standUp input is locked during the attack — cannot stand up until the attack ends
- After end, remain prone — do not auto standUp.
Attack hitboxes
- Spawn ~50px ahead in the facing direction
- Ground attack : 60×100, centered on upper-body height
- Jump attack : 60×80, between upper body and legs (the swing range while airborne)
- Prone attack : 60×30, centered on the prone body height
- Visible only in debug mode (red, ~0.3 alpha); otherwise invisible but active
- Destroyed after ~300ms.
2-3. Hitbox & Collision

2-3-1. Dynamic hitbox swap
On state transitions, swap size / offset within 1 frame. Prone entry is immediate; standUp runs only after the overhead collision check.
2-3-2. Full hitbox system (beginner-friendly all-in-one prompt)
Build a hitbox system for this 2D platformer. Apply sensible defaults; only follow these principles.
1. Four distinct box types
- Hurtbox — the area where the character takes damage
- Hitbox — the area where a weapon / attack lands
- Collider — physical collision against walls / floors
- Trigger — overlap-only events such as portals / items / ropes
2. Pose-based auto switching
Hurtbox size / offset switches within 1 frame based on character state (stand / prone / jump). When standing up, run the overhead collision check first.
3. Active-frame gating
Attack hitboxes are off during the motion's startup / recovery and only on during active frames. Include frame-by-frame active information in the motion data.
4. Multi-hit prevention
The same enemy can only be hit once per attack motion. Cache hit enemyIds and reset the cache when active ends. Allow multi-hit (e.g. bosses) via an opt-in flag.
5. Automatic i-frames
On being hit, automatically grant invulnerability. While invulnerable, the hurtbox ignores hits from any hitbox / trigger — terrain colliders still apply.
6. Debug visualization — use Phaser built-ins
Physics bodies (collider / trigger) are handled automatically by Phaser arcade physics debug mode.
```
// game config
{ physics: { default: 'arcade', arcade: { debug: true, debugBodyColor: 0x00ffff } } }
// runtime toggle (F1)
scene.physics.world.drawDebug = !scene.physics.world.drawDebug;
scene.physics.world.debugGraphic.clear();
Once enabled, every physics body (player / monsters / projectiles / platforms / ropes / portals) is shown automatically, including newly created ones — no subscription pattern needed.
For custom hurtbox / hitbox (judgement zones that are not Phaser bodies), draw them separately via `scene.add.graphics()`, gated by the same debug flag.
- Hurtbox : translucent yellow (`fillStyle(0xffff00, 0.3)`)
- Hitbox : translucent red — drawn only during active frames
- Trigger area : green outline (for non-Phaser-body cases)
Pin graphics objects on top via setDepth(9999).
```
7. Data separation
Do not hard-code box sizes / offsets / active timings. Manage them in a config object / JSON, split per character and per motion for easy tuning.
8. Defaults
Use values typical for a side-scrolling platformer (e.g. 24×60 standing, 24×30 prone). Mark areas that need tuning with comments.
2-4. Monsters / Enemies

2-4-1. Monster hit reaction
Use the Maple MCP
Monster hit reaction
hitstop 80ms + red tint 0.2s. Hitstun 300ms (action freeze), then return to the previous state. Damage number floats upward and fades.
2-4-2. Monster death
Use the Maple MCP
Monster death
Invulnerable during the die motion. Fade-out 0.3s. Remove the collider after the sprite is gone.
2-4-3. Contact damage
Use the Maple MCP
Contact damage
At most one hit per overlap (handled automatically by the player's i-frames). Spawn a shockwave ring ease-out 0.2s at the contact point. Add a knockback motion on impact.

