|This is a tutorial page.Versions available: PyPRP; 3ds Max; Korman.|
If you have never used the 3ds Max Plugin for Plasma, this tutorial will get you started by taking you through all the steps needed to build an Age.
This tutorial (like all subsequent tutorials) assumes that you have successfully installed the Max Plugin and that you are familiar with 3ds Max modelling, animation and so on.
You will need to have read and understood the following tutorials:
Before you begin the actual creation process, you'll need to configure a few things and prepare various details.
Note: the first section is entirely optional, but recommended for ease of use and practicality.
Setting Up Your Workspace
Assigning a few hotkeys to your workspace can help improve your efficiency when creating and publishing Ages. This will help you set up two keyboard shortcuts for commonly used commands.
- Go to Customize->Customize User Interface... and select "Plasma" from the drop-down box in the "Keyboard" tab.
- Component Manager: select "Component Manager" and assign "C" as a hotkey.
- Plasma Export...: select "Plasma Export..." and assign "X" as a hotkey.
Get used to these hotkeys, or be prepared to click on a lot of menus.
Creating Your Age's Files
There are two types of files you will need for your Age to function:
.age files and
.fni files (note: the latter are optional if you are not publishing for MO:UL).
Navigate to your output folder and create a new
.txt file. Open it with an editor and write the following text into it:
StartDateTime=0000000000 DayLength=24.000000 MaxCapacity=10 LingerTime=180 SequencePrefix=8536 ReleaseVersion=0 Page=mainroom,1
StartDateTime is the UNIX time of the date the Age starts counting its days. For now you can leave it at 0000000000, but you'll have to change it if you want to make Global Animations.
DayLength is the length of a day in hours. For now you can leave it at 24 hours, but maybe you have to change it if you want to make Global Animations.
MaxCapacity is the maximum amount of players who may enter this Age at the same time.
LingerTime is optional. It defines the time in seconds until the game server (only in MO:UL) will shut down if the Age is empty.
SequencePrefix is a very important option. It is a unique number for your Age. Every Age in Uru needs its own ID. If you want to create an Age for TPOTS you can register a prefix in the TPOTS Sequence Prefixes list, which will reserve that ID for you. Numbers 1 through 100 are reserved for use by Cyan.
ReleaseVersion is not really important. You can leave it at 0 and don't need to change it.
Page is the most important option. Every Age file also has PRP files. These PRP files are defined by this option. In Max you can choose to which page the objects should be exported. You can also make more than one page: in this case, you only have to change the IDs behind the pagename, as follows:
Page=mainroom,1 Page=caves,2 Page=interior,3 ...
If you are done, save the file as
YourAge.age and close the file, where "YourAge" is the name of your Age. It has to have the
.age suffix, and not a
This section is useful only if you will be publishing your Age to MO:UL, since Drizzle automatically creates the appropriate file for TPOTS. If you do not intend to publish your Age to MO:UL, you can skip this section. If you do intend to do so and have not created a file, your Age will use the settings from the previously visited Age, which is probably not what you want.
Note: if you want to add fog to your TPOTS Age, you will have to manually edit the automatically generated file.
Navigate once more to your Age output folder and create a new
.txt file. Write the following into it:
Graphics.Renderer.SetYon 100000 Graphics.Renderer.Fog.SetDefLinear 0 0 0 Graphics.Renderer.Fog.SetDefColor 0 0 0 Graphics.Renderer.SetClearColor 0 0 0
SetYon is the maximum distance (in feet) you can see in your Age. Everything beyond this distance looks like a wall with a predefined color.
SetDef... defines how dense your fog will look. There are the following possibilities:
- SetDefLinear 0 0 0 means that the density of your fog will be rising in a linear fashion. The first value is the start distance in feet (-10000 to 1000000), the second value is the end distance in feet (-10000 to 1000000) and the third value is the maximum density of the fog (0 to 1).
- SetDefEXP 0 0 means that the density will be rising exponentially. The first value is the end distance in feet (-10000 to 1000000) and the second value is the maximum density (0 to 1).
- SetDefEXP2 0 0 is another exponential function similar to SetDefEXP.
The fog behind the end distance will have the maximum density you defined.
SetDefColor is the color of your fog. It needs three RGB values ranging from 0 to 1.
SetClearColor is the color you will see if there is nothing to see (for example if you don't have a sky you will see this color instead). This is also the color you will see behind the distance you defined by SetYon. It needs three RGB values ranging from 0 to 1. It is best to set it to the same color as the fog.
If you are done, save the file as
YourAge.fni and close the file, where "YourAge" is the name of your Age. It has to have the
.fni suffix, and not a
.txt suffix. If you are publishing this file for MO:UL, it will have to be encrypted with your preferred tool (such as the libHSPlasma tool, PlasmaCrypt).
- SceneViewer...: this option is defunct and does not work, being the result of "A bad dream" as Chogon put it on the MOUL forums.
- Age Description Manager: this manager was useful only inside Cyan's offices; it does not work now, since it attempts to communicate with an internal server that can't be reached to determine whether the new Age conflicts with another, existing Age.
The most important tool available in this menu is the Component Manager (available under "Component Manager..."). It makes it significantly easier to add objects to an Age, relying on a graphical way instead of a scripted way (using AlcScript). All the objects you can add to your Age are available under the New option in the menu.
For every object you add to your Age, you'll need to follow these steps:
- Select your object.
- Open the Component Manager.
- Navigate to New->Misc->PageInfo and click on it. This will create what looks like a directory tree structure.
- Click on "PageInfo01" (or whatever you called it, or a different page, if the object goes in a different PRP file) to highlight it and then click on "Attach to Select Object(s)". You can of course do this by batch, selecting multiple objects at once to attach the PageInfo to.
- Go to the Utilities tab.
- Click on the "More" button. You will get a pop-up box.
- In that pop-up box, double-click where it says "Component Util". You will see this area in the right hand tool box show up. As you can see, you now have a dropdown menu box that shows your Age's name and the Main Room. You can use these to select whether or not the select object goes on a different Page for the Age and what Age it will go in.
Your objects will now get exported into your PRP file for that Age. Remember to do this each time you add an object to your Age.
Creating An Age
- Using the Component Manager,
- Using Page Info,
- Creating a Starting Point,
- Adding a Terrain,
- Setting the "No Show" property,
- Using "Ignore",
- Exporting an Age.
Your Age will be rather basic, consisting only of a plain ol' plane to which your avatar shall spawn, as can be seen on the screenshot to the left.
You are advised to follow some common naming conventions for your components; the following prefixes shall be employed:
- oYourComponent for an object,
- dYourComponent for dummys,
- pgInfoYourComponent for your Page Info.
These naming conventions will be used throughout this tutorial.
Objects and Lights
You are now ready to create your first Age with Max.
- Create a plane called oGround with a size set to 500x500. This will be the ground on which the avatars will walk.
- Create two boxes, one with a size of 1x1x1 called dSpawn and the other 1x1x6 called dAvatar. The latter will be a reference as to the size of the avatar and the former will be your avatar's spawn point.
- Move your spawn point box to the place where you'll want the avatar to spawn. You should position it slightly above your ground so your avatar cannot fall through it (0,01 feet to 0,1 feet).
- You would be well advised to add lighting to your Age. You basically have two kinds of lights:
- Standard and Photometric: these lights are not exported by the plugin; however, the effect they have on your objects will be,
- Plasma Run Time: these lights are made for Plasma. They will be exported and are used for moving objects (like your avatar) or animated objects. Run Time lights require a lot of resources, and only the nearest eight are rendered at a given time; use them wisely.
- Select the "Standard or Photometric Light" under the Light tab. Place it in your scene in such a way that all is lit up (recommended options include "Omni" lights or an "IES Sun").
- Select a "Plasma Run Time Light" (such as the RT Directional) and place it above your scene, so that the arrows can reach the whole word (you might either have to scale it or change the modifier values).
The "Page Info" Component
- Open your Component Manager.
- Although there are many available options, for now you need a "Page Info" component. Rename it to a more appropriate name. This component is essential: every object in an Age must have this component, except for Max Standard Lights.
- Select all your objects, then attach the Page Info to them.
- Go to your utilities tab. If the "Component Util" tab isn't available yet, select "Configure Button Sets" and search for it in the list, before dragging it onto a button.
- Selecting your "Component Util" should now display the Page Info in the list. If you select an object, all the components attached to it are listed in the Component Util.
- Select your Page Info component. You can see the following options listed underneath:
- Age: the selected attached Age. Select your Age.
- Page: the PRP into which the objects shall be exported. Select your Page.
- Itinerant: should not be used, uninteresting; purpose unknown. Disregard.
It might be to your avatar's advantage to have a ground to walk on, instead of an endless black abyss to fall into. Collisions are therefore useful.
- In the Component Manager, go to New->Physics->Terrain and attach this terrain to your ground plane. Rename it something more useful. This tutorial will prefix it with p.
- In your "Component Util", select the Terrain component. This component is used for every object which should have a static collision. The following options can be set:
- Physical Properties: the two values, Friction and Bounce, are rather self-explanatory. The values range from 0 to 1.
- Bounding Shape: how your collision will look like.
- Sphere creates a spherical collision around your object. It cannot be used with any object.
- Box creates a collision with the shape of the bounding box of your object. This tutorial will use Box.
- Hull uses the hull of your object as a collision but does not include holes or similar things, so you cannot go through a door in a wall if you use Hull. Hull also doesn't work with planes.
- Exact uses the object itself as a collision. It is the most precise type but can also cause a lag if you it too often or on dynamic objects.
- Use Alternate Shape? allows you to pick another object as the collision for your object, since a very complicated tree, for example, would create immense lag, whereas a cylinder around the tree can be used in its place.
- Align Alternate Shape? aligns your new collision like your main object.
Adding a Spawn Point
The Age is now ready to receive avatars, but they still need a way to enter this Age. We thus need a Spawn Point (or Starting Point).
- Select the small box created earlier.
- Open your Component Manager and navigate to New->Type->Starting Point. Rename it to something more appropriate.
- In your Component Util, you can now see that there is nothing to do. However, should you Link in now, you will be able to see your spawn point and your avatar reference. They therefore need to be hidden.
- Navigate to New->Ignore->NoShow and assign this to your spawn point. The following options are available (for this example, you can leave them as they are):
- Disable Only: this will make the object ignored by default, but it can be made visible through Python or a responder.
- Affect: which aspects of Plasma will be set to ignore it.
- Drawable makes the object invisible.
- Physical removes that object's collisions.
- Navigate to New->Ignore->Ignore and assign it to your Avatar reference. The following options are available:
- Ignore: will disable export of this object. For this example, you can enable it.
- Your Age is now ready. You can export it with Plasma Export.
Main Article: Max:Exporting
There are two scenarios for exporting your Age: