I wanted to have a go at weapon balancing and I hope you’re gonna like my propositions.
@InterAction_studios I also hope you’re gonna take a peek at this post, as well.
To start, I think Boron Railgun is much better than its past counterpart right now, but there are definitely a lot of edges to polish and things to chisel if we want this weapon to become more easily usable and prettier in terms of aesthetics.
Currently, Boron Railgun has these so-called stages. When it reaches a new stage, its color changes and its sound effect is pitched up a little bit. As it enters a new stage, it also becomes more powerful. That idea in particular (damage as you overheat) is pretty damn great and I love it, however I feel like it could be implemented better.
Let’s start with STAGES
Stages are not the best thing to have in this weapon. They make it harder to use and way too reliable on your heat level. We can also have this weird case where we alter between the most powerful stage and the one before that and it’s definitely not pretty to look at.
That’s why I suggest completely scrapping stages.
What can be done about the weapon’s damage progression as it heats up?
Smooth damage progression until a certain heat level would resolve our problem with stages and make it possible to use the strongest variant consistently, without constantly altering between literal thousandths of the decimal.
Smooth progression means this - make the damage gradually increase as the weapon heats up and halt the progression after the 25th rectangle/bar has been filled. I’ll let this convenient demonstrative image speak for itself:
I borrowed it from @1galbatorix1’s Weapon Balance Program post, so I’d like to thank him :).
So, as you can see, that way the problem with stages is gone, and we can use Boron’s max damage without having to worry about literally being on the last bar.
There’s no need for a sound indicator if there’s a clear visual indicator that something’s going on with your weapon. A lot of weapons have this pitch alteration gimmick now (Plasmer, Lightning, Absolver, Positron) so it’ll be nice if the others are left the way they are.
I’d like to propose a different and very easy color progression for this weapon. Gameplay is a core element in every game, but aesthetics are very closely behind it. Visuals are what make this gameplay truly shine, so it’s important to have some eye candy.
In order to achieve this, I thought of gradual color progression - similar to what Vulcan Chaingun has at present.
If you noticed these hanging rectangles in the image with the heat bar, that’s their purpose and I’ll explain how it’ll work in code and visually.
Part 1 - The way it’d look
It’s pretty simple. We just get Boron Railgun to slowly turn from red to yellow(see the heat bar) and then to very bright yellow (close to white) until it reaches x2.5 damage.
Here’s a representation of this:
To explain why what’s supposedly pure white looks like this - it’s the sprite. I wanted to keep the last sprite relatively the same to make it easier for IA. Although it is slightly tweaked, so I’d love it if he changes it as it is on the image above.
Part 2 - The code
Just like what I wrote above, programming this would be more than simple. If you want, you can skip this part. If you’re IA, please read it.
Let’s assume the heat bar has a variable that holds its progress (and I assume so because there’s a warning beep sound when you reach a certain bar). That way IA can make the color progress relative to how filled the overheat bar is - which is exactly how Vulcan Chaingun works, except it has a constant color in the beginning instead of in the end.
Now, if you’re IA and if you decide to do it differently - go ahead, but from my experience, this would be the easiest method.
Introduce two new integers - name them however you’d like, but for this post I’d like to call them boronGreen and boronBlue.
public int boronGreen = 0; public int boronBlue = 45;
I made them public assuming it’d be more convenient for you.
Next, let’s go to Boron Railgun’s draw method. For the sake of argument, let’s say IA has it figured out and he uses RGB.
Do as follows:
(255, boronGreen, boronBlue);
For obvious reasons, I skipped whatever code IA could’ve written before that. I am not fluent in C++ - only C# and web languages.
In your update function (I’m sure you use one, otherwise no idea how you’ve made it), make boronGreen gradually increase until it reaches 255 relative to the heat bar I showed above. I’m unfamiliar with the way you check how much it’s filled, so I’m gonna have to leave this part for you to figure out. Looking at Vulcan, I’m sure it’s easy.
Once boronGreen >= 255, start boronBlue’s progression until it reaches 255 relative to the heat bar I showed earlier. Keep the colors at 255, 255, 255 until the weapon overheats completely.
Part 3 - The code (damage)
Pretty much the same way color progression would work.
Assuming you already have a boronMultiplier conveniently sitting on your work desk, take it and make it gradually increase until it reaches x2.5.
To improve Boron Railgun, it should have:
- Its stages removed entirely
- Smooth damage progression introduced
- Its pitch alteration removed
- A smooth color progression for beauty
Thanks for reading!