Description:
Animal Shelter Simulator 2 is an engaging, heartwarming game that allows players to step into the shoes of compassionate caretakers running an animal shelter. This sequel builds upon the original game with expanded features, such as NPCs (workers, adopters, volounteers), more realistic Animals with interesting behaviors and deeper gameplay, enhancing both realism and fun. One of the most exciting new elements is the addition of co-op multiplayer, enabling friends to work together to manage the shelter's day-to-day operations.
Team size: 30
In the pre-production stage of the work on the project I worked on creating the main architecture design philosophy with the programming team of Animal Shelter 2, as well as the architectural overview of the systems that would be later implemented into the game. We used diagrams (mainly a slightly modified version of UML) to define dependencies between systems, API endpoints and how certain features should interact with each other, also taking synchronization from the multiplayer side of things.
One of the biggest responsibilities I had while creating Animal Shelter 2 was working on the navigation and locomotion, by creating a custom-made solution and wrappers over existing navmesh solution for recast graphs and A* pathfinding- I wokred on it alone with one AI programmer sometimes providing feedback on the work. This task mostly boiled down to implementing and developing custom components for NPCs and Animals that would use the existing solution with our custom API endpoints and gameplay events. For the locomotion I developed a custom solution for physics based local avoidance, flocking behaviors for multiple NPCs, path following based on attraction points and custom locomotion logic for one agent (NPC) walking with another agent (Pet) on a leash.
An additional challenge was handling multiple big navigation graphs at the same time for a park level, main shelter and intervention levels, each of them having dynamic obstacles and graph rebaking, I spent a noticable amount of time working on a managment system for these graphs, as well as priority-based rebaking.
For the behavior logic I implemented a multitude of utility AI behaviors and considerations that were used in the core gameplay.
Example of navigation and locomotion based on an interaction with a ball- the main challenge for this project was making the locomotion of an animal more complex than just moving from point A to point B. The paths were given modifiers, so that different pets moved in a slightly different ways that mimicked movements of animals.
In collaboration with the designers in the team I implemented gameplay features, ensuring that they could also comfortably contribute to the previously created systems by exposing certain values, as well as creating miniature tools for aforementioned systems. Later, when necessary I was responsible for writing serverside code, as well as the logic on the client, that would ensure that the gameplay functionality was synchronized for seamless multiplayer play. The mechanics included:
Customization system of the animal shelter, including upgrades and decoration of the individual rooms.
In-game economy simulation.
Custom logic for dozens of interactable items used by players or the animals in the world.
Logic for several UI screens and singular elements.
A big part of my work involved creating tools and custom editors for Unity Engine to speed up and simplify the development processes. The most important ones included:
A visual debugging console with extra functionality created solely for Animal Shelter Simulator 2
Tools for level design making iterating on the main level and the upgrades of rooms faster.
Tools for procedurally generated levels (interventions and missions).
While working on Animal Shelter Simulator I spent plenty of time working with the QA team and resolving reported bugs in the gameplay systems I was responsible for, as well as the ones I had to learn in order to resolve the bugs.