Futureship
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.
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 1: Planning the Seven Day Challenge
Motivation I’ve graduated from University of Waterloo in June, and free of my research obligations, I’ve had time to work on projects that I couldn’t justify...
Spaceship Game Dev Day 2: Octrees
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
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
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 Day 5: Saving/Loading Ships
Day 5 To make my game worthwhile playing players must be able to save their ships, and load designs. If survival mechanics are later implemented then loading...
Spaceship Game Dev Day 6: Colours and Lights
Day 6 This was a very long day. My game badly needed some attention graphics wise. The first step was to add multiple types of cubes.
Spaceship Game Dev Day 7: Textures and Transparency
Day 7 I finally added some textures to my game. I’m not an artist, so if I develop this game further I’ll work with someone who is much more knowledgeable on...
Spaceship Game Dev Challenge: Review
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
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
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
Problem When large objects are viewed at a distance individual cube level details become insignificant to the visual experience, yet continue being rendered....