How krishnazawar/levelcraft works
LevelCraft is an early-stage no-code game engine. A creator authors a project in the Editor, requests a run, and the Orchestrator starts and supervises the Builder; stopping the run leaves the Editor available for iteration. The Editor’s UI/backend and the Builder’s player/runtime are distinct application stages, with shared game-object and component utilities underneath. The README documents the cross-process workflow; source excerpts show selected state construction and orchestration details, so unsampled internal links are omitted.
Main entry points: App.tsx Editor UI · orchestrator.go Orchestrator · main.go Builder Service · gamestate_manager.go Runtime Game State
Components 23
Application Lifecycle
- Orchestrator
orchestrator/internal/orchestrator/orchestrator.go - Control API
orchestrator/internal/server/server.go - Process Executor
orchestrator/internal/executor
Game Authoring
- Editor UI
editor/app/src/renderer/src/App.tsx - Editor Workspace
editor/app/src/renderer/src/views/EditorShell.tsx - Project Home
editor/app/src/renderer/src/views/Home.tsx - Editor State
editor/app/src/renderer/src/store/editorStore.ts - Project State
editor/app/src/renderer/src/store/projectStore.ts - Run State
editor/app/src/renderer/src/store/runStore.ts - Editor Game API
editor/app/src/renderer/src/api/gameApi.ts - Editor Backend
editor/backend/internal/router/router.go - Authoring Handlers
editor/backend/internal/handler - Editor Game State
editor/backend/internal/gamestatemanager/gamestate_manager.go
Game Runtime
- Builder Player
builder/app/src/renderer/src/App.tsx - Runtime Client State
builder/app/src/renderer/src/store/runtimeStore.ts - Builder Service
builder/backend/cmd/main.go - Input Manager
builder/backend/internal/inputmanager/input_manager.go - Runtime Game State
builder/backend/internal/gamestatemanager/gamestate_manager.go - Event Manager
builder/backend/internal/eventmanager/event_manager.go
Game Domain
- Game Objects
utils/gameobject/gameobject.go - Components
utils/component - Input Schema
utils/input/schema.go
Other components
- Creator
Connections 24
- Creator → Orchestrator: starts application
- Orchestrator → Process Executor: starts processes
orchestrator/internal/orchestrator/orchestrator.go - Orchestrator → Editor Backend: starts editor
- Editor UI → Control API: requests game run
- Control API → Orchestrator: dispatches run request
orchestrator/internal/server/server.go - Orchestrator → Builder Service: starts builder
orchestrator/internal/orchestrator/orchestrator.go - Creator → Editor UI: authors game
- Editor UI → Editor Workspace: shows workspace
editor/app/src/renderer/src/App.tsx - Editor UI → Project Home: shows when closed
editor/app/src/renderer/src/App.tsx - Editor UI → Editor State: resets state
editor/app/src/renderer/src/App.tsx - Editor UI → Run State: stops game
editor/app/src/renderer/src/App.tsx - Editor Backend → Authoring Handlers: routes requests
editor/backend/internal/router/router.go - Authoring Handlers → Editor Game State: updates scene
editor/backend/internal/handler/gameobject_handler.go - Editor Game State → Game Objects: builds scene objects
editor/backend/internal/gamestatemanager/gamestate_manager.go - Creator → Builder Player: plays game
- Builder Player → Runtime Client State: uses runtime state
builder/app/src/renderer/src/App.tsx - Builder Service → Input Manager: loads mapping
builder/backend/cmd/main.go - Builder Service → Runtime Game State: loads scene
builder/backend/cmd/main.go - Builder Service → Event Manager: starts game loop
builder/backend/cmd/main.go - Runtime Game State → Game Objects: builds scene objects
builder/backend/internal/gamestatemanager/gamestate_manager.go - Runtime Game State → Components: creates component registry
builder/backend/internal/gamestatemanager/gamestate_manager.go - Input Manager → Input Schema: loads input mapping
builder/backend/internal/inputmanager/input_manager.go - Components → Input Schema: uses input definitions
utils/component/internal/movement/input_movement.go - Creator → Editor UI: iterates project