// the find
m110/airplanes
A 2D shoot 'em up game made with Go, Ebitengine, and donburi. Featuring ECS (Entity Component System).
A two-player local co-op shoot 'em up built with Go and Ebitengine, using donburi as an ECS layer. It's primarily a working reference implementation for ECS architecture in Go game dev — the game itself is modest (two levels, asset-pack graphics), but the code structure is the actual point. Playable in-browser via WebAssembly.
The ECS separation is clean and consistent: components are pure data structs, systems hold all logic, archetypes are factory functions — no blurring between layers. Assets are embedded via Go's `//go:embed` so the binary is self-contained and the WASM build just works. Level design is driven by Tiled .tmx files, meaning new levels don't require code changes. Mobile path (iOS via Xcode + ebitenmobile) is included and documented, which most Ebitengine examples skip entirely.
Two levels and the README itself calls it a long list of TODOs — this is a demo, not a shipped game, and it has been effectively inactive since late 2024. The mobile Xcode project is committed with user-specific xcuserdata files (.xcuserstate, xcschememanagement.plist), which will cause merge noise for anyone who forks it. No tests anywhere — for a project that's explicitly meant to demonstrate architecture, that's a gap. The donburi event/observer wiring in system/events.go and component/observer.go adds indirection that can be hard to follow without prior donburi familiarity.