Brought up by Tai’lahr on the MOUL forums, who had a very good point that not many people actually know what we mean when we say that we “hack” Uru/Plasma. Hopefully an explanation will help to dispel some of the fear, doubt, and uncertainty that is being spread.
Prologue ended in February 2004. With the closing of areas such as the hoods and Ae’gura (which weren’t available in the offline game), some people began to look for ways to access those areas in the offline Ages Beyond Myst. All of Uru’s configuration and game files were encrypted, and started jokingly with the phrase “whatdoyousee”.
The night that Prologue shut down, a user by the name of Anonymous54321 posted a function on the Clockwork Orange BBS (COBBS) board that decrypted these files. The decryption was actually quite easy to figure out: we had the files, and we had UruExplorer.exe. UruExplorer has to decrypt those files when it reads them, so by reading the machine code inside UruExplorer.exe, we could figure out what it did to decrypt the files.
Once the xTEA (whatdoyousee) encryption was broken (which means, we were able to decrypt and re-encrypt the files), we had access to the SDL (State Description Language) system. SDL files store the default state of objects in an Age, such as open doors, barriers, and Journey Cloth visibility. Anything that could be turned on and off in the online Vault could be turned on and off using the SDL files for offline Uru.
After a bit of playing with SDL, some people wanted to look more closely at the game logic, the Python scripts that powered interaction. The process was an interesting one. Again using UruExplorer.exe, people traced to where it loaded the Python.pak file. Then, these people wrote documentation for it, byte by byte, as to what the game loaded.
Despite the fall of COBBS in April 2005, I was able to dig up a copy of the original Python hacking thread. This thread is where Python.pak was first looked at, decrypted, unpacked, and edited; and can be read here.
By the time To D’ni was released for free, COBBS members had already written tools to decrypt and edit the SDL and Python files (UruFun and UruPython were both written by Anonymous54321; UruTweak was written by Marrack; and Kirk had a Java program called WYDS’d).
I didn’t join the scene until shortly before Path of the Shell was released, but around the time of To D’ni came the invention of flymode. Flymode brought a lot more attention to COBBS, some of it positive, and some of it negative. It was really just some additions to Uru’s xKI Python file, which was then recompyled and packed back into Python.pak.
At this time, some people were also wondering if it would be possible to add our own meshes and textures to Uru. They began investigating the PRP files, which held the actual game data. This was a very slow process: the PRP files had a packing format, and contained objects. There were over 300 types of objects, and each object had its own format.
Path of the Shell complicated things a bit, since it added even more objects to the PRP files, and also changed the KI system (which was used as the basis for flymode). But the actual encryption didn’t change, so after examining the changes, we were able to continue making progress.
Aside project that was going on at this time was Alcugs, an open-source server for Uru that was written by Almlys,starting the day that Prologue shut down. When Path of the Shell was released, Alcugs made efforts to support it as well as the original online content. Untìl Uru was released in August 2004, around the same time that Alcugs was made publicly available. Most people initially ran Untìl Uru servers, but those wanting Path of the Shell content ran Alcugs.
During the online stuff, work continued on the PRP files, with IngisKahn writing and releasing PRPExplorer. The first view versions just listed the objects, but support quickly grew to viewing, exporting, and replacing textures. A new era of Uru hacking had been born: Texture hacks.
Unfortunately, the online aspect meant that PRP hacks had to be done offline, so that there were no Vault issues or file version mismatches. But as support for PRP hacks grew (and editors and knowledge about more PRP objects), more people started adding things to their offline games, and some servers even offered extra clothing options to players.
In April 2005, ycikamookow and IngisKahn released a video of an Age that they had built using ycikamookow’s custom 3DS Max exporter. Shortly after, the COBBS server was cracked, and all posts were lost. Luckily most of the documentation from the H’uru wiki was retrieved and reposted.
The Myst V Mac Demo came out in August 2005, and within a few days we had used the MachO executable to break the new AES encryption and begin to figure out the changes to the PRP file format. During this time, we had a brief discussion with Colin Bonstead at Cyan, who wished us luck with the Uru hacking, and said he wished that Cyan could give us some help in our quest to build custom content.
Almlys had also been quietly working on a new project too. A Blender exporter plugin for Uru, which was released in late October 2005. At first, it could create basic geometry. Within weeks support had been added for textures and lights. All of the Blender plugin features depended on the documentation of the PRP object formats.
Over time, tools changed… The PRP Blender plugin became known as PyPRP, which forked in April 2008 to become GoW PyPRP.
PRPExplorer fell mostly to the wayside as Zrax’s libPlasma work allowed us to create tools like PageEditor and PRPShop.
During D’mala, Cyan accepted some small patches from the community and released them as Untìl Uru updates; but many people saw it as “too little, too late”, as some servers had been running with modified content and bugfixes for years.
Untìl Uru‘s global authentication server was shut down, leaving shard owners to either implement their own, or shut down their shards.
Myst Online: Uru Live was released, giving us yet another slightly different PRP packing format, more PRP objects, new encryption methods, but also a better understanding of some PRP objects.
Myst Online: Uru Live spawned the Guilds, and then shut down. A year and a half later we have no further progress on an online Uru, but the tools and documentation for creating custom content have improved dramatically.
So when we say “hacking Uru”, what does it mean?
It means that we are reading the assembly machine code from UruExplorer.exe to find out how it works, and how it reads the PRP objects. Then we are documenting what it reads, and finding out what those values represent.
It means that we are taking existing content and changing it to add new features (such as flymode).
It means that we are using the knowledge we have extracted as a way to write tools that allow us to edit and create content for Plasma.
For some of us, this quest stopped being about Uru and its community a long time ago, the quest now is to understand Plasma and to create new places to explore, ideally in an online environment. To us, an open-source Plasma would allow us to take what we know about the engine and use to it add new functionality and enhance old functionality (when you read the machine code, you tend to see a lot of places where things could be done better, or where bugs could be fixed).
However, without the source code we cannot add new functionality to the actual engine, we can only document its current functionality and use that to create tools.
We can only document its current functionality and use that to create tools
If you are documenting the code, you can re-write as well. The community wants online play, look at the more boring netcode perhaps ?
Great post. Excellent history. Myst Lore and DPWR should duplicate the posting.
Wow, the chaos of the beginning. It was a treat reading that thread from cobbs Dox. If you have anymore I (and I am sure many others) would love to see how Uru had risen from it’s own grave like a phoenix.
It’s a shame that the private forums were completely lost (There were a couple development forums for different projects and the UU Admins group). There was even more discussion of python and server code.
Great timeline and information. Thanks a lot! And good luck for the future.
I look forward to seeing what you guys have done, when I have a resource for accessing it :)
[…] It’s been a long time. Hello, how are you? I’ve been really busy, remembering how I’m a terrible dirty hacker who hates Uru and wants to ruin it for everyone. […]