RPG game where you, as the manager of a hockey team, attempt to train and lead your team to an olympic victory!
- CPP 74.3%
- C 25.2%
- Makefile 0.4%
- GLSL 0.1%
| data | ||
| docs | ||
| include | ||
| libs | ||
| src | ||
| .gitattributes | ||
| .gitignore | ||
| build.sh | ||
| Makefile | ||
| README.md | ||
Hockey Manager RPG (Alpha v0.1.3)

A single-player hockey manager RPG where you coach the Czech Republic through an Olympic tournament. Build your roster, run training, manage progression, and survive the playoff bracket..
Why this project is interesting
- You are the coach: roster selection, player development, and match progression are all in your hands.
- Simulation-driven gameplay: games are deterministic simulations with line changes, penalties, injuries, overtime, and shootouts.
- Management loop with stakes: prize money fuels training, and bad decisions carry real tournament consequences.
- Custom engine architecture: built from scratch in C++23 with OpenGL 3.3, scene system, UI components, and persistent saves/stats.
Table of contents
- Features
- Quick start
- Gameplay flow
- Save system
- Tournament format
- Controls
- Build targets
- Project structure
- Tech stack
- Contributing
- Links
- License
Features
Core gameplay
- Roster selection from Czech national team candidates (CSV parsed)
- In-career lineup management via a dedicated Line Swap screen (position-safe swaps)
- Player training across 4 categories:
- Offensive
- Defensive
- Physical
- Mental
- Training cost scales with player category average
- Prize money economy:
- Regulation win:
$5000 - OT/SO win:
$4000 - OT/SO loss:
$2000 - Regulation loss:
$0
- Regulation win:
Match simulation
- Deterministic hockey simulation with:
- 3 regulation periods
- Overtime
- Shootouts
- Simulates:
- possession
- zone transitions
- shots / hits / turnovers
- penalties
- injuries
- line changes
Tournament system
- 12 teams total (Czech Republic + 11 AI opponents from CSV)
- Olympic-style progression:
- group stage
- qualification round
- quarter-finals
- semi-finals
- bronze medal game
- gold medal game
- Group standings + visual playoff bracket view
Persistence and progression
- 3 save slots + no-save mode
- Slot-aware stats persistence:
stats_slot1.binstats_slot2.binstats_slot3.bin
- Per-player tracked stats (binary persisted):
- goals, assists, shots, hits, blocks
- penalties
- faceoff wins/losses
- +/- and more
UI and engine systems
- Custom scene framework (14 scenes in current alpha)
- Custom component/UI system with:
- hover states
- pressed states
- click callbacks
- cursor feedback
- Shared UI style tokens/prefabs
- FreeType text rendering with multiline + alignment support
- Resolution preset system (4:3 presentation mode) with in-game cycling in Settings
- Startup auto-selects the best fitting supported resolution for the current monitor
Quick start
Important
Your system must support OpenGL 3.3 Core or higher.
Linux
Arch / Manjaro
sudo pacman -S gcc make glfw freetype2 pkgconf
Ubuntu / Debian
sudo apt install g++ make libglfw3-dev libfreetype-dev pkg-config
Build and run
make # release build + assets
make run # run game
make clean # remove build artifacts
Binary output:
./build/HockeyManagerRPG
Windows (MSYS2 / MinGW-w64 UCRT64)
- Install MSYS2: https://www.msys2.org
- Open UCRT64 shell
- Install dependencies:
pacman -S mingw-w64-ucrt-x86_64-gcc \
mingw-w64-ucrt-x86_64-make \
mingw-w64-ucrt-x86_64-glfw \
mingw-w64-ucrt-x86_64-freetype \
mingw-w64-ucrt-x86_64-pkg-config
- Build and run:
mingw32-make
mingw32-make run
mingw32-make clean
n
Binary output:
./build/HockeyManagerRPG.exe
Optional helper script
./build.sh
What it does:
make cleanbear -- make debugmake run
Gameplay flow
- Launch the game and select PLAY CAREER
- Choose:
- Save 1 / Save 2 / Save 3
- or no-save mode
- If starting fresh, build your Czech roster
- Enter the game hub:
- train players
- review player stats/performance
- change lineup assignments
- view tournament standings/bracket
- preview and simulate next game
- open coach briefing/help modal when needed
- Progress through group stage and playoffs
- End in:
- Gold medal (win)
- Elimination (loss)
- Start another run with improved decisions
Save system
Save files
data/game/saves/save1.bindata/game/saves/save2.bindata/game/saves/save3.bin
Stats files
data/game/stats/stats_slot1.bindata/game/stats/stats_slot2.bindata/game/stats/stats_slot3.bin
No-save mode
- Starts a fresh session
- Does not persist slot progress on exit
Tournament format
- 12 teams split into 3 groups of 4
- Round-robin group stage
- Qualification round for remaining playoff seeds
- Knockout rounds:
- QF -> SF -> Bronze / Gold medal games games
Controls
- Mouse-driven UI
- Left click to select/activate
ESCto close the window
Build targets
Available Makefile targets:
make all # default: release + assets
make debug # debug flags
make release # optimized release build
make release-native # release + -march=native
make assets # copy data/ into build/
make run # run executable
make clean # remove build/
make package-linux # build and package Linux tar.gz
make package-windows # build and prepare Windows package dir
Scene list (current alpha)
- Main Menu
- Saves
- Roster Selection
- Game Hub
- Tournament
- Match Preview
- Match Result
- Training
- Line Swap
- Player Performance
- Settings
- Credits
- Game Win
- Game Over
Project structure
src/
core/ window, input, logger singletons
game/ player, team, match simulator, game manager, save handler, stats
math/ vec2, vec4, mat4
renderer/ component, component groups, scene, text renderer
scenes/ game scenes
ui/ shared UI prefabs + layout tokens
wrapper/ shader wrapper
main.cpp program init + main loop
include/ headers mirrored to src layout
libs/ GLAD + KHR headers
data/
fonts/ sometypeMonospace-regular.ttf, TheConfession.ttf
shaders/ basic + text shaders
game/
czechCandidates.csv
enemyTeam/ AI team CSV files
saves/ save files (gitignored)
stats/ stats files (gitignored)
docs/
CHANGELOG.md
ocs/
CHANGELOG.md
Tech stack
- Language: C++23
- Graphics: OpenGL 3.3 Core
- Windowing/Input: GLFW
- Text rendering: FreeType
- Build system: GNU Make
- Asset/data format: CSV + custom binary save/stats files
Contributing
Feedback is welcome:
- report bugs
- suggest balancing improvements
- propose UX polish ideas
- submit issues/PRs on the repository
Links
- Repository: https://codeberg.org/Robkoo/HockeyManagerRPG
- Changelog: docs/CHANGELOG.md
License
Currently unspecified.