Welcome to the first development diary for The Infected RL!
The Infected RL is a roguelike survival horror game that I am developing in Common Lisp. I started the project because for a long time now I have wanted to make a game, but kept putting it off. Then recently I decided that it was time for me to really learn Lisp. As the quickest way to learn a new language is to do a project, I thought why not combine both, make a game while learning Lisp. Next, I had to decide what type of game I wanted to make. I knew that I didn’t want to spend much time on graphics and wanted a game that can evolve over time, so I chose to make a roguelike game. I had never created a rougelike before and wasn’t sure how to best tackle it, so I decided to use “How to Write a Roguelike in 15 Steps” as a guideline.
Since starting the project a week ago I have made quite a bit of progress. I have implemented the following:
The Map is currently manually created and saved as human readable text file. The maps are loaded into a 2D Array at the start of the game. Maps at the moment only support walls, floor and empty space, and can be any size. In the future all maps/levels will be generated.
The player uses the roguelike ‘@’ character and can move in eight directions. The player is randomly placed in the map when the game starts. Each action the player makes, i.e. move, attack, etc. is a turn. The player can detect wall and creature collisions.
There a three temporary creatures, Alpha, Beta and Charlie, that use their equivalent ascii characters ‘a’, ‘b’ and ‘c’. Also, I have given each create a different colour as well. They can move in the eight directions. At the moment they all travel at same speed as the player. The creatures currently have the following stats: name, hearing, hit points, strength, speed and defense. The creature can detect wall, creature and player collisions.
The creatures have basic intelligence and can navigate around the map using the A* Pathfinding algorithm. They will navigate around walls and other creatures. The creatures don’t yet have line of sight intelligence. But I have added a basic sort of hearing intelligence, in that if the player is X amount or less squares away from them based on their hearing range, then they will pursue. If they go out of range, they will then stop and wait. If the creature is one square away from the player, they attack. AI is basic at the moment, but will be improved in the near future.
At the moment only basic bump attack combat has been implemented. I haven’t implemented any weapons yet. Just using either the players and monsters strength. The amount of damage inflicted is calculated by randomizing the player/creatures strength, like a dive roll. At the moment the player can’t die, but the creatures can if their hit points reaches or fall below zero. Attacking is performed in all eight directions. I will soon implement weapons and also range attacks.
Map tiles are rendered with SDL primitive draw-box. The player and creatures are rendered with standard SDL fonts. There is currently no sprite map support.
At the moment no sound has been implemented.
Here is a screenshot of what the game looks like at the moment.