Sentinels: Retro EOC Crisis Simulator & AI Dispatcher


Pitch & Tagline

Sentinels is a retro Windows 95/98-style Emergency Operations Center (EOC) desktop simulation built in C++ with raylib. It empowers players to analyze real-time disaster telemetry, deploy response resources, and coordinate with AI-driven field contacts powered by Google Gemini to mitigate natural disasters and protect public safety.


The Track & Challenge: Safety

We selected the Safety track, directly addressing two key challenge questions:

  1. How can we improve early threat detection systems to better anticipate disasters and public safety risks?
    • Our Solution: The Threat Center UI provides real-time telemetry updates (such as water level sensors, wind speeds, moisture readings, and seismic telemetry) every shift window. Players must act fast—monitoring warnings, predicting wildfire spread, anticipating floods or earthquakes, and taking pre-emptive action to save lives.
  2. How might we support emergency response coordination and resource distribution during disasters?
    • Our Solution: Through the Mitigation Hub, players coordinate response actions in a turn-based window. They dispatch rescue teams, open public safety shelters, issue evacuation notices, set up road closures, or call for aerial support. In addition, players communicate via the Field Radio with AI field responders to get situational updates from the ground.

What it Does

Players step into the role of a Shift Commander managing an Emergency Operations Center across three distinct crisis shifts: Floods, Wildfires, and Earthquakes. Operating inside a fully simulated retro OS desktop environment, you:

  • Monitor Live Telemetry: Double-click the Threat Center to check environmental sensors and metrics changing dynamically.
  • Coordinate Mitigation Actions: Open the Mitigation Hub to queue orders (deploy rescue teams, close highways, order evacuations, or open local shelters).
  • Consult AI Field Radio: Open the chat console to ask field agents (Budi, Hendro, Surono) for advice. Their replies adapt dynamically to your actions and current telemetry data using the Google Gemini API.
  • Review AI Situational Assessments & After-Action Reports: Get AI-generated threat briefings at the start of each turn and a detailed performance debrief at the end of each shift detailing lives saved and trust points earned.

How We Built It

  • Language & Framework: Built in modern C++17 utilizing the custom Fumbo engine framework sitting directly on top of the raylib graphics library.
  • Desktop Environment: The desktop, window draggable/resizable behaviors, taskbar, system tray, and toast notifications were written entirely from scratch in C++.
  • Artificial Intelligence: Powered by Google Gemini API (gemini-2.0-flash). We communicate with the LLM via libcurl in C++ to generate real-time briefings, conversational field chat, and shift evaluations.
  • Asset Optimization: We built a custom asset packager tool (data.fpk) that packs fonts, graphics, and music into a single compiled binary for fast startup and deployment.
  • Build System: Structured using CMake and configured for MinGW cross-compilation so it can compile natively on Linux and target Windows users.

Challenges We Ran Into

  • Asynchronous Networking in C++: Game loops must run at a smooth 60 FPS. Synchronous HTTP API requests to Gemini would freeze the game window. We solved this by implementing an asynchronous networking queue where HTTP requests execute on background threads and dispatch callbacks back to the main thread when data is ready.
  • Custom UI Framework from Scratch: Because we didn't use a web view or heavy UI libraries, we had to write custom bounding-box detection, clipping masks for text boxes, text-wrapping algorithms, and focus-ordering algorithms manually in C++.
  • AI Context and Structuring: To make sure the AI chatbot knew exactly what disaster parameters, player actions, and context it was responding to, we carefully designed system instructions and dynamic prompt injections containing the state of telemetry variables.

Accomplishments That We're Proud Of

  • Building a responsive, interactive retro desktop interface from scratch that feels and sounds like Windows 98.
  • Creating a realistic, numbers-backed simulation engine that determines casualties, economic loss, and public trust based on active players' decisions.
  • Successfully integrating generative AI in a lightweight, compiled C++ project without any bulky runtime engines or web frameworks.

What We Learned

  • How to manage multi-threaded game state synchronization safely in C++.
  • The design principles behind retro OS window management and UI rendering.
  • How to structure LLM system prompts to enforce character consistency (e.g., matching the tone of field operators Budi, Hendro, and Surono).

What's Next for Sentinels

  • Multiplayer Cooperative Mode: Multi-agency EOC simulators where one player manages the Fire Department and another manages the Medical/Evacuation units on separate screens.
  • GIS Map Integration: Hooking up real-world geographic coordinates and real-time open-source weather/earthquake telemetry feeds.
  • Sound Effects & Music: Deeper retro synth-wave audio soundscapes.

Built With

Share this project:

Updates