Details

Overview

Puzzle Quest 3 is a live service and cross platform Match-3 RPG game that I worked on at my time at Infinity Plus Two.


Contributions & Responsibilities

Gameplay Programming

Most of my time was spent implementing new gameplay features using C# for front facing features and client-server code, and Lua for adding functionality for new gear, spells and abilities. I worked on many features including, but not limited to: Adventures, the Advent Calendar, Phobia settings, the Season Archive and re-playable chapters, choice based Follower crafting and Flash Offers, chat emoji and text tag support, and the Merchant Vault.

I was also a part of a few reworks in the game including the recent spell vault rework which added the Spell Book and the updated spell equip system.

Server Programming

Going hand in hand with gameplay programming was the server programming which involves writing server-side code for the new feature(s) being working on and some client-side code to send requests and receive responses. This process may also include adding analytics tracking to any new actions the player can perform.
I would also write unit tests
Writing unit tests was a crucial part of the process, and thanks to our build machines and Jenkins, tracking down either bad data or a bugged unit test a breeze.

Bug Squashing & Performance Improvements

From visual artifacts, menus that don’t disappear, and players hanging out with enemies in their preview screens to infinite load times, spells dealing ten times their expected damage, and the game camera moving like it’s being operated by a drunk man; I’ve had my fair share of oddities to laugh and cry at. Usually these would crop up during our QA runs but sometimes when the moon is at its highest and the stars are aligned just right, the player character’s eyes pop out of their skull. ( yeah… this one actually happened )

As for performance issues, the most common ones I worked on typically consisted of overzealous collection iteration, loading / initializing too much data non-asynchronously when pushing a menu, or some slow LINQ query.