A Voxel City Sim in Rust - Part 1 - The Vision


Introduction

Whether you are full of ideas or not one day you find yourself with an idea you might want to pursue. However how exactly do you go from raw idea to full fledged product?

In this blog series we will go from absolute zero to a fully realised idea with Voxeltopia as a case study.

Notice

These Blog Posts are a first time for me and should be viewed as drafts rather than finished. There are alot of details and images missing which will be added further down the line. Feedback appreciated!

From Idea to Plan

The Inspiration

Forcing yourself to find ideas is hard. Most often though you will get inspired by your surroundings. With Voxeltopia it started with Pocket City a really beautiful mobile city builder game without premium currency or obnoxious ads. Immediately bought the Pro version as supporting it was obvious to me.
Sadly the fun didn't last very long as the content wasn't that much but it was such an fantastic experience that an idea grow to make a city builder myself.

Ideas must stick

One important rule I have for myself is whether or not an idea sticks with me over multiple days. If it does I know it probably is a worthwhile thing to do as motivation is high and I'm heavily interested in it.
Therefore after a few days with the idea in my mind I started working it out.

Working out the details

Now comes the most important thing which decides whether to throw it out the window or seriously consider working on it.
It is time to make detailed decisions. I know I want a city builder but there are lot of things to consider:

What is the goal?

$$$ or rather passion project? It was clear that it is rather a passion project and such will heavily influence answering the next questions. Be sure about what your goal is.

Language to write it in?

Depending on the game engine and personal experience you will have a lot of choices. I went with Rust as I absolutely love it and know it enough. However be sure to spend worthwhile amount researching what you go with depending on your level of experience. Never wrote any code nor made games? Probably go with C++, C#, visual scripting as well established game engines (Unity, Unreal) uses them.

What kind of game engine?

For Rust there are alot of options to choose from. Thankfully arewegameyet.rs gives a nice overview of them. Best to go with most liked ones and try a few.
Amethyst is pretty mature and works well and is probably one of the possible options. However Bevy has me especially intrigued with its unique ecs design and modular design.

A simple Bevy App
use bevy::prelude::*;

fn main() {
    App::new().add_system(hello_world_system).run();
}

fn hello_world_system() {
    println!("hello world");
}

In the end I went with what I was passionate about, Bevy. This really depends on your goals so make sure they align well!

What exactly differentiates this idea from others?

Time for some Market research, yeah. Knowing your own strength and weaknesses is key and knowing my art skills are lacking I've decided to go with Voxel based design and infinite world, that you will be able to build a city as large as your device can run without arbitrary limits.

You will often notice that alot of games have clear inspiration from others and are quite similar (like city builders always have buildings to build heck yeah!) but sometimes doing a simple twist on the genre is enough to create an entirely unique experience. An example of that but also fantastic inspiration does this pretty well: Industries of Titans.

Furthermore the mobile games market is filled to the brim with obnoxious boring games filled with ads and premium currencies so another difference will be the absolute lack of this in Voxeltopia! Currently searching Steam and Android store there is no such voxel city builder available. We're onto something...

What is the motivation behind it?

Besides the goal what will be the driving force behind working on it? Developing a game takes years especially as solo dev. We all know our billions of started projects lying around somewhere so assuring yourself you know why you want to work on it is important.

So we established that it's rather a passion project. The underlying motivitation behind this is gaining experience not only in game development but everything around it aswell. Be it graphics, music, models, website or the game itself with my profession I cover them all and having experience in them besides university is what I strive for (always looking good on your resume aswell, multipurpose & fun!).

With that established you can always remind yourself on why you want to complete your project. Of course doesn't mean to work on it 24/7 forever. Rather take breaks than risk burning out entirely.

What is the Minimal Viable Product?

It is especially enticing to put alot of fancy features into your MVP but the entire point of a MVP is to have trailer material and a fun demo. So these probably are the most important features for a demo:

  1. Grid system
  2. Building system
  3. Infinite world
  4. Road network
  5. Water network
  6. Electricity network
  7. Economy system (stable)
  8. Epochs (stone age -> future)

And further down the line:

  1. Statistics
  2. Population growth system
  3. Upgradeable Buildings
  4. Ressource management
  5. Natural disasters
  6. Revolutions
  7. Wars
  8. Buildings Extensions
  9. Buildings Editor

What platform to release on?

This is easy to answer depending on your pick of game engine. For Bevy only Windows, Linux and MacOS are currently viable without any effort with the possibility of Android, IOS and web in the future.

Do note that supporting a platform is more than clicking a button to create an apk, .exe, .dmg it also involves custom input controls, lifecycle management (app moved into the background) and more. So start small and expand later.

Should it cost something?

Although it's a passion project I want to explore the legal means of selling a game on steam but also make it viable for me to bring out updates after the launch. It definitely won't be a fortune but an experience in it itself to find the correct pricing and gives another motivation and liability to provide something awesome.

How to finance it?

This will highly depend on what you plan for. Team? Solo? Development time: eternity or just a few years? Buying assets or making them? I'm financially able to pay the website costs and anything involving with releasing the game and assets will be made entirely on my own therefore this part and finding investors (and ultimately depending on them) is not the case for me.

From Plan to Product

Name

Naming things is hard. However not as hard as in the early days thankfully. From googling synonyms of whatever you do (hint hint voxel, city, dystopia, utopia) to entire name generators there are lot of options to choose from.
With no time pressure I've collected a few names:

  • VoxelBrick
  • OuterVoxel
  • UrbanVoxel
  • VoxelMetro
  • VoxelSector
  • VoxelTopia

With a tool like namecheckr you can go ahead and see whether your names are available for your online presence or not. When a name has been choosen it's time to move onto name squatting.

Social Media Presence

Now comes the grindy part of visiting all the social media pages and registering with your chosen name. It's heavily recommended to use a password manager and unique passwords for all the sites and preferable enabling 2FA aswell.

Next up

We've everything prepared to start working on fleshing out our social media presence. Starting with the website we will make sure we are visible and ready to post updates and gain a following while developing our game.