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%
2026-04-12 20:51:05 +02:00
data updated makefile 2026-03-31 22:39:26 +02:00
docs (Alpha v0.1.3) Player line swapping, performance scene, modal UI & tutorial fixesixes 2026-04-12 20:51:05 +02:00
include (Alpha v0.1.3) Player line swapping, performance scene, modal UI & tutorial fixesixes 2026-04-12 20:51:05 +02:00
libs (Alpha v0.0.2) Basic interactive UI 2026-02-19 22:52:13 +01:00
src (Alpha v0.1.3) Player line swapping, performance scene, modal UI & tutorial fixesixes 2026-04-12 20:51:05 +02:00
.gitattributes (Alpha v0.1) Alpha release 2026-03-31 19:46:29 +02:00
.gitignore (Alpha v0.1) Alpha release 2026-03-31 19:46:29 +02:00
build.sh (Alpha v0.0.1) Basic window setup 2026-02-10 19:22:28 +01:00
Makefile (Alpha v0.1.3) Player line swapping, performance scene, modal UI & tutorial fixesixes 2026-04-12 20:51:05 +02:00
README.md (Alpha v0.1.3) Player line swapping, performance scene, modal UI & tutorial fixesixes 2026-04-12 20:51:05 +02:00

Hockey Manager RPG (Alpha v0.1.3) C++ OpenGL Platform Status

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

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

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.bin
    • stats_slot2.bin
    • stats_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)

  1. Install MSYS2: https://www.msys2.org
  2. Open UCRT64 shell
  3. 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

  1. 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:

  1. make clean
  2. bear -- make debug
  3. make run

Gameplay flow

  1. Launch the game and select PLAY CAREER
  2. Choose:
    • Save 1 / Save 2 / Save 3
    • or no-save mode
  3. If starting fresh, build your Czech roster
  4. 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
  5. Progress through group stage and playoffs
  6. End in:
    • Gold medal (win)
    • Elimination (loss)
  7. Start another run with improved decisions

Save system

Save files

  • data/game/saves/save1.bin
  • data/game/saves/save2.bin
  • data/game/saves/save3.bin

Stats files

  • data/game/stats/stats_slot1.bin
  • data/game/stats/stats_slot2.bin
  • data/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
  • ESC to 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


License

Currently unspecified.