<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://myst.dustbird.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndyLegate</id>
	<title>UamWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://myst.dustbird.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AndyLegate"/>
	<link rel="alternate" type="text/html" href="http://myst.dustbird.net/wiki/Special:Contributions/AndyLegate"/>
	<updated>2026-05-12T19:58:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=GUI_Popups&amp;diff=2135</id>
		<title>GUI Popups</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=GUI_Popups&amp;diff=2135"/>
		<updated>2011-12-10T02:18:42Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: /* Let&amp;#039;s Add Some Stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GUI Pop Ups are things that appear on our screen that are not the normal game camera view.&lt;br /&gt;
&lt;br /&gt;
For example, when you call up your KI menu, the game menu or your Relto Book are examples of a GUI Pop Up.&lt;br /&gt;
&lt;br /&gt;
You also have things like: Linking books, the Bahro Linking Stones, Journals, Notes, Maps and Warranty cards.&lt;br /&gt;
&lt;br /&gt;
Some of the GUI Pop Ups are quite complex (the KI menu), some are very simple (A note left on a desk). This tutorial will show you how to create a simple pop up.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===It&amp;#039;s Time To Add Another PRP File!===&lt;br /&gt;
&lt;br /&gt;
Most GUI Pop Ups have their very own prp file. There is a very good reason for this that I will show you later on. It has something to do with Python.&lt;br /&gt;
&lt;br /&gt;
To add an additional prp file to your Age, you will have to go to your PlasmaTest\dat folder (or what ever you set your output folder to in the PlasmaMAX2.ini file. There you will find your Age that you&amp;#039;ve been exporting. Make a back up of these files, and then delete them.&lt;br /&gt;
&lt;br /&gt;
Yah, you read right. DELETE them! You can not edit the .age file that is there now. It is no longer the text file you created to set up your Age, nor can you edit with a special tool like PlasmaShop or UruFun, as Max will get upset about this. So we&amp;#039;re just going to create another one.&lt;br /&gt;
&lt;br /&gt;
Open up your Notepad and create your file again, just like you did to start the Age, only this time, add a line like you see in my pic below:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia30.jpg]]&lt;br /&gt;
&lt;br /&gt;
Where I have circled in red is where you&amp;#039;ll add your extra prp file. The name of mine is &amp;quot;tryingmap&amp;quot;, you need to make up your own name and put it there. Make sure that you add the &amp;quot;,1&amp;quot; to the end of your line. For each prp file you add, you need to increment them up.&lt;br /&gt;
&lt;br /&gt;
Okay now save your file like you would normally do for setting up and Age, and then open up Max and load your Age up, we&amp;#039;re good to get started.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Let&amp;#039;s Add Some Stuff===&lt;br /&gt;
&lt;br /&gt;
Okay, we need to add some stuff here to our scene. We&amp;#039;ll be adding the object that we see in game while exploring (IE the note or map or pic, etc) and place it in our scene where the avatar can find it. Texture it with something you&amp;#039;d like to see up close and personal.&lt;br /&gt;
&lt;br /&gt;
In my example here, I&amp;#039;ve made a plane and textured it with a photo:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now add it to your mainroom PageInfo and don&amp;#039;t worry about anything else for it right now, let&amp;#039;s make our Region now:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia8.jpg]]&lt;br /&gt;
&lt;br /&gt;
You need to make a region that the avatar will enter to click on the object that is going to be your popup.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EDIT 4/24/2010: I&amp;#039;d like to point out that we do not need a region to make an object a clickable. We are only using the region as a CONTROL to make sure the Avatar is close to the object we want to click on. It would not make any sense to have the GUI Pop up happen from across the room. However, please note, you can make an object clickable without using regions (info provided by GPNMilano from the GoW ).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Now add it to your mainroom PageInfo, and while in the Component Manager, click on New &amp;gt; Detector &amp;gt; Region Sensor:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia9.jpg]]&lt;br /&gt;
&lt;br /&gt;
Over in the Component Utils, you don&amp;#039;t need to change anything, and can go with the defaults for now:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia10.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now we need to go outside our Age, to a place that the Avatar could not normally get to. You are going to make 3 things here:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia2.jpg]]&lt;br /&gt;
&lt;br /&gt;
First make 2 planes, one bigger than the other. Have the bigger one rest a little bit below the smaller one. Apply the same texture as your object that your avatar is going to click on. On the larger plane, you need to apply a texture that is COMPLETELY transparent.&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now we need to make a camera that points at the 2 planes you just made. Click on your Create Tab and select camera, Target, and then make the camera. Make sure you rename it to something useful:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia4.jpg]]&lt;br /&gt;
&lt;br /&gt;
Orientate you camera so that it points to your 2 planes. Make sure that the target view extends down just past the 2 planes. &lt;br /&gt;
&lt;br /&gt;
[[File:Guidia5.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now we need to adjust the Camera&amp;#039;s view as it sees the planes so with your camera selected, right click in the screen and select &amp;quot;Set View to Selected Camera&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia6.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now you can use the camera settings to adjust your camera View. The key is to make sure you &amp;quot;transparent&amp;quot; plane helps fill the screen. You don&amp;#039;t want the &amp;quot;Void&amp;quot; to be visable in the camera. You can see I also have my view slightly canted:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia7.jpg]]&lt;br /&gt;
&lt;br /&gt;
Once you have your view set up, you can hit the &amp;quot;T&amp;quot; key in the 3D view to snap out of the Camera view.&lt;br /&gt;
&lt;br /&gt;
Now we have something important to do: we need to set the PageInfo on these 4 objects....but it&amp;#039;s NOT the PageInfo that was set on all the other objects in your Age, so if you already applied PageInfo to your 2 planes, your Camera and Camera.Target, you need to go back and remove them.&lt;br /&gt;
&lt;br /&gt;
You can either select each one of those things, or select them all at once, but in either case it&amp;#039;s important to add a 2nd PageInfo to your Component Manager:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia18.jpg]]&lt;br /&gt;
&lt;br /&gt;
This one will default to the name: PageInfo02. You can leave it at that if you want. You need to attach this to your Camera, the camera&amp;#039;s target, and the 2 planes that we made.&lt;br /&gt;
&lt;br /&gt;
Then for the PageInfo on each object that you&amp;#039;ve assigned PageInfo02 to, you need to go to the Component Utils and select it, and change the &amp;quot;Page&amp;quot; to the name of the page we added to our .age file!&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia20.jpg]]&lt;br /&gt;
&lt;br /&gt;
Okay, let&amp;#039;s go back to the Object that our Avatar will click on. Select it, and call up the Component Manager. Click on New &amp;gt; Detector &amp;gt; Clickable:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia11.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now go over and select it in our Component Utils:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia12.jpg]]&lt;br /&gt;
&lt;br /&gt;
Where you see in my pic where I have circled in Red, click on this button and then click on the region we made.&lt;br /&gt;
&lt;br /&gt;
Now in the Component Manager, click on New &amp;gt; Logic &amp;gt; Python File &lt;br /&gt;
&lt;br /&gt;
[[File:Guidia13.jpg]]&lt;br /&gt;
&lt;br /&gt;
Go over to the Utils tab and select it. We need to tell it what file to use:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia14.jpg]]&lt;br /&gt;
&lt;br /&gt;
In the drop down box, you&amp;#039;ll want to select the file &amp;quot;xDialogToggle&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A new roll out box will appear below. Click on the button just below where it says &amp;quot;clickable&amp;quot;, and a new box will pop up on your screen:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia15.jpg]]&lt;br /&gt;
&lt;br /&gt;
You need to select the clickable you assigned to the object that that avatar will click on.&lt;br /&gt;
&lt;br /&gt;
Then go back to the rollout box. In the box just below where it says &amp;quot;Toggle dialog - by name&amp;quot;, you need to type in the name of the new prp file we made for the Age:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia16.jpg]]&lt;br /&gt;
&lt;br /&gt;
Okay, now go back over to where we created our 2 planes and camera.&lt;br /&gt;
&lt;br /&gt;
Select the camera and call up the Component Manager. Click on New &amp;gt; Camera &amp;gt; Fixed Camera&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia17.jpg]]&lt;br /&gt;
&lt;br /&gt;
You don&amp;#039;t have to set anything for this component.&lt;br /&gt;
&lt;br /&gt;
Now in the Component Manager, click on New &amp;gt; GUI &amp;gt; GUI ID Tag&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia21.jpg]]&lt;br /&gt;
&lt;br /&gt;
Over in the Component Utils, select the GUI ID Tag (have a good read at the warning, heh), and then in the box where it says &amp;quot;Tag Konstant&amp;quot; you need to type in the number: 99&lt;br /&gt;
&lt;br /&gt;
Now go back to the Component Manager and click on New &amp;gt; GUI &amp;gt; GUI Dialog:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia23.jpg]]&lt;br /&gt;
&lt;br /&gt;
Go over to the Component Utils and select our GUI Dialog component. You only need to do a few things here so don&amp;#039;t freak out:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia24.jpg]]&lt;br /&gt;
&lt;br /&gt;
In the GUI Dialog roll out box, Make sure Age: is the name of your Age and that Name: is the name of that new prp file we made. Also, put a check mark where it says &amp;quot;Modal&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Edit 12/09/2011: &amp;quot;Modal&amp;quot; allows us to have a GUI Pop Up without a Click Off panel. A Click Off panel would be a invisible panel located just behind our GUI pop up and allows the player to click on it to have the GUI pop up go away. It also keeps the player from clicking on other objects that might be visible. However, if we put a check mark next to &amp;quot;Modal&amp;quot; we enable it, and this allows us to simply make the GUI pop up itself what we click on to have it go back down again. It also keeps the player from clicking on anything else that might be visible, and from navigating the avatar while the GUI Pop up is visible. If you are attempting to make a GUI like a Telescope, the Teledahn Gun, or something like the Er&amp;#039;cana pellet ovens, DO NOT PUT A CHECK MARK HERE! If you do, your buttons in your GUI will not work.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Then go up to the Tag Konstant box and type in &amp;quot;99&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
Select the large Plane that you put your transparent texture on.&lt;br /&gt;
&lt;br /&gt;
Now go back to the Component Manager and click on New &amp;gt; Detector &amp;gt; Clickable (what? when the GUI pops up, we click on it to lay it back down, remember?).&lt;br /&gt;
&lt;br /&gt;
Over in the Component Utils, select your clickable and set it up like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia25.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now go back to the Component Manager, but don&amp;#039;t click on new. Instead, open it up and find your GUI ID Tag that you assigned to the camera. Select it, and assign it to your plane too.&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia26.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now go up to the GUI Dialog, and do the same thing. Select the one we assigned to the Camera, and assign it to the plane too.&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia27.jpg]]&lt;br /&gt;
&lt;br /&gt;
Okay, NOW we can add something new: click on New &amp;gt; GUI &amp;gt; GUI Button&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia28.jpg]]&lt;br /&gt;
&lt;br /&gt;
Go over to the Component Utils Tab and select the GUI Button we just assigned to the plane:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia29.jpg]]&lt;br /&gt;
&lt;br /&gt;
Again, don&amp;#039;t freak out, the only thing you should concern yourself with is where I circled in red. Make sure that one is selected.&lt;br /&gt;
&lt;br /&gt;
And that&amp;#039;s it. You have successfully created a simple GUI pop up. So export, your Age and give it a try. You should have something like my video below:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=q9TYIGEsph0 GUI Popup Video]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Return To: [[Andy&amp;#039;s Max Tutorials]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=GUI_Popups&amp;diff=2134</id>
		<title>GUI Popups</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=GUI_Popups&amp;diff=2134"/>
		<updated>2011-12-10T02:16:43Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: /* Let&amp;#039;s Add Some Stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GUI Pop Ups are things that appear on our screen that are not the normal game camera view.&lt;br /&gt;
&lt;br /&gt;
For example, when you call up your KI menu, the game menu or your Relto Book are examples of a GUI Pop Up.&lt;br /&gt;
&lt;br /&gt;
You also have things like: Linking books, the Bahro Linking Stones, Journals, Notes, Maps and Warranty cards.&lt;br /&gt;
&lt;br /&gt;
Some of the GUI Pop Ups are quite complex (the KI menu), some are very simple (A note left on a desk). This tutorial will show you how to create a simple pop up.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===It&amp;#039;s Time To Add Another PRP File!===&lt;br /&gt;
&lt;br /&gt;
Most GUI Pop Ups have their very own prp file. There is a very good reason for this that I will show you later on. It has something to do with Python.&lt;br /&gt;
&lt;br /&gt;
To add an additional prp file to your Age, you will have to go to your PlasmaTest\dat folder (or what ever you set your output folder to in the PlasmaMAX2.ini file. There you will find your Age that you&amp;#039;ve been exporting. Make a back up of these files, and then delete them.&lt;br /&gt;
&lt;br /&gt;
Yah, you read right. DELETE them! You can not edit the .age file that is there now. It is no longer the text file you created to set up your Age, nor can you edit with a special tool like PlasmaShop or UruFun, as Max will get upset about this. So we&amp;#039;re just going to create another one.&lt;br /&gt;
&lt;br /&gt;
Open up your Notepad and create your file again, just like you did to start the Age, only this time, add a line like you see in my pic below:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia30.jpg]]&lt;br /&gt;
&lt;br /&gt;
Where I have circled in red is where you&amp;#039;ll add your extra prp file. The name of mine is &amp;quot;tryingmap&amp;quot;, you need to make up your own name and put it there. Make sure that you add the &amp;quot;,1&amp;quot; to the end of your line. For each prp file you add, you need to increment them up.&lt;br /&gt;
&lt;br /&gt;
Okay now save your file like you would normally do for setting up and Age, and then open up Max and load your Age up, we&amp;#039;re good to get started.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Let&amp;#039;s Add Some Stuff===&lt;br /&gt;
&lt;br /&gt;
Okay, we need to add some stuff here to our scene. We&amp;#039;ll be adding the object that we see in game while exploring (IE the note or map or pic, etc) and place it in our scene where the avatar can find it. Texture it with something you&amp;#039;d like to see up close and personal.&lt;br /&gt;
&lt;br /&gt;
In my example here, I&amp;#039;ve made a plane and textured it with a photo:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now add it to your mainroom PageInfo and don&amp;#039;t worry about anything else for it right now, let&amp;#039;s make our Region now:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia8.jpg]]&lt;br /&gt;
&lt;br /&gt;
You need to make a region that the avatar will enter to click on the object that is going to be your popup.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;EDIT 4/24/2010: I&amp;#039;d like to point out that we do not need a region to make an object a clickable. We are only using the region as a CONTROL to make sure the Avatar is close to the object we want to click on. It would not make any sense to have the GUI Pop up happen from across the room. However, please note, you can make an object clickable without using regions (info provided by GPNMilano from the GoW ).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Now add it to your mainroom PageInfo, and while in the Component Manager, click on New &amp;gt; Detector &amp;gt; Region Sensor:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia9.jpg]]&lt;br /&gt;
&lt;br /&gt;
Over in the Component Utils, you don&amp;#039;t need to change anything, and can go with the defaults for now:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia10.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now we need to go outside our Age, to a place that the Avatar could not normally get to. You are going to make 3 things here:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia2.jpg]]&lt;br /&gt;
&lt;br /&gt;
First make 2 planes, one bigger than the other. Have the bigger one rest a little bit below the smaller one. Apply the same texture as your object that your avatar is going to click on. On the larger plane, you need to apply a texture that is COMPLETELY transparent.&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now we need to make a camera that points at the 2 planes you just made. Click on your Create Tab and select camera, Target, and then make the camera. Make sure you rename it to something useful:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia4.jpg]]&lt;br /&gt;
&lt;br /&gt;
Orientate you camera so that it points to your 2 planes. Make sure that the target view extends down just past the 2 planes. &lt;br /&gt;
&lt;br /&gt;
[[File:Guidia5.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now we need to adjust the Camera&amp;#039;s view as it sees the planes so with your camera selected, right click in the screen and select &amp;quot;Set View to Selected Camera&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia6.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now you can use the camera settings to adjust your camera View. The key is to make sure you &amp;quot;transparent&amp;quot; plane helps fill the screen. You don&amp;#039;t want the &amp;quot;Void&amp;quot; to be visable in the camera. You can see I also have my view slightly canted:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia7.jpg]]&lt;br /&gt;
&lt;br /&gt;
Once you have your view set up, you can hit the &amp;quot;T&amp;quot; key in the 3D view to snap out of the Camera view.&lt;br /&gt;
&lt;br /&gt;
Now we have something important to do: we need to set the PageInfo on these 4 objects....but it&amp;#039;s NOT the PageInfo that was set on all the other objects in your Age, so if you already applied PageInfo to your 2 planes, your Camera and Camera.Target, you need to go back and remove them.&lt;br /&gt;
&lt;br /&gt;
You can either select each one of those things, or select them all at once, but in either case it&amp;#039;s important to add a 2nd PageInfo to your Component Manager:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia18.jpg]]&lt;br /&gt;
&lt;br /&gt;
This one will default to the name: PageInfo02. You can leave it at that if you want. You need to attach this to your Camera, the camera&amp;#039;s target, and the 2 planes that we made.&lt;br /&gt;
&lt;br /&gt;
Then for the PageInfo on each object that you&amp;#039;ve assigned PageInfo02 to, you need to go to the Component Utils and select it, and change the &amp;quot;Page&amp;quot; to the name of the page we added to our .age file!&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia20.jpg]]&lt;br /&gt;
&lt;br /&gt;
Okay, let&amp;#039;s go back to the Object that our Avatar will click on. Select it, and call up the Component Manager. Click on New &amp;gt; Detector &amp;gt; Clickable:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia11.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now go over and select it in our Component Utils:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia12.jpg]]&lt;br /&gt;
&lt;br /&gt;
Where you see in my pic where I have circled in Red, click on this button and then click on the region we made.&lt;br /&gt;
&lt;br /&gt;
Now in the Component Manager, click on New &amp;gt; Logic &amp;gt; Python File &lt;br /&gt;
&lt;br /&gt;
[[File:Guidia13.jpg]]&lt;br /&gt;
&lt;br /&gt;
Go over to the Utils tab and select it. We need to tell it what file to use:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia14.jpg]]&lt;br /&gt;
&lt;br /&gt;
In the drop down box, you&amp;#039;ll want to select the file &amp;quot;xDialogToggle&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A new roll out box will appear below. Click on the button just below where it says &amp;quot;clickable&amp;quot;, and a new box will pop up on your screen:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia15.jpg]]&lt;br /&gt;
&lt;br /&gt;
You need to select the clickable you assigned to the object that that avatar will click on.&lt;br /&gt;
&lt;br /&gt;
Then go back to the rollout box. In the box just below where it says &amp;quot;Toggle dialog - by name&amp;quot;, you need to type in the name of the new prp file we made for the Age:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia16.jpg]]&lt;br /&gt;
&lt;br /&gt;
Okay, now go back over to where we created our 2 planes and camera.&lt;br /&gt;
&lt;br /&gt;
Select the camera and call up the Component Manager. Click on New &amp;gt; Camera &amp;gt; Fixed Camera&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia17.jpg]]&lt;br /&gt;
&lt;br /&gt;
You don&amp;#039;t have to set anything for this component.&lt;br /&gt;
&lt;br /&gt;
Now in the Component Manager, click on New &amp;gt; GUI &amp;gt; GUI ID Tag&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia21.jpg]]&lt;br /&gt;
&lt;br /&gt;
Over in the Component Utils, select the GUI ID Tag (have a good read at the warning, heh), and then in the box where it says &amp;quot;Tag Konstant&amp;quot; you need to type in the number: 99&lt;br /&gt;
&lt;br /&gt;
Now go back to the Component Manager and click on New &amp;gt; GUI &amp;gt; GUI Dialog:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia23.jpg]]&lt;br /&gt;
&lt;br /&gt;
Go over to the Component Utils and select our GUI Dialog component. You only need to do a few things here so don&amp;#039;t freak out:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia24.jpg]]&lt;br /&gt;
&lt;br /&gt;
In the GUI Dialog roll out box, Make sure Age: is the name of your Age and that Name: is the name of that new prp file we made. Also, put a check mark where it says &amp;quot;Modal&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Edit 12/09/2011: &amp;quot;Modal&amp;quot; allows us to have a GUI Pop Up without a Click Off panel. A Click Off panel would be a invisible panel located just behind our GUI pop up and allows the player to click on it to have the GUI pop up go away. It also keeps the player from clicking on other objects that might be visible. However, if we put a check mark next to &amp;quot;Modal&amp;quot; we enable it, and this allows us to simply make the GUI pop up itself what we click on to have it go back down again. It also keeps the player from clicking on anything else that might be visible, and from navigating the avatar while the GUI Pop up is visible.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Then go up to the Tag Konstant box and type in &amp;quot;99&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
Select the large Plane that you put your transparent texture on.&lt;br /&gt;
&lt;br /&gt;
Now go back to the Component Manager and click on New &amp;gt; Detector &amp;gt; Clickable (what? when the GUI pops up, we click on it to lay it back down, remember?).&lt;br /&gt;
&lt;br /&gt;
Over in the Component Utils, select your clickable and set it up like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia25.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now go back to the Component Manager, but don&amp;#039;t click on new. Instead, open it up and find your GUI ID Tag that you assigned to the camera. Select it, and assign it to your plane too.&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia26.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now go up to the GUI Dialog, and do the same thing. Select the one we assigned to the Camera, and assign it to the plane too.&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia27.jpg]]&lt;br /&gt;
&lt;br /&gt;
Okay, NOW we can add something new: click on New &amp;gt; GUI &amp;gt; GUI Button&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia28.jpg]]&lt;br /&gt;
&lt;br /&gt;
Go over to the Component Utils Tab and select the GUI Button we just assigned to the plane:&lt;br /&gt;
&lt;br /&gt;
[[File:Guidia29.jpg]]&lt;br /&gt;
&lt;br /&gt;
Again, don&amp;#039;t freak out, the only thing you should concern yourself with is where I circled in red. Make sure that one is selected.&lt;br /&gt;
&lt;br /&gt;
And that&amp;#039;s it. You have successfully created a simple GUI pop up. So export, your Age and give it a try. You should have something like my video below:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=q9TYIGEsph0 GUI Popup Video]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Return To: [[Andy&amp;#039;s Max Tutorials]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Importing_Blender_Objects_To_Max&amp;diff=2123</id>
		<title>Importing Blender Objects To Max</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Importing_Blender_Objects_To_Max&amp;diff=2123"/>
		<updated>2011-11-22T12:49:46Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: /* Getting The Tools...... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You may ask yourself: Why in the world would I want to build stuff in Blender and then export it to use in Max?&lt;br /&gt;
&lt;br /&gt;
It&amp;#039;s a good question. Why WOULD anyone be crazy enough to do that?&lt;br /&gt;
Well I for one, am crazy enough to do that. It&amp;#039;s because I got so used to using Blender to build things, that I still to this day build many of my rendered objects and terrains in Blender.&lt;br /&gt;
&lt;br /&gt;
Another good reason is if you have a Age that you built before in Blender (or were still doing so before switching to Max), you may want to get it from Blender to Max so you can use Cyan&amp;#039;s Plugin. &lt;br /&gt;
&lt;br /&gt;
That or you could start all over from scratch in Max........What? What&amp;#039;s that? Did I just hear a lot of groaning? Don&amp;#039;t worry! There is a way to export an ENTIRE Age that you may have built in Blender to Max....&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Exporting From Blender==&lt;br /&gt;
&lt;br /&gt;
There are several different ways that one can use to go about this. The method I&amp;#039;ll be explaining here I refer to as the &amp;quot;FBX Method&amp;quot;&lt;br /&gt;
GPNMilano first brought this up as a way to export objects from Blender so that you can import them into Max. The nice thing about using this method, is the fact that you export multiple objects (a whole Age if you want to), and they will be kept separate, maintaining their UV mapping.&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;Getting The Tools......&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
There are 2 things that you will need in order to do this. You need the FBX Plugin for 3DS Max, and you will need the FBX Converter.&lt;br /&gt;
&lt;br /&gt;
The FBX Plugin for 3DS Max is what allows you to import FBX files into your scene in Max. Now with Open Source, Cyan&amp;#039;s Plugin is available for more recent versions of 3ds Max. As such, I am listing links for the plugin for each version of Max:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Please note: all these plugins are for 32 bit version of Max, as only the 32 bit version will work with Cyan&amp;#039;s Plugin&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/FBX200611_1_3DSMAX70_WIN_ENU.exe FBX Plugin For Max 7.0]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/fbx200611_2_3dsmax80_win_enu.exe FBX Plugin For Max 8.0]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/fbx200611_2_3dsmax90_win_enu.exe FBX Plugin For Max 9.0]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/fbx20093_3dsmax2009_win.exe FBX Plugin For Max 2009]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/fbx20102_1_3dsmax2010_win.exe FBX Plugin For Max 2010]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/fbx20113_1_3dsmax2011_win.exe FBX Plugin For Max 2011]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/fbx20122_3dsmax2012_win.exe FBX Plugin For Max 2012]&lt;br /&gt;
&lt;br /&gt;
Please know that at this time there is no Plasma Plugin for Max 9.0 or Max 2009 at this time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The FBX Converter will take the FBX file that you export from Blender, and convert it to a version that Max can handle. &lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/FBX200611_1_CONVERTER_WIN.exe FBX Converter for Max 7.0]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/FBX200611_1_CONVERTER_WIN.exe FBX Converter for Max 8.0]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/fbx200611_2_converter_win.exe FBX Converter for Max 9.0]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/fbx20093_converter_win.exe FBX Converter for Max 2009]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/fbx20102_converter_win.exe FBX Converter for Max 2010]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/fbx20113_1_converter_win.exe FBX Converter for Max 2011]&lt;br /&gt;
&lt;br /&gt;
[http://images.autodesk.com/adsk/files/fbx20122_converter_win.exe FBX Converter for Max 2012]&lt;br /&gt;
&lt;br /&gt;
Once you have downloaded those 2 files, install them. Then you&amp;#039;ll be ready to use them.&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;Going From Blender To Max&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
You may be asking yourself: why do this? Why not just build everything in Max?&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s a good question. And really, you should take the time to learn how to make things from scratch in Max.&lt;br /&gt;
&lt;br /&gt;
But, there are several reasons you may need to import things from Blender to Max:&lt;br /&gt;
&lt;br /&gt;
It may be that you like to build your stuff in Blender, because you&amp;#039;ve gotten so used to it&amp;#039;s interface and how things work there, but at the same time, you desire to use Cyan&amp;#039;s Plugin with Max to actually build your Age with.&lt;br /&gt;
&lt;br /&gt;
It may be that you had a LOT of work put into an Age in Blender, but now you are wanting to bring it into Max and use Cyan&amp;#039;s Plugin to make the Age.&lt;br /&gt;
&lt;br /&gt;
It could be that someone else is making stuff for you, or has put objects in a repository, but they are Blender Objects, and you want to get them into Max.&lt;br /&gt;
&lt;br /&gt;
So there are many reasons.&lt;br /&gt;
&lt;br /&gt;
However, and you need to brace yourself for this:&lt;br /&gt;
&lt;br /&gt;
While the FBX method will allow you to import an entire Age from Blender to Max, you will have to reapply the Materials and their textures. However you won&amp;#039;t have to re-do the UV mapping.&lt;br /&gt;
All the ALCScripting that you had in Blender for use with the PyPRP exporter for making Ages will be gone. But that&amp;#039;s okay, because applying Plasma Components to your objects in Max is very EASY. &lt;br /&gt;
&lt;br /&gt;
So let&amp;#039;s get started....&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First you need to THINK about what it is you are wanting to do:&lt;br /&gt;
&lt;br /&gt;
Are you exporting a single object? A few objects? Or is it an entire Age?&lt;br /&gt;
&lt;br /&gt;
The reason that you need to think about this, is because when you import the FBX file into Max, your objects will be very &amp;quot;ghost&amp;quot; looking (very transparent), until you give them a material and texture again. &lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re importing just 1 or a few objects, that won&amp;#039;t be a problem. But if you are trying to import an entire Age, you&amp;#039;ll end up loosing things as you texture others. You can always find them by hitting the &amp;quot;H&amp;quot; key while in the scene view and a list of all the objects will pop up.......and that will help you find what you&amp;#039;re missing....that&amp;#039;s IF you took the time to rename all your objects in Blender.....else what you&amp;#039;ll have is a list of: &lt;br /&gt;
&lt;br /&gt;
 Box01&lt;br /&gt;
 Box03&lt;br /&gt;
 Box04&lt;br /&gt;
 Box05&lt;br /&gt;
 Cylinder02&lt;br /&gt;
 Cylinder03&lt;br /&gt;
 etc, etc, etc.&lt;br /&gt;
&lt;br /&gt;
So if you&amp;#039;re going to import a entire Age, I would recommend breaking it down into smaller sections (selecting a limited amount of objects to export) in Blender, and export them one at a time.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note: there is another good reason to always give your objects unique names. If you leave things labeled like the above list, later down the road, if you build something else in Blender and want to import it into the same Age in Max, if you again, left the names, you&amp;#039;ll have a big error trying to import it into Max. Having 2 seperate objects with the same name will keep the import from happening. ALWAYS give your objects unique names!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
So you&amp;#039;ve got your object, or objects selected in Blender that you want to export. Simply go up and click on File &amp;gt; Export &amp;gt; Autodesk FBX (.fbx) in Blender:&lt;br /&gt;
&lt;br /&gt;
[[File:Expimp1.jpg]]&lt;br /&gt;
&lt;br /&gt;
A new box will pop up. Look at the top of this box, as it&amp;#039;s asking you if you want to export just the objects you have selected, or the entire scene. Default is the selected objects.&lt;br /&gt;
I don&amp;#039;t normally mess with anything here and just click on the Export button at the bottom:&lt;br /&gt;
&lt;br /&gt;
[[File:Expimp2.jpg]]&lt;br /&gt;
&lt;br /&gt;
A directory will show up, asking you to name your FBX file and what folder to put it in. Once you have done that, you have exported your objects or Age to an FBX file. Please note, that if you do a entire Age, it can take a few minutes to export!&lt;br /&gt;
&lt;br /&gt;
You are done with Blender at this point.&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;Using The FBX Converter.....&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
If you were to load up Max and try to import the FBX file you just exported from Blender, you&amp;#039;ll mind that Max will crash on you. That is because the FBX version that Blender exports is not compatible with 3DS Max 7.0&lt;br /&gt;
So we need to use the FBX Converter you just installed.&lt;br /&gt;
&lt;br /&gt;
So load up the FBX Converter and take a look at my picture below:&lt;br /&gt;
&lt;br /&gt;
[[File:Expimp3.jpg]]&lt;br /&gt;
&lt;br /&gt;
First, pay attention to the 3 tabs located up top. You have &amp;quot;Convert To FBX&amp;quot;, &amp;quot;Convert From FBX&amp;quot;, and &amp;quot;Convert FBX to FBX&amp;quot;&lt;br /&gt;
It&amp;#039;s that 3rd tab that you&amp;#039;ll want: &amp;quot;Convert FBX to FBX&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you are in the right tab, go down and click on the &amp;quot;Add&amp;quot; button. This will open up a directory tree. You need to navigate to the folder where you exported your FBX file from Blender, and select that file.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note: You can have multiple files here, but if you are converting like a whole Age, I don&amp;#039;t recommend it, as the conversion is going to take a long time.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Once you&amp;#039;ve added your exported file, you will see it appear in the top box (where my red arrow is). Sometimes, especially if you exported a whole Age, or lots of objects, it will take a few minutes to appear (I&amp;#039;ve had one take 20 minutes, but that was a HUGE age file I was converting).&lt;br /&gt;
The point is, you CAN NOT do anything else until you see your file appear there.&lt;br /&gt;
Once it has, take a look again. See where my green arrow in the picture above is? Notice how it&amp;#039;s putting the converted FBX file in a folder marked &amp;quot;V5&amp;quot; ? This is automatic, you don&amp;#039;t need to create that folder, the converter will do it for you. The reason this is important is: the FBX Converter will take your fbx file from Blender, convert it, and then save the converted fbx file to a folder called &amp;quot;V5&amp;quot; THAT WILL NOW BE LOCATED AS A SUB FOLDER IN THE FOLDER YOU HAD THE ORIGINAL FBX FILE IN!!!&lt;br /&gt;
&lt;br /&gt;
Sorry, not yelling, just making sure you understand that. Later, when you are in Max and go to import, if you forget this, you&amp;#039;ll try to import the unconverted FBX file instead, and Max will crash.&lt;br /&gt;
&lt;br /&gt;
Now you can go down and click on the &amp;quot;Convert&amp;quot; button at the bottom:&lt;br /&gt;
&lt;br /&gt;
[[File:Fbx4.jpg]]&lt;br /&gt;
&lt;br /&gt;
You need to wait for the message at the very bottom of the screen to show up. You should have &amp;quot;0&amp;quot; errors. If you see a number other than 0, something is wrong, and you need to go back and try exporting from Blender again.&lt;br /&gt;
The conversion process could take a LONG time if you have a very large Age you are converting.&lt;br /&gt;
&lt;br /&gt;
Okay, we are done here. Time to move on to 3DS Max.&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;Importing Into Max....&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
So here we are in Max. If you are going to import an whole Age, you don&amp;#039;t need to load anything first. If you are adding stuff to some existing work in Max, load the scene you are working on up first.&lt;br /&gt;
&lt;br /&gt;
Then click on File &amp;gt; Import&lt;br /&gt;
&lt;br /&gt;
A directory tree will pop up. Navigate to the folder where you exported your FBX file to....and then go to the &amp;quot;V5&amp;quot; folder that the FBX Converter put the converted FBX File:&lt;br /&gt;
&lt;br /&gt;
[[File:Fbx5.jpg]]&lt;br /&gt;
&lt;br /&gt;
When you have selected the file, a BIG box is going to pop up. The only thing you need to worry about in here is where you see my red circle in the picture below. You need to change this drop down box so that it says &amp;quot;No Conversion&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:Fbx6.jpg]]&lt;br /&gt;
&lt;br /&gt;
Then click on the Ok button.&lt;br /&gt;
&lt;br /&gt;
Again, if you are importing a whole Age, this could take a few minutes.&lt;br /&gt;
&lt;br /&gt;
Once it is done, you see your object or objects, and as you can see from my pic below, they will look &amp;quot;ghost&amp;quot; like. They will stay this way until you assign a Material to them:&lt;br /&gt;
&lt;br /&gt;
[[File:Fbx7.jpg]]&lt;br /&gt;
&lt;br /&gt;
One last thing:&lt;br /&gt;
&lt;br /&gt;
blend_root&lt;br /&gt;
&lt;br /&gt;
This is a object that will appear in your Max scene when you import this way. It looks like a little box, but &amp;quot;blend_root&amp;quot; is ALWAYS it&amp;#039;s name. You need to select it, and delete it. Do NOT forget to do this! If you don&amp;#039;t, and you need to import something later down the road, you&amp;#039;ll get an error on import, because it will be trying to import a 2nd &amp;quot;blend_root&amp;quot; and I told you, all objects must have unique names!&lt;br /&gt;
&lt;br /&gt;
Hope this helped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Return To: [[Andy&amp;#039;s Max Tutorials]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Rise_Of_The_Phoenix&amp;diff=2094</id>
		<title>Rise Of The Phoenix</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Rise_Of_The_Phoenix&amp;diff=2094"/>
		<updated>2011-09-11T18:33:58Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So where do we go? What do we do? What is it I want?&lt;br /&gt;
&lt;br /&gt;
Those are 3 questions that I seem to ask myself over and over, for a very long time now.&lt;br /&gt;
&lt;br /&gt;
Computers and software for them seem to be related to dogs and cats. They say that for every one year that goes by, a cat or dog it is more like seven years for them.&lt;br /&gt;
That seems to be the same thing for computers and software. It seems that hardly any time goes buy, but huge changes happen, seemingly almost over night.&lt;br /&gt;
&lt;br /&gt;
I remember quite well back in 2003 playing Uru for the first time. I was playing other games too. One game, &amp;#039;&amp;#039;Return To Castle Wolfenstien&amp;#039;&amp;#039; I remember quite well, because I had played the &amp;#039;&amp;#039;Castle Wofenstien 3D&amp;#039;&amp;#039; when it first came out about 13 years earlier. I played DOOM 3D too just a couple of years later. But in 2003, was the first time I played 3D free moving games. I remember thinking how good they looked. &lt;br /&gt;
Medal Of Honor: Allied Assault and the first Call Of Duty had just come out too. &lt;br /&gt;
&lt;br /&gt;
Uru was different in that, yah, not any violence or having to shoot for your life. That was okay with me as I like adventure games too. But I do remember thinking to myself: Hrrrmmmm. It just doesn&amp;#039;t look as good as Riven or Myst III did. At the time, I didn&amp;#039;t understand why, but then realized that nothing could look as good as Riven or Myst III, unless they were &amp;quot;Pre-Rendered&amp;quot; like those games were.&lt;br /&gt;
&lt;br /&gt;
Still, Uru had a lot of charm to it, as far as how it looked, it was very advanced for it&amp;#039;s time. It was very rich in story, and there were many new puzzles to try out.&lt;br /&gt;
&lt;br /&gt;
Now, jump forward to 2011. Only 8 years have gone by since Uru was first released. That&amp;#039;s actually a short amount of time on the human scale of things. But in the computer world, that is a very long time indeed. Computers made back then are no where near as advanced as they are now. Software Real Time rendering has made quantum leaps too. It&amp;#039;s now possible, so have that pre-rendered quality from games like Riven, in real time now.&lt;br /&gt;
&lt;br /&gt;
Over the years I have watched as the gaming industry put out game after game, each one&amp;#039;s rendering abilities get better and better. Shader 2.0, then Shader 3.0 and then on to Shader 4.0. Volumetric Lighting. All of it amazing.&lt;br /&gt;
&lt;br /&gt;
Most of these games were &amp;quot;Shooter&amp;quot; games, or games with violence in them. That&amp;#039;s because violence sells. Adventures do not. Industry finds that 80 percent of their base wants &amp;quot;Shooters&amp;quot; and only 20 percent want &amp;quot;Adventure&amp;quot;. So that is what they make, and then pat themselves on the back, because they are thinking: &amp;quot;We got 80 percent of &amp;#039;em!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s stupid thinking. Why not make it 100 percent? Make a game that can satisfy both. Have it set up to where at the beginning a player can decide their game play: &amp;quot;Shooter&amp;quot; or &amp;quot;Adventure&amp;quot;. Make the game good looking enough, with enough puzzles and stories, you&amp;#039;ll get that Adventure crowd. Make it &amp;quot;Shooter&amp;quot; version good enough and you&amp;#039;ll get that crowd. The point being, you&amp;#039;ve succeeded in getting 100 percent of the crowd.&lt;br /&gt;
&lt;br /&gt;
Unfortunately this isn&amp;#039;t the case, and while adventure games have lapsed, the FPS&amp;#039;s out there have made great strides. But the problem is, that beauty is all wasted. Who has time to admire the scenery when you need to move FAST or your gonna get FRAGGED!&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve always wanted to see a game like Uru ported over to a more modern engine. Not just Uru. Can you imagine replaying Riven in a modern game engine?&lt;br /&gt;
&lt;br /&gt;
CryEngine from CryTek was released last month. The video for it floored me. The demo that comes with it looks like something out of a adventure game, but truth is, CryEngine has been for Shooters (FarCry, Crysis and Crysis 2). The difference is that this latest SDK allows you to make your own kind of game, with our own HUD and UI. The way it renders is a adventure game player&amp;#039;s dream come true......&lt;br /&gt;
&lt;br /&gt;
Out of curiosity, I decided to see what an Age from Uru would look like in CryEngine. I think the results speak for themselves:&lt;br /&gt;
&lt;br /&gt;
[[File:Garcry2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Garbump5.jpg]]&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the problem with porting Uru over to another game engine, is it would be an infringement on Cyan&amp;#039;s rights. They just can&amp;#039;t give an &amp;quot;Okay&amp;quot; either, because it would be the same as signing away those rights.&lt;br /&gt;
&lt;br /&gt;
Still I&amp;#039;d push for it if I could. Never mind the naysayers. &lt;br /&gt;
&lt;br /&gt;
Oh, yah, the Naysayers. You have them. They come in different groups. &lt;br /&gt;
&lt;br /&gt;
First you have your &amp;quot;Plasma Addicts&amp;quot;. These are the people that are so stuck on Plasma, it&amp;#039;s all they can think of. If you were to somehow magically make the Ages in Uru actually REAL, I mean a REAL place that exists and took them to it, they&amp;#039;d still say that Plasma did it better. So unfortunately, until they get over their addiction, these people are a lost cause.&lt;br /&gt;
Then you have your &amp;quot;Plasma Power&amp;quot; people. These are the people that want Uru to be in Plasma, because they know everything there is to know about Plasma, and it&amp;#039;s networking software. As a matter of fact, they even know how to make code for it. These are the only people that are doing anything with the OS engine, and because they are the few that know what they are doing, they can control that. Control of that, means control of everything else. Put Uru in a new game engine that has it&amp;#039;s own networking software, and they loose control. They don&amp;#039;t want that.&lt;br /&gt;
&lt;br /&gt;
Then you have your political side of it. People who think of how Uru should be, and it&amp;#039;s their way or the highway (only unfortunately, it&amp;#039;s never THEM that takes the highway.....). Of course I guess I can be counted in this group, because I believe that Uru should use the most advanced graphics rendering software out there. That it should have many of the things that it does not, and that it should be added to it. Couple that with it should also be a place that people can go and have fun with no abuse, flaming or trolling. So I guess in one sense I do fall into that catagory.&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve emailed Tony. Talked to Mark. Showed him all my pics, and videos. He&amp;#039;s sent them off to Rand so he can see. But the main thing Mark has said to me several time now is:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;quot;Take it in a different direction. Make something that is loosely based on MOUL, but has it&amp;#039;s own content. Considering how it looks, I&amp;#039;m sure you&amp;#039;d have fans that will flock to it.&amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Encouraging words.......and to tell you the truth........it makes sense. Start something new. Something that looks beautiful and real at the same time. Something that has all the stuff that MOUL is missing. Something that has new content added to it. Something where people can go to have fun and enjoy themselves. Something that does not use Cannon like a ball and chain around your ankle. &lt;br /&gt;
&lt;br /&gt;
Something like Phoenix.&lt;br /&gt;
&lt;br /&gt;
I have content, that is exclusively mine. LOTS of it. CryEngine can make even the worst of it look good. There are other builders out there, many of whom have left the community and have not been seen at places like the GoW forum in almost a year. However, I&amp;#039;ve kept touch........and I&amp;#039;m getting ahold of them, showing them what CryEngine can do. They have content too, just sitting there waiting.........and they are very, very , excited.&lt;br /&gt;
&lt;br /&gt;
I have other friends that are getting wind of the idea. They write stories, or have ideas. Hell, my sister and her husband write music, she&amp;#039;s pledged to making all the music that I need.&lt;br /&gt;
&lt;br /&gt;
I think it&amp;#039;s going to be interesting, especially if we get it Cyan Endorsed. &lt;br /&gt;
&lt;br /&gt;
Sky is the limit, and now, it seems, I have people that have been long quite that I thought were gone, are showing back up again, excited, and glad that there is something new, something that&amp;#039;s not Plasma, and something that will kick-ass:&lt;br /&gt;
&lt;br /&gt;
[[File:Cryserene3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Cryserene4.jpg]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Rise_Of_The_Phoenix&amp;diff=2093</id>
		<title>Rise Of The Phoenix</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Rise_Of_The_Phoenix&amp;diff=2093"/>
		<updated>2011-09-11T18:25:22Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: Created page with &amp;#039;So where do we go? What do we do? What is it I want?  Those are 3 questions that I seem to ask myself over and over, for a very long time now.  Computers and software for them se…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So where do we go? What do we do? What is it I want?&lt;br /&gt;
&lt;br /&gt;
Those are 3 questions that I seem to ask myself over and over, for a very long time now.&lt;br /&gt;
&lt;br /&gt;
Computers and software for them seem to be related to dogs and cats. They say that for every one year that goes by, a cat or dog it is more like seven years for them.&lt;br /&gt;
That seems to be the same thing for computers and software. It seems that hardly any time goes buy, but huge changes happen, seemingly almost over night.&lt;br /&gt;
&lt;br /&gt;
I remember quite well back in 2003 playing Uru for the first time. I was playing other games too. One game, &amp;#039;&amp;#039;Return To Castle Wolfenstien&amp;#039;&amp;#039; I remember quite well, because I had played the &amp;#039;&amp;#039;Castle Wofenstien 3D&amp;#039;&amp;#039; when it first came out about 13 years earlier. I played DOOM 3D too just a couple of years later. But in 2003, was the first time I played 3D free moving games. I remember thinking how good they looked. &lt;br /&gt;
Medal Of Honor: Allied Assault and the first Call Of Duty had just come out too. &lt;br /&gt;
&lt;br /&gt;
Uru was different in that, yah, not any violence or having to shoot for your life. That was okay with me as I like adventure games too. But I do remember thinking to myself: Hrrrmmmm. It just doesn&amp;#039;t look as good as Riven or Myst III did. At the time, I didn&amp;#039;t understand why, but then realized that nothing could look as good as Riven or Myst III, unless they were &amp;quot;Pre-Rendered&amp;quot; like those games were.&lt;br /&gt;
&lt;br /&gt;
Still, Uru had a lot of charm to it, as far as how it looked, it was very advanced for it&amp;#039;s time. It was very rich in story, and there were many new puzzles to try out.&lt;br /&gt;
&lt;br /&gt;
Now, jump forward to 2011. Only 8 years have gone by since Uru was first released. That&amp;#039;s actually a short amount of time on the human scale of things. But in the computer world, that is a very long time indeed. Computers made back then are no where near as advanced as they are now. Software Real Time rendering has made quantum leaps too. It&amp;#039;s now possible, so have that pre-rendered quality from games like Riven, in real time now.&lt;br /&gt;
&lt;br /&gt;
Over the years I have watched as the gaming industry put out game after game, each one&amp;#039;s rendering abilities get better and better. Shader 2.0, then Shader 3.0 and then on to Shader 4.0. Volumetric Lighting. All of it amazing.&lt;br /&gt;
&lt;br /&gt;
Most of these games were &amp;quot;Shooter&amp;quot; games, or games with violence in them. That&amp;#039;s because violence sells. Adventures do not. Industry finds that 80 percent of their base wants &amp;quot;Shooters&amp;quot; and only 20 percent want &amp;quot;Adventure&amp;quot;. So that is what they make, and then pat themselves on the back, because they are thinking: &amp;quot;We got 80 percent of &amp;#039;em!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s stupid thinking. Why not make it 100 percent? Make a game that can satisfy both. Have it set up to where at the beginning a player can decide their game play: &amp;quot;Shooter&amp;quot; or &amp;quot;Adventure&amp;quot;. Make the game good looking enough, with enough puzzles and stories, you&amp;#039;ll get that Adventure crowd. Make it &amp;quot;Shooter&amp;quot; version good enough and you&amp;#039;ll get that crowd. The point being, you&amp;#039;ve succeeded in getting 100 percent of the crowd.&lt;br /&gt;
&lt;br /&gt;
Unfortunately this isn&amp;#039;t the case, and while adventure games have lapsed, the FPS&amp;#039;s out there have made great strides. But the problem is, that beauty is all wasted. Who has time to admire the scenery when you need to move FAST or your gonna get FRAGGED!&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve always wanted to see a game like Uru ported over to a more modern engine. Not just Uru. Can you imagine replaying Riven in a modern game engine?&lt;br /&gt;
&lt;br /&gt;
CryEngine from CryTek was released last month. The video for it floored me. The demo that comes with it looks like something out of a adventure game, but truth is, CryEngine has been for Shooters (FarCry, Crysis and Crysis 2). The difference is that this latest SDK allows you to make your own kind of game, with our own HUD and UI. The way it renders is a adventure game player&amp;#039;s dream come true......&lt;br /&gt;
&lt;br /&gt;
Out of curiosity, I decided to see what an Age from Uru would look like in CryEngine. I think the results speak for themselves:&lt;br /&gt;
&lt;br /&gt;
[[File:Garcry2.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Garbump5.jpg]]&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the problem with porting Uru over to another game engine, is it would be an infringement on Cyan&amp;#039;s rights. They just can&amp;#039;t give an &amp;quot;Okay&amp;quot; either, because it would be the same as signing away those rights.&lt;br /&gt;
&lt;br /&gt;
Still I&amp;#039;d push for it if I could. Never mind the naysayers. &lt;br /&gt;
&lt;br /&gt;
Oh, yah, the Naysayers. You have them. They come in different groups. &lt;br /&gt;
&lt;br /&gt;
First you have your &amp;quot;Plasma Addicts&amp;quot;. These are the people that are so stuck on Plasma, it&amp;#039;s all they can think of. If you were to somehow magically make the Ages in Uru actually REAL, I mean a REAL place that exists and took them to it, they&amp;#039;d still say that Plasma did it better. So unfortunately, until they get over their addiction, these people are a lost cause.&lt;br /&gt;
Then you have your &amp;quot;Plasma Power&amp;quot; people. These are the people that want Uru to be in Plasma, because they know everything there is to know about Plasma, and it&amp;#039;s networking software. As a matter of fact, they even know how to make code for it. These are the only people that are doing anything with the OS engine, and because they are the few that know what they are doing, they can control that. Control of that, means control of everything else. Put Uru in a new game engine that has it&amp;#039;s own networking software, and they loose control. They don&amp;#039;t want that.&lt;br /&gt;
&lt;br /&gt;
Then you have your political side of it. People who think of how Uru should be, and it&amp;#039;s their way or the highway (only unfortunately, it&amp;#039;s never THEM that takes the highway.....). Of course I guess I can be counted in this group, because I believe that Uru should use the most advanced graphics rendering software out there. That it should have many of the things that it does not, and that it should be added to it. Couple that with it should also be a place that people can go and have fun with no abuse, flaming or trolling. So I guess in one sense I do fall into that catagory.&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ve emailed Tony. Talked to Mark. Showed him all my pics, and videos. He&amp;#039;s sent them off to Rand so he can see. But the main thing Mark has said to me several time now is:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Take it in a different direction. Make something that is loosely based on MOUL, but has it&amp;#039;s own content. Considering how it looks, I&amp;#039;m sure you&amp;#039;d have fans that will flock to it.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Encouraging words.......and to tell you the truth........it makes sense. Start something new. Something that looks beautiful and real at the same time. Something that has all the stuff that MOUL is missing. Something that has new content added to it. Something where people can go to have fun and enjoy themselves. Something that does not use Cannon like a ball and chain around your ankle. &lt;br /&gt;
&lt;br /&gt;
Something like Phoenix.&lt;br /&gt;
&lt;br /&gt;
I have content, that is exclusively mine. LOTS of it. CryEngine can make even the worst of it look good. There are other builders out there, many of whom have left the community and have not been seen at places like the GoW forum in almost a year. However, I&amp;#039;ve kept touch........and I&amp;#039;m getting ahold of them, showing them what CryEngine can do. They have content too, just sitting there waiting.........and they are very, very , excited.&lt;br /&gt;
&lt;br /&gt;
I have other friends that are getting wind of the idea. They write stories, or have ideas. Hell, my sister and her husband write music, she&amp;#039;s pledged to making all the music that I need.&lt;br /&gt;
&lt;br /&gt;
I think it&amp;#039;s going to be interesting, especially if we get it Cyan Endorsed. &lt;br /&gt;
&lt;br /&gt;
Sky is the limit, and now, it seems, I have people that have been long quite that I thought were gone, are showing back up again, excited, and glad that there is something new, something that&amp;#039;s not Plasma, and something that will kick-ass:&lt;br /&gt;
&lt;br /&gt;
[[File:Cryserene3.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Cryserene4.jpg]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Cryserene4.jpg&amp;diff=2092</id>
		<title>File:Cryserene4.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Cryserene4.jpg&amp;diff=2092"/>
		<updated>2011-09-11T18:25:15Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Cryserene3.jpg&amp;diff=2091</id>
		<title>File:Cryserene3.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Cryserene3.jpg&amp;diff=2091"/>
		<updated>2011-09-11T18:23:15Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Garbump5.jpg&amp;diff=2090</id>
		<title>File:Garbump5.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Garbump5.jpg&amp;diff=2090"/>
		<updated>2011-09-11T18:04:08Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Garcry2.jpg&amp;diff=2089</id>
		<title>File:Garcry2.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Garcry2.jpg&amp;diff=2089"/>
		<updated>2011-09-11T18:03:26Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Andy%27s_Corner&amp;diff=2088</id>
		<title>Andy&#039;s Corner</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Andy%27s_Corner&amp;diff=2088"/>
		<updated>2011-09-11T17:19:36Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to my Blog Spot here on the UAM Wiki.&lt;br /&gt;
&lt;br /&gt;
Most of my blogs on here will be about projects and Ages that I&amp;#039;m working on, so it&amp;#039;s a good way to peek into what I&amp;#039;m up to. My most recent entries will be towards the top.&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ll also post something funny once in a while a the mood strikes me :big grin:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Rise Of The Phoenix]] 9/11/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Uru, MOUL, and CryEngine]] 8/24/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Taking Uru To Unreal]] 8/19/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Ice Cream, yuuuuummmmmm]] 6/12/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[HALP! Facebook is kidnapping me!]] 6/10/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Amazing.....]] 5/21/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;[[Goodbye Yellow Brick Road...]]&amp;#039;&amp;#039; 3/5/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Trying To Stay Awake, And Watch The Road....]] 2/18/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[When It Rains, It Pours....]] 2/8/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Sigh....]] 1/18/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Project Sanctuary]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Curse Of The Neolbah Elevator]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Zephyr Cove Rework]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[So You Want To Create An Age......satire]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Return To: [[Main Page]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Uru,_MOUL,_and_CryEngine&amp;diff=2084</id>
		<title>Uru, MOUL, and CryEngine</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Uru,_MOUL,_and_CryEngine&amp;diff=2084"/>
		<updated>2011-08-24T13:24:04Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: Created page with &amp;#039;So a few days ago, Aloys from the GoW directed my attention to the release of the CryEngine 3.0 SDK.   I watched the Demo version and my jaw dropped into my lap! The demo level t…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So a few days ago, Aloys from the GoW directed my attention to the release of the CryEngine 3.0 SDK. &lt;br /&gt;
&lt;br /&gt;
I watched the Demo version and my jaw dropped into my lap! The demo level that the SDK comes with, looks like a Myst type game from Cyan, hehehehe.&lt;br /&gt;
&lt;br /&gt;
Of course I got really excited about this. I made sure to email Mark (aka Chogon) with the links to it, as Rand was talking about the new game idea during Mysterium, even though funding is lacking, hey, it doesn&amp;#039;t hurt to look at options still.&lt;br /&gt;
&lt;br /&gt;
Then I started looking at trying to use CryEngine and importing a Uru Age into it. Unlike the Unreal SDK, CryEngine is a bit more difficult to import things into. So far as I know, you can only import things from Max or Maya (this leaves Blender people out in the cold). Still, you can create everything in the SDK itself too.&lt;br /&gt;
&lt;br /&gt;
The folks over at the forum for CryEngine have been very helpful and friendly. I&amp;#039;ve learned a lot in the last couple of days, and mostly what I have learned is just how frustrating doing this is! Exporting the models from Max is not hard, however, you have to export the materials too. You have to use &amp;quot;Standard&amp;quot; or &amp;quot;Multi/Sub&amp;quot; which was not too surprising, but you also have to change the Shader from Phong or Blinn or whatever to CryTek Shader.&lt;br /&gt;
Then came the other shock: You MUST use either .tif or .dds format, and for Normal Maps, you MUST use .dds format!&lt;br /&gt;
&lt;br /&gt;
So today I&amp;#039;ll be busy converting my textures from Ahnonay to comply with this. I already tested it out with one object that has multiple materials on it, and it worked. &lt;br /&gt;
&lt;br /&gt;
However, I also had a conversation with Mark yesterday. While my goal was to see about converting all of Uru, he reminded me of the legal problems with doing it. Plasma may be open sourced, but the game content itself is not. I would be treading on very thin ice.&lt;br /&gt;
&lt;br /&gt;
He urged me to think of doing something new and original instead.&lt;br /&gt;
&lt;br /&gt;
While that idea is very cool, most of the people that I can think of that would love to help and be excited about this have drifted off or disappeared.........&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Andy%27s_Corner&amp;diff=2083</id>
		<title>Andy&#039;s Corner</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Andy%27s_Corner&amp;diff=2083"/>
		<updated>2011-08-24T13:15:23Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to my Blog Spot here on the UAM Wiki.&lt;br /&gt;
&lt;br /&gt;
Most of my blogs on here will be about projects and Ages that I&amp;#039;m working on, so it&amp;#039;s a good way to peek into what I&amp;#039;m up to. My most recent entries will be towards the top.&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ll also post something funny once in a while a the mood strikes me :big grin:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Uru, MOUL, and CryEngine]] 8/24/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Taking Uru To Unreal]] 8/19/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Ice Cream, yuuuuummmmmm]] 6/12/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[HALP! Facebook is kidnapping me!]] 6/10/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Amazing.....]] 5/21/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;[[Goodbye Yellow Brick Road...]]&amp;#039;&amp;#039; 3/5/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Trying To Stay Awake, And Watch The Road....]] 2/18/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[When It Rains, It Pours....]] 2/8/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Sigh....]] 1/18/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Project Sanctuary]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Curse Of The Neolbah Elevator]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Zephyr Cove Rework]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[So You Want To Create An Age......satire]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Return To: [[Main Page]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Taking_Uru_To_Unreal&amp;diff=2082</id>
		<title>Taking Uru To Unreal</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Taking_Uru_To_Unreal&amp;diff=2082"/>
		<updated>2011-08-19T12:18:37Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A couple of months ago, I was talking to Bill and we were discussing different game engines that Uru might be ported to. Obviously we were looking at Open Source game engines since they are free. Many of us out there had heard of Ogre, and I had started to dive into that and see what I could see.&lt;br /&gt;
&lt;br /&gt;
First up on the list was a game engine that was Ogre based that was called Open Space 3D. The showcase for it looked impressive, but I was not very happy with importing options and most of the documentation and tutorials are in French, heh, and I do not &amp;quot;par-lay-voo France-say&amp;quot; (said in my best southern drawl).&lt;br /&gt;
&lt;br /&gt;
Next, I took a look at Neo Axis. This seemed to hold a lot of promise. I took Serene into it. However, it did not seem up to snuff so to speak. I had to take out all my pine trees, because I couldn&amp;#039;t get the frame rate past 12 with them in. Plasma had no issues with them, but nothing that I did in Neo Axis could get the frame rate up towards 30 except for their removal.&lt;br /&gt;
&lt;br /&gt;
I had been thinking about the Unreal game engine, and the SDK for it is free. Unreal is one of the most modern game engines out there, and their SDK is simply outstanding. So I thought I would give it a try.&lt;br /&gt;
&lt;br /&gt;
The documentation and tutorials out there are too numerous to count. Epic Games themselves have put out tutorials for Unreal&amp;#039;s SDK, and some of the best video tutorials for it come from 3DBuzz. &lt;br /&gt;
&lt;br /&gt;
One of the other reasons I was attracted to it was I had used the Unreal Editor 1.0 years ago, making maps for Rainbow Six: Ravenshield. The game comes with the editor, but, being an editor, it&amp;#039;s specifically for making map levels of that specific game.&lt;br /&gt;
&lt;br /&gt;
The Unreal SDK on the other hand can be used to tailor make things.&lt;br /&gt;
&lt;br /&gt;
My first attempt was with something small, the Nexus. I used it to learn and remember how to do things, and I was pleased with how the results were coming out.&lt;br /&gt;
&lt;br /&gt;
But to get serious about it, I needed to port over something larger. My first thought was the Cleft......but then that would take a very long time, and is huge. So I then thought of the Ahnonay Linking Room. It&amp;#039;s not huge, but is bigger than the Nexus. It has a LOT of ambiance in it from lighting to sounds. I thought it would be a good place to start.&lt;br /&gt;
&lt;br /&gt;
Step one was to import it from Uru into a 3D modeling program. You can not directly import Uru into the Unreal SDK of course. You can import models from Blender, Max and Maya however. Blender 2.45 used with the Guild Of Writers PyPRP plugin can import Ages from Uru into Blender:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now the only downside to this is: for some reason, the importer makes double verticies of almost all the meshes! This will seriously screw things up. So after importing an Age, you have to go into each and every mesh and remove the double verticies (again, not sure why the importer does this). The next thing you need to do is scale UP everything. In Blender and Max, 1 unit =  1 foot. In Unreal 1 foot = 16 Units. So you have to scale everything up by that factor.&lt;br /&gt;
&lt;br /&gt;
Once that is done, I had 2 choices: Export using .ase file extension, or export using FBX.&lt;br /&gt;
&lt;br /&gt;
Doing a ASE export is the recommended way to export your models from Blender and Max so that you can import them into the Unreal SDK.&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur2.jpg]]&lt;br /&gt;
&lt;br /&gt;
BUT! And this is a serious drawback! If you do it that way, you will have to place each model in the Unreal SDK 3D scene and then  move them into place manually! &lt;br /&gt;
As you can imagine, doing so for a Uru Age would suck big time, especially if we are talking about a large Age.&lt;br /&gt;
&lt;br /&gt;
Doing a FBX export, the meshes retain their pivot point location information. When you drop them into the 3D window, you can then open up their properties and change their X, Y and Z coordinates to 0.0. This snaps them into place so to speeak.&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur8.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, the textures. You can use .png files in the Unreal SDK, but they recommend .tga files. So if you have a batch converter, you&amp;#039;ll need to convert all the textures to .tga format. On top of that, you&amp;#039;ll need to make a &amp;quot;Normal Map&amp;quot; of each texture that is for solid surfaces. You do not HAVE to do that, but then you will not be able to take advantage of Unreal&amp;#039;s material features and make your textures come alive.&lt;br /&gt;
&lt;br /&gt;
You&amp;#039;ll have to then import all the textures into the SDK&amp;#039;s content browser:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Since all the meshes have retained their UV Mapping coordinates, it&amp;#039;s simply a mater of creating the materials and then applying them to the meshes. The Material editor in the SDK is like working with a flow chart:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur5.jpg]]&lt;br /&gt;
&lt;br /&gt;
That is just an example of a simple material. Here is one that is more complex for the water surface:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur6.jpg]]&lt;br /&gt;
&lt;br /&gt;
I really love how it works! You can see how your material is going to look in real time while in the editor, including animated textures! You can even hold down the &amp;quot;L&amp;quot; key and move your mouse around, and it will shine a light on it to show you how things like bump maps and specularity look.&lt;br /&gt;
&lt;br /&gt;
Your materials will be in the content browser too:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur4.jpg]]&lt;br /&gt;
&lt;br /&gt;
Once you get your materials made, then you can open up each mesh and apply those materials to the faces of it:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur7.jpg]]&lt;br /&gt;
&lt;br /&gt;
Lighting in the Unreal SDK is wonderful. It uses what we call Lightmass. This automatically provides bounce and scatter of your lighting, so you do not have to go in and add all those extra lights anymore!&lt;br /&gt;
&lt;br /&gt;
The other thing I love about it is the 3D window can be set to Real Time, and each time you do a &amp;quot;Build&amp;quot;, the 3D window is a WYSIWYG (What You See Is What You Get), and I do mean it REALLY is WYSIWYG, not a close approximation!&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur9.jpg]]&lt;br /&gt;
&lt;br /&gt;
It only took me 4 days to get it to this level that you will see in the video below. I can&amp;#039;t wait to try and do some large places, like Teledahn and the Cleft!&lt;br /&gt;
&lt;br /&gt;
Here is the video:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=-mDmoFvvKoM Ahnonay In Unreal]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Taking_Uru_To_Unreal&amp;diff=2081</id>
		<title>Taking Uru To Unreal</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Taking_Uru_To_Unreal&amp;diff=2081"/>
		<updated>2011-08-19T12:18:12Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: Created page with &amp;#039;A couple of months ago, I was talking to Bill and we were discussing different game engines that Uru might be ported to. Obviously we were looking at Open Source game engines sin…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A couple of months ago, I was talking to Bill and we were discussing different game engines that Uru might be ported to. Obviously we were looking at Open Source game engines since they are free. Many of us out there had heard of Ogre, and I had started to dive into that and see what I could see.&lt;br /&gt;
&lt;br /&gt;
First up on the list was a game engine that was Ogre based that was called Open Space 3D. The showcase for it looked impressive, but I was not very happy with importing options and most of the documentation and tutorials are in French, heh, and I do not &amp;quot;par-lay-voo France-say&amp;quot; (said in my best southern drawl).&lt;br /&gt;
&lt;br /&gt;
Next, I took a look at Neo Axis. This seemed to hold a lot of promise. I took Serene into it. However, it did not seem up to snuff so to speak. I had to take out all my pine trees, because I couldn&amp;#039;t get the frame rate past 12 with them in. Plasma had no issues with them, but nothing that I did in Neo Axis could get the frame rate up towards 30 except for their removal.&lt;br /&gt;
&lt;br /&gt;
I had been thinking about the Unreal game engine, and the SDK for it is free. Unreal is one of the most modern game engines out there, and their SDK is simply outstanding. So I thought I would give it a try.&lt;br /&gt;
&lt;br /&gt;
The documentation and tutorials out there are too numerous to count. Epic Games themselves have put out tutorials for Unreal&amp;#039;s SDK, and some of the best video tutorials for it come from 3DBuzz. &lt;br /&gt;
&lt;br /&gt;
One of the other reasons I was attracted to it was I had used the Unreal Editor 1.0 years ago, making maps for Rainbow Six: Ravenshield. The game comes with the editor, but, being an editor, it&amp;#039;s specifically for making map levels of that specific game.&lt;br /&gt;
&lt;br /&gt;
The Unreal SDK on the other hand can be used to tailor make things.&lt;br /&gt;
&lt;br /&gt;
My first attempt was with something small, the Nexus. I used it to learn and remember how to do things, and I was pleased with how the results were coming out.&lt;br /&gt;
&lt;br /&gt;
But to get serious about it, I needed to port over something larger. My first thought was the Cleft......but then that would take a very long time, and is huge. So I then thought of the Ahnonay Linking Room. It&amp;#039;s not huge, but is bigger than the Nexus. It has a LOT of ambiance in it from lighting to sounds. I thought it would be a good place to start.&lt;br /&gt;
&lt;br /&gt;
Step one was to import it from Uru into a 3D modeling program. You can not directly import Uru into the Unreal SDK of course. You can import models from Blender, Max and Maya however. Blender 2.45 used with the Guild Of Writers PyPRP plugin can import Ages from Uru into Blender:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now the only downside to this is: for some reason, the importer makes double verticies of almost all the meshes! This will seriously screw things up. So after importing an Age, you have to go into each and every mesh and remove the double verticies (again, not sure why the importer does this). The next thing you need to do is scale UP everything. In Blender and Max, 1 unit =  1 foot. In Unreal 1 foot = 16 Units. So you have to scale everything up by that factor.&lt;br /&gt;
&lt;br /&gt;
Once that is done, I had 2 choices: Export using .ase file extension, or export using FBX.&lt;br /&gt;
&lt;br /&gt;
Doing a ASE export is the recommended way to export your models from Blender and Max so that you can import them into the Unreal SDK.&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur2.jpg]]&lt;br /&gt;
&lt;br /&gt;
BUT! And this is a serious drawback! If you do it that way, you will have to place each model in the Unreal SDK 3D scene and then  move them into place manually! &lt;br /&gt;
As you can imagine, doing so for a Uru Age would suck big time, especially if we are talking about a large Age.&lt;br /&gt;
&lt;br /&gt;
Doing a FBX export, the meshes retain their pivot point location information. When you drop them into the 3D window, you can then open up their properties and change their X, Y and Z coordinates to 0.0. This snaps them into place so to speeak.&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur8.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, the textures. You can use .png files in the Unreal SDK, but they recommend .tga files. So if you have a batch converter, you&amp;#039;ll need to convert all the textures to .tga format. On top of that, you&amp;#039;ll need to make a &amp;quot;Normal Map&amp;quot; of each texture that is for solid surfaces. You do not HAVE to do that, but then you will not be able to take advantage of Unreal&amp;#039;s material features and make your textures come alive.&lt;br /&gt;
&lt;br /&gt;
You&amp;#039;ll have to then import all the textures into the SDK&amp;#039;s content browser:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Since all the meshes have retained their UV Mapping coordinates, it&amp;#039;s simply a mater of creating the materials and then applying them to the meshes. The Material editor in the SDK is like working with a flow chart:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur5.jpg]]&lt;br /&gt;
&lt;br /&gt;
That is just an example of a simple material. Here is one that is more complex for the water surface:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur6.jpg]]&lt;br /&gt;
&lt;br /&gt;
I really love how it works! You can see how your material is going to look in real time while in the editor, including animated textures! You can even hold down the &amp;quot;L&amp;quot; key and move your mouse around, and it will shine a light on it to show you how things like bump maps and specularity look.&lt;br /&gt;
&lt;br /&gt;
Your materials will be in the content browser too:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur4.jpg]]&lt;br /&gt;
&lt;br /&gt;
Once you get your materials made, then you can open up each mesh and apply those materials to the faces of it:&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur7.jpg]]&lt;br /&gt;
&lt;br /&gt;
Lighting in the Unreal SDK is wonderful. It uses what we call Lightmass. This automatically provides bounce and scatter of your lighting, so you do not have to go in and add all those extra lights anymore!&lt;br /&gt;
&lt;br /&gt;
The other thing I love about it is the 3D window can be set to Real Time, and each time you do a &amp;quot;Build&amp;quot;, the 3D window is a WYSIWYG (What You See Is What You Get), and I do mean it REALLY is WYSIWYG, not a close approximation!&lt;br /&gt;
&lt;br /&gt;
[[File:Ahur9]]&lt;br /&gt;
&lt;br /&gt;
It only took me 4 days to get it to this level that you will see in the video below. I can&amp;#039;t wait to try and do some large places, like Teledahn and the Cleft!&lt;br /&gt;
&lt;br /&gt;
Here is the video:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=-mDmoFvvKoM Ahnonay In Unreal]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Andy%27s_Corner&amp;diff=2080</id>
		<title>Andy&#039;s Corner</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Andy%27s_Corner&amp;diff=2080"/>
		<updated>2011-08-19T11:44:51Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to my Blog Spot here on the UAM Wiki.&lt;br /&gt;
&lt;br /&gt;
Most of my blogs on here will be about projects and Ages that I&amp;#039;m working on, so it&amp;#039;s a good way to peek into what I&amp;#039;m up to. My most recent entries will be towards the top.&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;ll also post something funny once in a while a the mood strikes me :big grin:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Taking Uru To Unreal]] 8/19/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Ice Cream, yuuuuummmmmm]] 6/12/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[HALP! Facebook is kidnapping me!]] 6/10/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Amazing.....]] 5/21/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;[[Goodbye Yellow Brick Road...]]&amp;#039;&amp;#039; 3/5/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Trying To Stay Awake, And Watch The Road....]] 2/18/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[When It Rains, It Pours....]] 2/8/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Sigh....]] 1/18/2011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Project Sanctuary]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Curse Of The Neolbah Elevator]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Zephyr Cove Rework]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[So You Want To Create An Age......satire]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Return To: [[Main Page]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Ahur9.jpg&amp;diff=2079</id>
		<title>File:Ahur9.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Ahur9.jpg&amp;diff=2079"/>
		<updated>2011-08-19T11:43:47Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Ahur8.jpg&amp;diff=2078</id>
		<title>File:Ahur8.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Ahur8.jpg&amp;diff=2078"/>
		<updated>2011-08-19T11:43:32Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Ahur7.jpg&amp;diff=2077</id>
		<title>File:Ahur7.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Ahur7.jpg&amp;diff=2077"/>
		<updated>2011-08-19T11:42:59Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Ahur6.jpg&amp;diff=2076</id>
		<title>File:Ahur6.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Ahur6.jpg&amp;diff=2076"/>
		<updated>2011-08-19T11:42:40Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Ahur5.jpg&amp;diff=2075</id>
		<title>File:Ahur5.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Ahur5.jpg&amp;diff=2075"/>
		<updated>2011-08-19T11:42:22Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Ahur4.jpg&amp;diff=2074</id>
		<title>File:Ahur4.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Ahur4.jpg&amp;diff=2074"/>
		<updated>2011-08-19T11:42:08Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Ahur3.jpg&amp;diff=2073</id>
		<title>File:Ahur3.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Ahur3.jpg&amp;diff=2073"/>
		<updated>2011-08-19T11:41:47Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Ahur2.jpg&amp;diff=2072</id>
		<title>File:Ahur2.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Ahur2.jpg&amp;diff=2072"/>
		<updated>2011-08-19T11:41:25Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Ahur1.jpg&amp;diff=2071</id>
		<title>File:Ahur1.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Ahur1.jpg&amp;diff=2071"/>
		<updated>2011-08-19T11:41:08Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Getting_An_Age_Sequence_Prefix_Number&amp;diff=2070</id>
		<title>Getting An Age Sequence Prefix Number</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Getting_An_Age_Sequence_Prefix_Number&amp;diff=2070"/>
		<updated>2011-08-19T10:31:35Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An Age Sequence Prefix number is a number that is used to identify your Age. Sort of like a serial number.&lt;br /&gt;
&lt;br /&gt;
It is very important to have one, and that it be unique. If you use a number that another Age is already using, this can cause Uru to crash when someone tries to link into either your Age, or the other one that has the same number.&lt;br /&gt;
&lt;br /&gt;
To help keep this from happening, there is a list that shows not only Cyan&amp;#039;s Age&amp;#039;s sequence prefix numbers, but those of other fans.&lt;br /&gt;
&lt;br /&gt;
The following link will take you to the Alcugs Wiki where this list is kept. It will show you all the numbers of both Cyan and Fan Ages (at least those Fan Ages where the creator cared enough to list it). Registration is free, and you need to be registered in order to edit the page and include your Age you are building. Here is the link:&lt;br /&gt;
&lt;br /&gt;
[[ListOfSequencePrefixes]]&lt;br /&gt;
&lt;br /&gt;
Do not try to use any number under 100. Those are normally reserved for Cyan. Simply scroll down and pick a number you&amp;#039;d like to use (that is not already in use), and then log on and edit the page to include your Age.&lt;br /&gt;
&lt;br /&gt;
Once you have your number, please write it down, as you will need it to set up your Age in Blender.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Return To: [[Andy&amp;#039;s Blender Tutorials]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Sensor_Regions_and_Kickables&amp;diff=2053</id>
		<title>Sensor Regions and Kickables</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Sensor_Regions_and_Kickables&amp;diff=2053"/>
		<updated>2011-08-09T18:54:55Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: Created page with &amp;#039;We can use Sensor Regions to detect things other than an avatar entering or exiting it. You can also set them up so that they will detect kickable objects. This is how the floor …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We can use Sensor Regions to detect things other than an avatar entering or exiting it. You can also set them up so that they will detect kickable objects. This is how the floor plates in the Teledahn Slave Cave works.&lt;br /&gt;
&lt;br /&gt;
For a video of this tutorial, you can click [http://www.youtube.com/watch?v=-Ma2mpOZs0o here].&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes that you already know how to animate objects, place sensor regions and use responders.&lt;br /&gt;
&lt;br /&gt;
==Setting The Scene==&lt;br /&gt;
&lt;br /&gt;
As you can see from my picture below, I have several things in my scene: A sensor region, a floor plate, a rock, and sound emitters:&lt;br /&gt;
&lt;br /&gt;
[[File:TelePlt1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Below the floor plate, I also have a plane that has Proxy Physics on it. This is to make sure the avatar does not fall through the ground when the plate animates:&lt;br /&gt;
&lt;br /&gt;
[[File:TelePlt2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Here is the roll out for it:&lt;br /&gt;
&lt;br /&gt;
[[File:TelePlt3.jpg]]&lt;br /&gt;
&lt;br /&gt;
My kickable is a rock that is just a deformed sphere with a material on it:&lt;br /&gt;
&lt;br /&gt;
[[File:TelePlt4.jpg]]&lt;br /&gt;
&lt;br /&gt;
I have not linked any emitters to it for sound. The only component it has is Simple Physics:&lt;br /&gt;
&lt;br /&gt;
[[File:TelePlt5.jpg]]&lt;br /&gt;
&lt;br /&gt;
I also have it raised slightly off the ground so that it will not fall through the ground when someone links in to the Age.&lt;br /&gt;
&lt;br /&gt;
Next, we work on the region sensor that surrounds the floor plate:&lt;br /&gt;
&lt;br /&gt;
[[File:TelePlt6.jpg]]&lt;br /&gt;
&lt;br /&gt;
On the roll out for it, I have both Enter and Exit check marked. I also have changed the Report On. Normally it is defaulted to Avatar. You can change this to Dynamic, and it will only detect a kickable. Or you can do like I have and check mark Both, this will allow the region sensor to detect both the player and the kickable:&lt;br /&gt;
&lt;br /&gt;
[[File:TelePlt7.jpg]]&lt;br /&gt;
&lt;br /&gt;
Next, I added 2 responders. The detector for both responders is the region sensor. The first responder sets the animation for the floor plate forward, plays the animation, and plays the sound for the plate going down. It also turns itself off (Disable responder), and it turns on the 2nd responder:&lt;br /&gt;
&lt;br /&gt;
[[File:TelePlt8.jpg]]&lt;br /&gt;
&lt;br /&gt;
The 2nd responder is like the first, except that it sets the floor plate animation backwards, and it plays a different sound emitter, the up sound for the floor plate. It is also defaulted to Off.&lt;br /&gt;
&lt;br /&gt;
[[File:TelePlt9.jpg]]&lt;br /&gt;
&lt;br /&gt;
I also have commands to Disable itself, and to Enable the first responder again.&lt;br /&gt;
&lt;br /&gt;
You could most likely set up a single responder that has two states and achieve the same effect.&lt;br /&gt;
&lt;br /&gt;
Here is a video of the end result:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=-Q9M-B7dEmA Teledahn Floor Plate Video]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Return To: [[Andy&amp;#039;s Max Tutorials]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Andy%27s_Max_Tutorials&amp;diff=2052</id>
		<title>Andy&#039;s Max Tutorials</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Andy%27s_Max_Tutorials&amp;diff=2052"/>
		<updated>2011-08-09T18:42:08Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Andy&amp;#039;s Max and Cyan&amp;#039;s Plugin Tutorials==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Please Note: This area is under construction.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Setting Up===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[What You Will See In Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[How To Use Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[How To Start An Age]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[After You Have Exported From Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Linking Rules]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Common Export Errors]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Blender To Max===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Importing Blender Objects To Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Your Age and Python===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Python Files And Your Age: Please Read!]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Materials and Texture Tutorials===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Materials and UV Editing in Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Using Multi / Sub Materials]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Making Stencils]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Basic Material Animation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Using The Details Feature]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Vertex Painting]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Environmental Maps aka Reflections]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Light Maps in Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Modeling Help===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Plants]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Boolean Help]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Animating Objects===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Basic Object Animation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Interrupting An Animation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Animation Events]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Sprites and Billboards===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Sprites and Billboards in Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Distributor Tool Function===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Distributor Tool]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Wind===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Vertex / Pixel Shaders (aka Wavy Grass)]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Exclusion Regions===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[What Exclusion Regions Are And What They Do]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[How To Set Up And Use Exclusion Regions]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fog Settings===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[How To Set Fog In Your Age]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Wavesets===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Wavesets: Reflective, Ripply Water]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Wavesets: Tips and Help]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Avatar Actions===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Avatar Oneshot Animations]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Foot Prints and Ripples]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Avatar Sitting]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Avatar Swimming]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Ladders In Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Avatar Clothing===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Reward or Takeable Clothing]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Game Logic===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Using Sensor Regions]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Making Clickables]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Sensor Regions and Kickables]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Special Python Files===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Python and Responders: Please Read!]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[xSimplePanel for Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[xDynamicPanel for Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Sounds===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Avatar Footstep Sounds]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[3D Sounds]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Non-Spatial Sounds (Music, Ambient)]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Lights===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Basic Light and Avatar Shadows]]&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[General Tips and Help]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Soft Volumes: Vis Regions, Light Regions and Sound Regions===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[About Soft Volumes]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Vis Regions: Controlling When Something Is Rendered]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Light Regions: Controlling The Light On The Avatar]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Sound Regions: Controlling What The Player Hears]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Particles===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Snow Fall]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Rain Fall]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Steam and Smoke]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Particle Flocks (Eder Kemo Bugs)]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Particle Blockers: Keep It From Raining Inside]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Animations Using Bone Systems===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[How To Use Wind and Cloth Reactors]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===GUIs===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[GUI Popups]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Multiple GUI Popups]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Subworlds===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Making Subworlds (Elevators and Rides)]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Journals and Linking Books===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Making Linking Books and Journals In Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Global Animations===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Global Animations: Day / Night Cycle]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Multiplayer Environment===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Multiplayer Tips and Considerations]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Toggling A State]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Example of State Setting and Responders (or, Hey Someone Linked In After I Pulled That Lever)]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Return To: [[Creating Ages]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:TelePlt9.jpg&amp;diff=2051</id>
		<title>File:TelePlt9.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:TelePlt9.jpg&amp;diff=2051"/>
		<updated>2011-08-09T18:40:11Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:TelePlt8.jpg&amp;diff=2050</id>
		<title>File:TelePlt8.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:TelePlt8.jpg&amp;diff=2050"/>
		<updated>2011-08-09T18:40:01Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:TelePlt7.jpg&amp;diff=2049</id>
		<title>File:TelePlt7.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:TelePlt7.jpg&amp;diff=2049"/>
		<updated>2011-08-09T18:39:46Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:TelePlt6.jpg&amp;diff=2048</id>
		<title>File:TelePlt6.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:TelePlt6.jpg&amp;diff=2048"/>
		<updated>2011-08-09T18:39:33Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:TelePlt5.jpg&amp;diff=2047</id>
		<title>File:TelePlt5.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:TelePlt5.jpg&amp;diff=2047"/>
		<updated>2011-08-09T18:39:20Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:TelePlt4.jpg&amp;diff=2046</id>
		<title>File:TelePlt4.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:TelePlt4.jpg&amp;diff=2046"/>
		<updated>2011-08-09T18:39:10Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:TelePlt3.jpg&amp;diff=2045</id>
		<title>File:TelePlt3.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:TelePlt3.jpg&amp;diff=2045"/>
		<updated>2011-08-09T18:38:56Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:TelePlt2.jpg&amp;diff=2044</id>
		<title>File:TelePlt2.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:TelePlt2.jpg&amp;diff=2044"/>
		<updated>2011-08-09T18:38:44Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:TelePlt1.jpg&amp;diff=2043</id>
		<title>File:TelePlt1.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:TelePlt1.jpg&amp;diff=2043"/>
		<updated>2011-08-09T18:38:31Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Boolean_Help&amp;diff=1951</id>
		<title>Boolean Help</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Boolean_Help&amp;diff=1951"/>
		<updated>2011-08-08T17:08:09Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Using Boolean Operations===&lt;br /&gt;
&lt;br /&gt;
If you want to &amp;quot;cut&amp;quot; a mesh of one object with the mesh of another, you can use the Boolean Operand to do this with. A good example of using this, would be cutting open a door or window in a wall. A much larger example would be to cut a large ocean mesh so that your island will fit it.&lt;br /&gt;
&lt;br /&gt;
A video version of this tutorial is available [http://www.youtube.com/watch?v=B1an0rENu70 here].&lt;br /&gt;
&lt;br /&gt;
In my simple example here, I have a plane that is my wall and I want to cut a circle out of it:&lt;br /&gt;
&lt;br /&gt;
[[File:Boltut1.jpg]]&lt;br /&gt;
&lt;br /&gt;
I create the mesh I am going to use to cut with, a cylinder:&lt;br /&gt;
&lt;br /&gt;
[[File:Boltut2.jpg]]&lt;br /&gt;
&lt;br /&gt;
I then move the cylinder so that it completely intersects the plane:&lt;br /&gt;
&lt;br /&gt;
[[File:Boltut3.jpg]]&lt;br /&gt;
&lt;br /&gt;
I then go to the Create tab, and select Compound Objects from the drop down menu:&lt;br /&gt;
&lt;br /&gt;
[[File:Boltut4.jpg]]&lt;br /&gt;
&lt;br /&gt;
Then I click on the Boolean button:&lt;br /&gt;
&lt;br /&gt;
[[File:Boltut5.jpg]]&lt;br /&gt;
&lt;br /&gt;
Since I have the cylinder selected, it is already Operand A. We want to make the Operand &amp;quot;B - A&amp;quot;, which means &amp;quot;Subtract Mesh A, from Mesh B&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:Boltut6.jpg]]&lt;br /&gt;
&lt;br /&gt;
We now need to pick what object is going to be Operand B, which is the plane. We click on the Pick Operand B button, and in the 3D window, click on the plane:&lt;br /&gt;
&lt;br /&gt;
[[File:Boltut7.jpg]]&lt;br /&gt;
&lt;br /&gt;
As you can now see, we have a nice round hole cut out of our plane:&lt;br /&gt;
&lt;br /&gt;
[[File:Boltut8.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Return To: [[Andy&amp;#039;s Max Tutorials]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Interrupting_An_Animation&amp;diff=1950</id>
		<title>Interrupting An Animation</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Interrupting_An_Animation&amp;diff=1950"/>
		<updated>2011-08-07T20:49:18Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial will introduce you to making an animated object stop it&amp;#039;s animation, and reverse it, without it starting over at the beginning. It assumes that you already know how to make an animated object.&lt;br /&gt;
&lt;br /&gt;
If you link in to Gahreesen, you will remember how in the power room, we had to step on a plate to make a cylinder rise up, and if we stepped off the plate, the cylinder would begin to lower. We are going to re-create that same effect here.&lt;br /&gt;
&lt;br /&gt;
A Video version of this tutorial can be watched [http://www.youtube.com/watch?v=l6TOLvpj5Po here].&lt;br /&gt;
&lt;br /&gt;
===The Objects===&lt;br /&gt;
&lt;br /&gt;
If you look at the picture below, you will see that I have a blue cylinder. It&amp;#039;s about 10 feet high, but I have it sunk into the ground to where it just peeks out. The cylinder also has a animation, in that it will raise up to almost it&amp;#039;s full height in 10 seconds (300 frames).&lt;br /&gt;
&lt;br /&gt;
[[File:Stopndrop1.jpg]]&lt;br /&gt;
&lt;br /&gt;
The other objects that I have, is a small plane, close to the ground. It will represent the &amp;quot;plate&amp;quot; that the avatar steps on. We also have 2 sensor regions here, one right on top of the other one.&lt;br /&gt;
&lt;br /&gt;
[[File:Stopndrop2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Select one of the boxes that is going to be a region sensor, and apply that component on it. In the roll out for it, make sure you put a check mark under &amp;quot;Trigger On Exiting Volume&amp;quot; only. We want this region sensor to only trigger when you leave it:&lt;br /&gt;
&lt;br /&gt;
[[File:Stopndrop3.jpg]]&lt;br /&gt;
&lt;br /&gt;
Next, select the other box and make it a region sensor to, but make sure you put a 2nd region sensor component on it. In it&amp;#039;s roll out, make sure you put a check mark under &amp;quot;Trigger On Entering Volume&amp;quot; only. We want this region sensor to trigger only when we enter it, but not when we leave it:&lt;br /&gt;
&lt;br /&gt;
[[File:Stopndrop4.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now open up the Component Manager and create 3 logic responders. Name them in a way that makes sense to you. I have my labeled so that one is the &amp;quot;Starting&amp;quot; responder, one stops the animation and makes it drop, and one stops the animation and makes it rise:&lt;br /&gt;
&lt;br /&gt;
[[File:Stopndrop5.jpg]]&lt;br /&gt;
&lt;br /&gt;
You can attach these responders to what ever object you like. I have mine all attached to one of my regions sensors so I can see them all.&lt;br /&gt;
&lt;br /&gt;
Select the responder that is going to be your &amp;quot;Starter&amp;quot; responder. Make the detector your region sensor that triggers on &amp;quot;Enter&amp;quot; only. Give it the following commands: Set Animation Forward, Play Animation, and Enable Responder. The animation is of course our cylinder. We are going to use the &amp;quot;Enable Responder&amp;quot; command to turn of this very responder however as you can see in my picture below:&lt;br /&gt;
&lt;br /&gt;
[[File:Stopndrop6.jpg]]&lt;br /&gt;
&lt;br /&gt;
Why did we do that? Because we do not want this responder to be &amp;quot;on&amp;quot; anymore after it is first triggered. Instead, another responder will take over. Think of it like the starter motor on a car, once you get the engine cranked, you do not want the starter to still be running.&lt;br /&gt;
&lt;br /&gt;
Now select the responder that is your Stop and Drop one. The detector for it needs to be the sensor region that triggers on Exit only. Give it 4 commands: Stop Animation, Set Animation Backwards, Play Animation, and Enable Responder.&lt;br /&gt;
&lt;br /&gt;
[[File:Stopndrop7.jpg]]&lt;br /&gt;
&lt;br /&gt;
The animation commands are all for the cylinder of course. The Enable Responder needs to turn on the 3rd responder, our Stop and Raise responder as shown in my picture above.&lt;br /&gt;
&lt;br /&gt;
Now select the 3rd and last responder. It&amp;#039;s detector needs to be the region sensor that triggers on Enter only. Give it 3 commands: Stop Animation, Set Animation Forwards, Play Animation:&lt;br /&gt;
&lt;br /&gt;
[[File:Stopndrop8.jpg]]&lt;br /&gt;
&lt;br /&gt;
As you can see from my picture above, I have removed the check mark where it says &amp;quot;Enable&amp;quot;. This will have the responder start off as &amp;quot;Off&amp;quot; until it is turned on by the 2nd responder.&lt;br /&gt;
&lt;br /&gt;
That&amp;#039;s all you need to do for this. Of course there is texturing and adding sounds, etc. However you can now export and give it a try. Here is a video of how it looks:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=w1s9DOvfcgQ Stop and Drop Video]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Return To: [[Andy&amp;#039;s Max Tutorials]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Animation_Events&amp;diff=1949</id>
		<title>Animation Events</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Animation_Events&amp;diff=1949"/>
		<updated>2011-08-07T19:54:28Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An Animation Event is a detector that we can use to have something happen, because an animation happened. This is very useful if you want something to happen in game, not because the player directly made it happen, but because of something else that they did.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes that you are familiar with making basic animations of objects, and uses elements from my tutorial on Interrupting Animations.&lt;br /&gt;
&lt;br /&gt;
For a Video version of this tutorial you can click [http://www.youtube.com/watch?v=Tifio1vOmOA here].&lt;br /&gt;
&lt;br /&gt;
Let us take a look at my scene below. I&amp;#039;ve added a &amp;quot;Door&amp;quot; that has an animation that makes it swing open:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent1.jpg]]&lt;br /&gt;
&lt;br /&gt;
I have a PageInfo component and a animation component on it. Nothing else special is required.&lt;br /&gt;
&lt;br /&gt;
What I want to happen is, I want my blue cylinder I made that rises up and down, to have the door suddenly swing open when the cylinder get&amp;#039;s half way up.&lt;br /&gt;
&lt;br /&gt;
Now, I could use animations to just have the door swing open at that point, but this is a much simpler way to do it. The game is going to detect when the blue cylinder is half way up and then open the door for me.&lt;br /&gt;
&lt;br /&gt;
So I select my blue cylinder, and I open up the Dope Sheet for it:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, what I have done is add a Key Marker to it, right at frame 150 (which is the half way point of the animation). Unlike the start and end markers, I have given this marker a different name:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent3.jpg]]&lt;br /&gt;
&lt;br /&gt;
It is important to do this! If you give the marker the same name as your start and end marker, it will not show up where we need it later! Once you have made this marker, we need to add the detector.&lt;br /&gt;
&lt;br /&gt;
For this I selected one of my region sensors. You do not have to apply it that, you could apply it to the cylinder or anywhere really. But I wanted to keep things together. To add an &amp;quot;Animation Event&amp;quot; component, open up your Component Manager and click on New &amp;gt; Detector &amp;gt; Anim Event:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent4.jpg]]&lt;br /&gt;
&lt;br /&gt;
When I attach it, I then select it and look at the roll out for it:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent5.jpg]]&lt;br /&gt;
&lt;br /&gt;
You will have to pick the animation and object, and once you do so, you will see your markers appear in the Events box. This is why it was important to give your event marker a different name than the start or end markers. If you gave it the same name, it would not show up here. I selected the marker as you can see from the above picture, meaning that point in the animation is when I want the Animation Event Detector to detect.&lt;br /&gt;
&lt;br /&gt;
Now I make a new logic responder. In this one, the detector will be my Animation Event:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent6.jpg]]&lt;br /&gt;
&lt;br /&gt;
And of course the commands for the responder is to open the door.&lt;br /&gt;
&lt;br /&gt;
That is all there is to it to get this started. I&amp;#039;m sure you can imagine all sorts of neat puzzles you could have using this, including multiplayer ones where a 2nd player has to do something to help other players!&lt;br /&gt;
&lt;br /&gt;
The following is a video showing you the end result:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=LGQUsavPMa4 Animation Event Video]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Return To: [[Andy&amp;#039;s Max Tutorials]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Animation_Events&amp;diff=1948</id>
		<title>Animation Events</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Animation_Events&amp;diff=1948"/>
		<updated>2011-08-07T19:24:24Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An Animation Event is a detector that we can use to have something happen, because an animation happened. This is very useful if you want something to happen in game, not because the player directly made it happen, but because of something else that they did.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes that you are familiar with making basic animations of objects, and uses elements from my tutorial on Interrupting Animations.&lt;br /&gt;
&lt;br /&gt;
For a Video version of this video you can click [http://www.youtube.com/watch?v=Tifio1vOmOA Here].&lt;br /&gt;
&lt;br /&gt;
Let us take a look at my scene below. I&amp;#039;ve added a &amp;quot;Door&amp;quot; that has an animation that makes it swing open:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent1.jpg]]&lt;br /&gt;
&lt;br /&gt;
I have a PageInfo component and a animation component on it. Nothing else special is required.&lt;br /&gt;
&lt;br /&gt;
What I want to happen is, I want my blue cylinder I made that rises up and down, to have the door suddenly swing open when the cylinder get&amp;#039;s half way up.&lt;br /&gt;
&lt;br /&gt;
Now, I could use animations to just have the door swing open at that point, but this is a much simpler way to do it. The game is going to detect when the blue cylinder is half way up and then open the door for me.&lt;br /&gt;
&lt;br /&gt;
So I select my blue cylinder, and I open up the Dope Sheet for it:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, what I have done is add a Key Marker to it, right at frame 150 (which is the half way point of the animation). Unlike the start and end markers, I have given this marker a different name:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent3.jpg]]&lt;br /&gt;
&lt;br /&gt;
It is important to do this! If you give the marker the same name as your start and end marker, it will not show up where we need it later! Once you have made this marker, we need to add the detector.&lt;br /&gt;
&lt;br /&gt;
For this I selected one of my region sensors. You do not have to apply it that, you could apply it to the cylinder or anywhere really. But I wanted to keep things together. To add an &amp;quot;Animation Event&amp;quot; component, open up your Component Manager and click on New &amp;gt; Detector &amp;gt; Anim Event:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent4.jpg]]&lt;br /&gt;
&lt;br /&gt;
When I attach it, I then select it and look at the roll out for it:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent5.jpg]]&lt;br /&gt;
&lt;br /&gt;
You will have to pick the animation and object, and once you do so, you will see your markers appear in the Events box. This is why it was important to give your event marker a different name than the start or end markers. If you gave it the same name, it would not show up here. I selected the marker as you can see from the above picture, meaning that point in the animation is when I want the Animation Event Detector to detect.&lt;br /&gt;
&lt;br /&gt;
Now I make a new logic responder. In this one, the detector will be my Animation Event:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent6.jpg]]&lt;br /&gt;
&lt;br /&gt;
And of course the commands for the responder is to open the door.&lt;br /&gt;
&lt;br /&gt;
That is all there is to it to get this started. I&amp;#039;m sure you can imagine all sorts of neat puzzles you could have using this, including multiplayer ones where a 2nd player has to do something to help other players!&lt;br /&gt;
&lt;br /&gt;
The following is a video showing you the end result:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=LGQUsavPMa4 Animation Event Video]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Return To: [[Andy&amp;#039;s Max Tutorials]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Animation_Events&amp;diff=1947</id>
		<title>Animation Events</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Animation_Events&amp;diff=1947"/>
		<updated>2011-08-07T16:53:33Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: Created page with &amp;#039;An Animation Event is a detector that we can use to have something happen, because an animation happened. This is very useful if you want something to happen in game, not because…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An Animation Event is a detector that we can use to have something happen, because an animation happened. This is very useful if you want something to happen in game, not because the player directly made it happen, but because of something else that they did.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes that you are familiar with making basic animations of objects, and uses elements from my tutorial on Interrupting Animations.&lt;br /&gt;
&lt;br /&gt;
Let us take a look at my scene below. I&amp;#039;ve added a &amp;quot;Door&amp;quot; that has an animation that makes it swing open:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent1.jpg]]&lt;br /&gt;
&lt;br /&gt;
I have a PageInfo component and a animation component on it. Nothing else special is required.&lt;br /&gt;
&lt;br /&gt;
What I want to happen is, I want my blue cylinder I made that rises up and down, to have the door suddenly swing open when the cylinder get&amp;#039;s half way up.&lt;br /&gt;
&lt;br /&gt;
Now, I could use animations to just have the door swing open at that point, but this is a much simpler way to do it. The game is going to detect when the blue cylinder is half way up and then open the door for me.&lt;br /&gt;
&lt;br /&gt;
So I select my blue cylinder, and I open up the Dope Sheet for it:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, what I have done is add a Key Marker to it, right at frame 150 (which is the half way point of the animation). Unlike the start and end markers, I have given this marker a different name:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent3.jpg]]&lt;br /&gt;
&lt;br /&gt;
It is important to do this! If you give the marker the same name as your start and end marker, it will not show up where we need it later! Once you have made this marker, we need to add the detector.&lt;br /&gt;
&lt;br /&gt;
For this I selected one of my region sensors. You do not have to apply it that, you could apply it to the cylinder or anywhere really. But I wanted to keep things together. To add an &amp;quot;Animation Event&amp;quot; component, open up your Component Manager and click on New &amp;gt; Detector &amp;gt; Anim Event:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent4.jpg]]&lt;br /&gt;
&lt;br /&gt;
When I attach it, I then select it and look at the roll out for it:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent5.jpg]]&lt;br /&gt;
&lt;br /&gt;
You will have to pick the animation and object, and once you do so, you will see your markers appear in the Events box. This is why it was important to give your event marker a different name than the start or end markers. If you gave it the same name, it would not show up here. I selected the marker as you can see from the above picture, meaning that point in the animation is when I want the Animation Event Detector to detect.&lt;br /&gt;
&lt;br /&gt;
Now I make a new logic responder. In this one, the detector will be my Animation Event:&lt;br /&gt;
&lt;br /&gt;
[[File:Animevent6.jpg]]&lt;br /&gt;
&lt;br /&gt;
And of course the commands for the responder is to open the door.&lt;br /&gt;
&lt;br /&gt;
That is all there is to it to get this started. I&amp;#039;m sure you can imagine all sorts of neat puzzles you could have using this, including multiplayer ones where a 2nd player has to do something to help other players!&lt;br /&gt;
&lt;br /&gt;
The following is a video showing you the end result:&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=LGQUsavPMa4 Animation Event Video]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Return To: [[Andy&amp;#039;s Max Tutorials]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Andy%27s_Max_Tutorials&amp;diff=1946</id>
		<title>Andy&#039;s Max Tutorials</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Andy%27s_Max_Tutorials&amp;diff=1946"/>
		<updated>2011-08-07T16:40:46Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Andy&amp;#039;s Max and Cyan&amp;#039;s Plugin Tutorials==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Please Note: This area is under construction.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Setting Up===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[What You Will See In Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[How To Use Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[How To Start An Age]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[After You Have Exported From Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Linking Rules]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Common Export Errors]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Blender To Max===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Importing Blender Objects To Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Your Age and Python===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Python Files And Your Age: Please Read!]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Materials and Texture Tutorials===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Materials and UV Editing in Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Using Multi / Sub Materials]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Making Stencils]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Basic Material Animation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Using The Details Feature]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Vertex Painting]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Environmental Maps aka Reflections]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Light Maps in Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Modeling Help===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Plants]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Boolean Help]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Animating Objects===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Basic Object Animation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Interrupting An Animation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Animation Events]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Sprites and Billboards===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Sprites and Billboards in Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Distributor Tool Function===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Distributor Tool]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Wind===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Vertex / Pixel Shaders (aka Wavy Grass)]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Exclusion Regions===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[What Exclusion Regions Are And What They Do]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[How To Set Up And Use Exclusion Regions]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Fog Settings===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[How To Set Fog In Your Age]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Wavesets===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Wavesets: Reflective, Ripply Water]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Wavesets: Tips and Help]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Avatar Actions===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Avatar Oneshot Animations]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Foot Prints and Ripples]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Avatar Sitting]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Avatar Swimming]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Ladders In Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Avatar Clothing===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Reward or Takeable Clothing]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Game Logic===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Using Sensor Regions]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Making Clickables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Special Python Files===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Python and Responders: Please Read!]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[xSimplePanel for Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[xDynamicPanel for Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Sounds===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Avatar Footstep Sounds]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[3D Sounds]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Non-Spatial Sounds (Music, Ambient)]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Lights===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Basic Light and Avatar Shadows]]&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[General Tips and Help]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Soft Volumes: Vis Regions, Light Regions and Sound Regions===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[About Soft Volumes]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Vis Regions: Controlling When Something Is Rendered]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Light Regions: Controlling The Light On The Avatar]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Sound Regions: Controlling What The Player Hears]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Particles===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Snow Fall]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Rain Fall]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Steam and Smoke]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Particle Flocks (Eder Kemo Bugs)]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Particle Blockers: Keep It From Raining Inside]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Animations Using Bone Systems===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[How To Use Wind and Cloth Reactors]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===GUIs===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[GUI Popups]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Multiple GUI Popups]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Subworlds===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Making Subworlds (Elevators and Rides)]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Journals and Linking Books===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Making Linking Books and Journals In Max]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Global Animations===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Global Animations: Day / Night Cycle]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Multiplayer Environment===&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Multiplayer Tips and Considerations]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Toggling A State]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[[Example of State Setting and Responders (or, Hey Someone Linked In After I Pulled That Lever)]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Return To: [[Creating Ages]]&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Animevent6.jpg&amp;diff=1945</id>
		<title>File:Animevent6.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Animevent6.jpg&amp;diff=1945"/>
		<updated>2011-08-07T16:40:17Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Animevent5.jpg&amp;diff=1944</id>
		<title>File:Animevent5.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Animevent5.jpg&amp;diff=1944"/>
		<updated>2011-08-07T16:40:06Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Animevent4.jpg&amp;diff=1943</id>
		<title>File:Animevent4.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Animevent4.jpg&amp;diff=1943"/>
		<updated>2011-08-07T16:39:56Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Animevent3.jpg&amp;diff=1942</id>
		<title>File:Animevent3.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Animevent3.jpg&amp;diff=1942"/>
		<updated>2011-08-07T16:39:44Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Animevent2.jpg&amp;diff=1941</id>
		<title>File:Animevent2.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Animevent2.jpg&amp;diff=1941"/>
		<updated>2011-08-07T16:39:31Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=File:Animevent1.jpg&amp;diff=1940</id>
		<title>File:Animevent1.jpg</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=File:Animevent1.jpg&amp;diff=1940"/>
		<updated>2011-08-07T16:39:15Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Setting_Up_A_Sandbox_Shard_with_Dataserver&amp;diff=1939</id>
		<title>Setting Up A Sandbox Shard with Dataserver</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Setting_Up_A_Sandbox_Shard_with_Dataserver&amp;diff=1939"/>
		<updated>2011-08-07T15:56:39Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== How to create a SANDBOX SHARD with Dataserver ==&lt;br /&gt;
&lt;br /&gt;
For Non-Programmers&lt;br /&gt;
&lt;br /&gt;
by Phoenix Rising&lt;br /&gt;
version 0.01&lt;br /&gt;
August 2011&lt;br /&gt;
&lt;br /&gt;
Shorah Explorers&lt;br /&gt;
&lt;br /&gt;
The aim of this document is to detail as closely as possible the exact steps to create your own Sandbox Shard using GoW&amp;#039;s CWE Client and Zrax&amp;#039;s Dirtsand Server. This wiki page is specifically for writers and age builders who want to test MOULa compatible ages. As a basis for this document we will use Zrax&amp;#039;s README at https://github.com/H-uru/dirtsand but with a lot more detailed editing.&lt;br /&gt;
&lt;br /&gt;
We have permission from Zrax to use his README in this wiki but with a much expanded and detailed version which we have added. We have chosen to use GoW&amp;#039;s CWE Client since it has been heavily updated so that it may be compiled easily and with a much more recent version of DirectX SDK and other tweaks such as reduction of lag by Tsar Hoikas. This simply means that it has better support and hopefully better gameplay on your fancy new computer!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IMPORTANT NOTE: This is a work in progress and gets highly technical, and as such is not recommended for newbies. Changes may happen along the way. If you want to add to this wiki, please be nice! We want this to appeal to every Non-Programmer young and old and have a really cool wiki to show for it. If you have helpful suggestions feel free to add them, but kindly refrain from deleting any sections. A lot of hard work has gone into documenting this procedure for the sake of all the Uru fans out there. At the end of the day all this effort is due to teamwork, since no-one can do such a mammoth task alone!&lt;br /&gt;
&lt;br /&gt;
HARDWARE PREREQUISITES: The aim of this wiki is to teach a writer/builder/developer to test CWE compatible ages. For that at least two computers are needed (one of which must have an able graphics card).&lt;br /&gt;
&lt;br /&gt;
As a benchmark we will be building the sandbox based on:&lt;br /&gt;
&lt;br /&gt;
* CLIENT MACHINE: A Dell Inspiron running Windows 7 64 bit, with a 1Gb Ati Graphics card, and&lt;br /&gt;
* SERVER MACHINE: An Asus Eeepc mini laptop running Ubuntu 10.10 (Maverick).&lt;br /&gt;
&lt;br /&gt;
The specs are not crucial, except for the graphics card on the Windows Machine and the Flavour of Linux on the SERVER. We have chosen Ubuntu 10.10 because although we still have to configure stuff, we dont like configuration nightmares!&lt;br /&gt;
&lt;br /&gt;
A simple test to see if your Windows CLIENT can handle all of CWE&amp;#039;s graphics requirements is to ramp up all your Graphics settings to maximum when you run the launcher for TPOTS and see if your computer runs smoothly or has screen jitter/stutter. If your machine can handle these high settings you will be less restricted in your age building later on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETWORK CONNECTION: This wiki will attempt to document one of the two approaches to network connectivity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# SANDBOX MODE - SERVER and CLIENT on a local hub using DHCP or fixed IP.&lt;br /&gt;
# SHARD MODE - SERVER on dynamic DNS or fixed IP, and CLIENT accessing through the internet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SHARD MODE will be covered in another wiki at a later date.&lt;br /&gt;
&lt;br /&gt;
Both configurations have their merits. The first provides the &amp;quot;offline&amp;quot; sandbox mode for creating your own ages and testing the content, even though you will still be connecting via a network of some kind. The second makes your shard accessible to other players over the internet. This you will use when you are ready to go live!&lt;br /&gt;
&lt;br /&gt;
== A Little History ==&lt;br /&gt;
&lt;br /&gt;
Cyan has come a long way since the release of Myst. Their original 2D &amp;quot;point and click&amp;quot; game eventually evolved into a fully three dimensional gameplay with unrestricted movement and engaging avatar animations. Although Myst was the forefather of MOUL, in our wiki we wont be covering the MYST engine or how to set it up. It is too outdated. If you really want to play Myst you can use your original Myst CD content, Drizzle and TPOTS.&lt;br /&gt;
&lt;br /&gt;
We need to draw a line as to what versions of Cyan&amp;#039;s engine we use, and what purpose each version serves. Below is a list of the commonly accepted Versions.&lt;br /&gt;
&lt;br /&gt;
Only one version will be used to setup our SANDBOX SHARD. The CWE Client using the MOULa content!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Choru&amp;#039;&amp;#039;&amp;#039; - Cyan&amp;#039;s Closed Beta.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ubiru&amp;#039;&amp;#039;&amp;#039; - Ubisoft&amp;#039;s Closed Beta.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ABM&amp;#039;&amp;#039;&amp;#039; - Ages Beyond Myst - The vanilla single player version of Uru.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Prologue&amp;#039;&amp;#039;&amp;#039; - The original MMO version of Uru. (Essentially an Open Beta)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;UruUpdate12&amp;#039;&amp;#039;&amp;#039; - Update package to fix bug with ATI Graphics cards.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;DNI&amp;#039;&amp;#039;&amp;#039; - To D&amp;#039;ni Expansion Pack - an add-on extension that adds some of the Prologue Ages along with a recap of the Prologue story.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TPOTS&amp;#039;&amp;#039;&amp;#039; - The Path of the Shell Expansion Pack - adds even more content to ABM.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CC&amp;#039;&amp;#039;&amp;#039; - Complete Chronicles - a compilation of the first 4 packages as a single distribution.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;UU&amp;#039;&amp;#039;&amp;#039; - Unt&amp;amp;igrave;l Uru - A no longer officially supported online version of ABM.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;D&amp;#039;mala&amp;#039;&amp;#039;&amp;#039; - The Cyan Worlds Until Uru Shard.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MOUL&amp;#039;&amp;#039;&amp;#039; - Myst Online: Uru Live - The Third Online Incarnation of Uru&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MOULagain / MOULa&amp;#039;&amp;#039;&amp;#039; - Myst Online: Uru Live Again - Resurrected version of MOUL&lt;br /&gt;
&lt;br /&gt;
and finally the Open Source Client that has been given to the community by Cyan Worlds, namely:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CWE&amp;#039;&amp;#039;&amp;#039; - CyanWorlds.com Engine - the recently released Open Source client based on MOUL - Note: not a full source release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to start building ages, we do not recommend following this wiki beyond the following few lines. There are many tutorials on the Guild of Writers to help you build your first age.&lt;br /&gt;
&lt;br /&gt;
== ASSUMPTIONS TO FOLLOW THIS WIKI ==&lt;br /&gt;
&lt;br /&gt;
* You will be compiling the CWE client on a WinXp 32 Bit machine.&lt;br /&gt;
* You know how to use Windows command line&lt;br /&gt;
* You know how to use a Linux command line&lt;br /&gt;
* You know how to compile C++ software on Windows&lt;br /&gt;
* You know how to compile C++ software on Linux&lt;br /&gt;
* You are fluent using both systems and understand the subtleties of each, such as: case sensitivity, backslash versus forward slash, and what a terminal is.&lt;br /&gt;
* You know how to use scalc or excel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you fail to do any of the above, we really suggest that you do not attempt this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ok, let&amp;#039;s begin:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As this wiki unfolds you will notice that we will have to do work on both the SERVER and the CLIENT at any one time, so be prepared for it before it happens. We will refer to the client as Windows, and the server as Ubuntu for ease of reference.&lt;br /&gt;
&lt;br /&gt;
== Github and the branches ==&lt;br /&gt;
&lt;br /&gt;
There are 3 main projects that we will pull from github.&lt;br /&gt;
&lt;br /&gt;
# https://github.com/H-uru/Plasma&lt;br /&gt;
# https://github.com/H-uru/dirtsand&lt;br /&gt;
# https://github.com/H-uru/moul-scripts/tree/python27&lt;br /&gt;
&lt;br /&gt;
An easy way to get the code for each is to click the &amp;quot;Downloads&amp;quot; button to the far right of &amp;quot;branches&amp;quot; tab.&lt;br /&gt;
&lt;br /&gt;
You will also need to download the windows version of plasma tools to help you encrypt the various files later.&lt;br /&gt;
&lt;br /&gt;
* http://libhsplasma.googlecode.com/files/Plasma_Win32_r801.zip&lt;br /&gt;
&lt;br /&gt;
(Note, we won&amp;#039;t be covering how to build a Cyan compatible engine, since Cyans MOUL still runs on Python 2.3 and CWE runs on Python 2.7)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== On Windows - Let&amp;#039;s compile CWE ==&lt;br /&gt;
&lt;br /&gt;
Our starting point is to build the CWE client based on the &amp;quot;master&amp;quot; branch on github since it is a relatively simple process and will help you get your feet wet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To build the client you can follow the GoW tutorial and video clip below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Tut: http://www.guildofwriters.com/wiki/Development:CyanWorlds.com_Engine&lt;br /&gt;
* Clip: http://www.youtube.com/watch?v=HZbMf5W67UI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is no need to rewrite such a detailed and well written tutorial. The guys who created this deserve a big thank you from all the uru fans out there.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you are done, you will have 3 files in the &amp;lt;pre&amp;gt;.\Plasma\build\Sources\Plasma\Apps\&amp;lt;/pre&amp;gt; directory, which you will use later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
.\plClient\debug\plClient.exe&lt;br /&gt;
.\plUruLauncher\debug\plUruLauncher.exe&lt;br /&gt;
.\plPythonPack\Debug\plPythonPack.exe&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, time to delve into the SERVER. The next portion is Zrax&amp;#039;s heavily edited README for his Dirtsand server. It is assumed that you have Ubuntu 10.10 installed, and that you wrote down the superuser password somewhere safe! Phoenix says: &amp;quot;Yip, I had to reinstall Ubuntu once because I lost the root accounts password, so yes, it can happen to you too!&amp;quot; It is also assumed that you can get to the Ubuntu desktop.&lt;br /&gt;
&lt;br /&gt;
== On Ubuntu - DirtSand Howto ==&lt;br /&gt;
&lt;br /&gt;
The original README is here...&lt;br /&gt;
&lt;br /&gt;
* https://github.com/H-uru/dirtsand/blob/master/README&lt;br /&gt;
&lt;br /&gt;
For ease of implementation we will be assuming that the server will be running on Ubuntu 10.10 (Maverick) Desktop version. This has proven to be the less painful way to delve into SERVER setup.&lt;br /&gt;
&lt;br /&gt;
CAUTION: If you simply copy and paste Linux commands from this wiki, sometimes the terminal will execute the command automatically without you pressing enter. For safety, copy the command to a text editor, change the command as needed, then copy to the terminal window. Otherwise you may have to uninstall everything and start again!&lt;br /&gt;
&lt;br /&gt;
===Building the code===&lt;br /&gt;
&lt;br /&gt;
Prerequisites or dependancies are libraries or programs that another program needs to run or to compile properly. Without them you will get many errors. Do not proceed with this section of the wiki if you have not satisfied the list below.&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
&lt;br /&gt;
* GCC 4.4+ (might work with other C++0x compliant compilers, but untested)&lt;br /&gt;
* Postgres (libpq) -- the actual database server can reside anywhere&lt;br /&gt;
* OpenSSL&lt;br /&gt;
* libreadline&lt;br /&gt;
* zlib&lt;br /&gt;
* git (to get the sources)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default install of Ubuntu does not install all the items above. To install the packages that are lacking, open a terminal window, type the command below and follow the prompts before moving on to the next item in the list. This should satisfy the list of prerequisites above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For those of you with Ubuntu 10.10, this is the easy part:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt-get install postgresql postgresql-contrib-8.4 libpq-dev apache2 cmake cmake-qt-gui g++ libreadline-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Now, create a user and path for the DIRTSAND server to run from.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo useradd dirtsand -d /opt/dirtsand -m -p &amp;lt;password&amp;gt; -s /bin/bash&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember to drop the brackets &amp;lt;&amp;gt; when you create a password and watch your case (UPPERCASE or lowercase)!&lt;br /&gt;
&lt;br /&gt;
2) Once done, unzip your copy of the &amp;quot;dirtsand&amp;quot; source code in your HOME directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ cd dirtsand&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Compile it for your system...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ mkdir build &amp;amp;&amp;amp; cd build&lt;br /&gt;
$ cmake -DCMAKE_INSTALL_PREFIX=/opt/dirtsand ..&lt;br /&gt;
$ make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
$ cd ..&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you run into any errors about finding libraries or headers, make sure you have the *development* versions of all of the required libraries, and that they are in your path. If you really get stuck, you can also use the &amp;quot;cmake-gui&amp;quot; to help &amp;#039;cmake&amp;#039; locate the missing paths and files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ cmake-gui&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have it already when you ran apt-get command earlier on.&lt;br /&gt;
&lt;br /&gt;
===Setting up a server  - WITH a superuser account===&lt;br /&gt;
&lt;br /&gt;
You will need a working PostgreSQL server which DIRTSAND can use to store its data.  Although you don&amp;#039;t need superuser access to the postgres server, you will need to have a database which you can add schemas, tables, etc into.&lt;br /&gt;
&lt;br /&gt;
For the default installation, the commands below will create a &amp;#039;dirtsand&amp;#039; database and set its ownership to a &amp;#039;dirtsand&amp;#039; database user, which can directly map the system &amp;#039;dirtsand&amp;#039; user created in the &amp;quot;Building the code&amp;quot; instructions above.  For better security, it is recommended to use a password (as shown in the steps below), which can be configured in the server settings as described in the &amp;quot;configure dirtsand&amp;quot; step.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====1. Set up the postgres user====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now run the following commands and remember to drop the brackets &amp;lt;&amp;gt; around the password.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo -u postgres psql -d template1&lt;br /&gt;
template1=# CREATE USER dirtsand WITH PASSWORD &amp;#039;&amp;lt;password&amp;gt;&amp;#039;;&lt;br /&gt;
template1=# CREATE DATABASE dirtsand WITH TEMPLATE = template0 ENCODING = &amp;#039;UTF8&amp;#039;;&lt;br /&gt;
template1=# ALTER DATABASE dirtsand OWNER TO dirtsand;&lt;br /&gt;
template1=# \q&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====2. Install the UUID functionality====&lt;br /&gt;
&lt;br /&gt;
This may be provided by your OS distribution.  In Ubuntu, simply install the postgresql-contrib-8.4 package (Check the apt-get list at the start of the SERVER SECTION) to provide the necessary libraries and installation scripts. If your distribution does not provide a contrib or uuid-ossp bundle, you can get it and build it yourself from the sources provided at:  http://www.ossp.org/pkg/lib/uuid/&lt;br /&gt;
&lt;br /&gt;
Once you have the ossp, you can add it to the dirtsand database by running the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo -u postgres psql -d dirtsand &amp;lt; /usr/share/postgresql/8.4/contrib/uuid-ossp.sql&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====3. Set up the dirtsand database====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo -u postgres psql -d dirtsand &amp;lt; db/dbinit.sql&lt;br /&gt;
$ sudo -u postgres psql -d dirtsand &amp;lt; db/functions.sql&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: If you see the message &amp;#039;ERROR: language &amp;quot;plpgsql&amp;quot; does not exist&amp;#039; while importing functions.sql, you will need to create the plpgsql language in the database:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo -u postgres psql -d dirtsand&lt;br /&gt;
dirtsand=# CREATE LANGUAGE plpgsql;&lt;br /&gt;
dirtsand=# \q&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this, you should re-import the functions.sql file to properly create the necessary dirtsand functions by running...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo -u postgres psql -d dirtsand &amp;lt; db/functions.sql&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If there were no other errors, your database should be ready for DIRTSAND&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====4. Configure dirtsand====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A sample dirtsand.ini has been provided in the root of the dirtsand sources. You will need to copy this to your install directory and then edit the fields you need for the server. Specifically, you will need to adjust the server addresses and the RC4 keys. If you have dirtsand installed to somewhere other than /opt/dirtsand, you will also need to point the configuration to the right paths too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo cp dirtsand.sample.ini /opt/dirtsand/dirtsand.ini&lt;br /&gt;
$ sudo chown dirtsand /opt/dirtsand/dirtsand.ini&lt;br /&gt;
$ su - dirtsand&lt;br /&gt;
$ &amp;lt;your-favorite-editor&amp;gt; dirtsand.ini&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use gedit as &amp;lt;your-favorite-editor&amp;gt; you may find it won&amp;#039;t run in the dirtsand account, so you will need to exit the dirtsand user, use sudo then log back in to the &amp;#039;dirtsand&amp;#039; user.&lt;br /&gt;
&lt;br /&gt;
To generate the RC4 keys, you can simply run the keygen command from within the dirtsand interactive console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ bin/dirtsand&lt;br /&gt;
ds-902&amp;gt; keygen new       (This one will take a little while)&lt;br /&gt;
ds-902&amp;gt; quit&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Any errors that dirtsand spits out about config files and postgres passwords can be ignored, since you haven&amp;#039;t provided a configuration file yet.&lt;br /&gt;
&lt;br /&gt;
You should now have a bunch of keys output on your terminal.&lt;br /&gt;
&lt;br /&gt;
In your terminal, go to Edit, Select All, and Copy. Then paste the output to a file and save it as &amp;quot;Dirtsand.keys&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NOTE: You will need to copy this file to your Windows box later as well as the &amp;quot;dirtsand.ini&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
The first block (labeled Server keys) in &amp;quot;Dirtsand.keys&amp;quot; is the set you should paste into your &amp;quot;dirtsand.ini&amp;quot; in the directory /opt/dirtsand/. Replace the dummy lines (with the &amp;#039;...&amp;#039; values) with the Server section in your &amp;quot;Dirtsand.keys&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
FOR LATER on Windows: The second set of keys will be placed directly in the client&amp;#039;s &amp;quot;server.ini&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: This requires either the H-uru fork of CWE or PlasmaClient.&lt;br /&gt;
&lt;br /&gt;
Caution -- the vanilla MOUL client cannot load keys from a file, and you will have to enter the keys as byte arrays directly into the executable. This will not be covered here.&lt;br /&gt;
&lt;br /&gt;
Later we will explain how to add the Client keys on the Windows box.&lt;br /&gt;
&lt;br /&gt;
Now before we move on, you need to unzip the &amp;#039;moulscripts&amp;#039; Python27 branch to your HOME folder.&lt;br /&gt;
&lt;br /&gt;
When you have unzipped the &amp;quot;Python27&amp;quot; branch of moulscripts, you will see 3 folders in &amp;quot;Python27&amp;quot; folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./dirtsand/dat&lt;br /&gt;
./dirtsand/Python&lt;br /&gt;
./dirtsand/SDL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One of these needs to be renamed to fall in line with the naming convention in the dirtsand.ini file.&lt;br /&gt;
&lt;br /&gt;
Rename &amp;quot;./Python27/dat&amp;quot; to &amp;quot;./Python27/ages&amp;quot; (This is to save you a couple of head scratches later on) like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ mv dat ages&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The files inside these folders are all the age, Python and SDL information dirtsand needs for the ages in UN-encrypted format.&lt;br /&gt;
&lt;br /&gt;
Leave them unencrypted for now because you will see later you need two copies of these files in unencrypted and encrypted format! More on that later...&lt;br /&gt;
&lt;br /&gt;
CAUTIONARY NOTE: Since Plasma, dirtsand and moul-scripts are in HEAVY alpha, you might find things don&amp;#039;t compile or throw out lots of errors. First check that you are compiling on a 32 bit WinXp system. Win7 64 bit is a little rebellious when it comes to 32 bit compatibility.&lt;br /&gt;
&lt;br /&gt;
==On Windows - Authdata, Manifests and Data==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Now, move over to your Windows box.&lt;br /&gt;
&lt;br /&gt;
Firstly, you should copy the Dirtsand.keys and dirtsand.ini file over to your Windows box now, and place them in their own folder for easy reference.&lt;br /&gt;
&lt;br /&gt;
For data serving to work you will need to create some server-side data such as manifests, encrypted python.pak and the content (data) of MOUL, but make special note that although this is created on Windows, you will copy the newly created files over to your UBUNTU box later!&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure to use the Win32 version of libhsPlasma to avoid any potential errors creeping in.&lt;br /&gt;
&lt;br /&gt;
The two tools you will use is plPythonPack.exe that was compiled earlier on and PlasmaCrypt.exe in your &amp;quot;Plasma_Win32&amp;quot; (libhsplasma) download.&lt;br /&gt;
&lt;br /&gt;
CAUTION: I tried to originally compile the client on Win7 64bit machine. There were some major errors I could not solve. As soon as I compiled a fresh build on a WinXP 32 bit system, everything fell into place.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Okay lets get going... What we found is this; dirtsand needs two versions of the &amp;quot;ages&amp;quot;, &amp;quot;Python&amp;quot; and &amp;quot;SDL&amp;quot; files. One version is UN-encrypted and the other is encrypted, but each goes in a specific place.&lt;br /&gt;
&lt;br /&gt;
Note: When we refer to encrypted Path, we mean; the files inside the folders are encrypted, NOT THE FOLDER ITSELF!&lt;br /&gt;
&lt;br /&gt;
Unencrypted Paths: &amp;lt;For dirtsands first launch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/ages/ &amp;lt;holds un-encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
/opt/dirtsand/Python/ &amp;lt;holds un-encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
/opt/dirtsand/SDL/ &amp;lt;holds un-encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Encrypted Paths:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/authdata/ages/ &amp;lt;holds encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
/opt/dirtsand/authdata/Python/ &amp;lt;holds encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
/opt/dirtsand/authdata/SDL/ &amp;lt;holds encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dirtsand.ini searches for these locations by default:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
File.Root = /opt/dirtsand/data&lt;br /&gt;
Auth.Root = /opt/dirtsand/authdata&lt;br /&gt;
Sdl.Path = /opt/dirtsand/SDL&lt;br /&gt;
Age.Path = /opt/dirtsand/ages&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the one conflict here is that &amp;#039;dat&amp;#039; and &amp;#039;data&amp;#039; can be confusing&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;dat&amp;#039; must be renamed to &amp;#039;ages&amp;#039; to align to &amp;#039;Age.Path&amp;#039; in dirtsand.ini (See above)&lt;br /&gt;
# &amp;#039;data&amp;#039; is the copy of MOULa content in the &amp;quot;dat&amp;quot; folder of your fresh MOUL install off your windows box.&lt;br /&gt;
&lt;br /&gt;
For dataserving, the most important server-side data for the client to access are the &amp;quot;authdata&amp;quot; server-provided files -- specifically, the ENcrypted &amp;quot;ages&amp;quot; and &amp;quot;SDL&amp;quot; and &amp;quot;python.pak&amp;quot; files.&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: External Plasma clients require these files in order to function, so you will need to provide them unless you are planning on making your server only work with Internal client builds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To create the files, do the following:&lt;br /&gt;
&lt;br /&gt;
NOTE: If you want to setup a PATH variable and shortcut this process, feel free to do so if you know how.&lt;br /&gt;
&lt;br /&gt;
# Make a copy of the &amp;quot;Python27&amp;quot; folder, and then do 2 things; rename the copied folder to &amp;quot;authdata&amp;quot; AND move it INTO the &amp;quot;Python27&amp;quot; folder. Now be careful with the next two steps!!&lt;br /&gt;
# copy plPythonPack.exe, msvcr100d.dll and python27_d.dll into the &amp;quot;authdata&amp;quot; folder.&lt;br /&gt;
# Launch &amp;quot;cmd&amp;quot; and browse to the &amp;quot;moulscripts\Python27\authdata&amp;quot; folder&lt;br /&gt;
# in a windows terminal type...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
plPythonPack.exe Python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and press enter. The command should return without errors. If there any errors you may have used a 64 bit system to compile &amp;quot;plPythonPack.exe&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Your windows folder structure should look like this;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
\Python27\ages&lt;br /&gt;
\Python27\Python&lt;br /&gt;
\Python27\SDL&lt;br /&gt;
\Python27\authdata\ages&lt;br /&gt;
\Python27\authdata\Python&lt;br /&gt;
\Python27\authdata\SDL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should notice 1 new file in the &amp;quot;\Python27\authdata\Python&amp;quot; folder named python.pak.&lt;br /&gt;
&lt;br /&gt;
* \Python27\authdata\Python\python.pak&lt;br /&gt;
&lt;br /&gt;
Although we have just packed the Python folder into &amp;quot;python.pak&amp;quot; it is still not encrypted.&lt;br /&gt;
&lt;br /&gt;
To encrypt this file set up a path variable to libhPlasma tools on Windows.&lt;br /&gt;
&lt;br /&gt;
Once you have set up the PATH variable, reboot for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
Now you can simply use &amp;quot;cmd&amp;quot; to navigate to the authdata folder.&lt;br /&gt;
&lt;br /&gt;
Now, the files that needs to be encrypted is the python.pak file you created earlier and all the &amp;quot;SDL&amp;quot; and &amp;quot;ages&amp;quot; files in the &amp;quot;\Python27\authdata\&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Navigate to the \Python27\authdata\Python\ folder and type (drop the inverted brackets in the command below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
prompt:&amp;gt; PlasmaCrypt droid -key {paste the key.droid value from &amp;quot;.\CWE Sandbox\INI Files\dirtsand.ini&amp;quot; here} python.pak&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It should look like;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
prompt:&amp;gt; PlasmaCrypt droid -key 86756......283746 python.pak&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This &amp;#039;key.droid&amp;#039; must be 32 digits long.&lt;br /&gt;
&lt;br /&gt;
Next you need to encrypt the contents of the &amp;quot;ages&amp;quot; and &amp;quot;SDL&amp;quot; folders.&lt;br /&gt;
&lt;br /&gt;
NOTE: Unfortunately there is no recursive support in plasmacrypt, so either do each file in each folder one by one or use the technique below. The technique below is a little time consuming, but you will only have to do it once.&lt;br /&gt;
&lt;br /&gt;
We are going to create a spreadsheet for each &amp;#039;ages&amp;#039; and &amp;#039;SDL&amp;#039; folder that will be used to create to batch files.&lt;br /&gt;
&lt;br /&gt;
Your final list of commands in each batch file should look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
PlasmaCrypt droid -key &amp;lt;key here&amp;gt; Ahnonay.age&lt;br /&gt;
etc&lt;br /&gt;
etc&lt;br /&gt;
etc&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can build a list of files using the &amp;quot;dir -b &amp;gt; sdl-enc.csv&amp;quot; and &amp;quot;dir -b &amp;gt; ages-enc.csv&amp;quot; command piped to a file, so that you can edit it in scalc or excel;&lt;br /&gt;
&lt;br /&gt;
# Add droid key to spreadsheet&lt;br /&gt;
# save as &amp;quot;csv&amp;quot; with space seperator&lt;br /&gt;
# edit with scite or notepad, and remove all spaces and inverted commas&lt;br /&gt;
# save the files with a &amp;quot;bat&amp;quot; extension into their respective folders&lt;br /&gt;
# use the terminal and browse to each folder and execute the batch file.&lt;br /&gt;
# If you did it right, when you open any one of the files in scite, it will look like gibberish with the starting line, &amp;quot;NotTheDroids&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you are ready to create the manifest files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MANIFEST FILES - Creating the manifest on Windows (will be copied to Ubuntu later):&lt;br /&gt;
&lt;br /&gt;
The server tells the client which files are available. For this you will also need to provide the following files in the &amp;quot;authdata&amp;quot; folder (these are called manifests);&lt;br /&gt;
&lt;br /&gt;
* python_pak.list&lt;br /&gt;
* SDL_sdl.list&lt;br /&gt;
* AGES_ages.list&lt;br /&gt;
&lt;br /&gt;
...which are simple manifest files of the format:&lt;br /&gt;
&lt;br /&gt;
  Path\filename.ext,size-in-bytes&lt;br /&gt;
&lt;br /&gt;
So, inside the python_pak.list file, you might have:&lt;br /&gt;
&lt;br /&gt;
  Python\python.pak,123456&lt;br /&gt;
&lt;br /&gt;
And inside the SDL_sdl.list file you would have;&lt;br /&gt;
&lt;br /&gt;
  SDL\ahnonay.sdl,27311&lt;br /&gt;
  SDL\ahnonaycathedral.sdl,3524&lt;br /&gt;
  SDL\etc,3453&lt;br /&gt;
  SDL\etc,476585&lt;br /&gt;
  SDL\etc,345&lt;br /&gt;
  SDL\etc,23&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note the use of a backslash here, since this path is provided directly to the client (which assumes a Windows path).&lt;br /&gt;
&lt;br /&gt;
To create these files you will need the command prompt, a text editor and a spreadsheet program.&lt;br /&gt;
&lt;br /&gt;
Open a text editor and save a blank file as Python_pak.list&lt;br /&gt;
&lt;br /&gt;
In the command prompt, navigate to the &amp;quot;\Python27\authdata\Python\&amp;quot; folder and type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
prompt:&amp;gt; dir&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The entry for python.pak should have a file size in bytes alongside it to the left.&lt;br /&gt;
&lt;br /&gt;
Type out the file size in bytes into the text editor (without spaces):&lt;br /&gt;
&lt;br /&gt;
   Python\python.pak,***&lt;br /&gt;
&lt;br /&gt;
becomes (the value to the right is only an example)&lt;br /&gt;
&lt;br /&gt;
   Python\python.pak,510544&lt;br /&gt;
&lt;br /&gt;
save the file as &amp;quot;Python_pak.list&amp;quot;, and you are done with your first manifest list.&lt;br /&gt;
&lt;br /&gt;
Next... change to the SDL folder...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
prompt:&amp;gt; dir SDL &amp;gt; sdl.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a file called sdl.txt in the root of &amp;quot;\Python27\authdata\SDL\&amp;quot; with all the file sizes in it. Now it is easy to load this into a spreadsheet program and do a clean up. The list should look like;&lt;br /&gt;
&lt;br /&gt;
  SDL\ahnonay.sdl,27311&lt;br /&gt;
  SDL\ahnonaycathedral.sdl,3524&lt;br /&gt;
  SDL\etc,3453&lt;br /&gt;
  SDL\etc,476585&lt;br /&gt;
  SDL\etc,345&lt;br /&gt;
  SDL\etc,23&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In scalc or excel a typical row would look like: (after all your fixing!)&lt;br /&gt;
&lt;br /&gt;
[[File:manifest.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, save it as csv (with comma as the separator), and open it in a text editor, and check it by hand to make sure it is right as shown above.&lt;br /&gt;
&lt;br /&gt;
Once you are happy with it, change the name of the file to SDL_sdl.list&lt;br /&gt;
&lt;br /&gt;
That is manifest file number 2 done!&lt;br /&gt;
&lt;br /&gt;
Now do the same for &amp;quot;ages&amp;quot;. The result should be AGES_ages.list.&lt;br /&gt;
&lt;br /&gt;
NOTE: Remember, don&amp;#039;t confuse &amp;quot;data&amp;quot; with &amp;quot;dat&amp;quot; in moulscripts.&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;dat&amp;quot; should rightly be renamed to &amp;quot;ages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;data&amp;quot; is a renamed copy of the &amp;quot;dat&amp;quot; folder in your fresh MOUL install that dirtsand will use to &amp;quot;serve&amp;quot; data (levels) to the client.&lt;br /&gt;
&lt;br /&gt;
Now, assuming you have prepared a fresh MOUL installation into your Games folder, browse to it and copy the &amp;quot;dat&amp;quot; content inside the MOUL folder to a new folder called &amp;quot;data&amp;quot; and place this folder (as big as it is) in your &amp;quot;Python27&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
So now, in &amp;quot;\Python27\&amp;quot; you should have:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
\Python27\ages\&lt;br /&gt;
\Python27\data\&lt;br /&gt;
\Python27\SDL\&lt;br /&gt;
\Python27\Python\&lt;br /&gt;
\Python27\authdata\ages\&lt;br /&gt;
\Python27\authdata\SDL\&lt;br /&gt;
\Python27\authdata\Python\&lt;br /&gt;
\Python27\authdata\Python\python.pak&lt;br /&gt;
\Python27\authdata\AGES_ages.list&lt;br /&gt;
\Python27\authdata\SDL_sdl.list&lt;br /&gt;
\Python27\authdata\python_pak.list&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now before moving on, you will need to copy the encrypted contents of the &amp;#039;\authdata\ages\&amp;#039; folder into the &amp;#039;data&amp;#039; folder... The reason is that the original content from MOUL is encrypted for Cyans droid key and not your Sandbox Shard, so you need to copy and overwrite all the *.age and *.fni files in \Python27\data\ with your newly encrypted copies from \Python27\authdata\ages.&lt;br /&gt;
&lt;br /&gt;
Now... copy the entire Python27 folder to the HOME folder on your Ubuntu box.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== On Ubuntu - Bringing in Authdata, Manifests and Data into Dirtsand==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) &amp;quot;Authdata&amp;quot; files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For dirtsand to provide the game files to the client, we need to do four things:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1) set up unecrypted versions of the ages, python and SDL folders in the root of dirtsand, and&lt;br /&gt;
* 2) set up a directory for &amp;quot;authdata&amp;quot; for the encrypted ages, python and SDL folders in the dirtsand folder.&lt;br /&gt;
* 3) bring in the data with encrypted age and fni files and process those files with dsData.sh&lt;br /&gt;
* 4) place the manifests in the &amp;#039;authdata&amp;#039; folder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some of the spreadsheets and scripts created for this purpose; Use at your own risk and double check everything!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://www.falsebaypost.co.za/cwe-sandbox/Sandbox Scripts.zip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 1: Dirtsand &amp;quot;root&amp;quot; folder&lt;br /&gt;
&lt;br /&gt;
The reason for the first step above is that when dirtsand is launched for the first time, dirtsand needs to read the un-encrypted &amp;quot;ages&amp;quot;, &amp;quot;Python&amp;quot; and &amp;quot;SDL&amp;quot; files to configure properly, so unencrypted versions are placed in the root of dirtsand...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this folder you will have unencrypted copies of &amp;quot;ages&amp;quot;, &amp;quot;Python&amp;quot; and &amp;quot;SDL&amp;quot; so that dirtsand can configure properly when run for the first time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/ages/&amp;lt;unecrypted age and fni files&amp;gt;&lt;br /&gt;
/opt/dirtsand/SDL/&amp;lt;unecrypted SDL files&amp;gt;&lt;br /&gt;
/opt/dirtsand/Python/&amp;lt;unecrypted Python files&amp;gt;&lt;br /&gt;
and&lt;br /&gt;
/opt/dirtsand/data/&amp;lt;converted data files to send to client&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2: Dirtsand &amp;quot;authdata&amp;quot; folder&lt;br /&gt;
&lt;br /&gt;
Now to before we move on, remember we will be creating the &amp;quot;authdata&amp;quot; folder to point to...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 /opt/dirtsand/authdata)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and then putting the &amp;quot;ages&amp;quot;, &amp;quot;Python&amp;quot; and &amp;quot;SDL&amp;quot; folders and their ENCRYPTED files in the respective subdirectories within the &amp;quot;authdata&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The folders:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 /opt/dirtsand/authdata/ages&lt;br /&gt;
 /opt/dirtsand/authdata/Python&lt;br /&gt;
 /opt/dirtsand/authdata/SDL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The files:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 /opt/dirtsand/authdata/&amp;lt;manifest&amp;gt;.list&lt;br /&gt;
 /opt/dirtsand/authdata/ages/*.age&lt;br /&gt;
 /opt/dirtsand/authdata/ages/*.fni&lt;br /&gt;
 /opt/dirtsand/authdata/Python/python.pak&lt;br /&gt;
 /opt/dirtsand/authdata/SDL/*.sdl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Remember that the manifest *.list files are NOT encrypted and go directly in your &amp;quot;authdata&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now remembering the structure above, plug in your memory stick in Ubuntu, and then in Nautilus (or a terminal) copy the Python27 folder to your HOME directory.&lt;br /&gt;
&lt;br /&gt;
Now before you can add the files to dirtsand you must change their ownership otherwise you&amp;#039;ll be back at this step later! ; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Open a terminal (it opens in your HOME directory by default) and type:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo chown -R dirtsand Python27&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The -R flag will make sure &amp;quot;chown&amp;quot; changes the ownership of all files... even inside folders.&lt;br /&gt;
&lt;br /&gt;
Now, we can go to our terminal window, and type:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ su - dirtsand&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you type &amp;quot;ls&amp;quot; you will see that you are in the root of the &amp;quot;dirtsand&amp;quot; folder&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now using a terminal you can copy the files over;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp -R /home/&amp;lt;username&amp;gt;/Python27/*.* /opt/dirtsand/.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)   Data Server&lt;br /&gt;
&lt;br /&gt;
To use the data server with its services you will need to run the &amp;#039;dsData.sh&amp;#039; script on the content of the data folder in;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/data/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: There is no recursive functionity in dsData.sh, so you can do this one file at a time or follow the steps below and use the spreadsheet method.&lt;br /&gt;
&lt;br /&gt;
NOTE: At a later date you may choose to create the ThinExternal.mfs and External.mfs files, which describe the files necessary for the patcher and client (respectively) to run. Don&amp;#039;t worry about this now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will need to create &amp;#039;age&amp;#039;, and &amp;#039;prp&amp;#039; manifests of the form &amp;quot;&amp;lt;agename&amp;gt;.mfs&amp;quot; which will be requested by the client when it attempts to link to an age.&lt;br /&gt;
&lt;br /&gt;
NOTE: Dont process the &amp;#039;fni&amp;#039; files with dsData.sh. Just leave them as they are.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The format of the manifest files is as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
remote_filename.ext,local_filename.ext.gz,decompressed_hash,compressed_hash,decompressed_size,compressed_size,flags&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The helper script provided in bin/dsData.sh will gzip a file and generate a manifest line with the correct hashes and sizes for you automatically. Take care that the remote path expects to use a Windows path/filename, so it should use backslashes instead of forward ones, whereas the local filename should use Unix slashes.&lt;br /&gt;
&lt;br /&gt;
The best way to start this process of converting the data folder to the correct format is to run the command;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -b /opt/dirtsand/data &amp;gt;&amp;gt; data.list&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will create a file with a listing of the filenames from the &amp;#039;data&amp;#039; folder.&lt;br /&gt;
&lt;br /&gt;
Now load it into &amp;#039;scalc&amp;#039; or other spreadsheet program and create a row for each file as follows;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/bin/dsData.sh AhnonayCathedral.age &amp;gt;&amp;gt; AhnonayCathedral.mfs;&lt;br /&gt;
/opt/dirtsand/bin/dsData.sh AhnonayCathedral_District_BuiltIn.prp &amp;gt;&amp;gt; AhnonayCathedral_District_BuiltIn.mfs;&lt;br /&gt;
/opt/dirtsand/bin/dsData.sh AhnonayCathedral_District_Textures.prp &amp;gt;&amp;gt; AhnonayCathedral_District_Textures.mfs;&lt;br /&gt;
etc;&lt;br /&gt;
etc;&lt;br /&gt;
etc;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do this for EVERY age and prp file. Be careful to include the semi-colon at the end of each line.&lt;br /&gt;
&lt;br /&gt;
Save this file as a &amp;#039;csv&amp;#039; and open it with a text editor. The remove all the fluff that does not look like the format description above.&lt;br /&gt;
&lt;br /&gt;
Now save it with the extension .sh and run it from inside the &amp;#039;data&amp;#039; folder.&lt;br /&gt;
&lt;br /&gt;
When it is done you should have a &amp;quot;.gz&amp;quot; and a &amp;quot;.mfs&amp;quot; version for each file. You wont see the original files anymore because they have been packed into the &amp;quot;.gz&amp;quot; archive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now comes the tricky part... In each .mfs file you need to append the tag &amp;quot;dat\&amp;quot; at the beginning of the line. This corresponds to the &amp;#039;dat&amp;#039; folder in your MOUL install on windows. If this is not included, the client will write the updated data into the root of your MOUL.&lt;br /&gt;
&lt;br /&gt;
To append &amp;#039;dat\&amp;#039;, you can either do this by hand... and take a week to do it, or build a spreadsheet to help you create a script, which means an hour or so tops out of your time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start by creating a small file called &amp;quot;stub&amp;quot; in the &amp;#039;data&amp;#039; folder. Inside it put the line &amp;quot;dat\&amp;quot; and save it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The spreadsheet layout should be as follows; (Don&amp;#039;t forget the semi colon at the end of each line.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#! bin/bash&lt;br /&gt;
paste stub AhnonayCathedral.mfs | sed &amp;#039;s/\t//&amp;#039; &amp;gt;&amp;gt; AhnonayCathedral.mfs1;&lt;br /&gt;
paste stub AhnonayCathedral_District_BuiltIn.mfs | sed &amp;#039;s/\t//&amp;#039; &amp;gt;&amp;gt; AhnonayCathedral_District_BuiltIn.mfs1;&lt;br /&gt;
paste stub AhnonayCathedral_District_LinkRoom.mfs | sed &amp;#039;s/\t//&amp;#039; &amp;gt;&amp;gt; AhnonayCathedral_District_LinkRoom.mfs1;&lt;br /&gt;
paste stub AhnonayCathedral_District_Textures.mfs | sed &amp;#039;s/\t//&amp;#039; &amp;gt;&amp;gt; AhnonayCathedral_District_Textures.mfs1;&lt;br /&gt;
etc;&lt;br /&gt;
etc;&lt;br /&gt;
etc;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now save it as &amp;#039;csv&amp;#039; and open it in a text editor to clean it up so it looks like above.&lt;br /&gt;
&lt;br /&gt;
What this will do is join the line &amp;quot;dat\&amp;quot; to the line inside each &amp;quot;.mfs&amp;quot; file and save it as a new &amp;quot;.mfs1&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
Then to get the filename corrected, once you check that the &amp;quot;.mfs1&amp;quot; file contents is correct by using your trusty text editor, delete all the &amp;quot;.mfs&amp;quot; files (or backup them up somewhere else) and run the next command based on another spreadsheet;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#! bin/bash&lt;br /&gt;
mv AhnonayCathedral_District_BuiltIn.mfs1 AhnonayCathedral_District_BuiltIn.mfs;&lt;br /&gt;
mv AhnonayCathedral_District_LinkRoom.mfs1 AhnonayCathedral_District_LinkRoom.mfs;&lt;br /&gt;
mv AhnonayCathedral_District_Textures.mfs1 AhnonayCathedral_District_Textures.mfs;&lt;br /&gt;
etc;&lt;br /&gt;
etc;&lt;br /&gt;
etc;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you should have a ton of &amp;quot;.gz&amp;quot; and &amp;quot;.mfs&amp;quot; files in the data folder in dirtsand.&lt;br /&gt;
&lt;br /&gt;
Remember that if you set up another shard, you can simply reuse your new scripts that you built from spreadsheets, so this big task is now finally done and you wont need to play with spreadsheets beyond this point.&lt;br /&gt;
&lt;br /&gt;
== On Windows - Building a new MOUL install ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8) Setting up your Windows Client:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to setup your Windows client from scratch with your compiled versions plClient and plUruLauncher and your new server.ini file, follow these steps:&lt;br /&gt;
&lt;br /&gt;
Install MOULInstaller887.exe (There is a later version MoulInstaller887.exe)&lt;br /&gt;
&lt;br /&gt;
Watch out when the installer finishes... it tries to connect to Cyan, so make sure you got your network cable unplugged temporarily. You don&amp;#039;t want their updates for your shard! The reason is, they are based on python 2.3, and your shard only runs python 2.7.&lt;br /&gt;
&lt;br /&gt;
Then in the root of your fresh Sandbox installation do this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Backup your UruLauncher.exe&lt;br /&gt;
* Backup your UruExplorer.exe&lt;br /&gt;
* Copy your compiled plClient.exe from .\CWE Sandbox\plEngine\ to the root of your Sandbox install and rename it to UruExplorer.exe&lt;br /&gt;
* Copy your compiled plUruLauncher.exe .\CWE Sandbox\plEngine\ to the root of your Sandbox install and rename it to UruLauncher.exe&lt;br /&gt;
* Copy wrap_oal.dll&lt;br /&gt;
* Copy NxCharacter.dll&lt;br /&gt;
* Copy NxCooking.dll&lt;br /&gt;
* Copy NxExtensions.dll&lt;br /&gt;
* Copy OpenAL32.dll&lt;br /&gt;
* Copy python27.dll&lt;br /&gt;
* Copy python27_d.dll&lt;br /&gt;
* Copy resource.dat&lt;br /&gt;
* Edit tos.txt with the GNU GPL license&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then to setup the server.ini file...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Copy the Zrax&amp;#039;s ini file at http://moul.zrax.net/zraxnet.ini and save it to your Sandbox.&lt;br /&gt;
* Rename zraxnet.ini to mynet.ini&lt;br /&gt;
* Open a Windows Command Prompt, change to that directory and run the following command:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Prompt:&amp;gt; PlasmaCrypt decrypt mynet.ini&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the command is finished, open the file with a text editor (Use one that keeps format in place - Like Scite or Scintilla, just easier than notepad)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Open your Dirtsand.keys file and paste your 6 Client auth keys that were generated from dirtsand over the 6 Client auth keys in the mynet.ini file. If you open the mynet.ini file on your windows box and see mumbo jumbo, you did not decrypt your file correctly, so try the decrypt command again.&lt;br /&gt;
&lt;br /&gt;
Now the last entries in the mynet.ini file are:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   Server.Gate.Host &amp;quot;xxx.xxx.xx.xxx&amp;quot; (IP address assigned to Ubuntu -&lt;br /&gt;
&lt;br /&gt;
       - to find this go to your ubuntu terminal and type ifconfig, and use the address after &amp;quot;inet addr:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
   Server.Auth.Host &amp;quot;xxx.xxx.xx.xxx&amp;quot; (same as above)&lt;br /&gt;
&lt;br /&gt;
   Server.DispName &amp;quot;The journey continues...&amp;quot; (whatever catch phrase kicks your hair back)&lt;br /&gt;
&lt;br /&gt;
   Server.Status &amp;quot;&amp;lt;same as above&amp;gt;/shardstatus.php&amp;quot; (contains a simple PHP print command,&lt;br /&gt;
&lt;br /&gt;
       - eg: &amp;#039;hello world&amp;#039; or &amp;#039;server is up&amp;#039; - Needs explanation on setting up simple Apache -   Anyone?&lt;br /&gt;
&lt;br /&gt;
   Server.Signup &amp;quot;&amp;lt;same as above&amp;gt;/newacct.php&amp;quot; (no idea how to create the account creation file...&lt;br /&gt;
&lt;br /&gt;
       - and how it ties back to the dirtsand command &amp;quot;addacct &amp;lt;username&amp;gt; &amp;lt;password&amp;gt;&amp;quot; ) - Anyone?&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once done you will need to encrypt the mynet.ini file with the &amp;#039;xtea&amp;#039; parameter in PlasmaCrypt. Just run the command:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Prompt:&amp;gt; PlasmaCrypt xtea mynet.ini&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command returns a success if all went well, copy mynet.ini to your Sandbox install on windows and rename it to &amp;#039;server.ini&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== On Ubuntu - Running the Sandbox Server, pgAdmin3 and Wireshark ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9) Run the server:&lt;br /&gt;
&lt;br /&gt;
Assuming everything else went smoothly, you should now be able to start your server and connect to it!&lt;br /&gt;
&lt;br /&gt;
To start the server... You will use this command every time you want to start dirtsand after a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ bin/dirtsand dirtsand.ini&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You&amp;#039;ll have to create an account first, which can be done from the console:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ ds-902&amp;gt; addacct &amp;lt;username&amp;gt; &amp;lt;password&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: The first time you run this can be quite odd since no vault is yet created. It seems to error out. When it happens just press enter and you should get to the dirtsand prompt.&lt;br /&gt;
&lt;br /&gt;
If you need to verify that an account has been made, or you want to check that your server is listening for your windows client, you can follow the pgadmin and wireshark steps here...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==On Windows - Logging into the Sandbox Server==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10) Run the Client: On Windows...&lt;br /&gt;
&lt;br /&gt;
Launch plClient and enter the username and password you created in the step above.&lt;br /&gt;
&lt;br /&gt;
After the license screen CWE should load and you will be taken to menu to create an avatar. You know the rest.&lt;br /&gt;
&lt;br /&gt;
Happy Exploring!&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Git/download links:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/H-uru/dirtsand&lt;br /&gt;
* http://github.com/H-uru/Plasma&lt;br /&gt;
* https://github.com/H-uru/moul-scripts&lt;br /&gt;
* https://github.com/H-uru/libhsplasma&lt;br /&gt;
* http://guildofwriters.com/tools/devlibs.zip&lt;br /&gt;
&lt;br /&gt;
SETTING UP pgAdmin3:&lt;br /&gt;
&lt;br /&gt;
To check if you have created a user successfully, you will need to download pgadmin3...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo apt-get install pgadmin3&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will help you access postgres in a friendly gui environment. Setting up pgadmin3 is quite simple once it is installed. Click on &amp;quot;Applications&amp;quot; , &amp;quot;Programming&amp;quot; , &amp;quot;pgAdmin3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The gui will launch. Once open click on the icon thats looks like an electrical plug to create a new server connection.&lt;br /&gt;
&lt;br /&gt;
The fields should be exactly as below unless you changed them when you set up postgres a number of steps back.&lt;br /&gt;
&lt;br /&gt;
   Name: dirtsand&lt;br /&gt;
   Host: 127.0.0.1&lt;br /&gt;
   Port: 5432 - (leave this as it is)&lt;br /&gt;
   SSL: blank - (Not important right now... keep it simple)&lt;br /&gt;
   Maintenance DB: postgres&lt;br /&gt;
   Username: dirtsand&lt;br /&gt;
   Password: &amp;lt;whatever you chose for your password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leave the rest of the window as it is. You will notice the windows has no &amp;quot;OK&amp;quot; button. Just after you entered your password, please &amp;quot;Enter&amp;quot; and the connection will be made. A dialog will pop up about &amp;quot;Saving passwords&amp;quot;, read it and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If it fails, you entered something wrong, so try again by clicking on the plug icon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You know you have succeeded to login to the database when in the left hand pane you see;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Server Groups&amp;quot;, below that &amp;quot;Servers&amp;quot;, and below that &amp;quot;dirtsand&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the new player you added, click on &amp;quot;dirtsand&amp;quot;, then the + sign to the left of it to expand it. Then &amp;quot;Databases&amp;quot; , &amp;quot;dirtsand&amp;quot; , &amp;quot;Schemas&amp;quot; , &amp;quot;auth&amp;quot; , &amp;quot;Tables&amp;quot; , &amp;quot;Accounts&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, look for the little blue icon in the toolbar that looks like a spreadsheet... and click it.&lt;br /&gt;
&lt;br /&gt;
You should be looking at your first account that you created with the command;&lt;br /&gt;
&lt;br /&gt;
  ds-902&amp;gt; addacct &amp;lt;username&amp;gt; &amp;lt;password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you dont see the exact username you created, you will have to backtrack your steps in this wiki, and try to figure out where you went wrong.&lt;br /&gt;
&lt;br /&gt;
If all looks well, save your connection... &amp;quot;File&amp;quot; , &amp;quot;Save Definition&amp;quot; , then give it a cool name like &amp;quot;Sandbox Shard&amp;quot; and click &amp;quot;Save&amp;quot; otherwise when you next launch pgAdmin3 you will have to manually reconnect again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SETTING UP Wireshark:&lt;br /&gt;
&lt;br /&gt;
This tool is very useful to check if your client is connecting to your Ubuntu shard. To install it run...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo apt-get install wireshark&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is best to do a reboot, and when back in Ubuntu DON&amp;#039;T run it from the &amp;quot;Applications&amp;quot; menu...&lt;br /&gt;
&lt;br /&gt;
Open a terminal, and type...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo wireshark&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: If you run it from the App menu you won&amp;#039;t find your ethernet controller.&lt;br /&gt;
&lt;br /&gt;
Now, once wireshark has launched you will get a warning. Acknowledge it, and click &amp;quot;OK&amp;quot;. Please don&amp;#039;t do anything rash while using wireshark. Just follow these instructions.&lt;br /&gt;
&lt;br /&gt;
Once you click &amp;quot;OK&amp;quot; you should be taken to the wireshark main interface. Look under Capture on the main page, and identify your ethernet controller. Generally it is called &amp;quot;eth0&amp;quot; but you may have some other configuration.&lt;br /&gt;
&lt;br /&gt;
If you click on &amp;quot;eth0&amp;quot; wireshark will start to capture all traffic over that interface immediately. This is a good sign that wireshark and your ethernet controller are both working!&lt;br /&gt;
&lt;br /&gt;
Stop the live capture by clicking on the icon with the little red cross.&lt;br /&gt;
&lt;br /&gt;
Click on &amp;quot;Capture&amp;quot; in the top menu, and click &amp;quot;Options&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, be careful... the only field you want to fill out is the one to the right of &amp;quot;Capture Filter&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to jump to your Windows box quickly and in a command terminal run&lt;br /&gt;
&lt;br /&gt;
   prompt:&amp;gt; ipconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Look through the list and look for the IPv4 address for your computer... Something like this;&lt;br /&gt;
&lt;br /&gt;
Ethernet adapter Local Area Connection:&lt;br /&gt;
&lt;br /&gt;
  Connection-specific DNS Suffix  . :&lt;br /&gt;
  Link-local IPv6 Address . . . . . : ****::****:****:****:***%**&lt;br /&gt;
  IPv4 Address. . . . . . . . . . . : 124.122.23.11  &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;lt; Your IP address will be here!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
  Subnet Mask . . . . . . . . . . . : 255.255.255.0&lt;br /&gt;
  Default Gateway . . . . . . . . . : 235.211.11.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now back on Ubuntu fill in that field just mentioned, type;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
host 124.122.23.11 (replace with whatever your IP is - the word &amp;quot;host&amp;quot; is crucial!)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do not change any settings beside this, and simply click &amp;quot;START&amp;quot;, then &amp;quot;Continue without Saving&amp;quot;&lt;br /&gt;
&lt;br /&gt;
What this will do is ignore all other internet traffic except traffic from your Windows client. This makes reading wireshark much easier than having to sift through a ton of traffic!&lt;br /&gt;
&lt;br /&gt;
The screen should be blank, so first we need to test the connection. First, in a new terminal on Ubuntu, run...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ /sbin/ifconfig&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look for &amp;quot;inet addr&amp;quot; the IP address under &amp;quot;eth0&amp;quot; of your Sandbox and write it down. Take this to your Windows box.&lt;br /&gt;
&lt;br /&gt;
On your Windows box, your command prompt should still be open after you ran ipconfig. Now run a ping command...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
prompt:&amp;gt; ping ***.***.**.** (type out the full IP address)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now brace yourself, hehe! As you hit &amp;quot;enter&amp;quot; keep a beady eye on your Ubuntu wireshark screen. You should get about 10 lines of connection reports. This is great... your client is &amp;quot;seeing&amp;quot; your Server!&lt;br /&gt;
&lt;br /&gt;
Now in wireshark on Ubuntu click &amp;quot;Capture&amp;quot; , &amp;quot;Restart&amp;quot; to clear the screen.&lt;br /&gt;
&lt;br /&gt;
Here is where you now hold your breath, because you are about to see if your recently compiled plClient.exe (and all the work you have done) can establish a connection with your shard.&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
	<entry>
		<id>http://myst.dustbird.net/w/index.php?title=Setting_Up_A_Sandbox_Shard_with_Dataserver&amp;diff=1938</id>
		<title>Setting Up A Sandbox Shard with Dataserver</title>
		<link rel="alternate" type="text/html" href="http://myst.dustbird.net/w/index.php?title=Setting_Up_A_Sandbox_Shard_with_Dataserver&amp;diff=1938"/>
		<updated>2011-08-07T14:28:22Z</updated>

		<summary type="html">&lt;p&gt;AndyLegate: Created page with &amp;#039;== How to create a SANDBOX SHARD ==  by Phoenix Rising version 0.01 pre Alpha - July 2011  Shorah Explorers  The aim of this document is to detail as closely as possible the exac…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to create a SANDBOX SHARD ==&lt;br /&gt;
&lt;br /&gt;
by Phoenix Rising&lt;br /&gt;
version 0.01 pre Alpha - July 2011&lt;br /&gt;
&lt;br /&gt;
Shorah Explorers&lt;br /&gt;
&lt;br /&gt;
The aim of this document is to detail as closely as possible the exact steps to create your own Sandbox Shard using GoW&amp;#039;s CWE Client and Zrax&amp;#039;s Dirtsand Server specifically for writers and age builders who want to test MOULa compatible ages. As a basis for this document we will use Zrax&amp;#039;s README at https://github.com/H-uru/dirtsand but with a lot more detailed editing based on first hand experience setting up the Sandbox Shard. We have permission from Zrax to use his README in this wiki but with a much expanded and detailed version which we have added. We have chosen to use GoW&amp;#039;s CWE Client since it has been heavily updated so that it may be compiled easily and with a much more recent version of DirectX SDK and other tweaks such as reduction of lag by Tsar Hoikas. This simply means that it has better support and hopefully better gameplay on your fancy new computer!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IMPORTANT NOTE: This is a work in progress and gets highly technical, and as such is not recommended for newbies. Some changes may happen along the way. If you want to add to this wiki, please be nice! We want this to appeal to everyone young and old and have a really cool wiki to show for it. If you have helpful suggestions feel free to add them, but kindly refrain from deleting any sections. A lot of hard work has gone into documenting this procedure for the sake of all the Uru fans out there. At the end of the day all this effort is due to teamwork, since noone can do such a mammoth task alone!&lt;br /&gt;
&lt;br /&gt;
HARDWARE PREREQUISITES: The aim of this wiki is to teach a writer/builder/developer to test CWE compatible ages. For that at least two computers are needed (one of which must have an able graphics card).&lt;br /&gt;
&lt;br /&gt;
As a benchmark we will be building the sandbox based on:&lt;br /&gt;
&lt;br /&gt;
* CLIENT MACHINE: A Dell Inspiron running Windows 7 64 bit, with a 1Gb Ati Graphics card, and&lt;br /&gt;
* SERVER MACHINE: An Asus Eeepc mini laptop running Ubuntu 10.10 (Maverick).&lt;br /&gt;
&lt;br /&gt;
The specs are not crucial, except for the graphics card on the Windows Machine and the Flavour of Linux on the SERVER. We have chosen Ubuntu 10.10 because although we still have to configure stuff, we dont like configuration nightmares!&lt;br /&gt;
&lt;br /&gt;
A simple test to see if your Windows CLIENT can handle all of CWE&amp;#039;s graphics requirements is to ramp up all your Graphics settings to maximum when you run the launcher for TPOTS and see if your computer runs smoothly or has screen jitter/stutter. If your machine can handle these high settings you will be less restricted in your age building later on.&lt;br /&gt;
&lt;br /&gt;
NETWORK CONNECTION: This wiki will attempt to document one of the two approaches to network connectivity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# SANDBOX MODE - SERVER and CLIENT on a local hub using DHCP or fixed IP. (No internet)&lt;br /&gt;
# SHARD MODE - SERVER on dynamic DNS or fixed IP, and CLIENT accessing through the internet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SHARD MODE will be covered in another wiki at a later date.&lt;br /&gt;
&lt;br /&gt;
Both configurations have their merits. The first provides the &amp;quot;offline&amp;quot; sandbox mode for creating your own ages and testing the content, even though you will still be connecting via a network of some kind. The second makes your shard accessible to other players over the internet. This you will use when you are ready to go live!&lt;br /&gt;
&lt;br /&gt;
== TERMS and ABBREVIATIONS: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cyan has come a long way since the release of Myst. Their original 2D &amp;quot;point and click&amp;quot; game eventually evolved into a fully three dimensional gameplay with unrestricted movement and engaging avatar animations. Although Myst was the forefather of MOUL, in our wiki we wont be covering the MYST engine or how to set it up. It is too outdated. If you really want to play Myst you can use your original Myst CD content, Drizzle and TPOTS.&lt;br /&gt;
&lt;br /&gt;
We need to draw a line as to what versions of Cyan&amp;#039;s engine we use, and what purpose each version serves. Below is a list of the commonly accepted Versions.&lt;br /&gt;
&lt;br /&gt;
Only one version will be used to setup our SANDBOX SHARD. The CWE Client using the MOULa content!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Choru&amp;#039;&amp;#039;&amp;#039; - Cyan&amp;#039;s Closed Beta.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ubiru&amp;#039;&amp;#039;&amp;#039; - Ubisoft&amp;#039;s Closed Beta.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ABM&amp;#039;&amp;#039;&amp;#039; - Ages Beyond Myst - The vanilla single player version of Uru.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Prologue&amp;#039;&amp;#039;&amp;#039; - The original MMO version of Uru. (Essentially an Open Beta)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;UruUpdate12&amp;#039;&amp;#039;&amp;#039; - Update package to fix bug with ATI Graphics cards.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;DNI&amp;#039;&amp;#039;&amp;#039; - To D&amp;#039;ni Expansion Pack - an add-on extension that adds some of the Prologue Ages along with a recap of the Prologue story.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TPOTS&amp;#039;&amp;#039;&amp;#039; - The Path of the Shell Expansion Pack - adds even more content to ABM.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CC&amp;#039;&amp;#039;&amp;#039; - Complete Chronicles - a compilation of the first 4 packages as a single distribution.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;UU&amp;#039;&amp;#039;&amp;#039; - Unt&amp;amp;igrave;l Uru - A no longer officially supported online version of ABM.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;D&amp;#039;mala&amp;#039;&amp;#039;&amp;#039; - The Cyan Worlds Until Uru Shard.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MOUL&amp;#039;&amp;#039;&amp;#039; - Myst Online: Uru Live - The Third Online Incarnation of Uru&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MOULagain / MOULa&amp;#039;&amp;#039;&amp;#039; - Myst Online: Uru Live Again - Resurrected version of MOUL&lt;br /&gt;
&lt;br /&gt;
and finally the Open Source Client that has been given to the community by Cyan Worlds, namely:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CWE&amp;#039;&amp;#039;&amp;#039; - CyanWorlds.com Engine - the recently released Open Source client based on MOUL - Note: not a full source release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to start building ages, we do not recommend following this wiki beyond the following few lines. There is a fine line between a creative mind and a technical mind (and very few people are both), and if you are interested in creating ages, this wiki will not help you. There are many tutorials on the Guild of Writers to help you build your first age.&lt;br /&gt;
&lt;br /&gt;
== ASSUMPTIONS TO FOLLOW THIS WIKI ==&lt;br /&gt;
&lt;br /&gt;
* You will be compiling the CWE client on a WinXp 32 Bit machine.&lt;br /&gt;
* You know how to use Windows command line&lt;br /&gt;
* You know how to use a Linux command line&lt;br /&gt;
* You know how to compile C++ software on Windows&lt;br /&gt;
* You know how to compile C++ software on Linux&lt;br /&gt;
* You are fluent using both systems and understand the subtleties of each, such as: case sensitivity, backslash versus forward slash, and what a terminal is.&lt;br /&gt;
* You know how to use scalc or excel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you fail to do any of the above, it&amp;#039;s time for you to go back to the drawing board and do some study and practice before moving forward. You can find some useful tutorials below at:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://guildofwriters.com/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ok, let&amp;#039;s begin:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As this wiki unfolds you will notice that we will have to do work on both the SERVER and the CLIENT at any one time, so be prepared for it before it happens. We will refer to the client as Windows, and the server as Ubuntu for ease of reference.&lt;br /&gt;
&lt;br /&gt;
== Github and the branches ==&lt;br /&gt;
&lt;br /&gt;
There are 3 main projects that we will pull from github.&lt;br /&gt;
&lt;br /&gt;
# plasma&lt;br /&gt;
# dirtsand&lt;br /&gt;
# moul-scripts&lt;br /&gt;
&lt;br /&gt;
The 4th one is the set of tools that you can build on your linux box. We prefer to use the Plasma_Win32 Tools, so compiling the tools for linux won&amp;#039;t be covered here.&lt;br /&gt;
&lt;br /&gt;
Now it is important to wrap your brain around the idea of a branch, and which one to choose on github. The important thing to remember is that you will want the branches that made for the CWE/dirtsand engine, so to keep you focussed on what you looking for, here is a quick list; (Note, we won&amp;#039;t be covering how to build a Cyan compatible engine, since Cyans MOUL still runs on Python 2.3 and CWE worls on Python 2.7)&lt;br /&gt;
&lt;br /&gt;
In github look for the branches tab and select each for the following projects;&lt;br /&gt;
&lt;br /&gt;
# plasma - master branch&lt;br /&gt;
# dirtsand - master branch&lt;br /&gt;
# moul-scripts - python27 branch&lt;br /&gt;
&lt;br /&gt;
An easy way to get the code is to click the &amp;quot;Downloads&amp;quot; button to the far right of &amp;quot;branches&amp;quot; tab.&lt;br /&gt;
&lt;br /&gt;
== On Windows - Let&amp;#039;s compile CWE ==&lt;br /&gt;
&lt;br /&gt;
Our starting point is to build the CWE client based on the &amp;quot;master&amp;quot; branch on github since it is a relatively simple process and will help you get your feet wet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To build the client you can follow the GoW tutorial and video clip below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Tut: http://www.guildofwriters.com/wiki/Development:CyanWorlds.com_Engine&lt;br /&gt;
* Clip: http://www.youtube.com/watch?v=HZbMf5W67UI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is no need to rewrite such a detailed and well written tutorial. The guys who created this deserve a big thank you from all the uru fans out there.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you are done, you will have 3 files in the &amp;lt;pre&amp;gt;.\Plasma\build\Sources\Plasma\Apps\&amp;lt;/pre&amp;gt; directory, which you will use later.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
.\plClient\debug\plClient.exe&lt;br /&gt;
.\plUruLauncher\debug\plUruLauncher.exe&lt;br /&gt;
.\plPythonPack\Debug\plPythonPack.exe&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How you choose to layout your directory structure for CWE development is up to you, but if you want to keep a semblance of order, we suggest the following structure that you will want to create on your Windows hard drive to avoid a panic and tedious searches for things.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Windows make a folder called &amp;quot;CWE Sandbox&amp;quot; (or whatever blows your hair back)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Inside this folder create the following folders:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;CWE Repository&amp;quot;  ( this is where you store source code, dependancies, etc. )&lt;br /&gt;
&amp;quot;CWE Tools&amp;quot;       ( This is where you save plasmashop, prp_explorer, prptool, plPlasma, etc. )&lt;br /&gt;
&amp;quot;INI Files&amp;quot;       ( a directory to store the dirtsand.ini, server.ini and zrax.ini files, and your modified versions of those files. )&lt;br /&gt;
&amp;quot;Installers&amp;quot;      ( a place to store your original MOUL installation files, etc )&lt;br /&gt;
&amp;quot;plEngine&amp;quot;        ( A copy of the compiled executables plClient.exe, plUruLauncher.exe and plPythonPack.exe )&lt;br /&gt;
&amp;quot;Tutorials&amp;quot;       ( Your favourite tutorials to use as a reference )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A few extra folders that are very useful are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
.\CWE Sandbox\CWE Repository\CWE Dependancy\ ( save all your Compiler dependencies that you downloaded here&lt;br /&gt;
 in executable or source code form... cmake, git, DxSDK, openal, devlibs, PhysX, VS2008-SP1, etc )&lt;br /&gt;
.\CWE Sandbox\CWE Repository\Plasma\ ( the folder where you download and save the CWE source code to )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This structure is not set in stone. If you have your own structure simply move on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We also recommend you create a &amp;quot;Games&amp;quot; folder outside of the &amp;quot;CWE Sandbox&amp;quot; folder. You will have a few versions of one game, because sometimes things can go wrong and you need to start with a fresh copy, or one version when patched only works with a specific shard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just remember that our focus is using the CWE client with Dirtsand server! All other shards do not apply to this wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A good way to manage all these versions is to install ABM-TPOTS and MOULa to your Default Windows Drive and to NEVER USE IT (Just make sure you unplug your network cable or block your firewall on completion of the MOULa installation, because we dont want it to automatically install Cyans updates when it finishes installing). Then when we need it we COPY the version we want to the GAMES folder, then rename it to something unique, as below...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
.\Games\&lt;br /&gt;
.\Games\Cyan Worlds\Uru - Ages Beyond Myst - Deep Island        ( patched ABM-TPOTS version )&lt;br /&gt;
.\Games\Cyan Worlds\Uru - Ages Beyond Myst - TPOTS              ( default ABM-TPOTS expansion/CC version )&lt;br /&gt;
.\Games\Cyan Worlds\Uru Live                                    ( MOULa version )&lt;br /&gt;
.\Games\Cyan Worlds\Uru Live - Dirt Sand                        ( MOULa version with Zraxs server.ini file )&lt;br /&gt;
.\Games\Cyan Worlds\Uru Live - Sandbox                          ( your MOULa Sandbox with plEngine files )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Get used to the fact that when you copy an ABM-TPOTS or MOUL install you may have to go and make a cup of coffee because you are looking at around 2,5 to 4,5 gigs per copy, and that is not a fast operation even on a dual or quad core computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is good to install the ABM-TPOTS version so that if any problems come up with MOUL/CWE version, you can run ABM-TPOTS to see if your hardware is still okay.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, time to delve into the SERVER. The next portion is Zrax&amp;#039;s heavily edited README for his Dirtsand server. It is assumed that you have Ubuntu 10.10 installed, and that you wrote down the superuser password somewhere safe! Phoenix says: &amp;quot;Yip, I had to reinstall Ubuntu once because I lost the root accounts password, so yes, it can happen to you too!&amp;quot; It is also assumed that you can get to the Ubuntu desktop.&lt;br /&gt;
&lt;br /&gt;
==On Ubuntu - DirtSand Howto==&lt;br /&gt;
&lt;br /&gt;
 :::::::::::::::::::::::::::SERVER SECTION - Compliments of Zrax - heavily edited by Phoenix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Originally: DIRTSAND - The D&amp;#039;ni In Real-Time Server And Network D&amp;amp;aelig;mon by Zrax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Introduction===&lt;br /&gt;
&lt;br /&gt;
DIRTSAND is a full featured MOULa-compatible server platform for POSIX-compliant operating systems, written in C++ and released under the GPL version 3+.  Currently, it has only been tested on Linux, but in theory it should work on other Unixes as well.  There are, however, currently no plans for Windows development or support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are going to attempt to use a moderately spec&amp;#039;d eeepc laptop for the SANDBOX SHARD since we only expect 1 or 2 users to be logged in at one time, for the sake of &amp;quot;offline&amp;quot; testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Specs of EeePC: 1 GiB ram, 1.5 GHz CPU&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For ease of implementation we will be assuming that the server will be running on Ubuntu 10.10 (Maverick) Desktop version. This has proven to be the less painful way to delve into SERVER setup.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Building the code===&lt;br /&gt;
&lt;br /&gt;
Prerequisites or dependancies are libraries or programs that another program needs to run or to compile properly. Without them you will get many errors. Do not proceed with this section of the wiki if you have not satified the list below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A quick way to find out what is installed on your Ubuntu box is to click &amp;quot;Applications&amp;quot; and launch &amp;quot;Ubuntu Software Center&amp;quot;. Type in a part of the name of the prerequisite and the Software Center will show you what is installed on your Ubuntu machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
&lt;br /&gt;
* GCC 4.4+ (might work with other C++0x compliant compilers, but untested)&lt;br /&gt;
* Postgres (libpq) -- the actual database server can reside anywhere&lt;br /&gt;
* OpenSSL&lt;br /&gt;
* libreadline&lt;br /&gt;
* zlib&lt;br /&gt;
* git (to get the sources)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default install of Ubuntu does not install all the items above. To install the packages that are lacking, open a terminal window, type the commands below (one at a time) and follow the prompts before moving on to the next item in the list. This should satisfy the list of prerequisites above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For those of you with Ubuntu 10.10, this is the easy part:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo apt-get install postgresql postgresql-contrib-8.4 libpq-dev apache2 cmake cmake-qt-gui g++ libreadline-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Now, create a user and path for the DIRTSAND server to run from.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo useradd dirtsand -d /opt/dirtsand -m -p &amp;lt;password&amp;gt; -s /bin/bash&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember to drop the brackets &amp;lt;&amp;gt; when you create a password and watch your case (UPPERCASE or lowercase)!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CAUTION: If you simply copy and paste Linux commands from this wiki, sometimes the terminal will execute the command automatically without you pressing enter. For safety, copy the command to a text editor, change the command as needed, then copy to the terminal window. Otherwise you may have to uninstall everything and start again!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Once done, check out a copy of the &amp;quot;dirtsand&amp;quot; source code: (Ubuntu defaults to your HOME folder when you run the terminal, so your destination folder &amp;#039;dirtsand&amp;#039; will be inside your HOME folder. Double check that you choose the right branch on github before you run the following command...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ git clone git://github.com/H-uru/dirtsand.git dirtsand&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: On github the branch you want to checkout is named &amp;quot;master&amp;quot;. By default the command above will checkout this branch.&lt;br /&gt;
&lt;br /&gt;
this will take a while, so maybe its time for a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ cd dirtsand&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Compile it for your system...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ mkdir build &amp;amp;&amp;amp; cd build&lt;br /&gt;
$ cmake -DCMAKE_INSTALL_PREFIX=/opt/dirtsand ..&lt;br /&gt;
$ make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
$ cd ..&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you run into any errors about finding libraries or headers, make sure you have the *development* versions of all of the required libraries, and that they are in your path. You can also use the &amp;quot;cmake-gui&amp;quot; to help &amp;#039;cmake&amp;#039; locate the missing paths and files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ cmake-gui&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have it already when you ran apt-get earlier on.&lt;br /&gt;
&lt;br /&gt;
===Setting up a server  - WITH a superuser account===&lt;br /&gt;
&lt;br /&gt;
You will need a working [[Wikipedia:PostgreSQL|PostgreSQL]] server which DIRTSAND can use to store its data.  Although you don&amp;#039;t need superuser access to the postgres server, you will need to have a database which you can add schemas, tables, etc into.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: Setting up postgres functionality without a superuser account is currently beyond the scope of this document...  If you need to do this, keep in mind that you may also have to edit the database initialization scripts to work against an existing user and/or database.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moving on, for the default installation, the provided scripts will create a dirtsand database and set its ownership to a &amp;#039;dirtsand&amp;#039; database user, which can directly map the system &amp;#039;dirtsand&amp;#039; user created in the &amp;quot;Building the code&amp;quot; instructions above.  For better security, it is recommended to use a password (as shown in the steps below), which can be configured in the server settings as described in the &amp;quot;configure dirtsand&amp;quot; step.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====1. Set up the postgres user====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For those new to Linux, remember to drop the brackets &amp;lt;&amp;gt; around the password.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo -u postgres psql -d template1&lt;br /&gt;
template1=# CREATE USER dirtsand WITH PASSWORD &amp;#039;&amp;lt;password&amp;gt;&amp;#039;;&lt;br /&gt;
template1=# CREATE DATABASE dirtsand WITH TEMPLATE = template0 ENCODING = &amp;#039;UTF8&amp;#039;;&lt;br /&gt;
template1=# ALTER DATABASE dirtsand OWNER TO dirtsand;&lt;br /&gt;
template1=# \q&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====2. Install the UUID functionality====&lt;br /&gt;
&lt;br /&gt;
This may be provided by your OS distribution.  In Ubuntu, simply install the postgresql-contrib-8.4 package (Check the apt-get list at the start of the SERVER SECTION) to provide the necessary libraries and installation scripts. If your distribution does not provide a contrib or uuid-ossp bundle, you can get it and build it yourself from the sources provided at:  http://www.ossp.org/pkg/lib/uuid/&lt;br /&gt;
&lt;br /&gt;
Once you have the ossp, you can add it to the dirtsand database by running the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo -u postgres psql -d dirtsand &amp;lt; /usr/share/postgresql/8.4/contrib/uuid-ossp.sql&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====3. Set up the dirtsand database====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo -u postgres psql -d dirtsand &amp;lt; db/dbinit.sql&lt;br /&gt;
$ sudo -u postgres psql -d dirtsand &amp;lt; db/functions.sql&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: If you see the message &amp;#039;ERROR: language &amp;quot;plpgsql&amp;quot; does not exist&amp;#039; while importing functions.sql, you will also need to create the plpgsql language in the database:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo -u postgres psql -d dirtsand&lt;br /&gt;
dirtsand=# CREATE LANGUAGE plpgsql;&lt;br /&gt;
dirtsand=# \q&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this, you should re-import the functions.sql file to properly create the necessary dirtsand functions by running...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo -u postgres psql -d dirtsand &amp;lt; db/functions.sql&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If there were no other errors, your database should be ready for DIRTSAND&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====4. Configure dirtsand====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A sample dirtsand.ini has been provided in the root of the dirtsand sources. You will need to copy this to your install directory and then edit the fields you need for the server. Specifically, you will need to adjust the server addresses and the RC4 keys. If you have dirtsand installed to somewhere other than /opt/dirtsand, you will also need to point the configuration to the right paths too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo cp dirtsand.sample.ini /opt/dirtsand/dirtsand.ini&lt;br /&gt;
$ sudo chown dirtsand /opt/dirtsand/dirtsand.ini&lt;br /&gt;
$ su - dirtsand&lt;br /&gt;
$ &amp;lt;your-favorite-editor&amp;gt; dirtsand.ini&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use gedit as &amp;lt;your-favorite-editor&amp;gt; you may find it won&amp;#039;t run in the dirtsand account, so you will need to use sudo.&lt;br /&gt;
&lt;br /&gt;
To generate the RC4 keys, you can simply run the keygen command from within the dirtsand interactive console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ bin/dirtsand&lt;br /&gt;
ds-902&amp;gt; keygen new       (This one will take a little while)&lt;br /&gt;
ds-902&amp;gt; quit&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Any errors that dirtsand spits out about config files and postgres passwords can be ignored, since you haven&amp;#039;t provided a configuration file yet.&lt;br /&gt;
&lt;br /&gt;
You should now have a bunch of keys output on your terminal.&lt;br /&gt;
&lt;br /&gt;
In your terminal, go to Edit, Select All, and Copy. Then paste the output to a file and save it as &amp;quot;Dirtsand.keys&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
NOTE: You will need to copy this file to your Windows box later as well as the &amp;quot;dirtsand.ini&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
The first block (labeled Server keys) in &amp;quot;Dirtsand.keys&amp;quot; is the set you should paste into your &amp;quot;dirtsand.ini&amp;quot; in the directory /opt/dirtsand/. Replace the dummy lines (with the &amp;#039;...&amp;#039; values) with the Server section in your &amp;quot;Dirtsand.keys&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
FOR LATER on Windows: The second set of keys will be placed directly in the client&amp;#039;s &amp;quot;server.ini&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: This requires either the H-uru fork of CWE or PlasmaClient.&lt;br /&gt;
&lt;br /&gt;
Caution -- the vanilla MOUL client cannot load keys from a file, and you will have to enter the keys as byte arrays directly into the executable. Later we will explain how to add the Client keys on the Windows box.&lt;br /&gt;
&lt;br /&gt;
Now before we move on, you need to download the moulscripts from github to Ubuntu. The least painful way to do this is to browse to;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
https://github.com/H-uru/moul-scripts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...change the branch to &amp;quot;python27&amp;quot; and click &amp;quot;Downloads&amp;quot; to the far right of the &amp;quot;branches&amp;quot; tab.&lt;br /&gt;
&lt;br /&gt;
Choose &amp;quot;*.tar.gz&amp;quot; and save it to your &amp;quot;HOME&amp;quot; folder on your ubuntu box.&lt;br /&gt;
&lt;br /&gt;
NOTE: For those who like the git command line, you know what to do.&lt;br /&gt;
&lt;br /&gt;
When you&amp;#039;ve saved the &amp;quot;Python27&amp;quot; branch of moulscripts, you will have to unpack it. You will see 3 folders in &amp;quot;Python27&amp;quot; once you have extracted the archive:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./dirtsand/dat&lt;br /&gt;
./dirtsand/Python&lt;br /&gt;
./dirtsand/SDL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One of these needs to be renamed to fall in line with the naming convention in the dirtsand.ini file.&lt;br /&gt;
&lt;br /&gt;
Rename &amp;quot;./Python27/dat&amp;quot; to &amp;quot;./Python27/ages&amp;quot; (This is to save you a couple of head scratches later on) like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ mv dat ages&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The files inside these folders are all the age, Python and SDL information dirtsand needs for the ages in UN-encrypted format.&lt;br /&gt;
&lt;br /&gt;
Leave them unencrypted for now becuase you will see later you need two copies of these files in unencrypted and encrypted format! More on that later...&lt;br /&gt;
&lt;br /&gt;
CAUTIONARY NOTE: Since Plasma, dirtsand, moul-scripts and lihPlasma are in HEAVY alpha, you might find things don&amp;#039;t compile or throw out lots of errors. First check that you are compiling on a 32 bit WinXp system. Win7 64 bit is a little rebellious when it comes to compatibility.&lt;br /&gt;
&lt;br /&gt;
==On Windows - Authdata, Manifests and Data==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Now, move over to your Windows box.&lt;br /&gt;
&lt;br /&gt;
Firstly, you should copy the Dirtsand.keys and dirtsand.ini file over to your Windows box now, and place them in &amp;quot;.\CWE Sandbox\INI Files\&amp;quot; for easy reference.&lt;br /&gt;
&lt;br /&gt;
You need to create some server-side data such as manifests, encrypted python.pak and the content (data) of MOUL, but make special note that although this is created on Windows, you will copy the newly created files over to your UBUNTU box later!&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: If you want to do this on Ubuntu, feel free to clone the source code for libhsPlasma tools at https://github.com/H-uru/libhsplasma&lt;br /&gt;
We wont be covering how to do that here, since the Windows version of libhsPlasma comes with some nicely pre-compiled binaries which you can download here...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://libhsplasma.googlecode.com/files/Plasma_Win32_r801.zip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EXTRA SIDE NOTE: The Win32 version of libhsPlasma is used even on 64 bit machines to avoid any potential errors creeping in.&lt;br /&gt;
&lt;br /&gt;
For this you will be using plPythonPack.exe that was compiled earlier on and copied to your &amp;quot;plEngine&amp;quot; folder and PlasmaCrypt.exe in your &amp;quot;Plasma_Win32&amp;quot; (libhsplasma) download.&lt;br /&gt;
&lt;br /&gt;
CAUTION: Phoenix says; I originally compiled the client on Win7 64bit. There were some major errors I could not solve. As soon as I compiled a fresh build on my WinXP 32 bit system, everything fell into place.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Okay lets get going... What we found is this; dirtsand needs two versions of the &amp;quot;ages&amp;quot; and &amp;quot;SDL&amp;quot; files. One version is UN-encrypted and the other is encrypted, but each goes in a specific place.&lt;br /&gt;
&lt;br /&gt;
Note: When we refer to encrypted Path, we only mean that the files inside the folders are encrypted, NOT THE FOLDER ITSELF!&lt;br /&gt;
&lt;br /&gt;
Unencrypted Paths: &amp;lt;For dirtsands first launch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/ages/ &amp;lt;holds un-encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
/opt/dirtsand/Python/ &amp;lt;holds un-encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
/opt/dirtsand/SDL/ &amp;lt;holds un-encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Encrypted Paths:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/authdata/ages/ &amp;lt;holds encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
/opt/dirtsand/authdata/Python/ &amp;lt;holds encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
/opt/dirtsand/authdata/SDL/ &amp;lt;holds encrypted file versions of moulscripts&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dirtsand.ini searches for these locations by default:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
File.Root = /opt/dirtsand/data&lt;br /&gt;
Auth.Root = /opt/dirtsand/authdata&lt;br /&gt;
Sdl.Path = /opt/dirtsand/SDL&lt;br /&gt;
Age.Path = /opt/dirtsand/ages&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now the one conflict here is that &amp;#039;dat&amp;#039; and &amp;#039;data&amp;#039; can be confusing&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;dat&amp;#039; must be renamed to &amp;#039;ages&amp;#039; to align to &amp;#039;Age.Path&amp;#039; in dirtsand.ini&lt;br /&gt;
# &amp;#039;data&amp;#039; is the copy of MOULa content in your &amp;quot;dat&amp;quot; folder of your fresh MOUL install off your windows box.&lt;br /&gt;
&lt;br /&gt;
The most important server-side data for the client to access are the &amp;quot;authdata&amp;quot; server-provided files -- specifically, the ENcrypted &amp;quot;ages&amp;quot; and &amp;quot;SDL&amp;quot; and &amp;quot;python.pak&amp;quot; files.&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: External Plasma clients require these files in order to function, so you will need to provide them unless you are planning on making your server only work with Internal client builds.&lt;br /&gt;
&lt;br /&gt;
The difference between an Internal and an External build is... ( still to add )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To create the files, do the following:&lt;br /&gt;
&lt;br /&gt;
NOTE: If you want to setup a PATH variable and shortcut this process, feel free to do so if you know how.&lt;br /&gt;
&lt;br /&gt;
# in firefox browse to https://github.com/H-uru/moul-scripts/tree/python27&lt;br /&gt;
# to the far right of the branch menu click &amp;quot;Downloads&amp;quot;&lt;br /&gt;
# Choose .zip format&lt;br /&gt;
# Once downloaded create a folder called &amp;quot;moulscripts&amp;quot; in &amp;quot;\CWE Sandbox\plEngine\&amp;quot; and unzip the new zip file into it &amp;lt;NOTE: the zip file is a few folders deep. Just copy the &amp;quot;Python27&amp;quot; folder to &amp;quot;moulscripts&amp;quot; folder&amp;gt;&lt;br /&gt;
# Make a copy of the &amp;quot;Python27&amp;quot; folder, and then do 2 things; rename the copied folder to &amp;quot;authdata&amp;quot; AND move it INTO the &amp;quot;Python27&amp;quot; folder. Now be careful with the next two steps!!&lt;br /&gt;
# copy plPythonPack.exe, msvcr100d.dll and python27_d.dll into the &amp;quot;authdata&amp;quot; folder.&lt;br /&gt;
# Launch &amp;quot;cmd&amp;quot; and browse to the &amp;quot;moulscripts\Python27\authdata&amp;quot; folder ( - if you dont know how to navigate in a Windows Command Prompt, you&amp;#039;re not ready for this! )&lt;br /&gt;
# in the terminal windows type...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
plPythonPack.exe Python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and press enter. The command should return without errors. If there any errors you may have used a 64 bit system to compile &amp;quot;plPythonPack.exe&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Your windows folder structure should look like this;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
.\CWE Sandbox\plEngine\moulscripts\Python27\ages&lt;br /&gt;
.\CWE Sandbox\plEngine\moulscripts\Python27\Python&lt;br /&gt;
.\CWE Sandbox\plEngine\moulscripts\Python27\SDL&lt;br /&gt;
.\CWE Sandbox\plEngine\moulscripts\Python27\authdata\ages&lt;br /&gt;
.\CWE Sandbox\plEngine\moulscripts\Python27\authdata\Python&lt;br /&gt;
.\CWE Sandbox\plEngine\moulscripts\Python27\authdata\SDL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After you run step 7 you will notice 1 new file in the &amp;quot;moulscripts\Python27\authdata\Python&amp;quot; folder. Make sure you dont have any errors in the output.&lt;br /&gt;
&lt;br /&gt;
* .\moulscripts\Python27\authdata\Python\python.pak&lt;br /&gt;
&lt;br /&gt;
Although we have just packed the Python folder into &amp;quot;python.pak&amp;quot; it is still not encrypted.&lt;br /&gt;
&lt;br /&gt;
To encrypt this file set up libhPlasma tools on Windows: (to encrypt python.pak)&lt;br /&gt;
&lt;br /&gt;
  NOTE: For the Linux fans you can compile your own at https://github.com/H-uru/libhsplasma&lt;br /&gt;
&lt;br /&gt;
  NOTE: For simplicity we use the Plasma_Win32_r801.zip file off of http://libhsplasma.googlecode.com/files /Plasma_Win32_r801.zip&lt;br /&gt;
&lt;br /&gt;
...and then set the PATH variable on windows to point to this folder. You dont want to use the Win64 version of libhPlasma, just in case you get any strange conflicts along the way.&lt;br /&gt;
&lt;br /&gt;
Once you have the PATH variable updated, you have to reboot for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
Now, the files that needs to be encrypted is the python.pak file you created earlier and all the &amp;quot;SDL&amp;quot; and &amp;quot;ages&amp;quot; files in the &amp;quot;.\CWE Sandbox\plEngine\moulscripts\Python27\authdata\&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Navigate to the .\CWE Sandbox\plEngine\moulscripts\Python27\authdata\Python\ folder and type (drop the inverted brackets in the command below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
prompt:&amp;gt; PlasmaCrypt droid -key {paste the key.droid value from &amp;quot;.\CWE Sandbox\INI Files\dirtsand.ini&amp;quot; here} python.pak&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It should look like;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
prompt:&amp;gt; PlasmaCrypt droid -key 86756......283746 python.pak&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This &amp;#039;key.droid&amp;#039; must be 32 digits long.&lt;br /&gt;
&lt;br /&gt;
Next you need to encrypt the contents of the &amp;quot;ages&amp;quot; and &amp;quot;SDL&amp;quot; folders.&lt;br /&gt;
&lt;br /&gt;
This can be quote a task so to make it easier, it is best to create two spreadsheets and add your droid key.&lt;br /&gt;
&lt;br /&gt;
Your command should look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
PlasmaCrypt droid -key &amp;lt; key here &amp;gt; Ahnonay.age&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can build a list of files using the &amp;quot;dir -b &amp;gt; sdl-enc.csv&amp;quot; and &amp;quot;dir -b &amp;gt; ages-enc.csv&amp;quot; command piped to a file, for easy editing&lt;br /&gt;
&lt;br /&gt;
# Add droid key to spreadsheet&lt;br /&gt;
# save as &amp;quot;csv&amp;quot; with space seperator&lt;br /&gt;
# edit with scite or notepad, and remove all spaces and inverted commas&lt;br /&gt;
# save the files with a &amp;quot;bat&amp;quot; extension into their respective folders in &amp;quot;.\CWE Sandbox\plEngine\moulscripts\Python27\authdata\&amp;quot; ie: &amp;quot;ages&amp;quot; and &amp;quot;SDL&amp;quot; folders.&lt;br /&gt;
# use the terminal and browse to each folder and execute the batch file.&lt;br /&gt;
# If you did it right, when you open any one of the files in scite, it will look like gibberish with the starting line, &amp;quot;NotTheDroids&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you are ready to create the manifest files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MANIFEST FILES - Creating the manifest on Windows (will be copied to Ubuntu later):&lt;br /&gt;
&lt;br /&gt;
In order to let the client know what files are available, you will also need to provide the following files in the &amp;quot;authdata&amp;quot; folder:&lt;br /&gt;
&lt;br /&gt;
* python_pak.list&lt;br /&gt;
* SDL_sdl.list&lt;br /&gt;
* AGES_ages.list&lt;br /&gt;
&lt;br /&gt;
...which are simple manifest files of the format:&lt;br /&gt;
&lt;br /&gt;
  Path\filename.ext,size-in-bytes&lt;br /&gt;
&lt;br /&gt;
So, inside the python_pak.list file, you might have:&lt;br /&gt;
&lt;br /&gt;
  Python\python.pak,123456&lt;br /&gt;
&lt;br /&gt;
And inside the SDL_sdl.list file you would have;&lt;br /&gt;
&lt;br /&gt;
  SDL\ahnonay.sdl,27311&lt;br /&gt;
  SDL\ahnonaycathedral.sdl,3524&lt;br /&gt;
  SDL\etc, etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note the use of a backslash here, since this path is provided directly to the client (which assumes a Windows path).  Comments (starting with the &amp;#039;#&amp;#039; character) and whitespace will be ignored when parsing this file.&lt;br /&gt;
&lt;br /&gt;
To create these files you will need the command prompt, a text editor and a spreadsheet program.&lt;br /&gt;
&lt;br /&gt;
Open a text editor and save a blank file as Python_pak.list&lt;br /&gt;
&lt;br /&gt;
In the command prompt, navigate to the &amp;quot;moulscripts\Python27\authdata\Python\&amp;quot; folder and type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
prompt:&amp;gt; dir&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The entry for python.pak should have a file size in bytes alongside it to the left.&lt;br /&gt;
&lt;br /&gt;
Type out the file size in bytes into the text editor (without spaces):&lt;br /&gt;
&lt;br /&gt;
   Python\python.pak,***&lt;br /&gt;
&lt;br /&gt;
becomes (the value to the right is only an example)&lt;br /&gt;
&lt;br /&gt;
   Python\python.pak,510544&lt;br /&gt;
&lt;br /&gt;
save the file as &amp;quot;Python_pak.list&amp;quot;, and you are done with your first manifest list.&lt;br /&gt;
&lt;br /&gt;
Next... change to the SDL folder...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
prompt:&amp;gt; dir SDL &amp;gt; sdl.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a file called sdl.txt in the root of &amp;quot;moulscripts\Python27\authdata\SDL&amp;quot; with all the file sizes in it. Now it is easy to load this into a spreadsheet program and do a clean up. We take it you know how to do that.&lt;br /&gt;
&lt;br /&gt;
Then once in the spreadsheet, reorder the columns so that the filename comes first, and the file size second. You will need to add a column in front of all the columns with the SDL folder name and backslash &amp;quot;SDL\&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In scalc or excel a typical row would look like: (after all your fixing!)&lt;br /&gt;
&lt;br /&gt;
[[File:manifest.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, save it as csv (with comma as the separator), and open it in a text editor, and check it by hand to make sure it is right. (You will have to remove the first comma after the backslash when looking at the csv file contents - find and replace &amp;#039;\,&amp;#039; with &amp;#039;\&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
Once you are happy with it, change the name of the file to SDL_sdl.list&lt;br /&gt;
&lt;br /&gt;
That is manifest file number 2 done!&lt;br /&gt;
&lt;br /&gt;
Now do the same for &amp;quot;ages&amp;quot;. The result should be AGES_ages.list.&lt;br /&gt;
&lt;br /&gt;
NOTE: Remember, don&amp;#039;t confuse &amp;quot;data&amp;quot; with &amp;quot;dat&amp;quot; in moulscripts.&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;dat&amp;quot; should rightly be renamed to &amp;quot;ages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;data&amp;quot; is a renamed copy of the &amp;quot;dat&amp;quot; folder in your fresh MOUL install that dirtsand will use to &amp;quot;serve&amp;quot; data (levels) to the client.&lt;br /&gt;
&lt;br /&gt;
Now, assuming you have prepared a fresh MOUL installation to your Games folder, browse to it and copy the &amp;quot;dat&amp;quot; folder to new folder called &amp;quot;data&amp;quot; and place this folder (as big as it is) in your &amp;quot;Python27&amp;quot; folder in &amp;quot;moulscripts&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
So now, in &amp;quot;.\moulscripts\Python27\&amp;quot; you should have:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
.\moulscripts\Python27\ages\&lt;br /&gt;
.\moulscripts\Python27\data\&lt;br /&gt;
.\moulscripts\Python27\SDL\&lt;br /&gt;
.\moulscripts\Python27\Python\&lt;br /&gt;
.\moulscripts\Python27\authdata\ages\&lt;br /&gt;
.\moulscripts\Python27\authdata\SDL\&lt;br /&gt;
.\moulscripts\Python27\authdata\Python\&lt;br /&gt;
.\moulscripts\Python27\authdata\Python\python.pak&lt;br /&gt;
.\moulscripts\Python27\authdata\AGES_ages.list&lt;br /&gt;
.\moulscripts\Python27\authdata\SDL_sdl.list&lt;br /&gt;
.\moulscripts\Python27\authdata\python_pak.list&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now before moving on, you will need to encrypt the age and fni files in the data folder;&lt;br /&gt;
&lt;br /&gt;
This is done by using PlasmaCrypt with the droid key. Easy enough if you use a spreadsheet to help you build a batch file. If you do not encrypt the age and fni files, the Client will crash!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
PlasmaCrypt droid -key 26353523........846464353 Ahnonay.age&lt;br /&gt;
PlasmaCrypt droid -key 26353523........846464353 Ahnonay.fni&lt;br /&gt;
etc... for all age and fni files!&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now copy the entire moulscripts folder to the HOME folder on your Ubuntu box.&lt;br /&gt;
&lt;br /&gt;
CAUTION: If your python_pak.list is starts with a capital &amp;quot;P&amp;quot;, you will get an error when you try to login later. Remember that Linux is CASE SENSITIVE! See error below!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
secure file preloader failed&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Python.jpg]]&lt;br /&gt;
&lt;br /&gt;
== On Ubuntu - Bringing in Authdata, Manifests and Data into Dirtsand==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) &amp;quot;Authdata&amp;quot; files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For dirtsand to provide the game files to the client, we need to do four things:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1) set up unecrypted versions of the ages, python and SDL folders in the root of dirtsand, and&lt;br /&gt;
* 2) set up a directory for &amp;quot;authdata&amp;quot; for the encrypted ages, python and SDL folders in the dirtsand folder.&lt;br /&gt;
* 3) bring in the data with encrypted age and fni files (and process it into a .mfs and compressed version for serving via network)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some of the spreadsheets and scripts created for this purpose; Use at your own risk and double check everything!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
http://www.falsebaypost.co.za/cwe-sandbox/Sandbox Scripts.zip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 1: Dirtsand &amp;quot;root&amp;quot; folder&lt;br /&gt;
&lt;br /&gt;
The reason for the first step above is that when dirtsand is launched for the first time, dirtsand needs to read the un-encrypted &amp;quot;ages&amp;quot;, &amp;quot;Python&amp;quot; and &amp;quot;SDL&amp;quot; files to configure properly, so unencrypted versions are placed in the root of dirtsand...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this folder you will have unencrypted copies of &amp;quot;ages&amp;quot;, &amp;quot;Python&amp;quot; and &amp;quot;SDL&amp;quot; so that dirtsand can configure properly when run for the first time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/ages/&amp;lt;unecrypted age and fni files&amp;gt;&lt;br /&gt;
/opt/dirtsand/SDL/&amp;lt;unecrypted SDL files&amp;gt;&lt;br /&gt;
/opt/dirtsand/Python/&amp;lt;unecrypted Python files&amp;gt;&lt;br /&gt;
and&lt;br /&gt;
/opt/dirtsand/data/&amp;lt;converted data files to send to client&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2: Dirtsand &amp;quot;authdata&amp;quot; folder&lt;br /&gt;
&lt;br /&gt;
Now to before we move on, remember we will be creating the &amp;quot;authdata&amp;quot; folder in...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 /opt/dirtsand/)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and then putting the &amp;quot;ages&amp;quot;, &amp;quot;Python&amp;quot; and &amp;quot;SDL&amp;quot; folders and their ENCRYPTED files in the respective subdirectories within the &amp;quot;authdata&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The folders:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 /opt/dirtsand/authdata/ages&lt;br /&gt;
 /opt/dirtsand/authdata/Python&lt;br /&gt;
 /opt/dirtsand/authdata/SDL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The files:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 /opt/dirtsand/authdata/&amp;lt;manifest&amp;gt;.list&lt;br /&gt;
 /opt/dirtsand/authdata/ages/**1.age&lt;br /&gt;
 /opt/dirtsand/authdata/ages/**1.fni&lt;br /&gt;
 /opt/dirtsand/authdata/ages/**n.age&lt;br /&gt;
 /opt/dirtsand/authdata/ages/**n.fni&lt;br /&gt;
 /opt/dirtsand/authdata/Python/python.pak&lt;br /&gt;
 /opt/dirtsand/authdata/SDL/**1.sdl&lt;br /&gt;
 /opt/dirtsand/authdata/SDL/**2.sdl&lt;br /&gt;
 /opt/dirtsand/authdata/SDL/**n.sdl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
STILL TO CONFIRM: Only after you run dirtsand for the first time you may delete these 3 folders in the root of &amp;quot;/opt/dirtsand/&amp;quot; leaving the original &amp;quot;ages&amp;quot; and &amp;quot;SDL&amp;quot; folders in &amp;quot;authdata&amp;quot; untouched.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember that the manifest *.list files are not encrypted and go in your &amp;quot;authdata&amp;quot; folder! Do not put them in the &amp;quot;ages&amp;quot;, &amp;quot;Python&amp;quot; or &amp;quot;SDL&amp;quot; folders.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now remembering the structure above, plug in your memory stick in Ubuntu and in Nautilus (or a terminal) copy the moulscripts folder to your home directory.&lt;br /&gt;
&lt;br /&gt;
Now before you can add the files to dirtsand you must change its ownership otherwise you&amp;#039;ll be back at this step later! ; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Open a terminal (it opens in your HOME directory by default) and type:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo chown -R dirtsand moulscripts&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The -R flag will make sure &amp;quot;chown&amp;quot; changes all files even inside folders.&lt;br /&gt;
&lt;br /&gt;
Now, we can go to our terminal window, and type:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ su - dirtsand&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you type &amp;quot;ls&amp;quot; you will see that you are in the root of the &amp;quot;dirtsand&amp;quot; folder&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cp -Rf /home/&amp;lt;username&amp;gt;/moulscripts/Python27/ages .&lt;br /&gt;
$ cp -Rf /home/&amp;lt;username&amp;gt;/moulscripts/Python27/data .&lt;br /&gt;
$ cp -Rf /home/&amp;lt;username&amp;gt;/moulscripts/Python27/Python .&lt;br /&gt;
$ cp -Rf /home/&amp;lt;username&amp;gt;/moulscripts/Python27/SDL .&lt;br /&gt;
$ cp -Rf /home/&amp;lt;username&amp;gt;/moulscripts/Python27/authdata/*.* opt/dirtsand/authdata/&lt;br /&gt;
$ cp -Rf /home/&amp;lt;username&amp;gt;/moulscripts/Python27/authdata/ages opt/dirtsand/authdata/&lt;br /&gt;
$ cp -Rf /home/&amp;lt;username&amp;gt;/moulscripts/Python27/authdata/Python opt/dirtsand/authdata/&lt;br /&gt;
$ cp -Rf /home/&amp;lt;username&amp;gt;/moulscripts/Python27/authdata/SDL opt/dirtsand/authdata/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3)   Data Server&lt;br /&gt;
&lt;br /&gt;
DIRTSAND includes a full data server with its services.  You will need to set up a data/ directory and the necessary manifests. The data folder sits in root of dirtsand...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/data/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The data manifests sit inside this folder...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/data/&amp;lt;manifest&amp;gt;.mfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: At a later date you may choose to create the ThinExternal.mfs and External.mfs files, which describe the files necessary for the patcher and client (respectively) to run. Don&amp;#039;t worry about this now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will need to create age manifests of the form &amp;quot;&amp;lt;agename&amp;gt;.mfs&amp;quot; for each age and prp file (excluding the .fni files), which will be requested by the client when it attempts to link to an age.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The format of the manifest files is as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
remote_filename.ext,local_filename.ext.gz,decompressed_hash,compressed_hash,decompressed_size,compressed_size,flags&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is a helper script provided in bin/dsData.sh which will gzip a file and generate a manifest line with the correct hashes and sizes for you automatically. Take care that the remote path expects to use a Windows path/filename, so it should use backslashes instead of forward ones, whereas the local filename should use Unix slashes.&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: Alternatively, you can specify a remote file server address in your dirtsand.ini, which will allow the files to be fetched from an external file server. This won&amp;#039;t be covered in this wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The best way to start this process of converting the data folder to the correct format is to run the command;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -b /opt/dirtsand/data &amp;gt;&amp;gt; data.list&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will create a file with a listing of the filenames in the data/ folder.&lt;br /&gt;
&lt;br /&gt;
Now load it into scalc and create a layout for each file as follows;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dirtsand/bin/dsData.sh AhnonayCathedral.age &amp;gt;&amp;gt; AhnonayCathedral.mfs&lt;br /&gt;
/opt/dirtsand/bin/dsData.sh AhnonayCathedral_District_BuiltIn.prp &amp;gt;&amp;gt; AhnonayCathedral_District_BuiltIn.mfs&lt;br /&gt;
/opt/dirtsand/bin/dsData.sh AhnonayCathedral_District_Textures.prp &amp;gt;&amp;gt; AhnonayCathedral_District_Textures.mfs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do this for EVERY age and prp file.&lt;br /&gt;
&lt;br /&gt;
When it is done you should have a &amp;quot;.gz&amp;quot; and a &amp;quot;.mfs&amp;quot; version for each file. You wont see the original files anymore because they have been packed into the &amp;quot;.gz&amp;quot; archive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now comes the tricky part... In each .mfs file you need to append the tag &amp;quot;dat\&amp;quot; at the beginning of the line. If you don&amp;#039;t your Client will become corrupt when you login. You can do this by hand... and take a week to do it, or build a spreasdsheet to help you create a script, which means an hour or so tops.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The best way to this is to use a spreadsheet as a basis to create a shell script.&lt;br /&gt;
&lt;br /&gt;
Start by creating a small file called &amp;quot;stub&amp;quot; in the data folder. Inside it put the line &amp;quot;dat\&amp;quot; and save it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The spreadsheet layout should be as follows; (Make sure that a &amp;quot;column&amp;quot; is where a &amp;quot;space&amp;quot; is) and...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...DON&amp;#039;T FORGET THE SEMI COLON AT THE END - You will get weird things happening if you do...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#! bin/bash&lt;br /&gt;
paste stub AhnonayCathedral.mfs | sed &amp;#039;s/\t//&amp;#039; &amp;gt;&amp;gt; AhnonayCathedral.mfs1;&lt;br /&gt;
paste stub AhnonayCathedral_District_BuiltIn.mfs | sed &amp;#039;s/\t//&amp;#039; &amp;gt;&amp;gt; AhnonayCathedral_District_BuiltIn.mfs1;&lt;br /&gt;
paste stub AhnonayCathedral_District_LinkRoom.mfs | sed &amp;#039;s/\t//&amp;#039; &amp;gt;&amp;gt; AhnonayCathedral_District_LinkRoom.mfs1;&lt;br /&gt;
paste stub AhnonayCathedral_District_Textures.mfs | sed &amp;#039;s/\t//&amp;#039; &amp;gt;&amp;gt; AhnonayCathedral_District_Textures.mfs1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What this will do is join the line &amp;quot;dat\&amp;quot; to the line in each &amp;quot;.mfs&amp;quot; file and save it as a new &amp;quot;.mfs1&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
Then to get the filename corrected, once you check that the &amp;quot;.mfs1&amp;quot; file contents is correct by using your trusty text editor, delete all the &amp;quot;.mfs&amp;quot; files (or backup them up somewhere else) and run the next command;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#! bin/bash&lt;br /&gt;
mv AhnonayCathedral_District_BuiltIn.mfs1 AhnonayCathedral_District_BuiltIn.mfs;&lt;br /&gt;
mv AhnonayCathedral_District_LinkRoom.mfs1 AhnonayCathedral_District_LinkRoom.mfs;&lt;br /&gt;
mv AhnonayCathedral_District_Textures.mfs1 AhnonayCathedral_District_Textures.mfs;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you should have a ton of &amp;quot;.gz&amp;quot; and &amp;quot;.mfs&amp;quot; files in the data folder in dirtsand.&lt;br /&gt;
&lt;br /&gt;
== On Windows - Building a new MOUL install ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8) Setting up your Windows Client:&lt;br /&gt;
&lt;br /&gt;
///Note from Phoenix: Added a step by step for a fresh windows MOUL client installation&lt;br /&gt;
&lt;br /&gt;
If you want to setup your Windows client from scratch with your compiled versions plClient and plUruLauncher and your new server.ini file, follow these steps:&lt;br /&gt;
&lt;br /&gt;
Install MOULInstaller.exe (There is a later version MoulInstaller887.exe)&lt;br /&gt;
&lt;br /&gt;
Watch out when the installer finishes... it tries to connect to Cyan, so make sure you got your network cable unplugged temporarily. You dont want their updates for your shard!&lt;br /&gt;
&lt;br /&gt;
Then into the root of your fresh Sandbox installation do this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Backup your UruLauncher.exe&lt;br /&gt;
* Backup your UruExplorer.exe&lt;br /&gt;
* Copy your compiled plClient.exe from .\CWE Sandbox\plEngine\ to the root of your Sandbox install and rename it to UruExplorer.exe&lt;br /&gt;
* Copy your compiled plUruLauncher.exe .\CWE Sandbox\plEngine\ to the root of your Sandbox install and rename it to UruLauncher.exe&lt;br /&gt;
* Copy wrap_oal.dll&lt;br /&gt;
* Copy NxCharacter.dll&lt;br /&gt;
* Copy NxCooking.dll&lt;br /&gt;
* Copy NxExtensions.dll&lt;br /&gt;
* Copy OpenAL32.dll&lt;br /&gt;
* Copy python27.dll&lt;br /&gt;
* Copy python27_d.dll&lt;br /&gt;
* Copy resource.dat&lt;br /&gt;
* Edit tos.txt with the GNU GPL license&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the server.ini file...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Download Zrax&amp;#039;s ini file at http://moul.zrax.net/zraxnet.ini and save it to .\CWE Sandbox\INI Files\ on your Windows box.&lt;br /&gt;
* Get a copy of Plasma_Win32_r801.zip and unzip it to .\CWE Sandbox\CWE Tools\Plasma_Win32\&lt;br /&gt;
* Copy the zraxnet.ini file into Plasma_Win32&lt;br /&gt;
* Rename zraxnet.ini to mynet.ini&lt;br /&gt;
* Open a Windows Command Prompt and change your directory to .\CWE Sandbox\CWE Tools\Plasma_Win32\&lt;br /&gt;
* Run the following command:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Prompt:&amp;gt; PlasmaCrypt decrypt mynet.ini&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the command is finished, open the file with a text editor (Use one that keeps format in place - Like Scite or Scintilla, just easier than notepad)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Open your Dirtsand.keys file and paste your 6 Client auth keys that were generated from dirtsand over the 6 Client auth keys in the mynet.ini file. If you open the mynet.ini file on your windows box and see mumbo jumbo, you did not decrypt your file correctly, so try the decrypt command again.&lt;br /&gt;
&lt;br /&gt;
Now the last entries in the mynet.ini file are:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   Server.Gate.Host &amp;quot;xxx.xxx.xx.xxx&amp;quot; (IP address assigned to Ubuntu -&lt;br /&gt;
&lt;br /&gt;
       - to find this go to your ubuntu terminal and type ifconfig, and use the address after &amp;quot;inet addr:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
   Server.Auth.Host &amp;quot;xxx.xxx.xx.xxx&amp;quot; (same as above)&lt;br /&gt;
&lt;br /&gt;
   Server.DispName &amp;quot;The journey continues...&amp;quot; (whatever catch phrase kicks your hair back)&lt;br /&gt;
&lt;br /&gt;
   Server.Status &amp;quot;&amp;lt;same as above&amp;gt;/shardstatus.php&amp;quot; (contains a simple PHP print command,&lt;br /&gt;
&lt;br /&gt;
       - eg: &amp;#039;hello world&amp;#039; or &amp;#039;server is up&amp;#039; - Needs explanation on setting up simple Apache -   Anyone?&lt;br /&gt;
&lt;br /&gt;
   Server.Signup &amp;quot;&amp;lt;same as above&amp;gt;/newacct.php&amp;quot; (no idea how to create the account creation file...&lt;br /&gt;
&lt;br /&gt;
       - and how it ties back to the dirtsand command &amp;quot;addacct &amp;lt;username&amp;gt; &amp;lt;password&amp;gt;&amp;quot; ) - Anyone?&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once done you will need to encrypt the mynet.ini file with the xtea parameter in PlasmaCrypt. Just run the command:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Prompt:&amp;gt; PlasmaCrypt xtea mynet.ini&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The command returns a success if all went well, copy mynet.ini file to...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
       .\CWE Sandbox\INI Files\&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
       .\Games\Cyan Worlds\Uru Live - Sandbox\&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The reason you make two copies is that if you muck up your URU Live - Sandbox installation, you have a backup copy of your mynet.ini file in a safe place.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now rename mynet.ini in your &amp;quot;.\Games\Cyan Worlds\Uru Live - Sandbox\&amp;quot; directory to server.ini and... badda-bing! you have your own custom server.ini file ready to link to your sandbox shard.&lt;br /&gt;
&lt;br /&gt;
== On Ubuntu - Running the Sandbox Server, pgAdmin3 and Wireshark ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9) Run the server:&lt;br /&gt;
&lt;br /&gt;
Assuming everything else went smoothly, you should now be able to start your server and connect to it!&lt;br /&gt;
&lt;br /&gt;
To start the server... You will use this command every time you want to start dirtsand after a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ bin/dirtsand dirtsand.ini&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You&amp;#039;ll have to create an account first, which can be done from the console:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ ds-902&amp;gt; addacct &amp;lt;username&amp;gt; &amp;lt;password&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: The first time you run this can be quite odd since no vault is yet created. It seems to error out. When it happens just press enter and you should get to the dirtsand prompt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SETTING UP pgAdmin3:&lt;br /&gt;
&lt;br /&gt;
To check if you have created a user successfully, you will need to download pgadmin3...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo apt-get install pgadmin3&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will help you access postgres in a friendly gui environment. Setting up pgadmin3 is quite simple once it is installed. Click on &amp;quot;Applications&amp;quot; , &amp;quot;Programming&amp;quot; , &amp;quot;pgAdmin3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The gui will launch. Once open click on the icon thats looks like an electrical plug to create a new server connection.&lt;br /&gt;
&lt;br /&gt;
The fields should be exactly as below unless you changed them when you set up postgres a number of steps back.&lt;br /&gt;
&lt;br /&gt;
   Name: dirtsand&lt;br /&gt;
   Host: 127.0.0.1&lt;br /&gt;
   Port: 5432 - leave this as it is&lt;br /&gt;
   SSL: blank - (Not important right now... keep it simple)&lt;br /&gt;
   Maintenance DB: postgres&lt;br /&gt;
   Username: dirtsand&lt;br /&gt;
   Password: &amp;lt;whatever you chose for your password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leave the rest of the window as it is. You will notice the windows has no &amp;quot;OK&amp;quot; button. Just after you entered your password, please &amp;quot;Enter&amp;quot; and the connection will be made. A dialog will hop up about &amp;quot;Saving passwords&amp;quot;, read it and click &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If it fails, you entered something wrong, so try again by clicking on the plug icon. You have succeeded to login to the database when you see in the left hand pane.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Server Groups&amp;quot;, below that &amp;quot;Servers&amp;quot;, and below that &amp;quot;dirtsand&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To check the new player you added, click on &amp;quot;dirtsand&amp;quot;, then the + sign to the left of it to expand it. Then &amp;quot;Databases&amp;quot; , &amp;quot;dirtsand&amp;quot; , &amp;quot;Schemas&amp;quot; , &amp;quot;auth&amp;quot; , &amp;quot;Tables&amp;quot; , &amp;quot;Accounts&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, look for the little blue icon in the toolbar that looks like a spreadsheet... and click it.&lt;br /&gt;
&lt;br /&gt;
You should be looking at your first account that you created with the command;&lt;br /&gt;
&lt;br /&gt;
  ds-902&amp;gt; addacct &amp;lt;username&amp;gt; &amp;lt;password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you dont see the exact username you created, you will have to backtrack your steps in this wiki, and try to figure out where you went wrong.&lt;br /&gt;
&lt;br /&gt;
If all looks well, save your connection... &amp;quot;File&amp;quot; , &amp;quot;Save Definition&amp;quot; , then give it a cool name like &amp;quot;Sandbox Shard&amp;quot; and click &amp;quot;Save&amp;quot; otherwise when you next launch pgAdmin3 you will have to manually reconnect again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SETTING UP Wireshark:&lt;br /&gt;
&lt;br /&gt;
This tool is very useful to check if your client is connecting to your Ubuntu shard. To install it run...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ sudo apt-get install wireshark&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is best to do a reboot, and when back in Ubuntu DON&amp;#039;T run it from the &amp;quot;Applications&amp;quot; menu...&lt;br /&gt;
&lt;br /&gt;
Open a terminal, and type...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sudo wireshark&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: If you run it from the App menu you won&amp;#039;t find your ethernet controller.&lt;br /&gt;
&lt;br /&gt;
Now, once wireshark has launched you will get a warning. Acknowledge it, and click &amp;quot;OK&amp;quot;. Please don&amp;#039;t do anything rash while using wireshark. Just follow these instructions.&lt;br /&gt;
&lt;br /&gt;
Once you click &amp;quot;OK&amp;quot; you should be taken to the wireshark main interface. Look under Capture on the main page, and identify your ethernet controller. Generally it is called &amp;quot;eth0&amp;quot; but you may have some other configuration.&lt;br /&gt;
&lt;br /&gt;
If you click on &amp;quot;eth0&amp;quot; wireshark will start to capture all traffic over that interface immediately. This is a good sign that wireshark and your ethernet controller are both working!&lt;br /&gt;
&lt;br /&gt;
Stop the live capture by clicking on the icon with the little red cross.&lt;br /&gt;
&lt;br /&gt;
Click on &amp;quot;Capture&amp;quot; in the top menu, and click &amp;quot;Options&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now, be careful... the only field you want to fill out is the one to the right of &amp;quot;Capture Filter&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You will need to jump to your Windows box quickly and in a command terminal run&lt;br /&gt;
&lt;br /&gt;
   prompt:&amp;gt; ipconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Look through the list and look for the IPv4 address for your computer... Something like this;&lt;br /&gt;
&lt;br /&gt;
Ethernet adapter Local Area Connection:&lt;br /&gt;
&lt;br /&gt;
  Connection-specific DNS Suffix  . :&lt;br /&gt;
  Link-local IPv6 Address . . . . . : ****::****:****:****:***%**&lt;br /&gt;
  IPv4 Address. . . . . . . . . . . : 124.122.23.11  &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;lt; Your IP address will be here!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
  Subnet Mask . . . . . . . . . . . : 255.255.255.0&lt;br /&gt;
  Default Gateway . . . . . . . . . : 235.211.11.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now back on Ubuntu fill in that field just mentioned, type;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
host 124.122.23.11 (replace with whatever your IP is - the word &amp;quot;host&amp;quot; is crucial!)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do not change any settings beside this, and simply click &amp;quot;START&amp;quot;, then &amp;quot;Continue without Saving&amp;quot;&lt;br /&gt;
&lt;br /&gt;
What this will do is ignore all other internet traffic except traffic from your Windows client. This makes reading wireshark much easier than having to sift through a ton of traffic!&lt;br /&gt;
&lt;br /&gt;
The screen should be blank, so first we need to test the connection. First, in a new terminal on Ubuntu, run...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;$ /sbin/ifconfig&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look for &amp;quot;inet addr&amp;quot; the IP address under &amp;quot;eth0&amp;quot; of your Sandbox and write it down. Take this to your Windows box.&lt;br /&gt;
&lt;br /&gt;
On your Windows box, your command prompt should still be open after you ran ipconfig. Now run a ping command...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
prompt:&amp;gt; ping ***.***.**.** (type out the full IP address)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now brace yourself, hehe! As you hit &amp;quot;enter&amp;quot; keep a beady eye on your Ubuntu wireshark screen. You should get about 10 lines of connection reports. This is great... your client is &amp;quot;seeing&amp;quot; your Server!&lt;br /&gt;
&lt;br /&gt;
Now in wireshark on Ubuntu click &amp;quot;Capture&amp;quot; , &amp;quot;Restart&amp;quot; to clear the screen.&lt;br /&gt;
&lt;br /&gt;
Here is where you now hold your breath, because you are about to see if your recently compiled plClient.exe (and all the work you have done) can establish a connection with your shard.&lt;br /&gt;
&lt;br /&gt;
==On Windows - Logging into the Sandbox Server==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10) Run the Client: On Windows...&lt;br /&gt;
&lt;br /&gt;
Launch UruExplorer (Make sure you run it from the &amp;quot;.\Games\Cyan Worlds\Uru Live - Sandbox\&amp;quot; directory and not from the desktop or startmenu), and enter the username and password you created in the step above on your Ubuntu box.&lt;br /&gt;
&lt;br /&gt;
As you hit &amp;quot;Login&amp;quot; watch the wireshark interface on Ubuntu. It should start to show activity... this is very good!&lt;br /&gt;
&lt;br /&gt;
/// Note from Phoenix : Dont know if the shard needs:&lt;br /&gt;
&lt;br /&gt;
* updated Cyan content or stock installer content (this will change the manifest files and their sizes)&lt;br /&gt;
* does it need the 4 plasma dll&amp;#039;s from Plasma 2.6.4 SDK?&lt;br /&gt;
* what is this resources.dat in MOUL-OS?&lt;br /&gt;
* Should /LocalData parameter be added to a plClient shortcut instead of using plClient?&lt;br /&gt;
* Must the unencrypted Python and age files be added to the &amp;quot;CWE Sandbox&amp;quot; folder?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By now your SANDBOX should be ready to rock!&lt;br /&gt;
&lt;br /&gt;
==On Ubuntu - How to start again!...==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11) How to Uninstall dirtsand:&lt;br /&gt;
&lt;br /&gt;
If you dont have a working Sandbox Shard by now, don&amp;#039;t despair! Even the veterans make mistakes. Usually it is those mistakes that are priceless, because we learn something out of it. Next time you try can only be better.&lt;br /&gt;
&lt;br /&gt;
///Note from Phoenix: Needs dirtsand uninstall-howto if things go horribly wrong, and we want to reinstall dirtsand afresh.&lt;br /&gt;
&lt;br /&gt;
The topics that will be covered...&lt;br /&gt;
&lt;br /&gt;
* How to delete the database&lt;br /&gt;
* How to uninstall dirtsand&lt;br /&gt;
* How to remove the dirtsand user&lt;br /&gt;
* What else to clean up&lt;br /&gt;
* Starting again!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Happy debugging!&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Git/download links:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/H-uru/dirtsand&lt;br /&gt;
* http://github.com/H-uru/Plasma&lt;br /&gt;
* https://github.com/H-uru/moul-scripts&lt;br /&gt;
* https://github.com/H-uru/libhsplasma&lt;br /&gt;
* http://guildofwriters.com/tools/devlibs.zip&lt;/div&gt;</summary>
		<author><name>AndyLegate</name></author>
		
	</entry>
</feed>