The game
Sons of Týr is a top-down online multiplayer rpg set in a viking world. You play as a viking, raiding villages to gain loot and resources to upgrade your settlement. Do this alone or with a group of friends with whom you can also battle against in the arena. The game features a commitment-style combat system with melee, ranged and magic, each with their unique sets of weapons and mechanics. Upgrade your character by getting higher tiers of weapons and equipment and by leveling up your weapon specializations.
Participation
This project was my college graduation project where I was the lead programmer in a team of seven. My work includes the game's combat system (entities, weapons, status effects, equipment), the player/camera controls, UI (menus, healthbars, tooltips) and networking.
Systems
Entity
Sons of Týr has been created with a more component based workflow because it suited our networking stack better and was easier for my teammates to use. The players and enemies all use the entity component which has the primary job of handling all incoming hits and events. The entity component comes with a few extra required classes that handle health, stats and status effects.
Equipment
Equipment uses a data object (Unity scriptable object) to modify all sorts of stats on the wearing entity using stat modifiers. These modifiers can be either flat or percentage based and get applied upon equiping the item. To account for item clipping, equipment is able to modify skinned mesh blendshapes and disable certain appearance options.
Combat
Sons of Týr features four different weapons types: melee, ranged, magic and defensive. The style of combat is very animation driven and once you commit to an attack you cannot back out of it. For this I created a simple class that lets our animator keyframe all sorts of player variables like force applied on the player, invinsibility frames and damage frames. This gave us a lot of freedom to really finetune our animations and to let the steps in our attack animations feel really good.
A better preview of the animations and how they influence the player can be found on Wouter Ujvari's YouTube channel here.