How to create roguelike
I always wanted to write a detailed beginner's guide on how to create a roguelike, containing both general and more specific tips. The regular holiday of the Roguelike Celebration , held this year, seemed like a great opportunity to finally force myself to do it, so I prepared a half-hour report on this topic.
I have quite a lot of experience - during the last seven years I have worked only in this genre ( Cogmind , Cogmind 7DRL , POLYBOT-7 , REXPaint , X @ COM ), and for the last five years this work has been my main job. Besides, all these years I have helped transform r / RoguelikeDev to the largest online developer community roguelike.
The report “How to create a Roguelike” is also available in the form of a video (see the clip below). This article is a text version of the same report for those who prefer a readable format or want to take a closer look at a bunch of images from the report.
A couple of years ago at the first Roguelike Celebration holiday I read a report on how I became a developer , but now I want to talk about how anyone can start developing their own roguelike. Quite often, roguelike players at least try to create them. We are inspired by games that we play and want to do something better, something else, or just something of our own. My report will definitely not be a tutorial, it’s more about how to start developing and general tips that can help you along the way.
Creating a roguelike can be quite a challenge, like traveling through obstacle-filled dungeons. The diagram below shows you embarking on your journey, and on top is your goal: an interesting playable game.
At the start, attention, @!
Your path can easily be like this, randomly developing in every possible direction, while you are trying to add to the game every invented system and not having a clear overall route:
Indirect approximation to your goal. Someday ... (This is an animation - open the image in a separate window to start the process again.)
Yes, you can reach or barely touch your goal, but at what cost? May be wasted for many years. Along the way, you will most likely run into too many dead ends, then lose heart and give up the game.
In fact, you need the shortest path to the goal. Having a basic plan and an understanding of what needs to be done, you can start from a solid foundation and only then , when you get an interesting core of the game, continue to develop it in the right direction!
First, go straight to the goal and start with a solid foundation. (This is an animation - open the image in a separate window so that the process starts again.)
In this article I will mainly talk about the basics, how to travel around the dungeon with the greatest chances of success, especially when you are just starting out and are enthusiastic, but not quite sure where to go.
- Basic mechanics
Remember, this article talks about how to start creating a roguelike, but does not talk about how to finish it . Here you are alone.
Let's start with the first and most standard question: which language to use.
The answer is simple: any .
A slightly longer answer: this is not very important. If you already have experience with some language, then this is excellent, take it and use it. Language is only a means, and almost all languages have been used to create roguelike.
However, it cannot be said that if you are a beginner, there are no simpler options, so if you hesitate, I will help you with advice:
Sample python code from the tutorial on libtcod.
For roguelike novice developers, Python is often recommended because it’s pretty easy to work with. Just look at this code. There are no heaps of strange syntax here, and even if you don’t know programming or Python, you will probably still be able to figure out what is going on in it.
But don't worry, its “simplicity” is not the limiting factor - in Python, you can still create great things.
Ultima Ratio Regum is written in Python. This is a beautiful massive open world project that is not yet complete, but already incredibly impressive.
Temple of Torment is another voluminous and complete fantasy roguelike written in Python.
There are literally hundreds written in Python roguelike. That is, if you start with it, then your journey will be easier, and later we will return to how to begin with it.
A selection of programming languages used by roguelike developers.
More complex languages like C and C ++ are good because they have been popular for a very long time, that is, you will find a lot of resources and reference information. I work with C ++, but I use it only because I already knew it. I would not recommend it for newbies, especially if you want to create a roguelike, and not spend all your time debugging! You will still find many other developers using Python, so you will also have access to a bunch of resources.
Another problem facing new developers: the creation of a "roguelike of their dreams." Should this be your first goal? Almost never!
At first, you learn a lot , make mistakes that you don’t even realize, so first of all it’s better to accumulate certain experience. More importantly, from the beginning to the end, the priorities of game development change a lot, so before taking on major major projects, it is better to go through the whole process one or two times. Maintaining a small scale is the best way to complete a project and demonstrate the result of your efforts.
Let's return to the development map discussed above. Here is the main path you need to focus on:
The main development route affects only a selection of the necessary functions (note that I usually put a question mark in front of the combat (“combat”), because in roguelike, battles are not always used!).
This can be either a completed game, or a reliable basis on which to develop further. All other areas may seem interesting to explore, but try not to be too far from the main path in the early stages. It’s like a roguelike game: if you start by blindly running out of obscurity instead of doing what you need, then if the RNG is not completely on your side, you will quickly die somewhere. And many times. Yes, it's also interesting to play this way, but creating a roguelike is a completely different story that requires a lot of time, so try to focus.
The good thing is that you can build a roguelike piece by piece. In fact, they are a jumble of systems that can be added if it seems to you that they support the main core of the game.
Addition to the core of roguelike new pieces.
After that, you can constantly expand the game and continue to iterate, and if you're lucky, get feedback from players.
As a result, you will glue so many pieces to the base that you will not notice how the ten years will pass!
If you look at the roguelike project as a whole, it is scary, but in reality you only need a plan and perseverance. Starting small is important because you will make mistakes, and most likely will fail if you aim for something big right away.
So what really needs a small roguelike? Basic mechanics. That is where the gameplay begins. It is necessary that it can be explained in one sentence, and that it should be prototyped first. Straightforward to the most interesting part of the game.
What will be the unique view of the game on the genre of roguelike? If your game has only this mechanic, will it be interesting? If you're already thinking about more, can this mechanic be the basis of the rest of the game? Think about what the player will do minute by minute, most likely it will be something related to the basic mechanics. If this repetitive process is not interesting, then it does not matter that you build on top of it!
Visualization of basic mechanics as the foundation of roguelike design.
So, in this initial protogame, implement only those external elements that are necessary for the implementation and testing of basic mechanics. I repeat, the scheme shown above and its branches may be scary, but this is just an example of what is possible. Roguelike can be very simple and at the same time truly fascinating.
To learn a little more about basic mechanics, let's look at the 7DRL.
7DRL is a roguelike created in 7 days. Approximately in March of each year an event is held where a lot of developers are trying to create their own roguelike. This event has been held for 14 years. And it's great, because if you finish the game, then there will definitely be at least a few people who will play it and leave feedback. In addition, there are judges who evaluate games according to various criteria, however, almost all developers consider 7DRL to be a challenge to themselves (the event is not considered a competition).
7DRL success over the years (2005-2018).
Every year more than a hundred new roguelikes are produced at this event. This is very exciting, and although I do not recommend creating 7DRL as the first game (you don’t need such a load yet), it would be nice to participate, having gained some experience and figured out what roguelike is, especially in technical aspects, because deadline is very helps to gather.
The 7DRL events are excellent examples of the “start small and expand as needed after you have seen that the basic mechanics look good.” That is, on the 7DRL, in fact, good prototypes are created, and in many respects the measures are experimental in nature. Every year we see a lot of great innovative ideas!
Let's look at a few examples ...
Knight (7DRL 2014)
The most important thing in Knight is control of character inertia. The player sits on the horse most of the time, a small blue block approximately in the center is an area in which you can move, only in one space per turn, and that is where you will find yourself in the next turn. The player can only accelerate, turn and slow down, that is, he needs to plan the direction of attacks on moving enemies in order to decapitate them with his sword while passing nearby.
A Roguelike Where You Dodge Projectiles (7DRL 2016)
I like that in this 7DRL the basic mechanics is stated right in the title (“Roguelike, in which shells should be avoided”, you can download it here ). The player's character is a ship in space, and although you automatically attack enemies within your area of action, the shells fired by enemies fly very slowly. You can see where they will be in the next turn, and you must maneuver in such a way as to continue to attack them and avoid getting into your ship.
Seven Day Band (7DRL 2015)
In the Seven Day Band, you create your own roguelike during the game. While wandering around the world, you meet new, unknown enemies and objects and must give them names and abilities when they first meet or when they become important to you. (“Band” in the title means creating your own game in the Angband style.)
Broken Bottle (7DRL 2011)
In Broken Bottle you play as an alcoholic in a post-apocalyptic world. Good or bad, but the main part of the gameplay is related to alcohol consumption. (The game is heavily focused on the plot.)
Drakefire Chasm (7DRL 2012)
In Drakefire Chasm, you control a young dragon fighting in caves filled with monsters, adventurers, and other dragons. There are no items in the game, you just upgrade the dragon's abilities and eat enemies to grow and develop. From time to time updates are released for the game.
Golden Krone Hotel (7DRL 2014)
In Golden Krone Hotel you enjoy the benefits of different abilities of the vampire and human forms of the character, including the interaction with dynamic light. This game eventually turned into a serious commercial roguelike, and after the release a year ago, it showed itself well on Steam.
Cogmind 7DRL (2012)
This is my original Cogmind 7DRL , in which the player controls a robot that creates itself from scratch using parts of other robots. Objects are destroyed extremely quickly, so the player often has to rebuild himself again. This game later also became a much larger commercial project. I did not expect that my small experiment on the 7DRL six years ago to turn into work, but I am very glad that I took part in the event, because it proved that the basic mechanics are interesting.
POLYBOT-7 (7DRL 2018)
This year, for 7DRL, I created POLYBOT-7 , which is somewhat similar to Cogmind, but it is played completely differently because the basic mechanics have been greatly changed. The player no longer chooses which parts to attach to the robot, now they are attracted automatically and he cannot get rid of them. Parts are deleted only if they are destroyed. Initially, I planned that the game would become Cogmind on a smaller scale, but with the approach of 7DRL I began to feel that such a game should not be created - it should have a truly unique attractive feature, a completely new basic mechanics. It turned out to be quite interesting and became a good reason for creating many additional mechanics supporting a new type of gameplay (there is a comparison here ; I also wrotevoluminous post-mortem , describing the process of its development from beginning to end).
So, although these games obviously have several systems, it’s pretty obvious what their basic mechanics are, and, along with many other 7DRLs, they stand out from the crowd.
Examples not with 7DRL
Let's also look at a few examples not related to 7DRL. The creation of these games took years, they contain heaps of systems and content, but we can see. that they revolve around basic mechanics.
There is a Mage Guild in which there is a terrific alchemy system that allows the player to mix any two items , be it potions, monster remains, or anything else, and get all sorts of new items and effects.
In Demon, a player hires a lot of various demons autonomously following him, and trains them.
The Ground Gives Way
There is The Ground Gives Way , in which the development is entirely based on items.
Xenomarine is built on ranged mechanics and taking into account the direction of sight - not many roguelike have it.
One of the developers of NetHack once told me that the basic mechanics of NetHack is this: “if it seems that something can be done, then most likely it can be done”. (This is almost like anti-base mechanics, such an example is not worth taking to a new developer, but that’s what it is.)
One of the most important things that you need access to in order to develop roguelike is information . It includes learning the basics, getting answers to questions, studying further more complex topics, or just food for thought.
Your difficulties may be unique compared to other developers, because each has its own set of skills and personality, but you can use online resources and the help of friends to overcome these obstacles. Although nobody is likely to work on your project except you, people can give you advice if necessary. But you need to ask for help! To understand this, it took me too long, and my initial progress was rather slow, because I never communicated with people. Therefore, I must tell you that others can be of great help to you!
Let's look at the most useful resources ...
r / RoguelikeDev
RoguelikeDev Sabreddit is the largest group of active roguelike developers in the universe. We have a very welcoming and ready to help community, and a well-organized sidebar contains links to many useful resources.
r / RoguelikeDev and its informative sidebar.
Among these resources there are tutorials in various languages and libraries, and in the group there are users who have already used them and are able to help you answer your questions.
I mentioned above that it’s worth starting development with Python, and the easiest way to do this is using the libtcod library, for which we have a tutorial (in fact, there are many of them).
The libtcod logo
Like most gaming libraries, libtcod takes on work with the main aspects, such as the game window, mouse and keyboard support, bitmap fonts, palettes and color manipulation. However, besides this, it performs many complex tasks specific to roguelike, such as map generation, FOV (scope), and path searching.
Examples of functions used in the libtcod interactive demo.
The Ultima Ratio Regum and Temple of Torment described above began as games created using this tutorial and gradually grew into unique projects. libtcod is great, updates have been released for it for ten years now.
Another way to start learning is to participate in the summer event “we code together” r / RoguelikeDev. If you need additional motivation and help along the way, then along with other developers you will follow the steps of the libtcod tutorial.
The summer logo is “coding together” r / RoguelikeDev
While we were doing the tutorial for a couple of years, and the interest was still high, about 100 people participated in each year. Strictly speaking, it is not even necessary to use libtcod or Python to participate - many people use other languages and move with us in their own roguelike or similar tutorials.
In two months you will have your own playable roguelike! Here are some of the games that have been released since the event over the last couple of years:
Examples of projects of the summer event r / RoguelikeDev “we code together”.
This is actually a very good walkthrough, in fact, it gives you all the necessary technical knowledge to create a functional roguelike, and then you can do what your imagination tells you.
Also in RoguelikeDev there are collections of FAQ explaining various aspects of development , so that you understand how to approach the solution of various problems. We have already answered quite a few questions.
Friday FAQ topics, numbers 1 to 74
Also included are metathemes, such as planning and motivation, such details as commonly used systems, design and everything else! Over the years, quite a few developers, including authors of well-known roguelike, have contributed to the community FAQ.
Usually in the subreddit there are always a bunch of developers, many of whom develop long-term hobby projects. They are competent and ready to help you. We also have a Discord for help and real-time discussions . (We share this server with r / Roguelikes subreddit, so in its other channels you will always find many people playing roguelike of all sorts and discussing them.)
Many years ago, Santiago Zapata created a great website you could hear about: RogueBasin . Here you can find a whole section with articles devoted to the development.
The content section of the article RogueBasin.
There are quite a few articles (the list shown above is just general content!). Although some articles for many years, most of them have not lost their relevance. It was from here that I began my journey many years ago, the articles seemed to me both inspiring and enlightening. (And also a little scary at first, but do not forget that roguelike is being developed in pieces - just take one step at a time!)
Darren Gray, Andrew Dull, Mark Johnson and others are leading the podcast Roguelike Radio .
List of topics Roguelike Radio (2011-2018).
Listen to all these topics! They also contain interviews with a large number of roguelike developers. Even I participate in two or three, including where I say that Cogmind may be completed in 2016 or so (Ha-ha-ha) (2019 is coming soon, but don't demand the impossible from me - More and more players find it and I constantly add new content and functions to the project, simply because I can.)
Also, you will see that in many podcasts there is a story about 7DRL, which is quite an important event for the community.
So, we got a fairly large amount of knowledge, but when developing games in general, there is another important side - resources ...
Here are our resources:
Resources when developing Roguelike
Seriously, ASCII characters are in many cases a wonderful solution, and they make it very easy to add new content. With the right combination of foreground and background colors, you can create truly beautiful games.
If you are familiar with roguelike, you could already find out Brogue , but over the years I have collected a large collection of inspiring ASCII screenshots, and I want to share it so that you realize the possibilities:
22 images from various ASCII-roguelike. (And to stop the inevitable questions: the names of these projects can be found here .) The
variability is simply amazing - a huge space for the implementation of unique styles!
When working with monochrome tilesets in ASCII format or with ASCII-like, you can use my editor REXPaint (bonus - in addition, it integrates with libtcod!). For me, it has become a completely indispensable tool, and quite a lot of other developers use it for such things as creating interface design, maps and graphics.
The REXPaint logo, partial interface and sample images (note that there are too many colors in the recording and the gif distorts the palette).
Of course, if you want more people to play your game, or if it helps you with the project, there are beautiful tilesets that can be used at least as a temporary replacement for graphics. Many of them are free, or sold at an affordable price. In the sidebar r / RoguelikeDev there are links to many tilesets.
Examples of 2D tilesets for roguelike.
Some people help tile to stimulate the imagination, if it is necessary in the development. By the way, you could see some of these tiles in other roguelike, and this is one of their drawbacks (the graphic style will not be associated with your project), but beautiful free / low-cost graphics are invaluable for indie developers.
Demo Tilesets for roguelike.
Good starting points
In this last section, I would like to tell you where to start the development process itself and what you need to focus on. You can simply move the little @ around the screen and fight with other letters, or go a little further, in the hope that other people will enjoy the game as much as you do.
Of course, you will need some kind of “bait” to attract the initial attention of people, but this bait can take various forms ...
We have already spoken about the presence of basic mechanics , which is one of the simplest baits, because it is directly tied to the gameplay itself, In roguelike, the gameplay is primarily important. All these permadeath will not be worth anything if the game does not have replayability.
Usually, games of this genre cannot boast of stunning graphics and sound , however, more and more roguelike appear that have headed in this direction, and this is great, because in this way they attract more people to the genre. Therefore, it is a useful bait.
But I want to emphasize the importance of the topic , which is an excellent bait, but its advantages are rarely used.
There are hundreds of fantasy dungeon crawler, so if you want your project to stand out from the crowd, you should choose any unique theme that is not a fantasy dungeon crawler.
Brainstorm possible themes for roguelike.
Roguelike is usually based on a good / interesting gameplay, but the presence of a unique theme not only makes the whole gameplay unique, but also gives a source from which you can get completely new mechanics. (The unique theme practically forces you to go this way.) In particular, historical and mythological themes provide a huge amount of material for research and experimentation. It seems that people have always wanted more science fiction roguelike than we have. Despite its breadth, this is a rather unexplored group of topics, especially when compared to the amount of sci-fi content in other genres.
In recent years, several truly unique themes have appeared.
MakaiRL is a great concept based on Japanese mythology and historical fantasy. I wish I could play it!
Skies of Bloody April is a roguelike dedicated to aircraft duels of the First World War.
Such topics draw attention to themselves, especially when they reach a fully playable state (both of the examples shown above are in the early stages of development).
An example of a game already completed is Lone Spelunker , where the player explores the natural and sometimes dangerous wonders of underground caves.
Among the topics for which the demand is not yet satisfied, pirates are often mentioned in the roguelike community. There is one game, Pirate Rogue, one of the most popular themes in the Roguelikes subreddit.
Concept art Pirate Rogue.
But Pirate Rogue is just a concept that the developer prototyped, and then suspended the project, because he realized that he lacked some experience to create his dream game. However, the demand for this topic is obviously not satisfied.
In addition, requests for superheroes and cyberpunk are constantly emerging. Somebody take care of them.
A lot of great stories and amazing projects, both new and long-term, appear in the RoguelikeDev subreddit. But in particular, I would like to share one story that I think is very inspiring - the story of Armored Commander .
The player controls one tank of the Second World War, within which he can command several crew members in ground campaigns. Game developer Gregory Scott began this project, having a little programming experience, and started working on it during the learning process of the libtcod tutorial.
A year later, the game was completed and its review was made by Rock, Paper, Shotgun.
Armored Commander in Rock, Paper, Shotgun.
Here is an example of how, having no experience in developing games, you can create a game that appeared on a popular gaming site in one year . Of course, in such things you can not do without luck, but the presence of a unique theme and its promotion ensures that more people learn about the game.
Therefore, choose a unique theme and implement it . So you will interest more people, which in turn will support your motivation.
Now Gregory is working on a sequel: ArmCom 2 .
Remember that your game does not have to be just a roguelike. Here I feel a little naughty, saying that you should not be limited to definitions. Often we see people coming up with the idea of the game they want to create, but too worried about whether everyone will find it roguelike. In fact, it does not matter, because there are as many genres as there are players! If the game is complete and follows your own plan, then you are on the right path. (But do not worry, in the Roguelikes subreddit, weekly disputes will still arise as to whether your game is roguelike xD)
Now make a 180-degree turn. You can choose another approach that has its own advantages - XRL. Such games are based on already existing franchises, and they save you a lot of planning and design efforts that can be used to create a game, because most often there is a ready answer to many questions. The maximum that you need to do is to adapt them to roguelike formulas. While working on XRL, you can focus on implementation and other basics without experimenting with something new.
This path is chosen by many developers. Some time ago I created a list of XRL examples on RogueBasin . All roguelike described below are based on already existing intellectual property (IP).
Incomplete XRL list.
Personally, I think this is a good way to start developing the first game.
Probably the most famous XRL is DoomRL. After receiving a warning letter from Zenimax for using the trademark, it is now officially called simply DRL.
DoomRL / DRL Note: keep in mind
that you need to be careful with companies that are particularly loving litigation, for example Nintendo (I highly recommend not taking roguelike on Pokemon!), But overall roguelike is a very niche genre, imperceptible for owners, so XRL project is fine. Only those that get significant fame may cause problems, but by now you can either re-brand the game with your own content, or you will have enough experience to start everything from scratch. XRLs are usually short-lived, small-scale training projects, but many XRLs have been in development for a long time. (Be that as it may, forget about any attempts to capitalize on other people's intellectual property!)
Now DoomRL developer Cornel Kiselevich is actively working on DoomRL's successor called Jupiter Hell . A great example of how to build a huge fan base with XRL and then use their support to create an even larger commercial roguelike.
Earlier, Cornell created two other XRLs: AliensRL (one of the first roguelike I've played) and DiabloRL.
Productive roguelike developer Slashie created roguelike based on Castlevania, Metroid, Zelda, Star Wars, Megaman, and probably a dozen more franchises that we haven’t told us about: P
Collection XRL Slashie.
Even my own semi-roguelike project XCOMRL falls into this category. It is based on the first UFO Defense, and began with IP and the mechanic, who were well known to me and loved by me.
X @ COM
On this foundation, I could develop further and add many of my mechanics and content, experimenting over a solid foundation.
Modified X @ COM cards, part of which is a transition to a universe completely different from X-Com.
Another major advantage of XRL is that you immediately have fans - other people who like roguelike and your chosen IP. And it helps a lot motivation, because there will always be people supporting you. A lot of my supporters today are the same people who followed my work on X @ COM.
Long Term Tips
Here are some tips that will help you not to give up in the work on a long project ...
Release releases immediately and frequently.
“Fast and frequent releases” is a roguelike mantra. You need to quickly achieve the minimum playable state of the game, that is, to assemble a prototype. Thanks to this, you will most likely be able to get good feedback, which is very useful for the future.
The release announcement history on RogueBasin.
Even before the first release, with only the concept, or after it, try participating in our weekly collaborative posts in the RoguelikeDev subreddit.
For some, this is a good way to self-discipline, as well as a great opportunity to share what you have. You can literally just write that this week you have been flooded with work and you have done almost nothing, and in the process of communication find friends who have the same problems. Or you can talk about a cool new feature that you have added or are thinking about. Or share funny bugs. Yes, in fact, you can do anything! This is a great community.
Come and share with us!
Keep a blog
In addition to Sharing Saturday, it is also a good idea to concentrate all the information about the development of your project in one place. In accessible to all place. In fact, blogging has many advantages; Here is a list of the most important:
- he allows you to bring thoughts in order
- study your work from a different angle
- document the process
- create useful prospect reference materials
- get feedback
- build a community around the project
I've been doing this for a while now and find the blog incredibly useful. Below is a list of topics that I have disclosed in my blog over several years:
Five Years of Grid Sage Games Blogging.
Perhaps there you will find useful information that is waiting for you.
Accessibility is important
Accessibility is important. Traditionally this did not apply to roguelike, but today, if we make an effort, we can reach a much larger audience. By effort, I mean enough documentation, a tutorial, full mouse support, tileset, etc ...
To understand how valuable mouse support and tileset can be, take a look at the statistics of players from Cogmind:
Cogmind player preferences: mouse and tile advantage!
Consider that some aspects of the accessibility of the game must be taken into account in the design from the very beginning, but for the first roguelike this is not worth it. Just start with ASCII and keyboard controls.
This is the end of my article and the beginning of your great new roguelike.