Changes in Build 036: Part 1

Before I start posting about my current progress, I need to show some of the important changes done to the engine in the last 15 months. I won't cover everything, as some of it honestly isn't too interesting but I'll be sure to hit get important points. Not sure how many parts I'll be splitting this into yet.

Due to the numerous bugs and laziness on my part, this is stuff even most of my testers do not know about. So let's get it started. This is going to be long, so gear up.

First, I'm gonna talk about the changes to the damage system.



Previously, all damage values were held in each specific bullet object which would subtract from an enemies' health on contact. That worked fine at first, but there's two major problems with that.

One: Changing the damage value requires that you use Multimedia Fusion 2. Something not everyone has access to.

Two: It's incredibly cumbersome to change values during actual gameplay. If I wanted to lower the damage values for a boss, I'd have to do so for each and every boss bullet object and with every single boss. Trying to add weapon weaknesses is even worse.

Fortunately, the solution to this is simple. Values for all weapons are held in an XML spreadsheet, externally from MMF2. It's easy to change anything you need to and accessible for anyone. It also allows me to easily add or change any weapon weaknesses a boss may have.

For example, Boss 3 has a clear weakness to charged shots in this case.

I still need to tweak the coding a bit. As it is now, the engine needs to read the external XML every time you fire a shot. I've yet to run into any issues with this method, but it can potentially cause some performance issues.


On top of this, I've also made tweaks to the actual values the X Buster uses for damage. To understand the reason for this, I have to explain how the original games (X1-X3) uses it's values.

Prior, the engine was using X1's values. In Mega Man X1, the value for the buster was 1:2:4 (not including upgraded buster), but some enemies had what I'd like to call a "damage resistance" set into them. On most enemies, a charged shot would do 4 units of damage, but an enemy like Dig Labour/Degraver it would do 5 units of damage, and on a Mole Borer, 3 units. This forces me to have to hard-code resistances into certain enemies, something I really dislike doing. In previous builds of the X Engine, Dig Labour was the only enemy to have damage resistance.

X2/X3 uses a completely different set of damage values for the buster (3:5:8). Because of the gaps in damage, it require less need for resistance change. In X2/X3, there are very few enemies (if any at all) who have damage resistances. However, because of the difference in values, all enemies in the X Engine needed to have health adjustments to fit the system. Below is a list are all the implemented enemies and their previous and current health values.

Ray Trap and Rolling Gabyoall are invincible enemies.
It's a much cleaner way of doing things honestly.

That's pretty much it for this part. A bit technical I know, but hopefully I've shed some light on how things work in the engine. If you have any questions feel free to post a comment. I'll be back soon with another post, take care!

2 comments:

  1. very good work.
    i really can't say more lol, good luck, im still waiting

    ReplyDelete
  2. Still seeing you're working on it. Nice!

    ReplyDelete