A couple of new additions--
The core functionality of the inventory system is complete, and I'm slowly adding object actions. One of the first items I made is an oil lamp you can use to look around in dark areas. Of course, you'll have to find oil. Here's a short video showing it all in action.
One thing I'd like to do is give the player the option to use objects in ways they weren't intended, such as throwing the (lit) oil lamp at a monster. The fireball would deliver a lot of damage--but destroy the lamp.
So this brings up the possibility of the player rendering the game unbeatable. I had the idea of determining the latest save point at which the game was still winnable, and resetting the player to that point (instead of the last save point) when they die.
One way to do that would be to make a graph of all the elements that are required to beat the game, and which ones depend on others. (e.g. you need the red key to open the door that hides the blue key). I can then run A* to determine if a "path" to the game's goal still exists.
For "Temple of Idosra", I can create this graph by hand. For a game using random dungeon generation, algorithms that use graphs (such as lock and keys
) provide the necessities to figure out how far back the player will need to be sent.