An asset package for Unreal that creates a simple framework for including a Battle Pass-like objective system into any game. Programmers hook up tracked actions and their game’s reward system while designers create the objectives/reward thresholds, and the package handles the rest.
Role: Designer and Programmer
Software: Unreal Blueprints and C++
Development Cycle: January-May 2020
Purpose: Technical Design/Programming portfolio piece
The purpose of the package is to allow a team to easily integrate the architecture for a Battle Pass-esque progression system into their Unreal project. The team determines what actions/events in the game they want to track, and then they add a simple function call and reference to each of those actions/events to have them tracked on a round or match-long basis. Designers go into a Data Table to create Objectives that are comprised of these actions/events and how often they must or must not be performed.
When a round and match ends (set by another simple function call), the system determines if Objectives have been completed. At the end of the match, the player will be awarded with the XP of any completed Objectives. With enough XP, the player will cross a designer-set threshold and be awarded a reward, which can be hooked directly into a project’s reward system.
Contributions and Philosophy
- Designed a progression system that was based off of the objective-based reward systems of Battle Passes
- Programmed the asset package via C++ and Blueprints
- Built the tool to allow easy editing by designers that keeps them out of the code
This project was an extremely interesting one because it touches all facets of my work as a designer and programmer. I love to develop systems and tools that increase efficiency, and I got to analyze the core of Battle Pass progression systems in order to determine how to make a user-friendly and generally ubiquitous package. The idea came from a progression system that I designed for Showstopper with a local audience in mind as opposed to a single person completing a Battle Pass for an online multiplayer game. Seeing as the system tracks specific actions, it can also easily be modified for use tracking player metrics.
Overall the project was fairly simple to code, especially with Blueprints. I wanted to make the package as versatile and nondescript as possible, especially since I was making it with my own game in mind. The only major change of course involved data entry. A goal was to make things as easy for designers as possible, so I created editor widgets for the data entry. However, Data Tables in Unreal are not editable without diving deep into Slate which was out of scope for the timeframe of the project. So instead, I centralized the design work into Data Tables and Enums because they’re still fairly newbie friendly.