Portfolio Details
My roles in Doodem
Doodem is a 1vs1 web auto-battle game where players mix animals with special abilities to fight for them.
I was in charge of coding the animal AI, attacks, mixing, and shop. I also had to implement several multiplayer features and the info menu for the totem parts. Lastly, I was very involved with the game design, until I had to focus on programming.
Game design
I actively took part in the design of the core parts of the game, specially at the beginning.
The totems
We wanted each body-part to be different. For example, the main attack is bound to the head, in order to prevent combinations without one. Then, the body is the only way to get a flying animal (not only does it make sense biologically,but also avoids the redundancy of having the effect twice). It also is, generally, the most stat-heavy segment. Lastly, the rear of the animals have abilities that can't deal damage.
Animals: AI and attacks
The animals are controlled by an Entity class, that manages decision-making, attacking, resources, etc.
Since each individual piece has different priorities (such as, what resources to pick up), the "brain" was implemented as a utility system, where each part has an input.
This allows for more complex, or even emergent behaviours, while making the system easy to expand with new pieces and unique objectives.
For special abilities and attacks, the part can subscribe, through the Entity, to events of interest.
This way, the piece will be notified of relevant changes (acquiring/using resources, death, killing an enemy, etc.) and act accordingly.
On the other hand, each part can submit an attack to the entity, with a callback and an attack distance. When the required distances are adequate, the Entity will process them.
Multiplayer and webgame
Doodem uses Unity's NetCode for GameObjects (NGO) for the multiplayer. Special attention was put in synchronising the game-state (resources).
The web-based game format provides access to the game from any device. This shaped certain considerations. We had to account for the smaller screen size for smartphones, both on the amount of info shown, and specially the ways to interact with the game. Another aspect was the lower capabilities of web-based games, although the impact was more noticeable for the 3D art team.