Three ways to make a fighter
Whichever way you choose, the fighter is registered to your own Google account, up to three fighters per account. Pick the way that fits how much you want to do yourself.
Way 01
Leave it to ODDBOUT
On My fighters, say in one line what fighter you want, and add up to two pictures you have the right to use if you like. Pick one of two fronts (ask for changes twice at most), and ODDBOUT goes on to the motions. Check the motions and register in one press (press Redo under a motion to change it, three times at most; rename your fighter on its page later), then enter your fighter once you have checked its moves. Signing up gives you 500,000 tokens; what ODDBOUT uses making your fighters comes off them (My fighters shows what is left). On a full day your request waits its turn and starts by itself.
Way 02
Make it by talking to your agent
In My fighters → “My agents” (the logo button beside the title), press the row of the agent you use — Grok, Codex (ChatGPT · Dots), Claude or Gemini — and follow its connection steps: one button copies the address and opens the agent’s screen (Claude’s add dialog opens with the name and address filled in). Each connects to the ODDBOUT MCP server with your Google account. With the ODDBOUT plugin 0.6.0 or later, ChatGPT already has the connection (https://mcp.oddbout.com/mcp). Claude and the terminal agents use the address that asks for a sign-in first (https://ztfxxhtmtrvxvuxlqmgz.supabase.co/functions/v1/ai-fighter-mcp/signin); Grok uses the same server at our own address (https://mcp.oddbout.com/signin). Both are on their cards. In Claude, choose Register automatically for the OAuth client when you add the custom connector; in a Team or Enterprise organization an owner adds it. Claude Code, the Codex CLI and Gemini CLI connect from a terminal with the one command on their cards, then you sign in in your browser.
Then tell @ODDBOUT in your chat what you want. ODDBOUT makes it the same way as Way 01, and your agent walks you through the choices. To leave the choices to ODDBOUT, say so: you answer once, at the finished motions. In ChatGPT you attach pictures; other agents give you a link to send them, and an agent working in a terminal can upload the file itself. You can disconnect an agent there at any time.
“@ODDBOUT Make me a small cat boxer with red gloves and an oversized blue hoodie. Pick the look yourself.”
Way 03
Make it on my PC
With a Linux PC and your own ChatGPT and SuperGrok subscriptions, your PC runs the generator for your own fighters: no approval, and none of your tokens. In My fighters → “My agents” → Advanced → “Make on my PC”, name your host, accept the host terms and press “Get the PC command”. Paste the three lines into your PC’s terminal within 30 minutes; the code works once. Then choose “My PC” as the maker on My fighters, or ask your agent to make it on your PC. You can disconnect the PC or remove the host in the same place.
To choose every concept and motion yourself with the local creator toolkit, follow the guide from Make it yourself below.
Make it yourself: quick start
You make the creative choices. Your assistant runs the local tools, prepares the files, and shows the results. You do not need to write a character manifest by hand.
- Open a new conversation in Dot, Codex, or another assistant that can access local files and run tools on your computer.
- Paste the prompt below. Replace the cat boxer with your own idea and attach a reference image if you have one.
- Review the fighter’s front before making animations. A browser-only chat without local tool access cannot run these tools; if it hands you the finished files, check and upload them on the site.
Starter prompt
Read https://github.com/jeonghwanko/oddbout-starter/blob/codex/game-context/START-HERE.md
I want to make a fighter for ODDBOUT: a small cat boxer with red gloves and an oversized blue hoodie.
Use the current game requirements and the bundled creation workflow. Check which image and animation tools I can use with my own accounts.
Show me the full-body front first. Keep the red gloves and oversized hoodie. After I approve the look, show movement, attacks, and reactions in separate review groups.
Let me review the final files before registration.The sample describes a new fighter; it is not a request to generate anything until you send it to your assistant. No ODDBOUT sign-in is needed for local concept work.
What you need
- A computer with local tool access. Keep the project in a folder your assistant can read and write.
- Git, Node.js 22.12 or later, and Python 3.11 or later. Your assistant can check the installed versions before setup.
- Your own image and animation access. Tool installation does not include a generation subscription or unlimited usage.
- An idea, reference images, or both. Use references you created or have permission to use, and say what each image is for.
Choose a generation route
Tell your assistant what you can currently access. Image and animation access are checked separately. These are starting recommendations; your explicit choice takes priority.
| Available tools | Concept art | Animation |
|---|---|---|
| GPT + Grok | GPT | Grok video |
| Grok | Grok | Grok video |
| GPT | GPT | GPT rows |
Agree on what to do if a tool is unavailable or reaches its limit. The assistant should not silently change providers or move to a paid API. There is no fixed completion time: generation, revisions, and reviews vary.
Set up the tools
For the guided route, ask your assistant to set up the linked starter kit. If you prefer to run the setup yourself, use these commands in a terminal. They install the pinned tools in this checkout.
Install the starter
git clone --branch main --single-branch https://github.com/jeonghwanko/oddbout-starter.git
cd oddbout-starter
npm ci --ignore-scripts
npm run sprite:setup
npm run sprite:statusUse the main branch. A GitHub ZIP omits the submodule contents. sprite:setup fetches the pinned sprite-gen revision and creates its own Python environment. sprite:status checks installation, not subscription or sign-in status.
Installed before 2026-10-29?
The old codex/creator-hosting branch is frozen, and the kit's readiness check stops a checkout on it as the wrong branch. Commit or set aside any local changes, then move the checkout to main. A plain git checkout main fails in the single-branch clone the old instructions made.
Move to main
git remote set-branches origin main
git fetch origin
git switch -C main origin/main
npm ci --ignore-scripts
npm run sprite:setupUse the toolkit from Codex
From the starter folder, build the ODDBOUT plugin and install it in Codex. The plugin carries the creation skill and the ODDBOUT connection (Google sign-in), so registration works from the same chat. The builder prints the paths and the exact commands.
Build and install the plugin
npm run plugin:build
codex plugin marketplace add <path printed by the builder>
codex plugin add oddbout@ai-fighter-localOpen a new chat and call $create-fighter, or describe the fighter you want. Restart the app if the plugin does not appear. If you move the folder, build again. Registration goes through that same connection; the toolkit has no sign-in of its own.
Confirm readiness
Read requirements and tool readiness
npm run creation:context
npm run sprite -- workflow --kind spriteYour assistant reads the current game context and get_fighter_spec sections overview, creation, and guide. It reads the schema when packaging. A workflow result of needs-input (exit code 2) means an account or route choice is still needed. Start generation only when that stage is ready.
Create the look
Describe the parts that make your fighter recognizable: silhouette, face, outfit, colors, equipment, and attitude. A short paragraph is enough to begin. A name and biography can come later.
- Identity reference: keep this face, body, or costume.
- Outfit reference: use this clothing, these colors, or this equipment.
- Style reference: the feel you are after. The colouring itself is always ODDBOUT’s: flat cel colours with one soft shadow step.
- Pose reference: borrow the stance or motion, not the whole character.
GROUP 01
Appearance
It starts with the front: pick one of two full-body front pictures, or ask for a change. From the chosen front come six faces for matches (the last is the face shown when the fighter is knocked out), the side view, and the idle pose.
Look for: The same character in the front, the faces, and the side view; readable hands and equipment; the right expressions, proportions, and costume.
“Keep the face and colors. Make the gloves larger. Do not start animations yet.”
The front becomes the fighter’s picture on the site and its face in matches. The motions are drawn from the side view, which faces right in an orthographic view with a 16° camera elevation. The toolkit handles the shared scale.
Make it move
Once you choose the look, review movements in groups. Each group is prepared and shown together. An approval advances the work; a request such as “good, but change the hands” asks for a revision first.
GROUP 02
Stance & movement
Combat idle, a walk cycle of 12–32 frames, and a run cycle of 10–16 frames. See them at the same scale.
Look for: Alternating feet, stable body size, planted feet that do not slide, and a loop without a visible jump.
“Keep the run. Reduce the bounce in the walk. Leave the outfit unchanged.”
GROUP 03
Attacks
Combo, heavy strike, and dash. Watch the preparation, contact, and return to stance.
Look for: Clear anticipation, readable hits, and a recovery that suits the character’s weight.
“The heavy strike needs a bigger windup. Keep the combo and dash.”
GROUP 04
Defense & reactions
Block, hit reaction, groggy loop, fall, and the linked get-up poses.
Look for: A clear guard; believable impact; a fall that ends lying down. Getting up should play in its own transition.
“Keep the block. Make the fall feel heavier, without changing the face.”
OPTIONAL
Fighting style
A signature skill, an entrance, a victory pose, and how the fighter fights. The assistant offers this once after defense; skip it if you like. It does not hold up the final review, but each clip you keep needs a chosen, checked version.
Look for: Moves and a way of fighting that suit the character.
“Add a victory pose with a small bow. Skip the entrance.”
If you want the assistant to handle later groups without review stops, say exactly which ones. You can still request a targeted change. Silence does not approve an unfinished group.
Review & package
GROUP 05
Review the final files
The assistant packages the selected versions, validates the actual files, then shows all motions and the profile from the final package.
Look for: Consistent identity and scale, correct timing and foot contact, the right portrait, name, description, and match lines.
“These are the final versions. Validate the package and register it to my account.”
File validation and visual review answer different questions. A valid file can still contain sliding feet, duplicated poses, or the wrong face. Watch the actual final animation before registering.
What the assistant packages
It gathers the approved animations with sprite-gen game-pack, then runs fighter:pack using a generated plan. The packer measures dimensions, origins, contacts, frame timing, and hashes from real files. Packaging requires these file and contract checks only. Gait and visual-quality reports are kept as notes and do not block it, so your own look at the motions is the quality check.
Example paths — use your actual plan and output
npm run fighter:pack -- path/to/plan.json
npm run validate -- output/my-fighter/fighter.jsonPackage structure
output/my-fighter/
fighter.json
assets/
idle.webp
walk.webp
run.webp
...The submitted art uses static WebP sprite sheets with transparency. GIFs, videos, and animated WebP files are previews, not submission assets. Never invent frame measurements or copy the geometric test bot and call it a new generated fighter.
Register your fighter
- Connect your ODDBOUT account. The ODDBOUT plugin, or an agent connected in My agents, signs you in with your own Google account. Use the same account as on the creator page. The workspace needs no separate sign-in.
- Ask to register the approved package. The assistant validates the manifest and actual files, then uploads them with
prepare_fighter_registration,upload_fighter_assetandsubmit_fighter_registration. - Wait for the server result. A queued upload is not a completed registration. The assistant checks the submission with
get_fighter_submissionuntil it returns a final result. - Confirm the fighter in your account. Completion includes
registered, afighterId, and its current availability. No invitation or manual pre-approval is required. A file-validated fighter starts Not entered: you can practise with it in the arena, and it stays out of other people's cups, ranked duels and public lists. - Send the front. The assistant uploads the chosen front and its faces as the fighter’s profile set (
submit_profile_set). The home page shows the fighter once an operator approves the set. - Check every motion and enter. On your fighter's page, open All motions: play each motion, slow it down or step through it. Then press Enter ODDBOUT; other people can now play against your fighter in cups and ranked duels. If the site asks for the front first, ask your agent to send the profile set. A new package returns the fighter to Not entered until you enter it again.
Retries and sign-in
For an unchanged upload, keep the same idempotency key when retrying. Changed files need a new key. If the result is unknown, inspect the existing submission before uploading again. Registered packages are immutable; content can be restricted after publication.
Registration always goes through the ODDBOUT connection: the plugin, or an agent connected in My agents. The toolkit’s npm run login is only for joining a generation host and for the operator tools, not for registering.
Make it with another tool
Any tool can make a fighter as long as the package follows the spec: fighter.json and its still, transparent WebP sprite sheets under assets/. Check it here first: nothing is sent and no account is needed.
- Follow the spec. Start from the example fighter.json; the full spec ↗ explains every field.
- Check it here. Drop the ZIP or the folder below. Each problem names its motion and cell; copy the list for the agent or tool that made the package.
- Upload it. On My fighters: New fighter → Other ways → Upload a finished package. After the server check, review the motions and enter the fighter.
- Required motions
- Optional motions
- All images
- One image
- Images
- Longest side
- One motion
Revise & resume
Name the motion or image you want to change, what should change, and what should stay. Keep approved versions; do not regenerate the entire fighter for a small edit.
“Resume the cat boxer. Keep the approved face, outfit, and run. Only shorten the combo recovery. Show the revised combo before repackaging.”
The assistant keeps a local work note with selected file paths, versions, feedback, and the next review group. For a new conversation, point it to the same project folder and that note. A body or costume change may affect several animations; review the affected groups again. Metadata-only edits need fresh file validation, not another review of unchanged art.
Some changes need no conversation. Open the fighter on My fighters: four buttons open an editor. Profile changes the name, introduction and match lines; Animation downloads the current package and uploads a fixed one; Combat sets how the fighter fights; World holds its story and relations. Profile and combat changes keep the fighter entered. A new package returns it to Not entered until you check its motions again. On All motions, Ask for a fix copies a request to paste to the agent that made it.
Troubleshooting
The tools do not appear in my chat.
Check that the ODDBOUT plugin is installed, or that the agent is connected in My agents, then open a new conversation or restart the app. For the local toolkit, build the plugin again if the folder moved.
Grok shows ODDBOUT as connected but cannot use my account.
Grok was added with https://mcp.oddbout.com/mcp, which it reads as needing no sign-in. Remove the connector and add Grok’s own address https://mcp.oddbout.com/signin: it asks for a sign-in when you connect, and Grok then shows Connected in My agents. If you added Cursor’s Grok Bot with the earlier address (https://ztfxxhtmtrvxvuxlqmgz.supabase.co/functions/v1/ai-fighter-mcp/signin), remove it too and add this address.
Claude cannot add or use ODDBOUT.
In a Team or Enterprise organization, only an owner can add a custom connector (organization settings → Connectors); members then press Connect. Use the address on the Claude card, which asks for a sign-in, and choose Register automatically, not Claude’s published identity. A connector added before with No sign-in reaches only the public tools, and that choice cannot be changed: remove it and add it again with that address. If adding says the server could not be checked, try again a moment later.
The sign-in from a terminal agent does not finish.
The sign-in comes back to the app on your computer, so finish it in a browser on the same computer. On a computer you reach over SSH, or in a container, the browser cannot reach it. The approval page says the connection goes to an app on this computer: approve only a connection you just started.
ODDBOUT appears twice in ChatGPT.
The ODDBOUT plugin 0.6.0 or later already carries the connection. Remove the custom MCP server you added separately.
ODDBOUT refused my request.
ODDBOUT takes a new request while you have tokens left; tokens already used do not come back, whatever the result. Up to three requests a day, not counting one that failed on our side. When the line is full, try again the next day. Make more on your own PC (Way 03).
A generation tool fails or reaches its limit.
Keep the selected work and inspect the request and any existing output before retrying. Follow your chosen stop or fallback policy. Do not treat an unknown result as proof that nothing was generated.
The feet slide or the body jumps between frames.
Revise the affected walk or run and check both feet, common scale, ground contact, and loop boundaries. Repeating a still frame or changing playback speed is not a substitute for valid movement.
Validation failed.
Read the reported stage and error path. Fix that file or motion, then validate again. A metadata-only pass does not mean the actual images or visual motion passed.
Registration is queued, rejected, or missing from my account.
Check the existing submission first. Queued work may be waiting for the validator. Rejected packages include errors to fix. For a registered fighter, confirm the same Google account and current availability before submitting anything again.
My fighter is not on the home page.
The home page shows entered fighters whose front profile set an operator approved. If the fighter has no profile set, ask your agent to send one, then wait for the review.
Technical reference
The table below explains the current 11-motion set. The live game context and schema remain the source of truth. Your assistant refreshes them at the start, on resume, before each new group, and before packaging. If requirements change, preserve the existing work and review the differences.
| Motion | Purpose | Frames |
|---|---|---|
idle | Still full-body pose | 1 |
fightIdle | Combat-ready loop | Current contract |
walk | One walking cycle, alternating feet | 12–32 (16 standard) |
run | One running cycle | 10–16 (12 standard) |
combo | Combo: preparation, strikes, recovery | Current contract |
slam | Heavy strike | Current contract |
dash | Lunge, including preparation and recovery | Current contract |
block | Guard and block | Current contract |
hit | Recoil, stagger, recovery | Current contract |
groggy | Dazed loop | Current contract |
fall | Fall and lie down; linked get-up poses | Current contract |
The appearance baseline uses a 400 px body height; this is not the same as sheet-cell height. The optional clips skill, entrance, and victory can be added to the 11. Assets use one shared coordinate and scale reference. Artwork defines the look and motion; HP, damage, executable code, and gameplay rules are not creator-supplied character fields.
- Starter document with game context ↗
- Full creation workflow and packaging ↗
- Manifest and animation contract ↗
- Gait review guide ↗
- Registration and availability ↗
The toolkit’s repository, commands, and file contract still use the name “ai-fighter”. They are the creation tools linked from ODDBOUT. Guide reviewed: 3 November 2026.
