Skip to content

Repository files navigation

Doomerang

Doomerang is a fast-paced 2D action-platformer built with Go and the Ebitengine game engine.

Screenshot 2026-01-28 at 3 33 02 AM

Quick Start

Prerequisites

Run

make run

Architecture

The project follows a standard ECS (Entity Component System) pattern:

  • /components: Data-only structures (e.g., PlayerData, AnimationData).
  • /systems: Logic operating on entities (e.g., UpdatePhysics, Render).
  • /factory: Entity creation functions using archetypes.
  • /scenes: Game state management (Menu, World).
  • /assets: Tiled maps, spritesheets, and audio.
  • /config: Global constants, states, and input bindings.

For a deeper dive into the ECS implementation, see ECS_AND_DONBURI.md.

Technical Highlights

  • Zero-Allocation Rendering: Reuses drawing options to eliminate per-frame GC pressure.
  • Asset Caching: Centralized system prevents redundant asset decoding.
  • Memory Safety: Uses pointer wrappers (ObjectData) for stable physics references during ECS reallocation.
  • Type-Safe States: Centralized StateID enum prevents typo-related bugs.
  • Input Abstraction: Decouples raw input from logic via action mapping.

macOS Note: The Makefile uses CGO_CFLAGS="-w" to suppress Metal backend warnings.

Assets

Assets are a mix of assets I sourced and some that I created. The following asset packs are used in making this game:

About

Source code for the action platforming game doomerang

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages