From UBC Wiki

What is the problem?

For our project, we will attempt to implement a text-based game in which the player can interact with the world to change the world state (through searching rooms, picking up and utilizing items, and interacting with characters through dialogue).

The general world-interaction will occur through inputting basic text commands and communicating with other characters will occur through user inputted text interpreted by a natural language interface.

The game itself is set up to be a murder mystery: the player has found themselves in the wrong place at the wrong time, and will be framed for murder if they are not able to convincingly accuse someone else of the crime. However, whether the player chooses to do this morally (through finding the real criminal) or amorally (through framing someone else) is up to them.

What is the something extra?

A simple text-based adventure game would generally give the player a set of specific commands that they could use based on their situation. Instead, we decided to implement a natural language interface to allow the player to type more organic commands, such as ‘take item’, ‘pick up item’, or ‘grab item’ all allowing the player to get the desired item. This will also allow the player to have more natural and flexible conversations with NPCs by typing in what they would like to say, rather than choosing a response from a list of possible conversation choices.

What did we learn from doing this?

We learned how to change the state of the world in prolog through commands to a natural language interface, how to create a more complex natural language interface, and how to implement a large project cooperatively in prolog.

Games are a lot of work - while the concept of being able to frame another character as the perpetrator was a neat idea, the scope of the project was already more than two assignments each and this feature ended up being cut.

Source Code: