I started this game as an experiment. I wanted to see how much of it I could write in seven days. This way I’d be focused, and work on the most important features to see if my ideas were feasible before investing a lot of time into the project. If I was satisfied with my progress after the challenge then I could continue working on it. (Update: I have.)

I’ve always enjoyed voxel cube building games because they provide simple and easy to learn gameplay, while still allowing the player to be exceptionally creative in what they build. I wanted this same experience but in space with ships and planets. This type of game has unique challenges as space is vast, planets are large, and ships are complex multi-functional objects. Part of this project’s purpose was for my own education so I started from scratch with OpenGL and C++.

Current State

The game engine is being optimized to improve FPS and reduce memory usage when playing with large planets and/or ships.

Ship over planet.
A small ship with weapons and engines flying above a procedurally generated 10243 cube world. The world is rendered using a level of detail (LOD) algorithm to reduce the number of displayed cubes at a distance.

Completed Features

  • Octree data structure to track the creation and deletion of cubes in a memory efficient way.
  • Level of detail algorithm to merge cubes into larger ones when viewed above a threshold distance.
  • Large procedurally generated planets up to 1024 cubes in dimension (less than 1GB of memory required).
  • Smooth lighting using “light cubes” as a light source.
  • Moving ships with momentum and directionally dependent engines.
  • Simple beam weapons that test for intersection and destroy blocks.

Progress Posts

See my individual progress posts below. They start with the seven day challenge.

Spaceship Game Dev Day 2: Octrees

2 minute read

Day 2 Simply storing each cube in a list isn’t going to work well for my game. Realizing that one of my tasks today is to implement cube selection (the user ...

Spaceship Game Dev Day 3: Intersection Testing

less than 1 minute read

Day 3 Today I finished my octree implementation. Two days of work, but I think it’s worth it. Using a proper data structure will allow me, and maybe future p...

Spaceship Game Dev Day 4: Cameras and Ships

1 minute read

Day 4 A spaceship building game wouldn’t be that much fun without being able to fly the ships! A lot of physics can become involved with ship flight mechanic...

Spaceship Game Dev Challenge: Review

2 minute read

Review In seven days I implemented a cube voxel engine from scratch, using OpenGL and C++. I could have started with an existing engine. However, I have to s...

Spaceship Game Dev: Planets

3 minute read

Why Planets Why I do want planets in my game? Survival Players could start off the game on a planet where they have to build a ship from scratch. Planets pro...

Spaceship Game Dev: Optimization

3 minute read

When Do I Optimize? I avoided some basic optimizations for a cube rendering engine at the start of this project. My basic cube rendering method was working a...

Spaceship Game Dev: Level of Detail

4 minute read

Problem When large objects are viewed at a distance individual cube level details become insignificant to the visual experience, yet continue being rendered....