top of page
Legend Of the Outlaw Mage

A third-person 3D action adventure game where you play as a magical cowboy in  the old west. Battle it out with various enemies using crazy and imaginative spells

Role

Generalist + UI Programmer

Technology

Unreal Engine

Team Size

19

(5 programmers)

Development Time

~6 months (540 hrs)

Contents

Roles and Responsibilities

  • Generalist: Throughout development I was responsible for a variety of features including gameplay, tools, game saving/loading and other miscellaneous tasks

  • UI: Towards the latter half of development I became responsible for many UI elements including the development of the entire player inventory menu
Roles and Responsibilities

Inventory Menu

We wanted the inventory menu to be simple to use and streamlined because the player would interact with it the most. Our initial design had multiple sub-menus which were later scrapped for simplicity and quality-of-life.

Challenges during development

  • How to convey which spells are regular spells and which spells are ultimate spells. We ended us using significantly different icons for the two as well as using a different border in the spell icons

  • How to scroll through spells using a controller and allowing easy navigation between equipped and inventory spells for swapping. We decided to use pages to solve this problem and treat all buttons on screen as navigable from the current button

InventoryMenuUse.gif

Menu navigation and spell swapping

InventoryMenuSnapshot.PNG

Inventory Menu snapshot

Event graph for inventory menu

Inventory Menu

Juicy Gameplay

Our pillars during development were that the game had to be really stylish and the player should feel really powerful. This lead to many features and mechanics being added to the game that made the game feel stylish and juicy.

Cinematic for Ultimate Spell and the "Perfect Dodge"

We wanted the moments when the player cast their ultimate spell and when they dodge an attack at the perfect time to feel cool and fun. For those moments, we added a cinematic zoom in/out effect.

Damage Numbers

As the game progressed, we wanted players to feel like they were getting stronger over time. To achieve this, we spawned numbers in the world that showed the amount of damage done and the numbers would increase as the spells became more powerful.

​​​​

Cinematic camera movements

For dialogue interactions, instead of using a cut-scene, we thought it was look more stylish if the camera moved in the world and focused on points of interest. We implemented a system such that when the player triggered a dialogue event then the player camera itself would pan over to the point of interest.

UltimateSpellCinematic.gif

Cinematic for ultimate spell

PerfectDodgeCinematic.gif

Cinematic for perfect dodge

DamageNumbers.gif

Spell doing 50 damage

DamageNumbers.gif

Spell doing 15 damage

CinematicCamera.gif

Cinematic to highlight the campfire

CinematicCamera.gif

Cinematic for the starting narrative

Juicy Gameplay

Mesh Generation Tool

Our development had only three level designers including the lead designer which hindered the speed at which we could create levels. We decided to create a mesh generating tool for the environment and speed up the level design process. The tool creates the mesh for the boundary of the play area using a spline as a reference.

Perlin Noise

We decided to use perlin noise in our mesh generation to create interesting and natural-looking walls. We would create rectangular meshes and join them together to create the boundary and then use noise to warp the mesh to a more canyon-like shape.

MeshGeneration.gif
MeshGeneration.gif

Mesh generation using a noise value of 500 (in-game value)

Mesh generation using a noise value of 2000

Function that generates the vertexes for the wall mesh

Function that displaces a vertex using perlin noise (written by the SD lead)

Mesh Generation Tool

Retrospectives

What went well
  • We worked together as a team and successfully shipped a game on steam

  • The team culture was comfortable and everyone got to contribute to the game design

  • We re-used a lot of assets from the beginning of development and sped up our development time 

  • The project was scoped accurately and adjusted according to time and resources

What went wrong
  • Initial lack of communication between teams led to mismatched conventions and caused problems towards the end

  • Controller-support for menus was left towards the end which consumed a lot of development time

What I learned
  • Regular playtests even in the initial stages of development  helped iterate and improve the game and let everyone have a voice

  • Create a unified UI framework for basic items like buttons, images, etc early on

  • Take breaks. A daily break for 15 minutes can rejuvenate the team and increase productivity

Restrospective
bottom of page