Level Decompilation Tools
Posted: Mon Oct 02, 2006 10:57 am
Long time no see everyone.
I've pretty much dropped out of the AR scene a while ago, but after being prodded by Andrew I decided to release the tools I wrote for pulling apart and reassembling AR levels. They are pretty hairy, and I don't recommend trying to run them unless you have at least a little experience in programming.
Hopefully someone can take them and either clean them up or use the knowledge they implicitly contain to build some user friendly tools.
Notes:
All of these are pretty rough and ready, they have hard coded paths to my installation of Armadillo run, and the files they manipulate tend to be hard coded as well. You'll need at least Python 2.4 (http://www.python.org/) installed to run them.
BigDillo.py
One of the first scripts I wrote that could generate levels loadable by the game. Reads a valid empty level. Modifies the 'Dillo size and the checksum.
DoubleDillo.py
Much like BigDillo.py. uses and empty level as a base and then modifies it to include multiple 'Dillos
textsum.py
Like above but adds a tutorial style text string to the level.
checksumtest.py
Ignore this. A script I was using at one early point when trying to understand the checksum. included only for completeness.
decompile.py
Another stepping stone on the way to understanding the level format.
DilloStuff.py
Huzzah an (almost) working library that can read and write 'Dillo levels. The only piece that doesn't work correctly (as far as I can remember) is calculating the costs of stretched/compressed links.
Dump.py
Uses DilloStuff to dump text representations of a list of levels
genPicture.py
A partially complete script that given a level name generates an image of it. (was useful during debugging to confirm that I was interpreting things correctly). To make it really useful it needs a bit of work, especially drawing 'Dillos and portals as well as calculating the image transforms based on the level boundaries. Uses the Python Imaging Library (http://www.pythonware.com/products/pil/) to create the image.
MakeRuler.py
useful script that demonstrates using the DilloStuff Library to generate a level. (In this case I was using it to try and measure the stretchiness/cost of various materials)
StaticTest.py
Script that Loads a solution using the DilloStuff library and then checks it against a number of possible cheats that can be detected statically (i.e just by analyzing the level, no running of a physics simulation). The main class of cheats that it catches is where the original level has been modified before starting on the solution, or in fact just using the level editor to solve the level. Where it currently falls over is on the budget (a pretty significant failing). It can't correctly work out the cost of tensioned materials. someone with more patience than I may want to fix this.
I've pretty much dropped out of the AR scene a while ago, but after being prodded by Andrew I decided to release the tools I wrote for pulling apart and reassembling AR levels. They are pretty hairy, and I don't recommend trying to run them unless you have at least a little experience in programming.
Hopefully someone can take them and either clean them up or use the knowledge they implicitly contain to build some user friendly tools.
Notes:
All of these are pretty rough and ready, they have hard coded paths to my installation of Armadillo run, and the files they manipulate tend to be hard coded as well. You'll need at least Python 2.4 (http://www.python.org/) installed to run them.
BigDillo.py
One of the first scripts I wrote that could generate levels loadable by the game. Reads a valid empty level. Modifies the 'Dillo size and the checksum.
DoubleDillo.py
Much like BigDillo.py. uses and empty level as a base and then modifies it to include multiple 'Dillos
textsum.py
Like above but adds a tutorial style text string to the level.
checksumtest.py
Ignore this. A script I was using at one early point when trying to understand the checksum. included only for completeness.
decompile.py
Another stepping stone on the way to understanding the level format.
DilloStuff.py
Huzzah an (almost) working library that can read and write 'Dillo levels. The only piece that doesn't work correctly (as far as I can remember) is calculating the costs of stretched/compressed links.
Dump.py
Uses DilloStuff to dump text representations of a list of levels
genPicture.py
A partially complete script that given a level name generates an image of it. (was useful during debugging to confirm that I was interpreting things correctly). To make it really useful it needs a bit of work, especially drawing 'Dillos and portals as well as calculating the image transforms based on the level boundaries. Uses the Python Imaging Library (http://www.pythonware.com/products/pil/) to create the image.
MakeRuler.py
useful script that demonstrates using the DilloStuff Library to generate a level. (In this case I was using it to try and measure the stretchiness/cost of various materials)
StaticTest.py
Script that Loads a solution using the DilloStuff library and then checks it against a number of possible cheats that can be detected statically (i.e just by analyzing the level, no running of a physics simulation). The main class of cheats that it catches is where the original level has been modified before starting on the solution, or in fact just using the level editor to solve the level. Where it currently falls over is on the budget (a pretty significant failing). It can't correctly work out the cost of tensioned materials. someone with more patience than I may want to fix this.