Programming a Battle Pass-esque Reward System – Part 1

As my school career comes to an end, I’ve found myself within a lot of project-based courses in order to show off my various skills. The most intriguing of these courses is Console Programming, which is focused less on programming for a console and more on developing a project on my own that shows off my programmer skills. Naturally, however, I had to shove my design skills into the mix and so I’ve come to a project that I am extremely excited about that meets all of the criteria the course is asking of me.

If you’ve followed this blog, you’ll know that last semester I developed a game called Showstopper with programmers, an artist, and a producer for my Capstone. Unfortunately, our project did not get chosen to make it to a second semester. As a quick recap of Showstopper, the players are attempting to land on the enemy’s weapon through a variety of movement options and win conditions dependent on the round.

Last semester, I spent time researching and designing a reward system akin to the Battle Pass used in recent games that would’ve been added this semester had our game progressed forward. The system gives players tasks to complete and rewards them with points for completing them. In Showstopper, these tasks will be things like “win 3 matches in a row” or “use the rising ropes 5 times.” When enough points are obtained, a reward is given. My project for my Console Programming course will be to implement this system through C++ and Blueprints in Unreal Engine 4, with the hopes that I can make it into a general-use asset package.

Image result for ctr grand prix

An example of a Battle Pass in Crash Team Racing: Nitro Fueled

The first question is why I want to explore such a system. In essence, as a designer I wanted to work on a project that would show off my skills best while proving my interest in new and relevant systems. Live games are where a lot of AAA development is heading, and the Battle Pass is a simple but effective system within a live environment that I’m interested in replicating. As a designer, it allows me to show that I can design a reward system that will keep players engaged.

But this is a programming course, so what is it that I’m learning or showing off with this project as a programmer? First, I have worked within Blueprints extensively during Showstopper’s development, but learning the C++ side of things will be extremely useful if I am to continue using Unreal on any projects. Second, I think it will be valuable for me to understand the underlying structure of this reward system if I am going to enter an industry that is heavily investing in it. Lastly, I am hoping this process allows me to develop a simple pipeline for a designer to create missions, in which case I will be also be better understanding what it takes to make a tool for designer use, which I’ve never had to do before.

When it comes to unknowns about the project, it’s difficult because in theory this is a very simple system that will require:

  • a simple way to hook any action that would be needed into event dispatches
  • a centralized hub to store the mission progress and give out rewards
  • save and load the rewards and progress
  • a simple way for a designer to create missions through Blueprints or Data Table

However, that is just the theoretical breakdown of the system. Because Battle Passes are so new, there isn’t any talk about their programming or complexity online. I don’t see much complexity in the system, which might explain that. However, not having much to reference besides how I perceive other games’ systems to work will be a risk.

Based on my understanding of it all, I perceive the ease of creation for designers to be the biggest time sink. Things need to be made in a way that isn’t performance heavy but allows a lot of flexibility for what a designer might want. I’m also leaving a week at the end of the semester just to try and understand packaging, in case the project is good enough that I would want to have it as a separate asset.

Finally, I don’t foresee any dependencies on external factors. The game itself is built and will not change during the project. I am working alone on the project in a stable Unreal version protected by version control. It’s hard to plan for unforeseen circumstances but I’ve done my best to prepare.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s