Dome

Dome

Chilling horror—every shadow hides a secret.

Videogame
Language: C++

⚠️ Warning: WORK IN PROGRESS. Not finished yet.

Dome is a 2D survival shooter set on the frozen planet Aurora, where players must manage resources, survive hostile nights, and escape before their shelter succumbs to the cold. The game was developed in C++ using SDL2, with a strong focus on pixel-art aesthetics and immersive survival mechanics.

The core gameplay revolves around a day-night cycle. By day, players scavenge for supplies, manage their inventory, and prepare for the dangers of the night. At night, the temperature drops, and players must return to their shelter to rest and heal. The health system is unique: instead of a simple health bar, Dome uses a wound/status effect model, where each injury or debuff impacts gameplay in different ways.

Combat is tactical, with three distinct weapons (gas carbine, mining laser, and polymeric gun), each requiring its own ammunition and offering different strategic advantages. Players must also contend with hunger, fatigue, and a variety of enemy types, all of which require careful planning and adaptation.

Developing Dome was a deep dive into C++ and SDL2, including:

  • Game architecture: Implemented a modular state machine for handling menus, gameplay, and transitions.
  • Custom UI/UX: Designed inventory Tetris, wound tracking, and contextual tooltips for player feedback.
  • Pixel-art rendering: Created a consistent 64-bit pixel-art style, with custom shaders and effects for cold, wounds, and nightfall.
  • Resource management: Built systems for inventory, crafting, and time/resource balancing.
  • Team collaboration: Worked with a multi-disciplinary team, using Git, UML diagrams, and agile tools.

One of the biggest challenges was designing a health system that felt both punishing and fair, encouraging players to learn from failure. Balancing the day-night cycle and resource scarcity required extensive playtesting and iteration. Implementing the inventory and crafting systems in C++/SDL2, with drag-and-drop and rotation mechanics, was a significant technical achievement.

Through Dome, I gained hands-on experience with:

  • Advanced C++ (OOP, memory management, modular design)
  • SDL2 for graphics, input, and audio
  • Game state machines and event-driven programming
  • UI/UX for games (custom tooltips, inventory, status effects)
  • Team-based development and code reviews

In-game Day/Night Cycle

Combat and Inventory

Shelter/Refuge UI

Keybinds and Controls

Dome was an ambitious project that brought together game design, programming, and art. It taught me how to architect complex systems in C++, collaborate effectively, and create a cohesive player experience from concept to release.