In this 4x-style game, you aim to establish your space Empire, gather resources and conquer the entire galaxy.
At the beginning of the game, the player can choose a starting planet. From there, they can collect resources and start populating foreign planets. They can send out discovery vessels to peacefully settle on a new world, carrier vessels that can be used to conquer planets from rival Empires and use resource vessels to collect resources and bring them back to their home base. But beware, the AI empires will expand rapidly and will not stop at anything until their conquest of the galaxy is complete!
What did I work on?
Cross-Platform Design (Windows & Linux)
Procedurally-Generated Planet Textures
Cross-Platform Renderer (OpenGL)
Cross-Platform Design
Menu System (using ImGui)
Empires was a lot of firsts for me. It was the first time I did any graphics programming. It was the first time I actively used design patterns like the singleton and coded my own state machine. It was also the first cross-platform project I ever did. It runs on Windows and Linux and was specifically developed for running on the Raspberry Pi 4. To enable cross-platform rendering between these two platforms, I wrote a simple OpenGL renderer that runs on both Linux and Windows.
The entire galaxy in Empires is procedurally generated, from the placement of the planets to their names, properties and even texture. I mostly worked on the graphics side of the project, and thus I wrote a simple shader that uses value noise to create procedural surfaces for planets.
Empires helped me learn the fundamentals of good cross-platform design, how to use several libraries and APIs together to make a cohesive whole and started my journey into graphics programming.
Empires was developed in 8 weeks together with a fellow student at BUAS and talented programmer Stan Vogels.