“Project 1v1”
(Internship in Summer 2019)
Role: Ability Design Intern
Project 1v1 is the code name for a project developed at Gearbox. It’s a first-person shooter that faces two players against each other, each with three cards that confer special abilities. Some cards require Charges to use, and players can pick up Charges and Health around the level.
As part of my tenure as a Guildhall student, I had an internship at Gearbox Software from late May 2019 to the beginning of that July, taking place once per week. I designed seven abilities over the course of the first two days, choosing not to pursue six of them for various reasons such as either requiring players to do math, or a high degree of difficulty in implementing them over the limited course of the internship.
In the end, I focused on an ability I named Magnetic Personality, which ended up with the following effects:
Passively, the radius at which you grab pickups is increased, and every time you grab a Charge you add a “Stack” to the ability (for up to 5).
When the card is activated:
The increased collection radius ends
Each “Stack” is consumed
You get a +10% speed boost for each “Stack” consumed this way, with the boost lasting 10 seconds
You automatically grab each Charge and Health on the map (this doesn’t add “Stacks”)
When the speed boost ends, there’s a 30 second cooldown during which the card can’t be activated again. At the end of the cooldown, the player regains their increased collection radius.
Magnetic Personality started with the concept of getting additional value out of pickups, as I find it fun for the user and inoffensive to the opponent. I started fleshing it out by giving the player a speed boost when they grab something. Increased speed is useful on offense and on defense, and this also lead me to considering turning the ability completely passive. Making it a passive ability solved the issue I ran into where, since players grab pickups almost instinctively, why would they think of activating it? Because there were other completely passive abilities in the game, I felt this was a path worth pursuing.
I had another issue though, where Magnetic Personality didn’t quite feel powerful enough. The ability had interesting enough applications, though, that I saw the potential in it. My first solution was to give the player an increased range to collect items from that grew with the first few pickups they grabbed. This had issues with making the player guess distances, and didn’t really give much choice outside of avoiding pickups to save a potential speed boost. My solution to the choice conundrum was to make the ability partially active, wherein the player had a constant increased collection radius and activation applied a speed boost based on how many things they grabbed.
I quickly determined that having the speed boosts trigger passively would lead to too many feel-bad moments where a player accidentally grabs a pickup with their increased radius, effectively wasting the boost. As such, I drafted up an activated version of the ability:
I also made it so the player could gather more “Stacks” to prevent players from avoiding pickups out of fear of “missing out” on extra “Stacks”.
Playtesting that week told me the first two stages were negligible and barely noticeable, prompting me to change the stages to increments of 15%. This was upped further to 20% increments the week after.
Over the course of development, I worked to make sure activation felt fun and powerful, which meant focusing not only on the best-case and average-case scenarios, but also providing a “useful” worst-case scenario. And the “fun and powerful” concern meant I needed to take map-size and navigability into account as well, because I had determined the speed boost wanted to last about 10 seconds to let players take full advantage of it and find their opponent without seeming overpowered to the opponent.
In terms of the worst-case scenario, the lengthy speed boost was good in any situation, but a boost did nothing if you died immediately. To address that, I wanted to either give the player a shield or heal them. I ultimately chose to go with healing as it felt associated to the health pickups the player grabbed. And while I could have simply healed the player for a specific amount, that felt disconnected with the rest of the ability.
I reached the solution of letting the player “grab” every active pickup in the map on top of a small heal, meaning any health packs in the map would greatly supplement the ability. The implementation for this took more time than I expected, however, due to the way pickups were counted by the game. I knew that to learn implementation, I was best served by looking at instances of the functionality in other parts of the game. I studied similar abilities and was able to reverse-engineer the results, as seeing all of the interactions taught me both the “how” and “why”.
Magnetic Personality’s passive ability, for example, lets players grab something from far away. My initial assumption was that I could adjust a variable for the collection radius. However, it turned out that collection used the player’s normal collision, so I couldn’t affect it directly. I worked with a programmer on the game who suggested looking at an ability that spawns a unique item and, as it turns out, doesn’t use the collection radius. That ability works by getting the distance between the item and the player, and “grabbing” it within a chosen distance. From there, I followed suit and tracked the player’s distance from all available pickups, grabbing pickups within a certain range.
What Went Well
Quickly iterated my work while simultaneously learning the game’s code structure.
Developed a balanced player ability people enjoyed using.
Had quick and fruitful communication with a programmer to implement a new Blueprint node.
What Went Wrong
I was slower with Blueprints than I would’ve liked, as I was still learning them, making revisions take longer to implement.
What I Learned (Improvements)
When trying to create a fun worst-case scenario, it’s much more efficient to develop and test multiple versions simultaneously than to try different versions one at a time.