SFUltraDiff v0.1 release!

So, with the clock running down, and the date for Ultra fast approaching, I set to work last weekend, laying down the basis for what would become SFUltraDiff. And now, without a minute to spare…the first version is done.  Wait, what? 

Well, Ultra comes out in June so…I am very early. It turns out that I am a much better programmer than when I originally wrote Ono!, my GUI tool for editing SF4AE PC, and having the source code to Ono! accelerated development, even though Ono! was written in C#/WPF and SFUltraDiff is written in python and outputs HTML pages.

SFUltraDiff is written for Python 2.7 and uses the fantastic Twitter Bootstrap project for most of the formatting.

There is still a lot of stuff to do. It only displays raw data, without much formatting, even for values that have been known and understood for years. For example, it shows hitbox types as a number, even though we know 0 means PROXIMITY, 1 means MID, etc. That is the next easy step in terms of  making it readable.

Also, it doesn’t output in game frames ATM, it outputs in animation frames. Let me explain. Commands in scripts are timed to the frames in the animation, and then the animation is sped up based on multipliers. For example, the animation for a move might have 60 frames even though the move in game might not be anywhere near that long. The commands for when hitboxes come out, SFX, GFX effects, etc, are timed to the animation. Then, a speed multiplier is applied to the animation that changes how fast it is played, and how fast the script is run. This allows for Capcom to change the startup of a move and still have everything else line up with the animation! Its really clever and I will be stealing it for any game I make!

Anyways, more updates in the future from me.


SFUltraDiff: My New Project

Ultra Street Fighter 4 is on its way, and it looks like it may be the last version of the Street Fighter 4 series we may see. Last weekend at Southern California Regionals in Irvine, California, Capcom announced a new feature that has the community hyped.

Dubbed “Edition Select” it allows for the selection of any version of a SF4 series character, from the original Street Fighter 4 release (vanilla!) all the way to the latest version, Ultra Street Fighter 4. These older characters will only have access to moves and functions that were included in the game they are from, but it remains to be seen how accurate these will be. In particular interest to me are the vanilla-only glitches, as well as some things that affect the community now in AE2012, such as unblockable setups.

Introducing SFUltraDiff

My goal is to create a tool that analyzes the files and provides a machine generated list of changes from Vanilla SF4, all the way through Ultra. I think it will be interesting to see how SF4 has developed as a whole over the last few years, and as Ultra is most likely the swan song of the SF4 series, it will be fun to see if there are any changes that are undocumented that affect gameplay, or bugs that were never discovered.

Who are you?

In writing this, it may seem kind of random for some guy no one has heard of to be wanting to do this. However, even if you don’t recognize the tag ‘dantarion’, I can guarantee that you’ve heard of a few game mod things I have had my hands on. I reverse engineered the file formats for AE and SFxT already, and produced a tool called Ono! that can be used to edit them. Shoryuken has posted articles about things people have created with Ono!, but I don’t think they have really covered the program itself before. I think SF4Remix is probably the most prolific thing that has been made with it, and they were the primary catalyst in the improvement of the program after its release. In addition to reverse engineering the SF4 series engine files, I am one of the founding members of Project M, a competitive mod of Super Smash Brothers Brawl on the Wii.

The Challenge

The challenge here is to see if I can complete this before June, and provide a full list of changes, framedata, etc, within one week of the release of Ultra Street Fighter 4 on Console.

There will actually be a lot of difficulties in terms of making this happen.

1. The file formats could change.

Right now I am betting on the BAC and BCM formats remaining the same or similar as they are in AE. From Super all the way to AE2012, the format hasn’t changed, but the original release of Vanilla has a slightly different format than games after Super. I am assuming that for ultra, Capcom has converted the vanilla files to the Super format. If this isn’t true, or Ultra is using some brand new format, I will have to hussle to get the work done.

2. I don’t know how to actually automate frame data for certain moves.

Many of the moves are coded to end when the character lands, so as a result, I would need to determine the size of the collision box, how long it takes to touch the ground again, etc. This is bit beyond the scope of what I want to do. I will most likely have perfect data for all normals and most specials, but for some moves, the only way to get frame advantage data is to test in game.

3. Even with a text-based diff of the files, I am not sure how to present all changes.

For example, lets talk about one nerf we already know happened in the SF4 series. Ryu lost range on  cr.MK. Now, without a screenshot or hitbox display, if I told you the hitbox shrunk in width by .2 units, does that mean much to you? Probably not.

There are likely a lot of small changes like that that are hard to visualize even though we know they exist.


I know this is a lofty goal, and that in the end, the changelists provided by Capcom may actually be completely accurate. I am using this as a programming project for myself more than anything, but if I am able to provide the community with a look behind the curtain in terms of how the game works, I hope that is appreciated.