Chiventure Game Engine
What is it?
Chiventure is a text-based adventure game engine that serves as a large-scale software development project for UChicago students. This project, initially started by Professor Borja Sotomayor, acts as an introduction to all of the various complexities of working in the software industry, including following style guidelines, solving complex problems with little instruction, working as a team, and interacting with other teams. This project is programmed entirely in C.
What was my role?
As a part of the Quests Team, I redesigned and refactored the previous implementation of quests in Chiventure to create a functional, robust, and customizable quest system that is fully integrated into the rest of the game engine. My team had to make many drastic changes, as the previous implementation of our feature was riddled with multiple fatal flaws. Despite inheriting a highly messy codebase, my team persevered and accomplished every goal we had set out for ourselves. We also learned the best ways of communicating with one another, which allowed us to optimize our workflow and make extremely productive progress.
Here are some of the features of the quest implementation that I worked on:
Creation of quests using the game engine's Workflow Design Language (WDL)
Quests with multiple branching paths that lead to different endpoints
Implemented using a non-binary tree (a multitree data structure implemented as a doubly linked list)
Quest and task prerequisites
Allows for conditional quest acquiring and completion
Can be used for non-linear quests
I wrote a crazy algorithm for this purpose, as we didn't have time to incorporate a new library before final presentations
Check out the "show_task_tree" function in the link above
To run the sample game we created that displays all of the features we worked on, after cloning the repository and running the CMake instructions from the Github page linked above, run the command "./chiventure src/quests/examples/quest_game/steve.wdl".
Note: As of the time of writing this webpage, there is a bug created by another team in the dev branch that causes a segmentation fault whenever a game is loaded. This commit comes from before the bug was introduced and should contain all of the changes I worked on, so make sure to revert to here if you want to run the game.