Guilds of Greybrook
Producer / Systems Programmer
Producer / Systems Programmer
Guilds of Greybrook is a low-fantasy, worker placement game where players send guild members on contracts and roll dice to determine their outcome and influence the course of the world. Players will navigate through a run and attempt to keep their guild afloat through various run-changing events.
This project is the culmination of roughly a year of development, including paper prototyping. I’m really glad with how the game has progressed, and it is currently available to wishlist on Steam!
Check it out here!
Programming Responsibilities
For this project, I had the opportunity to creating an expandable and customizable random event system. On the player side, players have a small chance to draw a random event every day. Some random events have choices, and require the player to choose between 2-4 options.
Some random events can trigger other events, and they can be added into various random event pools. The ‘reactive’ and ‘weighted’ event pools have a higher chance to trigger than the regular events, and if there are priority events, they are guaranteed to trigger.
I used Unity’s Event system to allow multiple effects of each choice and to manipulate the text for each event. Using the event system allowed for a more robust system that required less changes later on.
I also used NaughtyAttributes by Denis Rizov to disable some inspector elements when unchecked, to make the inspector less confusing for designers making events in the future.
Using a Random Event Manager, I designed a listener than looked for certain days of conditions in the game. When those conditions were met, the manager would draw from a preset event pool and add the event to it’s appropriate list based on designer’s request.
The system has a few different layers going on. A random event is designated a type based on how it was created (i.e., 'reactive' type if created by an in-game event trigger), with each event type having different priorities. This way, we could mark certain events as priority and have them guaranteed appear instead of via chance. This also allowed us to use the system to implement our tutorial through the dialogue system.
Production Responsibilities
Created various task trackers, and planned out roadmaps per sprint using products like GitLab Issues, Google Docs, and Google Sheets
Playtested rigorously and often to pass on bugs to programmers
Organized playtesting sessions with target audience, to gauge player attraction and decide if we needed to emphasize certain design elements.
Organized and planned builds with the team to showcase steady progress.
This helped give the team a consistent deadline to work towards, and helped us benchmark progress throughout the development cycle.
Lessons Learned
Throughout this project, I’ve learned a lot about designing code modularly and making scripts function easier for those reaching in for certain parts. I’ve also learned how customizable Unity Events truly are, and how making re-usable code snippets can greatly increase the longevity of a project.
From a production perspective, I’ve learned a lot about communication and promoting a positive work environment. It’s always best to put one’s best forward when working on a project, and learning not to impact your teammates with your own attitude is probably the most important thing I can take away from this project.