A downloadable game

This has been an ongoing project for around a year now. I and another of my peers have worked on this project when we get the time in-between modules. The project requires me to create code that is as modular and expandable as possible.

The Game

Nutty Town's main USP is a murder mystery game, with attributes as well as roles for each player. Rather than winning with tasks, which made Among Us incredibly boring (since the META was to just rush tasks), players all have their individual tasks, including evil roles, to unlock their special ability. This also gives time for the evil player(s) to capitalise on this.

These games either became boring or stagnant. By having a more open map, in 3D, with many attributes and roles, the games META can be shifted far easier and the game can have more content added over time, making sure it doesn't stay stagnant. 

Players have to use their role abilities gained by tasks to kill the other players (as the Evil Doppelganger), sus out the Doppelganger and execute him (Town roles), and beware of the neutral roles that may also be roaming about. These are roles like Jester and Cannibal that may be able to win with the Town, but also can take advance of the town to win solo.

The Code

For expandability, I made a component named "BPC_CommunicationSupport"  (Image 1), all players and the Game Mode use this to help communication between components while not communicating directly.

Additionally, within BPC_CommunicationSupport is a system called "Optional Prunes". Essentially, a class can call a function with a corresponding enum, say "On_Player_Death", the system will then only send a proc over to components marked with that enum.

Another system made is the "BPC_Player_Input" (Image 2). This system maximally allows for the expanding and replacing of default input. The "BP_ReplaceBaseInput" is called by components that execute before this component (Controlled by the communication support), when this one is triggered to setup, it takes the replacements and binds them to the input, if no replacement is given, the default logic is used instead.

The code also allows for an "Adjustment Type", which allows code to not just be replaced but added to. If a role or attribute wants to do something alongside the default for example, it can, making it as modular as physically possible.

Most of that code is written in C++, image 3 shows a small snippet of some of the code. Blueprint is an excellent tool, but it simply doesn't allow for complex modular systems such as this. Especially when using delegates, and passing them as params.

Other Advances

Lastly, I wish to be a good T-shaped developer. I have also picked up and upkept basic skills in modelling in blender, making simple models that convey a vision, for an artist to be onboarded, giving them something to work with.

Additionally, we have kept an up-to-date version of a GDD, that keeps all of the major design decisions in one place.

Published 9 days ago
StatusIn development
AuthorIzzet_Dev
GenreSurvival

Leave a comment

Log in with itch.io to leave a comment.