roguelike-tutorial
So, after a week of confinement due to COVID-19, I have decided to follow the Python tutorial at roguebasin.
The tutorial can be found here.
Development status
I have already finished the last part of the tutorial (Part 13).
I am now building a more complete game on top of that.
22/03/2020
23/03/2020
24/03/2020
25/03/2020
26/03/2020
27/03/2020
28/03/2020
29/03/2020
31/03/2020
01/04/2020
List of modifications
Below you can find a list of things that I have done, up to he point were I am currently, different from the tutorial:
- Avoid the use of global variables.
- Console message logging system is a component of the objects that log messages.
- Instead of each object drawing and clearing itself, rendering is handled by an independent class (
Renderer
). - The player class is in charge of handling its key events. It receives the key pressed and decides how to act.
- The game map is a class instead of a list of lists.
- The dungeon levels are all created when the game starts instead of generating them on the go when the player changes level. This allows the user to move freely between levels, although it comes at the cost of using more memory.
- Enable loading custom tilesets. This is covered in the extras section of the tutorial.
TODO List
- Make infinite number of dungeon levels.
- Move strings to constants (key codes, object names, etc.).
- Add method in objects to relocate them in array so that they are drawn in the correct order.
- Check real time combat.
- Check if
libtcod
can load both a font and a tileset from diferent files. - Create a tileset loader that handles all the required operations. (retro/no retro, only chars/chars and colors, etc.)
- Document code.
- Change color palette.
- Add option to play with alphanumeric chars instead of colors/tilesets.
- Bug in message log order when killing monsters.
- Investigate how to use custom tilesets.
- Add stairs to move between dungeon levels.
- Fix field of view.
- Only show objects that are in the current level.
WISH List
- Add more enemies.
- Add more equipment.
- Add functionality to make enemies drop items when killed.