gamer, programmer, lover of cats
Role: UI Programmer
I worked with designers and other programmers to maintain existing UI code systems during the development of a few DLC packs and the PC release in order to support additional icons/colorings, multiple screen resolutions and aspect ratios, keyboard/mouse interaction and controller icon swapping in the UI, and other general improvements/fixes.
Role: UI Programmer
I collaborated with designers and programmers to implement new UI as well as assist in maintaining and expanding upon existing UI code systems as requested. Some of my larger contributions include work on the HUD message system and save menus.
Kyklos
Kyklos is a 3D puzzle action game created by myself and two other people during the 2012 Global Game Jam, developed in C# and XNA 4.0 and utilizing an open-source physics engine for XNA, BEPUPhysics. My role was gameplay programmer. The theme for this jam was an image of Ouroboros.
We successfully finished two out of three parts – as is often the case in game jams, time became our enemy. The objective is to become a god by completing all three challenges. In the first challenge, you’re in a Greek structure similar to the Parthenon. There are pillars around you with Greek characters on them, and you must push them into the correct places on the ground. Once you finish that puzzle, you must successfully navigate a maze while avoiding a minotaur. The plan for the third challenge was to have the player climb a mountain, facing gods along the path to the top. Each god would challenge you with a question, and if you answered correctly, you were allowed to continue on – if not, you would fail in your quest and remain a mortal.
Lila’s Escape
Lila’s Escape is a 3D open-world RPG developed in C# and XNA 4.0 with BEPUPhysics and the Dynamic Particle System Framework. I was project manager and programmer in a team of two.
You play as Lila, who has just crash-landed on a strange planet. Your ship is destroyed, so you must find core parts scattered around from the crash in order to rebuild it, and complete quests for friendly locals. Lila has two main abilities – “plasma ball” and “bubble barrier”. Both are magical abilities – the plasma ball can be used to attack enemies and set flammable objects on fire, and the bubble barrier is effectively a shield, reducing damage received. Alchemy is also a mechanic – somewhat similar to Elder Scrolls, various ingredients can be found in the world and have different effects. While at a campfire (wood piles can also be found in the level, which can be lit with the plasma ball ability) you can combine ingredients with common effects to create potions.
This was a bit of a passion project for a friend and me – we originally came up with the idea for a contest held at NEIT, and we did submit our initial development as an entry. It turned out we bit off a bit more than we could chew scope-wise for that contest, as we were brand new to 3D at the time and were also in the final semester of our Associate’s. We later used that initial progress as a loose starting point for our senior project at the end of our Bachelor’s degree. We do eventually want to complete this project.
I also had a bit of fun with tools programming on this project. Hard-coding positions code-side was hardly a good approach to making levels, so I planned out a level editor. I embedded a 3D XNA window within a Windows Form pane and added fly-through controls, as well as buttons and text fields for specifying the visual and physics models for the level itself and various objects and enemies. The editor would save out all this data to XML, which could then be read in by the game at the start of a given level.
Quests would have been terrible to add without some kind of editor, so I put together a quest editor (again using C# and Windows Forms – specifically the DataGridView and DataSet components). I set up one table of quest goals, and another separate table of quests themselves. Each goal and quest has a unique ID, and each quest can reference up to four goals by ID – that way goals can be reused if necessary. This data is also saved out in XML form, and read in by the game at launch.