View of Uranus from her moon Oberon.
I’d like to share a project with you that I worked on when first learning how to program. I wanted to create a game in space back in 2011.
Growing up, I made several small games in Game Maker, including You Cannot Beat This Game. But I wanted to learn C#.
Admittedly, I jumped right into a large project and probably should have done something smaller. But I was having so much fun, and learned a lot!





Starting Off
Desert Render, 8 June 2011
Microsoft had released XNA, perhaps in an attempt to have indie developers create games for the Xbox 360 and their Zune phone at the time. They created an amazing framework for creating games, which would be used by games such as Terraria, Celeste and Stardew Valley. An XNA like framework is available called MonoGame which supports a wide variety of platforms today, and is great if you’re looking for a similar framework today.
XNA made it easier to build games using DirectX, while still providing for quite a bit of control and features DirectX has. You could fully use HLSL shaders. You could make 2D or 3D games. It was fun to play around with!
Titan Methane Lakes Render - 18 November 2011
As development continued, the game I was creating was turning more into a tech demo rather than a proper game. I read articles on terrain rendering and procedural generation, and wanted to explore.
Growing up, I played a lot of a game called Descent. It’s amazing how a video game can take you to different moons and planets, and I am grateful for those who created that game for helping me develop an interest in games, space and programming. Admittedly, I had a lot of inspiration from Descent. I started creating a random terrain for select moons in our Solar System, and for Mercury, Venus, Mars and Pluto.
Hills of Venus Render - 19 November 2011
Lessons Learned
As this tech demo moved forward, I made it so that you could walk around a randomly generated terrain of a planet or moon in our Solar System. To my knowledge, at least the following were available to walk around on:
- Mercury
- Venus
- Earth’s Moon
- Mars
- Ceres
- Jupiter’s Moons:
- Ganymede
- Io
- Callisto
- Europa
- Saturn’s Moons:
- Hyperion
- Tethys
- Titan
- Uranus’s Moons:
- Miranda
- Oberon
- Neptune’s Moons:
- Triton
- Proteus
- Pluto:
- Charon
- Nix
- Hydra
- Eris
- Dysomia
I also figured out how to make a player walk around with a first person camera, and figured out how to make the player jump! Every moon/planet had different gravity, and I found some interesting things:
Moons such as Miranda (Uranus), and Hyperion (Saturn) have giant cliffs and craters. They also have considerably low gravity. This meant that you could jump from the bottom of a giant cliff, and make it to the top of a cliff! Or gently jump off a cliff and very possibly land softly below.
Moons such as Deimos and Phobos (Mars’s two moons), had such low gravity that one jump would have minutes to come back down. I wonder if a simple jump would be all you would need to escape the gravity of these moons.
Also seeing the surface of these moons made me think what it must be like to be there. I wonder how Jupiter must appear from her moon Europa. Or how Saturn must appear from her moon Enceladus.
In addition, learning how to program a UI was challenging. This was one of the first times where I came across object oriented concepts, and had to think deeply about sub-classing things such as buttons. While primitive, I learned so much from building this user interface. And XNA had great functions for handling font-rendering, thank goodness.
Pluto Render - 22 November 2011
I worked on this project before the incredible fly-by of New Horizons, which gave us some of the most beautiful photos of Pluto and her moons. Before this, the most we knew about Pluto’s appearance was limited.
I’m incredibly grateful for those involved in New Horizons for giving humanity such detailed and incredible pictures of Pluto, and Pluto is still a planet in my heart.
Conclusion
I still have the source code for this project archived away. Looking back, I’m glad I explored and had fun building this project.
It’s okay to explore a little bit. While I intended to create a game with this project, the result was learning more about Object-Oriented Programming, graphics, space and more.
26 August 2024