Inspiration

We wanted to create something using a language neither of us had done an entire project in before, so we were both on even footing and could improve our skills, thus Haskell was chosen. The actual idea was inspired by our trip to the National Museum of Computing where we played a text based dungeon crawler built using Fortran!

What it does

To build upon the basic dungeon crawler model we wanted the game to be somewhat useful, so the challenges provided great inspiration to gamify teaching basic survival skills, resource management, and exercising the player's memorisation skills. You travel through a snowy mountainous region with the aim to escape back to civilisation, however on the way you must make decisions that will impact your ability to survive. Different choices in actions will result in varied event chains and eventual (or immediate!) consequences, with three levels of 'death' flag implemented. Adding an extra layer to the user experience is the written narrative that provides clues to your mysterious appearance on the mountains, as well as foreshadowing possible events to arise.

How we built it

Lost in the Snow was built using the Haskell programming language, in the VS Code IDE.

Challenges we ran into

The State Monad provided plenty of challenges. First in understanding how it's basic build worked, and then in using the Monad types created by it. We needed State to track the state of the game across multiple scenes and different actions/interactions, so this needed to be tackled early on and definitely didn't give us an easy start.

The limitations of functional programming, such as immutability, meant that we had to really change our thinking from object oriented implementations, even with a previous basic understanding of Haskell. We did fall into the trap of if-then-else statements unfortunately, so we didn't quite escape from the OOP mindset.

Accomplishments that we're proud of

One massive achievement was understanding the State Monad, considering we had barely touched on the concept of Monads before. This took up a massive bulk of our time and once we got our heads around this (across many hours) we were able to rapidly add in our game features.

What we learned

Creating this project has really levelled up both of our functional programming skills. We can now compile multiple Haskell files into one cohesive project that can be played in the terminal, as well as of course learning all about Monads.

What's next for Lost In The Snow

Currently only the game state connected to the user can have flags connected to it, meaning that scenes are interactive in a limited way. Therefore the next goal would be to add scene flags and make the world around the user highly manipulatable. After this, adding more scenes to create a longer adventure would be fun.

Built With

Share this project:

Updates