Cards Completed
- As a player, I would like elemental damage to be dealt to enemies from units that have been elementally upgraded so that I may feel more powerful with the damage I can deal. (3)
- As a player, I would like enemies to have an elemental type so that I can feel strategic when I exploit their weaknesses. (1)
- As a player, I would like to see my Paladin Enemy implemented in the game so that I feel like I'm fighting a real adventurer. (1)
- As a player, I would like to see my Rogue Enemy implemented in the game so that I feel like I'm fighting a real adventurer. (1)
- As a player, I would like to see my Archer Enemy implemented in the game so that I feel like I'm fighting a real adventurer. (1)
- As a player, I would like harder Paladin enemies so that my enemies rise in difficulty in tandem with my Buildings. (3)
- As a player, I would like harder Rogue enemies so that my enemies rise in difficulty in tandem with my Buildings. (3)
- As a player, I would like harder Archer enemies so that my enemies rise in difficulty in tandem with my Buildings. (3)
- As a player, I would like tiles that have been targeted by bees to give damage over time to enemies that cross through it so that they have a lasting effect. (3)
- As a player, I would like my Blacksmith building to have the ability to increase the damage of all towers by a flat amount. (3)
- As a player, I would like my Apiary building to be able to send out swarms of bees to inflict damage on my enemies. (3)
SEASONS
Getting elemental damage (which changed later to be called Seasonal Damage) wasn’t so bad to program, but it does show some problems which may arise relating to systems relying on others too much.
In order for elemental minions to deal elemental damage to an adventurer (or vice versa), the projectile that the minion shoots out needs to send information about the minion. When the projectile reaches the adventurer, it will need to grab information about the adventurer as well, in order to deal the proper damage. There are a lot of systems overlapping each other to do this single task: EnemyUnitAI, PlayerUnitAI, Projectile, Damageable, and Seasons.
ADDING MODELS
This card involved loading the models of enemies into their prefabs, and attacking their materials in as well. I have had no previous experience with doing this, since all of my previous game projects have been in 2D, and I have never worked on a 3D game before.
I had to watch some Youtube videos on loading the models. It ended up not being too difficult. To be honest, all three of these cards could have been put into one, since they all took a day to complete.
PREFAB ORGANIZING
These cards involved me sorting out the enemy prefabs in a meaningful way for the level designers.
Arjun wanted each enemy to have separate prefabs for each level. This would cause tedious issues (e.g. What if we needed to change a component for the archer? We’d have to make that change for each prefab.), if I did not create prefab variants. Prefab variants are somewhat new to me, but pretty much it involves having a base prefab and a prefab variant for each level (e.g. Archer Base, Archer Level 1, Archer Level 2, etc.). So, if you want to make a change to the Archer, all you need to do is change the base, and the change will take effect on each variant.
In addition to this, I put the enemy prefabs in their own folders by class, and created another generic Enemy Base prefab, so that if we need to make a change for every type of enemy, we can change just that one. In short, there is a sort-of prefab hierarchy going on.
CATCHING UP FROM SPRINT 3
This was very similar to the fire tile effect. So much so that I changed the FireEffect script to be called DamageOverTime, and attached the script to both the fire and bees prefab.
This was rather tricky. Originally, the way this worked was that a Blacksmith prefab had a Blacksmith script, which applied an attack bonus to every tower in the scene (it used FindObjectOfType). However, Sky asked whether or not this would work for multiple Blacksmiths. I don’t know how, but I completely looked over that. So, I had to come up with another approach.
The new solution was sort of the opposite of the old one. Rather than to give the attack bonus from the Blacksmith to the Tower Attack script, I gave Tower Attack a function, which returns the sum of all of the attackBonuses each Blacksmith (this requires scanning all of the Blacksmiths in the game). Given that this is called every time a projectile is shot, it does have a chance to introduce lag in the game, because it is rather slow. However, this is the only way I could think of that would work so that Towers can get the proper attack bonus from each Blacksmith.
NEW BUILDING
I already made a system for different types of building attacks, so making the apiary building to deal damage to multiple enemies at a time was no problem. My issue was where to keep track of the amount of projectiles the building is allowed to shoot out at once. Since the number of projectiles allowed is based-off level, if I put it in the prefab of Tower Attack, it will need to retrieve the level of the parent prefabs component: Level Up. Not only that, but it may be a little inconvenient for Arjun to have to go to the Tower Attack Script (which is a component of the RangeSphere-- a child of the Apiary Building. I am settling for this solution for now, as it works, but I have yet to know if it will be verified.
Cards In Progress
- As a player, I would like my Honey Pot building to boost the stats of my units in the game so that I feel powerful upgrading them. (1)
This is what I will be working on next.
Cards Incomplete
None.
No comments:
Post a Comment