It's been awhile since our last post but a lot of things have been finished and the scope has been expanded to add some awesome features.
New Trailer: 4 Player Coop is our biggest addition and is something we started working on shortly after our last post. We started messing around with it seeing how complicated it would be to add since we were already many months into development. By the end of the first day we already had a second player walking around but with many missing components of interaction and the games structure, UI, and various points of logic weren't designed to take multiple players into account.
From there we started refactoring and making adjustements to bring the game from single player to a full featured coop. It was important to us from the beginnning that the coop not be a simple asssitent or copy of the main character but their own character with their own progress, inventory, stats that can be used to continue in a single player game.
A few things like player to object interaction, throwing a boomerang, placing a bomb, collision worked out of the gate. Everything else had to be added starting with enemies noticing the coop players, chasing them, damaging them and keeping track of who their targets were. Functions that checked for the distance between something and the player had to be changed to check for the distance to the closest alive player instead. Changing map sections had to be adjusted so any player can start changing section and the others player get pulled along with them, fast travel also had to be adjusted to bring other players along. Within a couple weeks we had most of the coop functionality in occasionally finding issues over the next few months that we worked to correct. After that period every addition to the game was worked on with coop in mind.
We had the advantage of being still early enough in development that the effort to make this switch wasn't an insourmountable task. Also thanks to advice I'd learned early on the Player class was designed to contain all the logic and data for only the Player and we were careful not to let player logic end up in other handlers. Things like the boomerang handler for example were instantiated in the Player class and the Player passed itself to the handler so when another Player is added another boomerang handler is created that handles the boomerang for that new Player. Design decisions like this helped make the conversion process a lot less painful.
A few UI adjustements also had to be made the player house was redone as the Lobby House where players choose their next class and leave the room to mark themselves ready. The game over screen had to be adjusted to show the run details of all the players. Also we added in some features like the Chip In system that allowed players to contribute gems together in order to purchase a new building for the village.
A tricky part of the adjustement to coop was how to handle progress of players at different stages of the game. We chose some things to be the cumulation of all the players progress and others to be at the furthest point back of all players. Any buildings constructed in the village for example would be available if any of the players have purchased it, so if someone had the blacksmith they wouldn't need everyone else to buy it in order to keep working on their sword. On the other side of that the progress of defeating the dungeons is placed at the furthest point back of all players, this prevents boosting players but also keeps weaker heros out of dungeons they couldn't possibly do well in.
Overall we're very happy with the decision to add this feature and we now consider it a major feature of the game. We have some more ideas to make coop more interesting in the long run but playing some 4 player sessions, working through dungeons together, messing with each other, and using each others skulls as a weapon has been a lot of fun and we can't wait for more people to try it out.
I have some other features to highlight we've added since our last post that I'll go over soon.