Stepmania - Reverse Engineering Existing characters!
It appears that some people were interested more in how to extract characters from StepMania in order to understand how the process works. I should note that you should only do this if you want to get a better understanding for how StepMania characters are designed and how the program re-assembles the data structure once it was received. So this is an add-on tutorial explaining how to take a character that you may have downloaded from this site. and then how to view it in MilkShape and even have it animate right before your eyes!
Prerequisites
- Milkshape 3-d - download a demo of it here - The cost for this program is rather cheap!
- an unzipping tool - WinRAR is my personal favorite and can be downloaded from rarlab.com (do not go to any other sites which claim themselves as WinRAR on Google or bing as a lot of them are spyware/scam programs)
- A character file from Stepmania - you can go here if you want to download some - or check out the Stepmania forum for some Mediafire links.
- the dance moves for a character - hosted locally - click here to download that.
Let us Begin!
In this tutorial example, we're going to use the (3rd) Emi (b) character that was going on the site listed above. When downloading your file it will have a .smzip file extension for any and all Stepmania themes, songs, characters, note skins, etc. Just rename it from a .smzip to a .zip and you should be able to extract it with any unzipping tool. The file that contains the mesh of the character is model.txt which is saved in MilkShape ASCII format. This is the file that we will be focusing on during this brief tutorial. If you attempt to do a 'File' 'Import' 'MilkShape 3d ASCII' import of the model.txt in your Emi character file you will get something that looks like this. Basically a ball of unrecognizable mesh data. And if you remember from the earlier tutorial this is because all characters in Stepmania are saved without their bone data as the Stepmania program pulls that data from another file. In the model.txt when you scroll down past all of the mesh and UV map data (Note: Line 1774 for this Emi file, this line number will change depending on the character you open) and you see where the problem is; All of the coordinates for the bones have been zeroed out which warps the entire mesh into a tiny ball.
Fixing the "model.txt" so it is usable again.
Now we need to go and find the dance bone animation files. which can be extracted out of the "bones+helper.zip" file. A brief description of what these files are is these are bone animation files that were extracted out of the original Konami DDR PC version of the game. The model's mesh files, UVs, and bones, were all extracted and re-exported into Stepmania. The files were separated so the bones could be used on all Stepmania characters. This is why when you looked at the emi file directory example you just found a .redir instead of these bone files. For this example we are just going to click on _DDRPC_common_Dance0001.bones.txt which is where all of the bone data exists in. be clicking 'edit' and 'Select All' and then 'copy' will ensure we copy every single line in this text file, which is 16 bones with 748 frames of animation. Next, we are going to open the models.txt of the character that we are working on. In this case the "Emi" character. highlight all of the bones that are zeroed out and pasted all of the data from _DDRPC_common_Dance0001.bones.txt file . Then, save the file as model-b.txt so you don't overwrite your existing character and -really- mess up your model when it is processed by Stepmania. Once the model-b.txt file is saved (or whatever you want to name it) we can re-import this into MilkShape using the MilkShape 3d ASCII import. "What the hell?!? It didn't do anything!" - This is the reaction I had when I first tried to import mesh data from a StepMania character. That is until I actually had to go into animation mode in MilkShape mode by hitting the Anim button on the bottom right-hand corner of the screen.
After you click the animation button the model pops right into shape! Perfect!
What about the texture? I selected the texture in MilkShape but all I get is the white outline like in your example pictures?
Right-Click in the preview pane of your MilkShape editor and then change it from "Flat Shaded" to "Textured" and you get to see the StepMania Object file textured. Also, if the StepMania object has facial animations as most of them tend to have. Then in order to see that you will need to go into the Materials tab. Select the "Face" material and then where it says "Face.ini" for the actual material name, change it to a logical file. In this example, I have it set up as "face1.bmp". From there; You should be able to see your character as how it would look in StepMania and be able to export it out to whatever format you choose by using the 'file' and 'export' features within MilkShape.
What about viewing the animations? I can't get MilkShape to play the animations.
Adjust the 'max frame' and 'total frame' values in two text boxes on the right of the animation bar. By doing this you have told Milkshape to look past the first frame of animation which will then make those bones animate without an issue.
FIN!
End of tutorial. I hope this was helpful for anyone reading this.
Related Blogs:
Read on if you want to know more about how to make your own Stepmania characters.
Final thoughts and disclaimers.
By reverse engineering any model. I am not responsible for any damage that can occur when extracting data as well as saving the model into different formats, you should always retain backups of project files that you are working on. "Emi" and other characters within StepMania are copy-written to their respective owners and this site does in no way wish to infringe upon those intellectual properties.
Quick question you may or may not know the answer but idk where else to ask: would it be possible to edit the dancers moves with this program? I'm not a fan of the male dancers using the female dance moves (vice versa!) and I wish I knew how to fix that. I've looked on google, reddit and some forums and no one knows a thing. I started playing stepmania again out of nostalgic reasons and yea, this is my only gripe right now.
A very long time ago we talked with a developer of Stepmania. Not entirely sure which one. But They explained to me that the dances were hastily ripped right from the playstation images. By them doing it this way without really having a standard. The Stepmania dev team invented their own bone structure by accident. You'll see it if you open one of the files that unlike a traditional milkshape3d skeleton the bones are NOT relative to eachohter. But instead, each bone is based off of global axis's and rotation. Now, would it be terribly hard to convert parent/child forward kinetic bones of milkshape 3d INTO global bone positioning for usage in stepmania? For an average dev probably not. Perhaps its even better to use another software that has more/better scripting support such as blender. Capture the bones from a global axis and convert from there.
But You're right! The animations are super-dated. having the ability to revise animations with pre-existing skeleton anims meta-environments like Second Life and VR Chat perhaps would be optimal and breath new life into such modeling. It's something we wish we had more time to investigate.
I just recently started fiddling around with Blender but I don't have the expertise to do that. I could give it a shot but I'd be walking around a dark room with glassware stacked all over the place with no flashlight. It's a tiny complaint I've had for 20 years now, it's not a big deal if it's never fixed. Oh well. Thanks alot for the reply, btw!
Yeeeah, even doing something like this in the confines of MilkShape3d would require programming skill that at the time I simply didn't possess.. If i had more free time i'd try again in blender by making a standard forward kinetic bone structure but then parent 'floating polys' or bones to the kinetics and record those.. as my math sucks at calculating rotational/distance axises in 3-dimensional space to a global world coordinate.
Once I get more experience I might give this a try. But as far as ripping the dance moves and applying them to the dancers, idk about that. I'm barely learning how to animate a fountain and I'm failing miserably at that. ^^;
Wow, I'm not the only one looking into these characters in 2024!
Some further info from my own investigations: it looks like when they ripped the dances, they didn't just mess up the bone structure. They also messed up some of the dances! For example, Dance0003.bones.txt actually seems to contain 2 separate dances, both 793 frames long.
Some of the dances (0002 and 0004) are 854 frames long instead of the usual 793: those extra frames are the ones that return the character to the rest position.
Dance0009.bones.txt actually seems to be 4 separate WarmUp animations played one after the other.
Dance0010.bones.txt seems to be missing about 60 frames. WarmUp0007.bones.txt (which doesn't loop properly like the other warmups) would slot right in!
Speaking of the Warmup animations: the files are numbered 0001, 0003, 0005, and 0007. Files 0001, 00003, and 0005 actually contain two separate warmup animations (presumably 0002, 0004, and 0006).
There's probably more to find here, but I'm still in the thick of it right now 😅
Quick update on this: I've got a github repo where I've got some characters with a new skeleton based on a common one in MikuMikuDance. I haven't uploaded any of the supporting work, like the modifications I've made to the io_scene_ms3d plugin to make it work with modern versions of blender, or the baseline animations before I had to mangle them for Project Outfox, but the new characters and dances are there, at least. You can find them at https://github.com/Ongion/Dancing-Characters
also one more question, do you know how to apply the default rest position to the model so when i export it in a format that isnt the ms3d ascii file, it doesnt scrunch up into a ball? i feel like you might not know this
Is there a way you can do this on project outfox characters?
A little confused by this. Project Outfox really has no characters when downloading the binary itself. Unless there's a build on there that we didn't see. just a TXT file within the /characters/ folder explaining that for copyright reasons the bone files are not in play and there's no indication if they will provide their own bone standard or not.
As project outfox is a fork of the StepMania 5.3x; Its source temporarily closed for very good reasons (I've seen some of the drama). It holds the same file structure as Stepmania 5.1 . Also, all of the instructions on how to install characters applies on Project Outfox as well.
So if you reverse engineer a stepmania character. The same techniques will hold true for Project Outfox (for now.)
- S
nevermind, i just found out that you can do this with project outfox characters, i just had to dig through the files
Back when we were making stepmania characters we found the closest anim frame that represented a t-pose and exported that in order for us to make our own models. The dance system is something i'd like to revisit in the future in the hopes of porting new dance moves and getting rid of the DDR rip once and for all but that will take a bit of time.
Glad you found your answer though. Good luck in making your own characters!
- S
where did you find that?
im just reading this page for the first time, I have outfox + A3 theme working with all characters and dance stages but I cannot find where the bones.txt files are.. literally doesnt show up when I search within the outfox folder. I have a custom character id really like to get working
It's interesting. We were running outfox during out T620 thin-client review and didn't have any issue with the characters. the bones simply had to go into the root folder where the characters existed and it picked them up right away.
There are official characters from DDR which haven't been put into Stepmania yet like Rhythm & Blues from Japanese Exclusive Title DDR FESTIVAL and Dance Dance Revolution EXTREME US.
Will it be possible for someone to rip their models out of the DDR Games they came from and make them compatible with Stepmania?
Wooow! Thank you! I'm gonna try this out right now!