As we enter the final two weeks of development before the showcase, things are looking a little rough. While we successfully implemented all core features by the feature lock deadline, many of our key art assets have not been integrated in engine yet. One of the most prominent bits of feedback we got from playtests with the WolverineSoft club members was the lack of platform and level art in contrast to the highly-polished menus and UI. Thus, this week I proactively sought to implement all platform and level art in order to bring the state of the game's aesthetics to an polished state for the showcase. Utilizing the hand-drawn platform assets graciously provided by our level artists, I began the art replacement operation. As I placed platforms with dark chains hanging from the ceiling and plunked meaty flesh-platforms around the level to aid in traversal, the levels started to truly come alive. During this integration process, I creatively used the Unity's 9-slicing and tiling systems to not only replace the placeholder art, but also immerse the player in the fixating eldritch-corporate landscape of our game.
With only a couple weeks remaining, we still have over 80 bugs to tackle to get our game to a fully polished state. Within the past few days leading up to the showcase, we have decreased our bug count from 80 to 50 to 30 to under 20 bugs now. As one of the programmers for the Player/Weapons squad, I was mostly tasked with bugs related to polishing the player animator and balancing the weapons.
In both the leads meetings and the general studio meetings, the priority for these last two weeks was to finish art integration and squash as many of the remaining bugs as possible. We discussed which assets had not yet made their way into the game, and which members would be responsible for handling those integrations. Additionally, as this is our dedicated "polish" sprint, we worked together to identify major lacking areas which would benefit the most from
In our last playtests of the cycle, we received some valuable feedback on what to focus on for the last stretch of development. Jeffrey Nielson (Chimeric) offered us some easy changes for art direction which drastically improved the game's aesthetic.
Last week, I finished implementing the remaining weapon perks: Health Mod, Projectile Size, Shock, Mutual Destruction, Speed Amplifier. Shock was interesting since I had to effeciently find the nearest enemy and apply damage to them. The player can have up to 5 perks on each weapon for a total of 10 perks. There are 5 rarities: Common with 1 perk, Uncommon with 2 perks, Rare with 3 perks, etc. I added the concept of rarity to all existing perks and the mod database to facilitate easy implementation of randomly assigned perks in the shop. This change also included folder organization in the project structure, sorting all mods in the database, and changing the stats of each perk to correspond with the design document.
This was the last significant feature to be added to the project before feature lock, and it adds an exciting element of randomness to each run. The mod/perk system uses inheritance, making it easy to apply perks to weapons when they are picked up. Using a simple random number generator, I implented weighted rarities according to the design document. Once the functionality was working properly, I made a UI popup for the shop to indicate weapon rarity and which perks are attatched.
This week was our last QA week before polish, so our goal was to smooth out gameplay and features as much as possible. I fixed some bugs related to explosion prefabs, the player freezing after respawn, and controller remapping. The player freezing after respawn bug caused some confusing during studio and industry playtests, so addressing this bug helped smooth out our QA process significantly. As assistant programming lead, I also approved and merged pull requests, fixing merge conflicts when necessary.
For Easter weekend, many of our studio members were absent, but we still managed to find and log 16 bugs over the past two weeks. For Easter, I also brought Kinder egg snacks for all our studio members to congratulate them on a smooth development cycle thus far. Usually only our QA department works on bug fixing, but with both the programming and QA departments focused, we reduced our bugs from 51 to 12. We also had another playtest with Matthew Rader from Serenity Forge, where he gave us valuable feedback on what we should focus on during the last stretch of development.
Previously, the weapons and class that the player selected in the menu did not carry over to the game scene, and the player would start with the default class and weapons. Using a RunManager instance that carried over between scenes, I saved the selected weapons and class, which were then loaded by the corresponding scripts upon starting the game.
I implemented projectile functionality for all 6 basic weapons and 11 of the combo weapons, adding immense versatility and replayability to our game. Completing this task was very satisfying, since over the course of one week, the player evolved from having two (2) weapon options to sizteen (16) shootable weapons, comprised of nine (9) unique loadouts each with three (3) fireable weapons. Combined with the perk system, which adds random upgrades to each weapon, and the 4 different selectable classes, this enables the player to tackle the game with hundreds of unique combinations.
I actively joined and engaged in industry playtests with our valued alumni, Matthew Rader, Cameron Brown, and Nigel Charleston. As assistant programming lead, I was able to readily provide answers to any questions that arose and actively implement feedback from these playtests into our sprint goals.
During GDC week, I led our weekly programming department meeting in the absence of our programming lead Nikhil. Despite it being my first time directing a meeting, the weekly check-ins ran smoothly. I also iterated on past studio traditions and brought our department into a new golden age by switching from the archaic, decrepit text editor to the sleek, cutting-edge Google Docs for meeting notes. After the meeting, I checked in with the design leads to answer any questions about the current progress and provide input on design decisions. The next day, I assigned all the programming tasks in Jira and checked in with a few programmers to confirm if they were comfortable with their tasks for the week.
Using inheritance, I separated the weapon interactables and powerups while keeping the base functionality of a pickup. The result was a modular system based on Scriptable Objects that allows designers and programmers to easily implement new weapons and powerups.
Our player can equip one weak weapon and one strong weapon, which grant access to a third combo weapon. I used a dictionary with a {weak weapon, strong weapon} tuple paired to their corresponding combo weapon to implement this. These weapons can be set through pickups or developer console commands. In addition, I created some powerup icons for the player HUD to indicate the player's current weapon loadout.
Over the course of several meetings, the player squad's designer Glen and I discussed how we can improve the player controller to make it feel more satisfying and responsive. We also addressed some glaring bugs, including not being able to detach from the wall and momentum stopping randomly in the air.
During the Leads meeting, I actively provided input about the progress of our programming team and expected timeline for core features. This time was also helpful in clearing up questions about enemy designs and possible narrative and theme directions. During the Player squad meetings, I addressed the implementation of the powerup system and asked for feedback about the feel of the player's movement.
As associate programming lead, I spent this time merging pull requests and working closely with designers to finalize details about player controller feel and current deficiencies that needed to be addressed. Some of these included satisfying wall jump momentum, buffered jumps, acceleration, and variable jump height. I also fixed merge conflicts and miscellaneous bugs such as the player's death ui appearing randomly.