How charliebrej/bombe works
Bombe is a C++ deduction-puzzle game, accompanied by a grid generator and a score/level server. The main workflow is player input through the game client, puzzle-state updates and solver reasoning, then rendered feedback and saved progress. The README documents level/score services, Steam authentication, and an optional local control socket. Sampled source is partial, so some client-to-server and generator data wiring is not shown.
Main entry points: main.cpp Game Entry · GameState.cpp Game State · ControlSocket.cpp Control Socket · Grid.cpp Grid Model
Components 18
Game Client
- Game Entry
main.cpp - Game State
GameState.cpp - SDL Rendering
GameState.cpp - Control Socket
ControlSocket.cpp - BombeControl
BombeControl.cpp
Puzzle Logic
- Grid Model
Grid.cpp - Constraint Solver
Grid.cpp - Level Sets
LevelSet.cpp - Grid Generator
grid_generator.cpp
Services
- Save Codec
SaveState.cpp - Compression
Compress.cpp - Score Level Server
BombeServer.cpp - Steam Services
main.cpp
Runtime Data
- Save Files
- Level Data
levels.data - Game Assets
snd
Other components
- Player
- Steam API
Connections 20
- Player → Game Entry: starts game
- Game Entry → Game State: creates state
- Game State → Grid Model: updates puzzle
- Grid Model → Constraint Solver: checks constraints
- Game State → SDL Rendering: renders feedback
- Game State → Level Sets: loads levels
- Game Entry → Save Codec: serializes progress
- Game Entry → Compression: compresses saves
- Game Entry → Save Files: reads and writes
- Game Entry → Level Data: loads data
- Game State → Game Assets: uses media
- Game Entry → Control Socket: enables optionally
- BombeControl → Control Socket: sends commands
- Control Socket → Game State: dispatches requests
- Grid Generator → Grid Model: builds grids
- Grid Generator → Level Sets: uses level sets
- Game State → Score Level Server: fetches scores
- Score Level Server → Steam API: authenticates tickets
- Game Entry → Steam Services: updates achievements
- Steam Services → Steam API: uses callbacks