Here We Go Again: Sprint 4
Here We Go Again: Sprint 4
Joy Schulze: Programmer
This sprint I was mostly just cleaning house. Fixing some stuff based on our first playtest, adding some more readability to the game, and compiling everything for the next playtest. However, I did implement some cool new stuff like boss enemies and roadblocks, and I got started on my next new feature which is player and enemy unit AI and pathfinding.
Now, whenever you merge your units, they will change their model and name. This makes it very clear when you merge your units and it just looks cool. The way that this is made also allows for customizing how many merges are needed before the model changes, and if you want several model and name changes from merging several times.
After that, I made some cooldown effects for our spell buttons. Our designer wanted to do spells, so I let him implement them while I did the UI for it (he said he was sick of doing UI). Due to some bugs with the spells, this hasn’t been fully implemented yet, but once our designer has ironed those out, I think it will look very good.
Now, onto the actual new features that I got to implement.
The first new feature is boss enemies. All boss enemies have a lot more health, and your units will prioritize defeating the boss before moving on to anything else. They also have a special health bar that had a weird amount of bugs attached to it. The first way I implemented them had the health bar on the main canvas for the game, and when the game spawned the boss, it assigned that health bar to the health script attached to the boss, and set the values on the slider to match the bosses health. This part worked, however, it would randomly just not save the health bar so it wouldn’t update when the boss got hit. Unity seemed like it was going through some kind of psychosis as it would store the health bar into the variable (which the whole script would use, it was not local to the method), use that variable to set the max value and fill up the health bar to that value, and then just forget that it stored the variable. I had to just re-do this because I could not figure out the problem.
The last thing that I fully implemented is the roadblocks. They just block you from placing your units on them, and your units will have to go around them. These roadblocks, however, do change how our units have to move around as right now they just move forward until they find an enemy, so I got started on reworking the units to have pathfinding and more interesting AI.
I have been studying A* pathfinding in order to give the units more dynamic movement. This will allow them to move around obstacles, stand beside each other while attacking the same enemy instead of all clumping together, and they will be able to have different actions like returning to the wizard when they reach the end of the level, and going to specific buffing spells that the wizard can unlock later. This is my first time integrating pathfinding without something like navmesh, but it’s going well so far.
The rest of my work was managing the playtest, and ensuring that everyone’s work got a chance to shine. We made a test build over our spring break so we could test it and fix anything we found, and then have a stable build for the playtest. So, on Sunday, I made the build that we would use for our playtest; however, on Monday one of our group members finished some work and wanted it in the playtest, so I threw it in there, made a new build, and then we playtested the next day. This led to a softlock which stained our playtest data. Next time, I am setting a hard cutoff date for our playtest builds going forward to prevent these bugs.
Comments
Post a Comment