Designing a procedural roguelike
I was always loved RPG games like Final Fantasy and the Ultima series. Played them at a very young age. So when it comes to pixels I'm a little bit nostalgic. My fascination with roguelikes is fairly new compared to that. I never had the chance to play Rogue or any of the iterations back then. But few years ago when I discovered these games I had a blast with them.
Procedural is awesome
As a programmer the thought that I could create an algorithm that can create fairly unique worlds with unique obstacles excites me a lot. Basically procedural means that no play session is the same. The levels and obstacles are mixed up with a lot of randomness. But the true challenge is controlling the randomness in a way that the player feels like the levels are handcrafted each time.
I could go into the popular procedural generation tactics, but this is not that post. In this one it's all about the concept and the design.
Creating a concept
For roguelikes a deep storyline is not that important. If you want to create a concept for a game, start instead with deciding on the basics.
- Choose a theme (fantasy, sci-fi, western, etc.)
- Choose a playstyle (turn based, real time or some kind of hybrid)
- Choose a view (top-down, platformer, first-person, etc.)
This should give you a baseline on what you want to create. But here is what's more important after that: think about a twist!
The unique twist
Your game should not be like every other game. You have an idea of what you want to create, but now give it a little flavor by thinking about an interesting twist on your basic concept.
For example you want to create a top-down, turn based, western game but as a twist, there are aliens invading the world.
Or as an other example you want to create a first-person, real time, fantasy game where you can turn into animals.
So a twist can be anything that is related to the world or the gameplay. It gives a little bit of flavor to your concept and helps you to set goals of your project more easily.
Now that you can describe your concept in a single sentence let's think about the visuals.
Mockups are great
Before writing a single line of code you should be able to test your concept on the audience. The best way to do that is by creating mockups of your game. The best thing is that you can later use these mockups to create your assets for your game, so arrange your layers accordingly.
What I like to do is get a feeling for the games mood by creating mockups of the menu and title screen. Looking at those mockups and imagining the ambient track I would play in the background is a great way for me to feel the game in advance.
I usually iterate several times on a concept before I'm satisfied with it. Collecting feedback in the process can be great.
At the ingame mockups you must concentrate on many things. The ones I'm always focusing on in this phase are:
- The user interface
- The level and background
- The characters and enemies
The UI should always somewhat work, so that's why I iterate the most on it here. When you write your code it's harder to change the UI later. But in this phase you can make visual prototypes much faster, so take advantage of that.
The level design should feel consistent by drawing style and theme. Mixing assets that are drawn in a different style are usually not worth it. Use a fixed color palette and stick with it in your game. Backgrounds should provide immersion without distracting the player.
The characters and enemies should draw the main attention. It should be straight forward what character the player controls and what the dangers are.
At the end of your mockup phase you should at least have an UI that you settled on, one consistent level style that you can later iterate on, and one player and one enemy character with basic animations. If you have that, you can start coding and create the first real demo using your new assets.
Making games is hard. I hope this gives you a little idea on how to start working on yours. If you want to make games you don't need to start drawing pixel art right away if you don't want to. You can use the many free assets that are available on the internet to get started. Once you get comfortable with the engine you are using, then the prototypes will come easier. And maybe you will jump the final hurdle in the end, and finish/publish a game of yours.