Spoiler tag

Tuesday, March 1, 2022

First JSRF Custom Level

 Hey there,

About a year ago I was trying to make custom levels for JSRF, I was able to build brand new visual models for the levels and compile the physics collision models too, but there was a part of the collision data I could not figure out, that needed to be calculated, and since it wasn't,  in the new level, you'd just fall through the floor and clip through everything.
So I sought help from others but we couldn't figure it out, at least not how we were trying, through binary/hexadecimal/statistical analysis.

So I recently reached out to Gurten (who made the amazing Blender character model/animation importer) and he figured out the collision mesh triangle data in less than two weeks 😮

His reverse engineer method is through disassembly, which means de-compiling the game's executable/program file aka turning the program's executable binary file into a (massive and convoluted) list of CPU instructions, then analyzing CPU instructions/functions to see how the game loads the files and how it processes the data, easier said than done though.

This technique definitely was the only way to reverse engineer this bit of data about the physics collision 3D meshes of JSRF and people who have the (dis)assembly reverse engineering skills, are hard to come by and they usually have better things to do, luckily Gurten was willing to take the time and help, and he did an amazing job.

Anyways here's the result of the first properly compiled JSRF level:

I may or may not make a blog post later on about the process of how I tried to reverse engineering the level collision data(and failed) + with other people, and finally how Gurten went about it and succeeded, but it'd be a pretty long blog post.

I didn't publish the second blog post part about "how I reverse engineered JSRF" because it quickly got too technical, long and would be boring and pedantic to the reader.
Perhaps I'll make a video with audio commentary and graphic animations explaining the reverse engineering process, the mod tool, and how it evolved over a decade.

Video format with audio would definitely be a more dynamic, concise and a fun format to watch rather than reading a long blog post, but again, it would be a lot of work creating such video, so we'll see.

For now, there's some more work to do on the tool and things to figure out about JSRF, on compiling levels, and also creating a level creator/editor tool to make it more accessible to create levels for JSRF.