Hey there friends, enemies and frenemies!
Remember this
April's Fool thread, which was voted unanimously to be the lamest
Senile Team thread of 2011?
For those who haven't read it, it features the introduction of a
moddable 2D fighter called the
Dolmexica Engine, similar in style to
Elecbyte's
M.U.G.E.N. What you did not know was that the Engine is
real.
Not only that, but also pretty advanced already, if I may add.
Just in case you are wondering why I am announcing this here, on this rather small forum, it is not just to show it to
Senile Team, but also because a lot of
Modding and/or
Dreamcast enthusiasts visit this place on a regular basis (especially when
Lavalit is down). So now that all of the engine's basic functions are working, but at the same time are still relatively easy to change, I have come to the conclusion the time has come to ask for some
feedback, ideas and suggestions.
Before I share with you the secrets of modding for the
Dolmexica engine, I would like to stress that it is neither
Senile Team's
Beats of Rage nor
Mugen. Since it was written from scratch (with the help of
KallistiOS) by me, I can safely assure you that neither of these moddable milestones were an influence for me, instead I have used a different approach to the aspect of
moddability.
Which brings us to the main aspect of the engine:
How on earth does creating a new character work?
----------------------------------------------------------------------------------------------------------
Okay, so you've gone through the process of
ripping/drawing the sprites.
The
Dolmexica Engine uses two semi-independent files for new characters: One
.CHR file, which stores all the
media related to the characters and one
.MVT, which is best compared to a
manual which tells the game what the character is supposed to do, more on that later.
First you have to create a
.CHR file. Since the engine is optimized for use with the
Sega Dreamcast, the individual frames are stored in the
RGBA 4444 KMG format, compressed with the
QuickLZ compression archive, resulting in a file format called
.PKG (Portable KallistiOS Graphic). Currently I employ
128x128 PNG textures (which are then converted and compressed
before using them with the game). You might wonder why someone would want a texture with a width of 128 pixels, the thought behind that one is that the all close combat moves take place in this box, so even long-range attacks like Dhalsim's stretching attacks fit in there. Just in case you wonder, those 128 pixels may look a bit small at first, but it's enough to contain even the detailed
Street Fighter III: 3rd Strike characters. Also keep in mind that they are stretched to
256x256 pixels on the screen, which is a lot comparing it to the overall screen size of
640x480. One thing that I am still unsure about is wether the engine should use
RGBA4444,
RGBA5551 or both, with
RGBA4444 being my current favorite.
After you have successfully converted your
PNGs to
PKG, it is time to work on the hit detection. The
Dolmexica Engine uses a fifth image layer for that one, colloquially dubbed the
Crash Layer and is stored in a
.CRA file, which is nothing more than a 128x128 array of ones, zeros and other funky numbers, afterwards compressed with
QuickLZ. Since writing 16384 numbers is nothing but a pain, I have also written a tool which converts a normal (24bpp)
.BMP image to the
.CRA format. White (0) is nothing, Black (1) is vulnerable, Red (3) is the area which
HURTS, Blue (2) is blocking. In case you haven't noticed, this hit detection is
pixel perfect.
Regarding Sound effects and other small sounds, I am currently evaluating the possibility of using some
ADPCM format. Or just the normal
.WAV one, the most important thing aspect is that the sound effects will be streamed.
Those three filetypes will be merged into the aforementioned
.CHR archive. It probably sounds very confusing right now, but believe me, thanks to the automatic tools I have written, a new attack or animation can be added in
less than five minutes.
The
.MVT file is a tad more complex. As mentioned before, it serves as a
manual to the game, which tells the game which moves are available. First we have to differ between two different types of manuals: The one used by the
CPU and the one used when the character is controlled by a
human player.
Should the character be controlled by the evil
CPU, the
.MVT is ordered by the
type of Attack, whereas the
Humanoid .MVT is ordered by the input buttons which trigger the animation.
Both types are being "
compiled" from a readable
.TXT file. For normal attacks, values which have to be declared are the
overall amount of frames, the
speed of the animation, the
strength (attacks only), the
Enemy Acceleration, how much the enemy gets knocked back (attacks only),
sound effects and the
AnimationType (attack, throw, blocking...).
Then there are also special attacks like throws, combos and so on, which have values declared for each individual frame, including some new variables: How much the Enemy's or the own Char's
Position change, how much
damage each individual frame does and others. This is the stuff I'm working on right now, so expect a lot to change in the special moves department, but this is how I am expecting things to work.
Naturally you can also fiddle with things like the character's
jumping height and
speed. The
physics are something I really put a lot of emphasis on and a lot of work into. My primary goal is to make it feel like
Street Fighter III, which in my opinion is the very best
2D fighter on the
DC.
Anyway, when you are done with creating the
.TXT and converting it to
.MVT, you have everything you need to have a new working character. My two testing characters right now are
Sagat (
Street Fighter II ver.) and
Johnny Cage (
Mortal Kombat ver.), replacing my previous test char,
Stickler (
The Best Game Ever).
Since releasing the engine just by itself would be pretty uninteresting, I am currently thinking about using it to create a
Street Fighter vs. Mortal Kombat game, because it is the only
Street Fighter crossover that has yet to happen and the
Dolmexica engine is probably able to fix some of
Mortal Kombat's grave gameplay issues (such as the hit detection). In addition to this all-star cast, it will also feature two original characters from
The Rad Adventures of Captain DC, a full-fledged
2D fighter which will utilize a modified version of the
Dolmexica engine. Don't hold too much of your breath for
TRAOCDC though, unlike the
Dolmexica engine it might go the
Maid Fight way and never become a reality.
Of course modifying the
source code will be possible too, since the
Dolmexica engine will be released under the
GPL. As a matter of fact, I have to release it under the
GPL, since that is a requirement for using
QuickLZ for free. Fair trade if you ask me.
----------------------------------------------------------------------------------------------------------
Now, what do you think? Anything you would like to see
added in the final version? Something I have
overlooked? Whatever it is, please let me know.
During the next few weeks, I will also use my rusted
PHP/SQL skillz to set up a site with a small forum dedicated to modding for and improving the
Dolmexica Engine, so stay tuned.
Oh, and thanks for reading this wall of text.
Like mentioned before, I'd be really glad if you could post some
feedback, suggestions or ideas you have.