Tsunami Takedown Postmortem
With the 9th annual Chico Game Jam over, its time to look back on how my first game jam went. Overall, a little bit stressful but it was really fun but there was also definitely places to improve on looking back at my programming during it.
Game Jam this time around started with the programming tasks being divided up mostly between me and Michael. (our other programmer) Michael worked on setting up the player controls and connecting the leviathan's code to the animations while I would create the leviathan's attacks, AI, and end screen before then working on the power up system.
So to start up with the work I got done we have the leviathan. More specifically its movement in correlation to the player is the first part I worked with as it was simple enough. As I was just being quick to work with our limited time and since we only had one monster, I ended up using static distance checks to see how far from the player the leviathan would be stalking underwater. This is great for Game Jam where we are all using monitors with the same aspect but in hindsight could be improved upon to make it look good for more pcs. More specifically, I should've made the distance depend on the width of the monitor display so the monster would always be stalking near the sides but not having a chance to attack and not warn the player on smaller monitors.
While simple, this stalk under water would be the main movement the leviathan constantly used when not committing an attack, so it was important the player will see it at all times. Once getting this made, I added onto it the AI so it would choose whether to keep swimming underwater, or attack. Once it attacked it would return to its stalk every time to give some breathing room.
Of course, this means an attack was made at the same time as setting up this AI. The first attack I'd end up making would be the tackle as seen below. The movement was changed from just moving a bit to the corners never going off screen to the leviathan speeding up to offscreen itself. This was so it would give the player a heads up of "Its gaining momentum, when it comes back it'll be fast", which would hopefully help make the player think of a dashing fast attack to also separate it from the other attack the leviathan's capable of.
A fun fact that is notice-able here, while I say I coded the Leviathan to dash attack as this attack, it actually dashes multiple times. This is because the lower health the Leviathan is the more it'll do the same attack before relenting and returning to its stalk like Terraria's Eye of Cthulhu. (In the above case it was at half health) This is a trait both attacks share for up to two additional attempts at attacking.
The other attack was meant to be a splashing attack. Since I was working with a cube at the time and didn't get the model until near the end, the splash attack ended up becoming an attack where the Leviathan swoops and tries to bite open the submarine, which is a bit more menacing admittedly. Happy accidents, this time around the leviathan submerges itself a little in the water before jumping up to splash down on the player. Quite a bit different from the running off screen the Leviathan was doing before.
That being said, the way it works is the Leviathan takes the player's old position once it begins the attack, its starting position, and calculates a higher position to jump to before splashing down. This is something that needed to be readjusted when adding in the big model which kind of resulted in the below dive biting animation. It also could've used a Lerp instead of the math I was using to make it look a lot smoother for figuring out the three points. These are things obvious in hindsight, but during rush-time wasn't exactly the first thought in my head for some reason. Either way, the end result and the experience gained ended up being a bit nice.
That being said, this experience wasn't without a few mistakes, and the biggest mistake I made in my opinion was forgetting to keep in communication with our online member. While I'm normally pretty good about communicating with teams where even in this game jam I did my best to bounce ideas back and forth with the team, I realize I have this habit of "If I don't see someone, and my task doesn't relate to them don't think too hard about them." Which while fine-ish on a longer term scale setting where there's more time for us to get into contact with each other and me to get into the habit of talking to them can't really be made into a quick habit for a 3 day game jam.
This especially is a problem as this extra member did end up having a bit more than they could get done (although honestly they still got a lot done so there's no complaints from me there) and wasn't able to get UI for the game in at the end. As can be seen below, not the most understandable game when the player doesn't know their health or the bosses health until the end screen. If I had been in better contact with him, I probably would've been able to know earlier on the state of our UI and had added in some workable UI for the player the night before in at most 30 minutes.
While not exactly the same, this issue of a lack of UI does also go in hand with another issue I had where I overestimated how much I could get done at the last minute of the final day. After finishing the leviathan we had some time left so I asked to get working on health and power ups since there was some time remaining. In ended up making a health kit, speed, and reload power up on request in, but they aren't the easiest to understand what they do as the feedback didn't feel impactful enough at the end, between not enough time to test and the lack of UI not being able to show the player they're say healing from a health kit. If I were able to redo anyone one action in this game, it'd probably have been only adding in the health kit and spending the rest of the time on UI since there just wasn't enough time to add in power ups at the end and make them feel meaningful/notice-able to the player and get it merged in with the main branch afterwards.
The bright-side, not only was this a great lesson in time management but it also showed me just how much I'm capable of getting done in a small amount of time. That and how important it was to leave some breathing room for bugs and merging in general.
There was one other slight mishap at the very end where we kind of forgot to change the leviathan's hp back to something decently high. We had been testing the leviathan at a lower hp to make sure everything had been working, however the final hour was nearing completion so panic ensued and both Michael and I forgot we tuned down the health for testing purposes. While it lead to a funny case of quick boss death, its best to come up with a future proofing solution outside of keep a cooler head and remember next time.
Which makes for a good argument to have a quick checklist on a notepad on the laptop for small changes that will need to be made before submitting such as this one, at least until a better fix for panic + poor memory is determined.
Overall was not only a great learning experience but a pretty fun introduction to game jams. I'm looking forward to see how far I can push to in next year's game jam and seeing how much we've all improved!







Comments
Post a Comment