Marc Latorre
Team Leader
Code
Animation Module
If there is one thing that cost me more time, it was the animation module. With it you can easily implement any animation you want in the code and use it as many times as you want.
To use it you just need two things:
- A PNG with the animation, which is stored in the textures module.

- An XML file with this structure:
Where x and y are the position, the w is the width, the h is the height, the pX is the x pivot and the pY is the y pivot of the rectangle of each frame/sprite.
All this data is stored in the animation module, where you can adjust as well it's speed or if it's a loop or not, for example.
In this case we can see the animation of the Mill:
In the case of all the units' animation, the XML is a bit more complex, as you have to define the direction and the action (i.e.: South, attack). But it's the only difference.
Investigations Module
I also created the investigations module, which manages all the investigations (technologies system) in the game.
Once the player click on a certain button in the university, it manages itself, if the player has enough resources (indicated in the icon), the investigation starts.
When the investigation is finished it applies the changes that it has to do.
Unit Movement
While I was doing the game, I also did a research in how to move units in a group.
In the research the system is kind of more simplified, for instance we don't use the JPS pathfinding algorithm, or the collisions I made in there. We improved the system, but the base was this one.
My Research: The final movement:
Base AI for Units
The system changed a bit at the end of the project as Marti improved the AI, but we two build the base code that made them search for enemies, attack, move, die, disappear or stay idle.
I also made the units slow down if they were shooting with an ice arrow or step inside an area with snow.
Wave Manager Module
Another important point is the Wave Manager, the base code (vectors where you put the units that appear in each wave mainly) was done by Marti. However Dani and I created the Update function where the correct units appear in the correct time and position.
The system is pretty simple, there are enemies that appear each round, when the player has eliminated all those enemies the counter for the next round starts, if it reaches 0 or the player hits the button to bring the next wave, the next wave will appear, and so on.
Isometric Primitives
Created a base class that allowed us to create elipses (isometric circles) and isometric rectangles, which made the game have more accuracy in pretty much every aspect.
For example, with them I could make the area damage with more precision, which before was made with circles.
Tower class
Together with Dani, we separated the towers from the rest of buildings, creating the base code for them, which is a child from buildings.
Towers and walls textures
The textures are extracted from the original game, however I made the rectangles and pivots of them be stored in the code from an XML.
Debug features
The base code from the debug features is done by me as well, although this isn't much because we have little debug features.
Helped other tasks with other members
In terms of code, that's what I mainly have done, but I also helped some of the team to solve some problems if they had difficulties, for example I helped Marti in solving bugs with the quadtree, helped Julià with some minor problems with the minimap, or when Marti and I (and sometimes Dani) were solving a problem with the map not printing correctly.
Design
The GDD (Game Design Document) was mainly written by me, obviously with the ideas of the whole team, and only if we all agreed to do a feature we did so. But I was the one that wrote down mainly everything and the one who came up with the starting stats of the units/buildings that, of course, where later readjusted in order to improve the balance of the game.
Art
As i focused on code mainly, and a bit of design, I couldn't do much artistic, just a couple of things, which are get the icons of the all the units, turn the units into red andthe animation of the buildings burning when they are damaged enough.