Skip to content
ST

Poke327

A terminal-based monster-catching RPG with procedural generation, pathfinding, battles, inventory systems, and automated Linux builds.

01 / Overview

Poke327 is a terminal-based monster-catching RPG built in C and C++. The project recreates core RPG systems in a Unix-like terminal environment, including procedural world generation, trainer movement, wild encounters, turn-based battles, shops, healing centers, inventory, party management, and Pokemon storage. This was an independent educational fan project and is not affiliated with Nintendo, Game Freak, Creatures, or The Pokemon Company.

02 / Problem

The goal of this project was to build a larger systems-oriented game from scratch while practicing C/C++ programming, terminal UI development, algorithms, data structures, memory ownership, build tooling, portability, and automated verification.

03 / What I built

  • Built a terminal RPG with an ncurses interface and keyboard-driven gameplay.
  • Implemented a procedurally generated 401x401 world with explorable maps, trainers, buildings, and wild encounter regions.
  • Added deterministic execution using --seed to support repeatable runs, testing, and debugging.
  • Implemented trainer movement behaviors, pathfinding, and event and turn scheduling.
  • Used a Fibonacci heap to support pathfinding and turn-order scheduling.
  • Developed turn-based battle systems with move priority, accuracy, STAB, type effectiveness, trainer payouts, and item usage.
  • Built gameplay systems for wild Pokemon encounters, probabilistic captures, six-Pokemon party management, PC storage, PokeBucks, Potions, Revives, Poke Balls, PokeMarts, and Pokemon Centers.
  • Integrated CSV-based Pokemon data parsing with support for a full compatible dataset and a built-in fallback dataset when external data is unavailable.
  • Created a GNU Make build system, Docker environment, and GitHub Actions CI workflow for Ubuntu builds and automated smoke testing.
  • Diagnosed and fixed issues around memory ownership, combat logic, portability, Linux compiler behavior, and terminal UI constraints.

04 / Technical focus

This project demonstrates low-level software engineering, algorithms, game systems design, terminal UI development, build automation, and CI/CD. It shows experience working close to the runtime with C/C++, while also packaging the project so it can be built and tested reliably across environments.

05 / Tech stack

C++17C11STLGNU MakeGCC / G++ncursesGitGitHub ActionsDockerLinux / UbuntuCSV data processingObject-oriented programmingProcedural generationDijkstra pathfindingFibonacci heapsDeterministic simulationAutomated smoke testing