Senior Production Week 13: Bringing Polish Back

Another week, another set of things to be polished in time for the big show next week. Now with the return of screenshots! Most of what I’ve done this week isn’t in this screenshot like they used to be, but it’s been too long since I posted one so I had to bring them back.

fish_senior_x-1

Anyway my work this week involved improving the loading screen and pause menu as well as implementing VFX related to dashing. To make the loading screen before a match more than just a place to read controls (which are now on the paused screen), I added support for a loading bar to show how long until the game can be played as well as gameplay tips. The tips are easy to add and change for the designers and give players more information about the game than just the fish and controls. There is also support now for VFX to play when your character is charging a dash and dashing.

The other work I did was more general like fixing bugs (maybe eels shouldn’t be shoving you through walls) and helping the team with recording the gameplay footage we need for our final showing. All of this is to make sure we have the best game we could make at the end of this long year.

Senior Production Week 13: Bringing Polish Back

Senior Production Week 12: Behind Every Good Game Artist, There’s a Good Programmer

This week was relatively light in terms of programming and as we approach the end of the project, the remaining weeks will likely be similar.

My first major task of the week was working with everyone to film our team/game reel for the final presentation. Since we have to talk about each of the aspects of the game(art/design/programming), as the lead programming, I had to discuss our mindset when adding features to the game while making them easy to work with on the design side.

As for actual programming, with the team’s goal for the week being to get as much art done as possible, I had to add more functionality behind the assets we have. I updated the charge meters for dashing in-game to be more visible as a start. I also implemented some animations and VFX we had for the Seahorse and Ray characters that had been done for some time that needed to get in. Finally, with the majority of the art this week being made for a second, fleshed-out level for the game, I programmed the behavior and hitboxes for a large Eel in the level that acts as a level hazard to knock players around. This makes it so we have some level interactivity in our levels and they aren’t just reskins or differently-shaped versions of each other.

Senior Production Week 12: Behind Every Good Game Artist, There’s a Good Programmer

Senior Production Week 11: Cooldowns and Surprises

My original goal for the week was to be updating the functionality of the UI and to continue implementing VFX, but those VFX turned into adding a couple of new feature to the game that probably should’ve been in much earlier.

The UI has been updated to display an icon for your ability and to display color in it to indicate if you can use your ability or not. When you can use your ability is indicated by how much stamina you have as well as the cooldown on the ability. There were also a couple of minor UI changes like making stamina blue when above water to signify the breath mechanic and making the charging dash meter an arrow to show where you’re aiming.

Additionally, there were some internal changes that had to be made so we could keep everything working as intended. More specifically, how the stamina costs of abilities are stored had to be changed due to some other changes and dashing now uses its own value for applying knockback.

Finally, the surprises of the week were adding a pre-game countdown before rounds start and adding the pausing feature. Neither of these were added initially due to assumptions of the various mechanics that would have to be managed when stopping gameplay. However, after having the ideas for both brought up when the team played the game recently, I messed around with some code from the game and engine and found near-perfect implementations for both.

Senior Production Week 11: Cooldowns and Surprises

Senior Production Week 10: The Effects of Winning

Being in the polishing stages programming-wise, my work this week focused around implementing more effects for several abilities and adding something more for when a player wins besides “You Win”.

To be more specific, I added the effects we had made for being stunned, a couple of the Shark’s abilities (which have been lacking in feedback for a long time), and the bubbles the Goldfish shoots. The main challenges with putting these effects in were making sure they looked right since something happened when they were uploaded which caused me to have to rebuild them and making sure the rotated and scaled properly in context.

As for winning, I created a base for a Victory Screen so we’d have more feedback about who wins besides literally just text that said “Player … Wins”. This new win-screen has the winning fish shown prominently with a victory wreathe and the good ol’ “Player … Wins” text. It also shows the losing fish along the bottom, all of which are animated like they are in-game. They don’t have any special animations for winning/losing at the moment, but this screen provides a good space for that and gives players the time and place to revel in their victory/defeat.

 

Senior Production Week 10: The Effects of Winning

Senior Production Week(s) 9: Polishing a Fresh Set of Features

My work in the past couple of weeks (multiple weeks due to our Spring Break) mainly revolved around polishing up the UI and gameplay of the game. Most of the additions are relatively trivial on their own, but they’re all things that we wanted or needed for some time.

For UI, I set things up internally so the UI is easy to change and update for all of our levels simultaneously. Our stamina was also updated from a series of bars/ticks to a smooth bar, giving a more accurate and live idea of how much stamina you have. Lastly I changed the UI at the top of the screen to go from a generic bubble to properly changing or going away based on the gamemode.

For VFX, we have a particle that plays when you can eat an opponent, but I had to fix it so it only played in that scenario and not in other, unintended ones. We also have some debugging visuals on some of our abilities, and I set those visuals up so that they’ll update based on the actual size of the hitbox for that ability.

Finally for gameplay, I changed how knockback and some abilities work. As an unintended result of how the movement works, players used to receive less knockback if they weren’t moving; this has been fixed. As for the abilities, the Seahorse and Manta Ray abilities had some unintended results from their mechanics. The Seahorse can stun players by punching them into the water from the air (if their punch can be used while airborne), but this had to adjusted so you wouldn’t be stunned by being punched out of water and falling back into it. As for the Manta Ray, we hadn’t thought about how its spinning grab would work on someone else involved in a spinning grab, leading to some funny results that had to be prevented.

With most of the core gameplay implemented and level assets still being worked on, as it has been the last few weeks, most of my work in the game is polishing up what we have both visually and mechanically.

Senior Production Week(s) 9: Polishing a Fresh Set of Features

Senior Production Week 8: Rays, Abilities, and Ray Abilities

This week I finished developing the Manta Ray character and made improvements on all of the characters’ abilities. With its abilities implemented, all that was left for the Ray character was to get its model animated and functional within the game, with a good chunk of that work going into setting up its hitbox. After that, I made improvements discussed with the designers to all of the abilities, including making Goldfish not shoot themselves, getting Sharks to stop running so much, the Seahorses actually showing what’s going on with their punches, and to refining the bugs in the Ray abilities to ensure they actually launch people. All of these help improve the feel of the game and hopefully get more people/testers to use these abilities more often.

Senior Production Week 8: Rays, Abilities, and Ray Abilities

Senior Production Week 7: Building a Ray

My work this week was again focused on adding new abilities (this time for a Manta Ray character) and more quality-of-life additions. We’ve also started doing meetings between the different discipline (design, programming, and art) leads to make sure things keep moving forward.

Yes, I added the abilities for the Ray without having the character in-game yet. They needed to be done sooner or later and the model wasn’t ready when I planned things out. Anyway, the Ray’s abilities are all about grabbing and throwing your opponents. All the variants involve using the opponent’s momentum to launch them in a given direction. One variant launches opponent back the way they came from, one launches them behind and past you, and the last one has you holding onto them and spinning to launch them wherever you choose.

As for quality-of-life things, I improved how the breathing and character shading systems work. I added a “grace period” to the breathing system so you don’t immediately lose breath and possibly die when you leave water as well as red flashing to indicate that you’re going to die/run out of breath soon. As for the character shading, when I added outline shader to the characters, two notable problems where that the character were now being lit (which we don’t want) and people couldn’t pick the same skin without getting the same outline color. So I changed the shader and how characters were loaded to fix those. Finally there were several smaller things I changed and looked at with a designer to try to improve the game.

Senior Production Week 7: Building a Ray

Senior Production Week 6: Good Quality Seahorses

This week was less about adding new content to the game like many weeks, and instead about finishing what I started and making some general improvements to the game that we’d been putting off. fish_senior5

First there’s the several smaller, quality-of-life changes made. From just the picture, there’s some new UI in-place more like what the final UI might look like and I added a new shader to give the characters colored outlines to make them stand out, show which player is which, and show where the players are behind walls. The other big change is that dashing has been changed from an instant burst of speed to a charge-based mechanic that you aim and fire and can use to recover outside of the water. Finally there’s been some behind-the-scenes changes to how knockback works to try to make it feel better and more consistent.

As for finishing what I started, I finished up the mechanical work on the Seahorse by giving it its own set of abilities. The Seahorse abilities are all about punching enemies away and trying to stun them by punching them into the environment. The abilities are variations on that. One is an easy-to-use punch all around you, one is a stronger, more-focused punch directly in front of you, and the other is a punch based on vertical space, punching enemies up in the water or down in the air. All of these give the Seahorse its own niche and puts it on more equal footing with the Goldfish and Shark who’ve been in the game much longer.

Senior Production Week 6: Good Quality Seahorses

Senior Production Week 5: All Hail King Seahorse

This week was a very new-addition focused week for me. I added both a new character and an entirely new gamemode to the game.

fish_senior4

Pictured is our new character on the placeholder map for the new mode. The new character is a Seahorse, whose abilities will revolve around punching opponents into surfaces to stun them. The bulk of the work with the Seahorse, besides the various things that need to be updated for a new character, was making sure the hitboxes for it were right since this is the first character that doesn’t use the fish-like body shape. Various component on it had to be adjusted with the character selection set-up so that everything would be in its proper place regardless of which character is selected.

As for the new mode, unlike the other rulesets which are all variations of killing each other, this mode is the objective-based King of the Hill! The goal of the mode is to be the first to reach a score, but to get points, you must claim a pool/tank of water for yourself. Points are earned in a pool while players are in the water, and if there are multiple people in the pool, the points will build up until there’s only one person left for several seconds, who will then get all the points that are built up. The mode is all about using your movement and knockback to control an area and be the first to reach the winning number of points.

This was a good week for new content, but now we’ve decided to take a step back and listen to the feedback we’ve gotten from testing and fix some of the core issues that have been in our game for a while.

Senior Production Week 5: All Hail King Seahorse

Senior Production Week 4: Night of the Living Sharks

The bulk of my work this week was involved with implementing a new set of abilities for our Shark character and adding some new rulesets to our current gamemode.

fish_senior3

This picture subtly shows off some of the new additions. Starting with the Shark, its different costumes have received three new abilities. The first is a form of the dash that has a “knockback wave” in front of the shark that gets bigger as the shark moves when using the ability. The second is actually more of a passive than a direct ability; the shark is constantly moving like it’s dashing, with its ability and dash buttons being used to slow down. If a shark with this ability stops moving, they start suffocating as if they were outside of the tank. Finally the third ability is a sucking ability, where the shark sucks in whatever’s in-front of it and either eats it or launches it away. The common theme of these abilities is closing distance and they should definitely make the Shark distinct from the bubble-shooting Goldfish.

As for the new rulesets, I added the functionality for two new modes: Timed and Stock. These modes work like the similarly-named modes in the “Smash Bros.” series. In Timed, you earn points for kills and try to earn the most points in a given amount of time. In Stock, you start with a number of lives and lose one each time you die, with the last person standing being the winner. These modes are simple enough on their own, however they needed a surprising amount of work due to the fact they both rely on respawning, something our old round-based gameplay doesn’t have. As such, the hard parts of adding these new rulesets were changing how scoring works internally and creating the behavior for an initial respawn system.

Senior Production Week 4: Night of the Living Sharks