MultiTasking Skill
Project 3 for me has been a great experience to learn how to work with a “big” team. We were 36 people and I had to learn how to compenetrate with artists and designers to achieve the goal we had in every sprint.
The skill I’ve improved the most is the ‘adaptation skill’. In this project I haven’t worked in only one scrum since the start of the project. I started working in the Shaders scrum for the concept discovery and vertical slice 1 too. Then we realized that we didn’t need three people in shaders, so I proposed changing me to help the UI scrum. There I worked for the Vertical slice 2. In this sprint we noticed that IA was having technical issues and in UI we where doing very well so I proposed again changing of scrum, now to AI scrum. This last scrum was for me the most difficult work I’ve done in the project because I had to learn how worked the AI system and then start fixing bugs and lastly create a new AI behavior.
The last scrum I’ve worked in is the Combat scrum. The goal of this scrum was improving the interaction of the player with the enemies in combat.
Shaders scrum
Miquel Izquierdo and I made the shaders system of the engine. I made the importation of the shaders: If you leave new shader objects or shader programs in Assets the engine will import them to be used in the game.
I also did the save and load of the shaders, where you can change the code of the Shader editor and save it.
I also did the UI in the engine to create new shader objects and shader programs. I created the component Light in the editor without programing the light in the shaders, but this component could be added to any Gameobject.
Finally, Miquel, Josep and I added together the Shadow mapping feature to the engine and created the shadows (only directional light) for any geometry.
UI scrum
I came to the UI scrum and I only stayed there for the Vertical Slice 2. In this scrum I worked with Andreu Rojas to make the Input system of the Engine. The idea of this input system was making a Unity Style Input system where you can set the keys/buttons you want and combine it with what letter/action this input will trigger. My job in this system was: First, I made the Key binding which I made a Vector of all the relations among the SDL_Event, a string with the letter or button and an Enum of the Hardware is using. This vector stores all the possible input of the game.
Finally, I made the structures that stores the relation of the key the player wants to click and what event is executed. These structures are constantly detecting which input of any key/button is clicked (and joysticks) and return a bool.
AI scrum
I entered in this scrum to help in the middle of the project so I had to adapt and learn how worked all the AI system. I began learning in the Skype conversations of the scrum and I also read the code to understand it.
I started fixing some bugs to test with the AI code and learn about it. I fixed some bugs such as Movement of the enemies, a problem with the damage action and I also improve the die action to make the enemies stay in die position till the end of the level.
Then I “level up” and I had the task of making a new AI behavior. The enemy I had to program was the lancer, his behavior is: he can attack in the range of two tiles and if the player is in range of one tile the lancer will attack the player and then separate from him one tile.
I first created the function to detect if the player was in the range of two tiles and also another function that look if the enemy has a wall behind him. If the enemy hasn’t a wall behind and the player is in front of him (1 tile) he will separate. Then I created the separation action that the enemy goes to the tile behind him. I started testing the new behavior in the sword enemy to see if it worked. When the behavior worked, I created the new enemy with its mesh and its new behavior.
The engine doesn’t have a debugger for C# so I had to spend a lot of hours "debugging" a lot of features to fix them. To detect any error, we had to put LOGs in the console and this made harder the programming of the AI.
Combat scrum
The last scrum I went was the Combat scrum and my colleagues of AI went to the Boss scrum. As I said before, the goal of this scrum was to mix in the same group people of player scrum and AI scrum to improve the interaction of the player with the enemies and make the combat more realistic.
I had to explain the AI system to three programmers that had been doing the player system and now had to also edit the enemies.
First, Martí Major and I did the sideways system for the enemies. The enemies had to rotate to change of tile but with this system the enemy now looks at the player (when they are in combat) and move using sideway animation.
Then I group up with Miquel Izquierdo of the Shader Scrum and we added to the enemy a blending damage texture. There is a variable that when the player apply damage to the enemy increase and this variable is related to the percentage of blending between the texture of the enemy non-damaged and the damaged texture.
I also added a new system that the enemy can detect what type of attack the player is making and react in different ways depending on the attack.
I had a task to add a Priority to the actions of the AI. So now if the enemy has to attack and the player hit him, he will attack instead of making the animation of “getHit”.
Finally, I had to fix a lot of bugs related to rotations, animations, push back and disable the enemy collider when he dies…