A Godot 4.6 + GDScript 2D territory-control arcade prototype — four factions fight for grid dominance in a chaotic bullet arena.
一个基于 Godot 4.6 + GDScript 的 2D 四阵营领土争夺街机原型。
Engine: Godot 4.6 · Language: GDScript · Tests: 10 runners · GitHub Actions CI · Platforms: Windows / Android
| 开始界面 | 游戏初始 | 游戏中场 | 事件画面 | 胜利结果 |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
v2.1.11.1 (Latest Stable) — Windows zip · Android APK
All releases: github.com/2002yy/BallWar/releases
- 10 headless CI runners — smoke, wiring, coordinator, integration, layout tests via GitHub Actions
- Architecture layering —
Main.gdorchestration → coordinators, restore planners, save adapters (docs/ARCHITECTURE.md) - Save/load with hardening — slot-based saves, backup recovery, version checks, input sanitization (docs/SAVE_SYSTEM.md)
- Performance probes — bullet pressure, frame time, trail cache metrics built into runtime (docs/PERFORMANCE.md)
- Android export pipeline — ETC2/ASTC validation, debug APK, PowerShell scripts (docs/ANDROID_EXPORT.md)
- Four-faction territory control, chamber-driven firing rhythm, event roulette, multi-mode rules
System layering (see docs/ARCHITECTURE.md):
Main.gd— top-level lifecycle orchestrationSaveFlowController— continue/load flow (prepare_*/apply_*)RestorePlan— active restore planning data through the continue pathSaveGameCodec+SaveStateApplier— validate, normalize, then applyControlChamber,Turret,Bullet— each ownsrestore_from_state(...)- Runtime-heavy:
Battlefield,BulletPool, pooled trail internals
10 headless test runners run via GitHub Actions CI. Correctness baseline: 1083 checks.
| Runner | Checks |
|---|---|
LayoutSanityTestRunner.gd |
376 |
SmokeTestRunner.gd |
218 |
SaveFlowControllerTestRunner.gd |
190 |
IntegrationTestRunner.gd |
133 |
StartMenuSceneTestRunner.gd |
55 |
GameStateCoordinatorTestRunner.gd |
50 |
GameHUDSceneTestRunner.gd |
27 |
EventRouletteSceneTestRunner.gd |
14 |
RestorePlanTestRunner.gd |
11 |
SettingsPanelSceneTestRunner.gd |
9 |
Full guide: docs/TESTING.md
Open project.godot with Godot 4.6 in the editor.
# Headless check examples:
<godot_console> --headless --path . --script res://scripts/tests/SmokeTestRunner.gd
<godot_console> --headless --path . --script res://scripts/tests/IntegrationTestRunner.gd
<godot_console> --headless --path . --script res://scripts/tests/LayoutSanityTestRunner.gdRelease packaging: docs/RELEASE_PROCESS.md
Current direction: visual & audio polish, mobile layout verification, performance baselines.
当前方向:素材与音效接入、移动端布局验证、性能基线归档。
See docs/ROADMAP.md




