Plasma & DirectX: Part I

Today I started a C++ and DirectX summer camp program with Real Programming 4 Kids. It started off well enough. We set up a Win32 project and got right into initializing DirectX. Of course, knowing some C++ and C#, I was able to correct a few errors that the instructor hadn’t noticed (missing #include’s, non-defined variables, etc.). Anyways, after this course I hope to be able to build a C++ game to release for Blue Starlight Productions.

I’m also hoping to be able to convert the C++ knowledge into C# in order to help me with my Plasma stuff.

Plasma:

Once Riven was released, Rand Miller proposed a revolutionary new concept: Allowing fans to visit the city of D’ni in the present and interact with each other in an online world. This idea ruled Cyan’s actions for the next few years.First, Cyan sold the rights to Myst to Presto Studios and UbiSoft. While Myst 3 Exile was in development by Presto; Cyan was working behind the scenes on their secret project. They wrote their game engine from scratch and named it Plasma (1.0). To test the capabilities of their engine, they made a realTime version of Myst, realMYST.

Everything seemed to be going great. realMYST looked wonderful, day and night cycles were working, atmospheric fog effects, everything was perfect. Cyan began set two.

There is no official word on this, but it is known that some of the early renderings were made from the Plasma 1 engine. Parts of the city were designed, and (speculation) Teledahn was designed as well. The vika Age that can be seen in easter eggs at the end of realMYST was built by a Cyan employee to test how well Plasma handled outdoor locations.

At some point, Cyan decided that Plasma 1 wasn’t rendering outdoor scenery properly. It was great for indoors and small details (Sirrus and Achenar’s rooms in Stoneship Age from realMYST are proof of this). They found the HeadSpin company run by Brice Tebbs and bought them out. HeadSpin was a rendering engine to begin with, and Cyan worked hard to add the necessary network code, physics (Havok in Uru), and more. Their modified HeadSpin creation was named Plasma 2.0. All of the Uru Ages were rebuilt and redesigned to suit the improved engine.

Changes to the engine were still happening even as Choru went on, as beta testers will remember that originally there was no first-person view.

Finally Uru: Ages Beyond Myst was released, Uru Live was cancelled, and two expansion packs were released (we all know what happened here). Untìl Uru was later released.

When Cyan started working on Myst V, they wanted to make changes to the Plasma 2.0 engine. First, Myst V needed to be Mac compatible (which ruled out using Havok for physics). Secondly, Uru was using the (now outdated) DirectX 8.0 API. Myst V needed to look better to keep up with current technology, they upgraded to DirectX 9.0c. Thirdly, There was no need for network code in Myst V, so it was commented out and removed. Myst V’s engine was Plasma 2.1.

A glorious day, Uru Live was announced! Immediately, Cyan had to begin making changes to the Plasma engine again. They couldn’t use the Myst V code, because they didn’t have time to rewrite all of the network code. Instead they started impoving the 2.0 code.

Features that are expected to be in Uru Live include DirectX 9.0c for graphics handling. Myst V looks much better than Uru and increased the way shaders and sprites could be used. It will use a different physics engine, definately not Havok because it charged too much money to renew the license, and because it has guaranteed no Mac support. Uru Live will also have many new features, including network code corrections to reduce lag and make everything run smoothly.

It is expected that Uru Live will use a Plasma version 2.2.

The small worlds included on CD with the book Crowthistle uses Plasma 2.05 (No network code, but no rendering improvements either).

Cyan also has a Plasma 2.5, its use is unknown, but might possibly be for Something Else™.

Coming out of that novel, I got Uru: Ages Beyond Myst in April 2004. By that time, Uru Live had ended and I played the game and was done. Searching the Internet one day, I stumbled upon COBBS (Clockwork Orange BBS). This was a forum of Uru Hackers! I fit in perfectly.

Skipping into the future, I am now one of the H’uru IRC junkies and writing my own programs to hack the game files. Some of the projects we’ve worked on include ALCUGS, and PRPExplorer. PRPExplorer was started by an IRC friend from the US, who has lost interest and vanished in recent months. With no one maintaining the source, I decided to take control of the project and expand it.

One of the unique deatures of this project is that it allows you to render a view of the Age without running Uru. Although the preview is nowhere near the same quality; I always considered that to be an important aspect of the program.

As other projects grew and required more resources, we (the Hackers) began digging through the .exe file with IDA and using the disassembly code to unscramble the file formats. I am confident to say that if we wanted to, we could quite easily rewrite almost the entire engine from scratch. As more was uncovered, we learned how the Ages were rendered, how the physics were operated, and how the scripts affected gameplay. Putting that all together is my goal for PRPExplorer.

One thing that can be greatly improved upon is the Age renderer. It uses data that was slowly hacked out of the files, which has been proven incorrect by the assembly code. With the DirectX knowledge that I’m learning from this programming course, I hope to rewrite the renderer and improve the overall stability of the program.

*If your interested about the ALCUGS project and Age creation, try the ALCUGS homepage or the AgeBuilder fora for more information. Also, look for an upcoming blog post about them.*

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s