Posted on March 8, 2017
The 7DRL challenge is halfway over. It’s always difficult to find enough time to work on a project like this, but I’ve made some nice progress:
It turns out that I had all kinds of useful working bits of code from my RZG experiments. I also decided to start from a state of completion and work backwards to fill in the gaps, so I’ve actually had a completely playable game since day 1 — it’s just not very good yet.
Here’s a summary so far:
- Generate a random dungeon map bounded by walls and surrounded by a bottomless pit;
- Fill the map with NPCs that wander around, an Amulet that can be picked up, and a portal to escape and end the game;
- Spawn the player into the world equipped with the Friendship Bat and the Gun of Supreme Convincing — whack an NPC with the bat or shoot them with the gun and they will become your loyal servant, following you anywhere you go (even into the bottomless pit…);
- The player character, the amulet and the escape portal are all visible on a minimap which can be toggled on or off;
- Controls are designed to work best with an Xbox controller, although you can also play with just a keyboard;
Not bad for a few days of effort, but now we venture into the unknown. Coming up on my list of milestones we have:
- Knowledge system — All entities in the world are given properties known only to them, but knowledge can be shared via chat, careful observation, or from reading books. The more knowledge you gain about an item the more useful it becomes, and the more you learn about an NPC the better chance you have of converting them into your follower.
- Chat system — The default action in the game will be to say ‘hello’ and introduce yourself. This should lead into some sort of dialogue where you can trade knowledge and items with NPCs.
- Content — More elaborate dungeons, more items with more functionality, more NPC behaviours… the goal is to create a large enough variety of systems to produce emergent gameplay and a deep roguelike experience.
Ok, enough stalling. Back to work.