Skip to content

Latest commit

 

History

History
91 lines (74 loc) · 3.14 KB

File metadata and controls

91 lines (74 loc) · 3.14 KB

When Facing Issues

  • Read raylib source code
  • Read raylib go source code
  • Try reporduce minimal versions
  • Check for dependecy updates that may help

Repository Structure

engine-workspace/
├── go.work                  # Workspace file (for local development)
├── engine/                  # Engine module (github.com/TheLazyLemur/engine)
│   ├── component/           # Core components (Transform, Camera, RenderMesh, Name)
│   ├── core/                # Engine, systems, registries
│   ├── editor/              # Editor UI and state
│   ├── scene/               # Scene API and serialization
│   ├── system/              # System interface
│   ├── math/                # 3D math library
│   ├── viewport/            # Viewport rendering
│   └── config/              # Engine configuration
├── game/                    # Game module (imports engine)
│   ├── cmd/game/main.go     # Game entry point
│   ├── component/           # Game components
│   ├── system/              # Game systems
│   ├── systems.go           # RegisterSystems() integration point
│   └── assets/              # Game assets
└── rtsgame/                 # Another game module using the engine

For Published Games:

/Users/you/my-awesome-game/
├── go.mod                   # Module: my-awesome-game
│                            # Requires: github.com/TheLazyLemur/engine
├── main.go                  # Game entry point
├── component/               # Game components
├── system/                  # Game systems
├── systems.go               # RegisterSystems()
└── assets/                  # Game assets
go 1.25.3

use (
	./engine
	./game
	./pkg/fmod
	./pkg/rlshadow
)

Build And Run

make                    # Build game
./bin/run.sh --assets ./game/assets  # Run
./bin/rtsgame --mode=editor --assets ./rtsgame/assets  # Run RTS game (editor)
./bin/rtsgame --mode=game --assets ./rtsgame/assets    # Run RTS game (no editor)

Skills Available

Skill Description
engine-component Creating ECS components
engine-system Creating ECS systems
engine-shader Creating custom shaders
engine-collision Collision detection
engine-game-setup Setting up a new game project

Module Boundaries

The engine and games are separate Go modules. For cross-module features:

  1. Engine provides callbacks/interfaces for games to implement
  2. Games register callbacks during initialization
  3. Engine invokes callbacks at appropriate times

Example: SetViewportRectCallback in engine allows games to receive viewport bounds for overlay rendering.

Best Practices

  1. Use existing patterns: Check similar code in the codebase first
  2. Check imports: Use absolute paths for engine imports
  3. Run tests: Use go test ./... to verify changes
  4. Build before commit: Run make to ensure everything compiles
  5. Read raylib docs: The C API docs apply to raylib-go
  6. Serialize properly: Mark runtime-only fields with json:"-"