Skip to content

About

A 3D one-on-one fighting game in Godot 4 with a dynamic action camera: 5 fighters, 5 stages, Arcade, Versus, Training, and online play with rollback netcode, an internet lobby and spectating.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

3D Fighter

tests

A one-on-one 3D fighting game inspired by Street Fighter and Tekken, built in Godot 4. Its signature is a dynamic action camera that orbits and dollies in on every big hit.

3D Fighter key art

Features

  • 8 fighters, each with normals, motion-input specials, a super and a distinct CPU personality (design notes in docs/characters):
    • Kenji: zoner;
    • Rhea: rushdown;
    • Brutus: punisher;
    • Valka: grappler with an unblockable command grab;
    • Jin: Tae Kwon Do kicker who controls kick range;
    • Mira: street brawler who powers up with Lakas Stance (Focus) until her rushes hit like a typhoon;
    • Lian: Wing Chun counter fighter who catches strikes with a reversal stance and throws the attacker;
    • Aelia: armoured knight whose heaviest moves shrug off a hit (super armour).
  • Outfits that fit each style: a karate gi with headband, a Tae Kwon Do dobok, kickboxing gear, a wrestling singlet with knee pads and boots, a brawler's tank top and work pants, a street fighter's zip-up, track pants and sneakers, a kung fu jacket, and a knight's plate armour. Loose clothes hang and fold like cloth (wide gi sleeves, bloused jackets, baggy pants). Woven fabric textures, stitched hems and skin detail hold up in close-ups. Mirror matches get alternate colours.
  • 8 stages: Boxing Ring, Dojo, Rooftop, Temple, Beach, Night Market, the Express (a fight on the roof of a speeding train) and the Kowloon Courtyard, where the sun rises round by round, the neighbours come out to watch and jets roar in low overhead. Each has its own music and ambient life (crowds, flames, smoke, rain, neon, passing trains, pigeons).
  • Modes: Vs CPU, Arcade (ladder, scoring, shadow boss), local 2-player Versus, Online (rollback netcode, LAN discovery, join by IP, or an internet lobby server with rooms and spectating), Training (frame data, input display, record/playback, and combo trials with a "show me" demo) and a Demo of two CPU fighters on a random stage. Finished matches are saved as replays (pause, frame step, slow motion, seeking).
  • Fighting-game systems: super meter with cinematic super freezes, counter hits, combos, juggles, wall splats and rope bounces at the stage edge, throws and throw breaks, high/mid/low blocking, and Tekken-style sidesteps.
  • Engine: a deterministic 60 Hz simulation (verified identical on Windows and Linux) with a headless regression test suite.

Screenshots

Jin's Tornado Kick on the beach Jin's Hurricane Kicks super
Temple stage Super flash
Earthquake in the dojo Thunder Valkyrie on the rooftop
Character select Stage select

Controls

Keyboard (P1) Gamepad
Move / jump / crouch W A S D Left stick / D-pad
Light / Heavy Punch U / I X / Y
Light / Heavy Kick J / K A / B
Sidestep L RB
Pause & move list Esc Start
  • Specials use motion inputs (for example ↓↘→ + P), and a full super meter enables ↓↘→↓↘→ + P/K. Each fighter's moves are listed in the pause menu.
  • Player 2 uses the arrow keys with numpad 4/5 (punches), 1/2 (kicks) and 6 (sidestep), or a second gamepad.
  • Online: one player hosts; on the same network the other picks the game from the list, or joins by address (UDP port 7777; forward it on the host's router to play over the internet). Both players need the same build. Connections are encrypted, and both screens show a 6-digit security code to compare.
  • Internet lobby (Online → Internet Lobby): connect to a 3D Fighter lobby server, open a room or join one from the list or by its 6-letter code, no port forwarding needed (the server punches through NATs, or relays the encrypted traffic). Rooms can allow spectators, who watch live with a short delay and can send reactions.
  • Remapping: every key and gamepad button can be changed per player in Options → Controls, which shows a controller diagram. The triggers can be bound too.

Run from source

Requires Godot 4.7 with a Vulkan-capable GPU.

godot -e --path .   # open in the editor
godot --path .      # run the game

Tests

godot_console --headless --path . -s res://tests/sim_test.gd   # exit code 1 on failure

Build releases

This needs the Godot 4.7.2 export templates for Windows, macOS and Linux, plus Python 3.

python tools/build_release.py all                     # Windows + macOS + Linux -> dist/
python tools/build_release.py windows linux           # any subset
python tools/build_release.py all --test              # run the tests first, stop on failure
python tools/build_release.py all --version 0.3.0 --test --notarize   # full release

The script produces three archives:

Output Contents
dist/3DFighter-v<ver>-windows.zip Single exe plus README; smoke-tested
dist/3DFighter-v<ver>-macos.zip Universal .app, signed with Developer ID; --notarize notarizes and staples it
dist/3DFighter-v<ver>-linux.tar.gz x86_64 binary plus README; smoke-tested in WSL when available

Mac signing reads its credentials from %USERPROFILE%\AppleDeveloper, which stays outside the repo. Use --no-sign for a local unsigned build.

Project layout

scripts/   gameplay (fighter, AI, camera, FX, UI, arcade, training)
scenes/    menus, fight scene, generated stages
data/      characters and moves (generated; edit tools/build_movesets.gd)
tools/     generators (stages, animations, movesets, key art) and build_release.py
tests/     headless simulation tests

Credits

Third-party assets in the game are CC0 except Aelia's model (CC BY), all credited in assets/CREDITS.md (the logo is lettered with the Permanent Marker font, Apache 2.0, kept in tools/fonts/):

  • Characters and animations: Quaternius.
  • Aelia's model: "Aelia Character Preview" by Abinady10 (Blend Swap 30219), CC BY; rigged, posed and recoloured for the game.
  • Skies and textures: Poly Haven.
  • Sounds and announcer: Kenney.
  • Music and voices: OpenGameArt artists.

Made with Godot Engine.

License

© 2026 Clint Christopher Canada.

  • Code: MIT License.
  • Original assets (stages, generated animations, portraits, key art and logo, synthesized sounds): CC BY 4.0.
  • Third-party assets: keep their own licenses (CC0, Aelia's model CC BY; the logo tool's font is Apache 2.0); see assets/CREDITS.md.

About

A 3D one-on-one fighting game in Godot 4 with a dynamic action camera: 5 fighters, 5 stages, Arcade, Versus, Training, and online play with rollback netcode, an internet lobby and spectating.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages