Védelem: The Golden Horde

C# Data Oriented using Unity DOTS.
8 months development time.
Tech lead & AI programmer.

This project is permanently out as a free game on steam.
Please try it out yourselves!

What is Védelem

Steam!

Védelem is our third-year student project, where we have to work
the entire school year on the same game project.
The game is a real-time strategy survival game, where you have to build up your castle to defeat incoming hordes of invaders.

This project is not just a game meant to be released on Steam. It is also a technical experiment by our school to see what students can create using Unity DOTS, which is unity's data-oriented ECS that is still in active development.
We decided to use this to challenge us to have as many interactive units on screen at once while being high performance without a high-end PC.

New:

Old:

My responsibilities

I have 2 roles on this student project as I am an AI programmer, but I also hold the tech lead role in our team. So I will cover them in separate sections.

My AI programmer role responsibilities:

- Formational Flocking Algorithm.
-
Unit to Unit decision-making. (combat and avoidance.)

My main responsibilities as an AI programmer that I spend time on daily are the behavior and movement of the individual units acting underneath the formation leader.

In terms of unit movement, I was challenged with making it dynamic and intentionally not perfect for making the individual units feel more alive.
For this, I wrote a custom flocking algorithm to handle the movement of individual units, which is optimized to handle thousands of units at once.
And all of the values used by the algorithm are easily tweakable.

I also handle the individual unit to unit behavior regarding something I refer to in our project as unit perception. This is a collection of rules that a unit uses to decide depending on what unit is in front of him. An example of this is units moving around other friendly units to find an enemy unit to attack.

My Tech lead role responsibilities:

- Keeping an overview of all the technical progress during the sprints.
- spot and act upon possible issues blocking the programming team from working.
- Working together with other leads and the producers to set up priorities for the development team.
- Using the set priorities to set up a list of sprint goals for the programmers to have done at the end of our 2-week sprints.
- Provide the producers with all the info they need about the current state of the technical side of the project.
- Handle any concerns from the programming team both about the project and the team.