Waveport is a Godot 4 prototype that mixes deckbuilding, ship modules, and turn-based pirate combat. The core loop is built around loading cannon cards into a firing queue, timing instant cards around enemy intents, and tuning your ship between encounters with module swaps and cargo rewards.
Waveport is a prototype and portfolio snapshot, not a finished commercial release.
- One playable captain is enabled today; the additional captain slots are placeholders.
- One starter ship is implemented, with module slots, cargo, and a ship preview/loadout overlay.
- The main run currently covers a short four-encounter sequence, plus drills/tutorial battles and a sandbox encounter selector.
- Systems work is further along than content, balance, UX polish, audio, and final presentation.
- The build still contains test-friendly scaffolding, including drills, sandbox fights, and debug-oriented starter cargo.
Combat prototype with multi-enemy encounters, card hand management, queued attacks, and enemy intent previews.
Ship preview/loadout screen used to inspect slot types, installed modules, and cargo capacity.
- Cards are defined in
data/CardList.gdand instantiated throughglobals/DeckManager.gd. - Queueable cards are converted into lightweight queue data and stored in
globals/TurnManager.gd. globals/CombatMath.gdpreviews queue outcomes before firing, including order-sensitive bonuses, next-shot multipliers, repeated shots, and cannon/module bonuses.- After firing,
DeckManagerresolves discard/redraw flow and keeps the hand, deck, and discard UI in sync.
- Enemy behavior is data-driven through
data/EnemyList.gdinstead of being hardcoded per encounter scene. - Enemies can use fixed patterns, weighted action tables, slot-specific side behaviors, conditional actions, and scripted follow-ups through
globals/EnemyActions.gd. - Intent text is generated from the selected action and surfaced in battle so the player can plan around attacks, defense turns, buffs, and formation shifts.
- Ship slots are described in
data/ShipList.gd, while module definitions live indata/ModuleList.gd. globals/PlayerData.gdrecalculates command bonuses, hull bonuses, hand size, queue size, and module-granted cards from the installed loadout.scenes/ShipPreview.gdprovides an inspect/manage overlay for swapping modules between active slots and cargo outside combat.
scenes/BattleScene.gdorchestrates the combat loop: start turn, queue or unload cards, fire the queue, resolve enemy actions, rotate formations, then begin the next turn.globals/TurnManager.gdowns commands, queued actions, and temporary turn modifiers.globals/TurnEffects.gdhandles instant-card side effects such as bleed, burn, draw, healing, delayed block, and repeat-fire effects.- The run layer already includes intermission/plunder flow, guided drills, and a sandbox arena for focused encounter testing.
- Godot 4.4 or newer is recommended.
- No external addons or third-party dependencies are required.
- Clone or download this repository.
- Open Godot 4 and import the folder that contains
project.godot. - Let Godot finish its first asset reimport pass.
- Press
F5in the editor or use Run Project.
The project currently starts at scenes/MainMenu.tscn.
- Save data is written at runtime to
user://save_slot_1.jsonbyglobals/SaveManager.gd. - If you pull renamed assets or scene changes, reopen the project once so Godot can refresh imports.
- This repo intentionally ignores
.godot/and other local/generated editor artifacts.
- Mouse: play cards, queue attacks, and navigate menus
- Fire button: resolve the queued attacks
- Unload button: empty the current queue and refund commands
Tab: open or close the ship preview overlay during battleEsc: close the ship preview; in sandbox mode it returns to the sandbox menuR: restart the current sandbox encounter
assets/runtime art used by the gamecards/card scene and card behaviordata/card, enemy, ship, module, and run definitionsenemies/enemy scenes and base enemy behaviorglobals/autoload managers and combat systemsmodules/experimental module scene stubsscenes/menus, battle flow, plunder/intermission, drills, and sandboxship/player ship scenes/scriptsui/reusable combat UI scenesmedia/GitHub-facing screenshots and capture assetsdocs/repo audit notes for the public release pass
Additional GitHub screenshots or short GIFs can go in media/screenshots/. Runtime game assets should stay in assets/.

