Legend of the

Outlaw Mage

  • Action RPG | Unreal Engine 4 | Team of 19 (5 programmers)

  • Lead Programmer | Unreal Blueprints | Unreal C++

Legend of the Outlaw Mage is a Cowboy-Fantasy themed 3rd-Person Action RPG. The player controls Charlotte, a bandit outlaw seeking revenge for those who wronged her. As Charlotte collects crystals in her magic gauntlet, she learns to cast more and more powerful spells to blast her way towards revenge.

 

Contributions

  • As the lead programmer, it was my job to correspond with the other leads, producers, disciplines, and stakeholders to create and prioritize tasks for the programmers

  • Close collaboration and strong communication with other disciplines to ensure the programmers supported the rest of the team as best as possible

  • I was the first in line when other disciplines or programmers encountered bugs or technical problems

  • It was my responsibility to get our project and the team setup with source control using Perforce (Helix)

  • I was responsible for creating our builds, including an automated build system, and interfacing with Steam/Steamworks

  • I created the system that allowed us to display the correct icon that could dynamically update if the player customized their controls or switched between mouse/keyboard and controller

  • As lead programmer, I was involved in all aspects of programmer development to some degree, but I was most involved in the wall Mesh Generation Tool and the Modular Spell System. Read below for more details on those tools.

 

Mesh Generation Tool

  • During the start of production, we lost one of our designers and were concerned about spreading the remaining two designers too thin. We had the idea to create a mesh generation tool to help them quickly create levels

  • The tool works by having a designer lay out a spline in the editor. From there they can adjust parameters such as Perlin Noise values, seed, wall size, number of sections, number of triangles per section, winding order of the generated mesh, mesh materials, etc…

  • When generated, the tool divides the spline into a number of sections. Each section creates a grid in 3D space based on the desired number of triangles per section (in both the horizontal and vertical directions). Each point in the grid is offset using Perlin Noise to give it the natural feel we were looking for

  • During production we encountered two major problems with the tool.

    • There were ugly seams between each section of the wall. We solved this by doing vertex normal corrections at the edges of each section so that they matched the normals of their neighboring sections

    • The generated walls created a hard edge with the floor. We fixed this by adding the ability to create a second section near the floor. The artists created a material we used for that section that blended between the floor material and the wall material

  • This success of this tool was due in large part to the closer collaboration between all three disciplines to ensure the functionality and aesthetic were what we wanted for our game

Modular Spell System

  • The spells were the main source of power for the player in Outlaw Mage and were a critical design point for our team.

  • We had the idea to instead create a spell system that the designers could use to create more spells instead of investing time on each spell individually.

  • Our Modular Spell System was built on top of four of our original spells:

    • Projectile: a simple projectile that moved in a straight path

    • Shockwave (AoE): an expanding sphere that could knockback enemies

    • Beam: a laser beam that dealt damage per second to enemies within it

    • Orbiter: empty “slots” that orbited the player that could be filled with other spells

  • Each spell in our system was defined in data. A designer could create a new spell by selecting its spell type, its particle system, audio, damage, range, and all the other things one might expect of a spell (full list of options shown in the example spell Raging Storm in the image to the right).

  • What makes our system unique is that you can specify additional spells that can be spawned based on certain events such as: OnSpawn, OnDeath, OnCollision, OnDamage, OnInterval, OnTimer. In addition, a direction could be specified (i.e. a spawned projectile needs to know which direction to travel). Our directions included: None, Random, Same, NearestEnemy, Perpendicular.

  • This allowed our designers to make complex new spells with little to no additional programmer input.

  • The programmers had to be diligent in their documentation so the designers could easily access information about the spell system.

  • This required close communication with the designers to ensure they had the tools they needed to create the types of spells they wanted and with the artists so we had the right particle systems that could maximize reusability

Raging Storm Ultimate Spell

 

Post-Mortem

This was my first time working on a game in a leadership position. I found it to be an incredibly satisfying experience in so many ways. I loved being able to work more closely with the other leads, producers, and disciplines. Communication was so important to our team’s success and I believe I was a part of that.

When a developer had a technical issue, I was often the first line of defense. I’ve always loved problem solving so I looked forward to the opportunity to help solve all sorts of different problems. Sometimes things don’t always go to plan or something would break at the worst possible time. I always saw those moments as an opportunity to stay calm and help the team come together in times of adversity.

After our team made it through some stressful moments and milestones, it was awesome to see how everybody supported each other. Working with Green Team on Legend of the Outlaw Mage has been one of the most rewarding experiences I’ve been a part of. I’m so proud of our team and what we were able to accomplish.