Rookie Awards 2024 - Open for Entries!
Borderlands 2: Maya Adjustments (Mod)
Share

Borderlands 2: Maya Adjustments (Mod)

Gianluca Lorenzo Genovese
by JynxVer on 27 Sep 2023

This is my biggest Borderlands project yet, as it overhauls almost half of Maya's skills. In the post you'll find the Dev process behind the Mod, and my Design decisions.

0 414 0
Round of applause for our sponsors

Intro

Hi, name's Jynx, this is my post showcasing my Borderlands 2 Mod, which overhauls Maya. 

The First Section will be about the technicalities behind the making of this Mod: The code, Tools and Dev Process 

The Second Section will be about the Game Design: Choices, Balancing and reasoning behind changes. 

To avoid making an extremely long and tedious section, i will discuss and explain just my general Design philosophy behind the Mod using a few changes as examples. A more IN-Depth and Thorough explanation of each change, will be in the embedded video at the bottom of the section


First Section: Development

Tools used:

Unreal Engine Object Explorer: This let's the user navigate and read unpacked UPK files.

Unreal Engine UPK unpacker: This let's the user unpack UE UPK Files.

Notepad++: One of many text editors, used for writing the code.

BLCMM: Neat little program made by the Borderlands 2 community, let's the user do all sorts of stuff, from looking at the code, to disabling/enabling specific parts of it, and many other things.

Game: Used to test the changes, and find bugs or errors

(Borderlands 2 uses Unreal Engine, so the coding/scripting language used is Unreal's standard)

Let's start with a very basic change!

This is an extremely simple and plain string of code, shown via BLCMM, which makes for a perfect example to explain how Developing mods for this game works.

Most Borderlands 2 Mods, are snippets of code applied to the game via Hotfixes, so i set the code to be "On Demand", which will make it apply as an Hotfix, and specify which "Package" contains the element i'm trying to change, in this case "GD_Siren_Streaming"

Package added, now ready to make some changes! 

Use "Set" (Green underline)  followed by the Element or "Object" (Yellow underline) to tell the game what exactly i'm trying to change.

In this case, i'm calling upon the Skills>Motion branch>and a skill called "Kinetic Reflection".

Now use an "Attribute Identifier" (Blue underline) to tell the game what part of that Kinetic Reflection skill i want to change, in this case "Skill Name" is pretty self explanatory.

And then simply put the desired name in, in this case "Mirrored Damage" (Orange underline). 

Here's the result!

As i said, this is a very simple and plain change, so let's look at something more impactful but still basic!

Making a very basic change to a skill effect!

This is a piece of a bigger "code block" which changes (or in this specific case ADDs) an effect to a skill.

Just like before, after getting into the "Package" i use "Set" and call upon an "Object" to tell the game what Skill i want to change, in this case a skill called Quicken which by default looks like this:

This time the "Attribute" i'm changing, is "SkillEffectsDefinitions" which, as the name implies, controls the effects of a skill.

"AttributeToModify" controls which "Effect" i want to Add/change on a given skill, so i use "AttributeDefinition" to define one, and call upon it, in this case i'm calling upon "WeaponSwapTimeMultiplier", which simply refers to "Weapon Swap speed"

Then follows a series of "booleans", noticeable thanks to their "b+something else" structure. They're very simple ON/OFF switches, and are usually pretty self explanatory, let's look at one.

bIncludeSelfAsTarget: Controls if the player casting the Skill, should be or not be, targeted/affected by it. In this case i definitely want the player to be affected, so i put "= TRUE"

There's then a few other checks like "EffectTarget" which, similarly to the Boolean above, controls who should be affected by the Skill, in this case i put "TARGET_Self", because the skill is a stats modifier, and i want it to affect the player.

At last, there's "BaseModifierValue", which contains the numbers for the skill, basically telling the game how strong the effect should be. 

In this case, only the two "BaseValueConstant" numbers are relevant and they're % numbers, so 1 equals 100%, and something like 0.1 equals 10%.

Here, i put -0.06, which equals 6%. (The "Negative" sign, in this case, is there because the modifier changes how long it takes to Swap weapons, so i "lower" the time it takes by making it a negative value) 

This should give the Skill a total of 30% "Swap Speed", as most Skills in Borderlands 2 have 5 points, so 6%*5 = 30%

There it is! The Swap speed!

Now, the process shown above, only shows how to INTERNALLY add the value to the skill, having it show up IN GAME for the players to read and even know it's there requires some more work, as does adding it to the description of the Skill itself, so let's VERY QUICKLY go over it, as this section is becoming very long.

Here's what the code to make it show up, IN GAME, looks like

Again, the usual, Set>Object>Attribute and then what i want to Add/Change, here, the "Description", which is a bit misleading, as it doesn't change the actual description of the skill, but just the "attribute lines" (Red underline)

In this case, the skill by default gives "Phaselock Cooldown Rate" as shown above, so i add a <br> which simply tells the game to go in a new line, and insert how i want to call the stat, so "Swap Speed", and the command $NUMBER$ to tell the game to pull the numbers for it.

Last thing, is editing the ACTUAL DESCRIPTION of the Skill

Do the usual like before, and very simply type the description, using [skill] simply changes the font color to a faint yellow, i used this to emphasize some words in the skills. 

DONE! The Skill is now complete! Here's a Before/After showcasing the effect In-Game

This is but a miniscule portion showcasing a very simple change, but there's a lot more In-Depth changes that i've done, which required much more coding, but unfortunately making a full Code breakdown of those would take 8 trillion pages, so i'll stop here, hoping to have shown enough of the Development of the Mod.


Second Section: Design

The general idea behind the Mod, was to make Maya a better Standalone character, and to also improve on some very poorly designed skills, which were either completely useless, or quickly became outclassed by other stuff in the game.

As a "Design Direction" for these changes, i decided to have Maya be more centered around her action Skill, and actively have her Skills interact with it, via buffs, changes, and bonuses.

My main concern was "I don't want to make Maya bad in Multiplayer", so, since Healing is almost entirely useless in Multiplayer, as all Characters already have many ways to heal themselves instantly and much better than Maya could, i moved her utility to "Crowd Control"

Let's look at a few of the changes, and how i went about adjusting Maya. (as a reminder, all the Changes will be discussed in the video Embedded at the bottom of the section.)

Action Skill: Phaselock (Default)

Phaselock is an amazing Crowd Control Skill in concept, unfortunately its implementation is quite underwhelming, as the ability is:

1) Short, only lasting 5 seconds

2) Limited in use, as some enemies cannot be "Phaselocked", and the damage dealt to them is laughable

3) Restrictive, as it cannot be used when in "Fight for your life", and actively deactivates when in such state

4) Doesn't have many interactions with Maya's Skill trees. Which is a MASSIVE negative, since it basically makes it just an "Add-On" to the Character, instead of the centerpiece, as it should be.

These are the main sources of Maya feeling "bad" when played in Single Player, as her Action Skill simply doesn't pack the same power as most others, and so she isn't really incentivized to play around it

This version of the Action Skill wasn't suitable for my plans to have Maya play around it, so it required some hefty changes.

Action Skill: Phaselock (Adjusted)

Phaselock now:

Lasts longer, 10 seconds instead of 5

Lower Cooldown, to allow for more deliberate use

Less restrictive, as it now can be used in Fight for you life 

More enemies can be Phaselocked, and the Damage deal to the like, two, that still can't be, is now actually meaningful!

This immediately opens up a ton more uses for the skill, and also importantly makes it more appealing, meaning that now i can safely Re-Design Maya's skills around it, as the ability will feel impactful and have more presence during Gameplay.

Let's look at TWO examples

Skill: Immolate (Default)

Immolate is a fairly neutral skill, while in Fight For Your Life, gain extra Damage.

This is a perfect example of what i was referring to when i said that most of Maya's skills, aren't centered around Phaselock, and don't interact with it. 

I could literally have this on anyone and it would work just as well. So, i move it to be Phaselock based.

Skill: Immolate (Adjusted)

This is very similar to the base Immolate, BUT, it ACTUALLY interacts with Phaselock, it incentivizes you to use it by making you stronger!

Now that it isn't restricted to "Fight For Your Life", combined with Phaselock's shorter Cooldown and longer duration, it also gains massively increased "Uptime" making investing Skill Points into it feel more impactful and satisfying in day by day playing!

But can't forget balance, and to make up for the massively increased uptime, the damage has been nerfed!

Skill: Res (Default)

Res is a perfect example of both:

COMPLETELY USELESS while in Single Player and extremely underwhelming even when in Multiplayer, as Maya doesn't really gain anything from it, which is made worse by the fact that the effect, while iconic, isn't particularly strong either.

So i changed it quite a bit.

Skill: (Res) Deathless (Adjusted)

This is my take on making it better.

It still keeps the "Revive ally" effect, as Maya being able to do so is pretty iconic, but it's now actually useful in Single Player and overall feels better to use in Multiplayer too, as it gives Maya herself some boosts!

I'm especially fond of "Extends Phaselock Duration" as Phaselock has fantastic Utility in both Single and Multiplayer, making a fantastic "all rounder" change, that benefits everyone!

This also keeps in theme with my Direction of making Maya's skill "interact" with Phaselock more, which includes buffing it!

Conclusion

Thank you for reading through this massive post!

Hopefully i was able to shine some light both on the Development process behind the making of this Mod, and the Design process behind the changes!


Comments (0)

This project doesn't have any comments yet.