[SHOGO - Mobile Armor Division]
Classes
 
       
 
  • AIKey
    Used in AI scripting to define a path for an AI to follow. The only property you will use is Name, which should consist of a base name (e.g. fred) plus a number. The first AI key in a series should use 0 and increment from there (e.g. fred0, fred1, fred2). If you have more than nine AI keys in a series, use a double digit number (e.g. fred00, fred01, fred02, etc.).

    For best results, place AIKeys 64 units above the floor.

    Tip: If you group the AIKeys in a given series, you can right-click on the parent node (in the node view tab) and select Set Path, which will draw a yellow line from one AIKey to the next, making your paths more obvious.
  • BaseClass
    The BaseClass object is the base for every Shogo object. Level designers should never need to create a BaseClass object directly. However, the properties contained in the BaseClass object are almost always used in other Shogo objects.
  • BaseAI
    The parent class of all AI objects. Level designers should never need to create a BaseAI object directly. However, the properties contained in the BaseAI object are frequently used to control specific AI functionality.

    M
    essages
    All AI objects react to the following messages:
Message Action
Script See Scripting section under AI
Destroy Kills the AI normally
Remove Removes the AI without leaving behind a body
  • Brush
    Brushes are the basic building blocks of a level. Consult the DEdit documentation and the Strategies section of this document for greater detail.

    Brushes are also used to create all WorldModels, such as doors, volume brushes, etc.
  • Camera
    Cameras are used for in-game cinematics and Tomb Raider-style hint camera effects.


    Messages
    This object reacts to the following messages:
Message Action
On Activate
Off Deactivate
  • ClientLightFX
    The ClientLightFX object is a dynamic light class which creates a light special effect on the client.


    Messages
    The ClientLightFX object reacts to the following messages:
Message Action
Toggle Toggles the ClientLightFX from the On to Off or from Off to On, depending on it’s current state.
On Sets the ClientLightFX object to the On (visible) state.
Off Sets the ClientLightFX object to the Off (not visible) state.
  • DemoSkyWorldModel
    A DemoSkyWorldModel is the same as a WorldModel, but it has all the properties of a SkyPointer. See the SkyPointer class for a description.
  • DestructableDoor
    A door or lift object that can also be destroyed. Use this class for most destructible world geometry (simply don’t give it movement information).

    Note: As mentioned previously, all WorldModels require a discrete name.
  • DialogTrigger
    A special type of trigger that sends a message based on a choice made by the player. When the DialogTrigger is activated, it will present up to three text strings (using predesignated IDs). The player may cycle through these strings and select one using the Enter key. When a string is selected, its corresponding trigger message is sent.


    Messages
    This object reacts to the following messages:
Message Action
Trigger Activate
  • DirLight
    Creates a cone of light along the forward vector (use the blue pointer as a guide).

    Note: Most of the time, you will probably rely on DirLights with a Pitch of 90 (i.e. pointing straight down).
  • Door
    A type of WorldModel used to create simple doors and lifts. There are various subclasses, including rotating doors, destructible doors, and so on. See those specific categories for details on properties unique to each.

    Note: As mentioned previously, all WorldModels require a discrete name.


    Messages
    This object reacts to the following messages:
Message Action
Trigger Activate
TriggerClose Closes a door in its open (or opening) state
  • FastApproxArea
    A FastApproxArea marks an area of the level (bounded by hull makers or portals) to use the Fast Approximation method in the preprocessor. This can be useful to make preprocessing go faster in outdoor areas where visibility can’t be optimized very well anyways.
  • Flicker1WaveLightFX
    A convenience class exactly the same as the ClientLightFX object, but with both IntensityWaveform and RadiusWaveform set to the appropriate default values.
  • Flicker2WaveLightFX
    A convenience class exactly the same as the ClientLightFX object, but with both IntensityWaveform and RadiusWaveform set to the appropriate default values.
  • Flicker3WaveLightFX
    A convenience class exactly the same as the ClientLightFX object, but with both IntensityWaveform and RadiusWaveform set to the appropriate default values.
  • Flicker4WaveLightFX
    A convenience class exactly the same as the ClientLightFX object, but with both IntensityWaveform and RadiusWaveform set to the appropriate default values.
  • GameStartPoint
    Specifies the point at which a player enters a level. The object’s rotation will determine the player’s starting orientation.

    Note: Place this object at least 48 units (i.e., at least the value of the model’s y dims) above the floor or the player may fall out of the world.
  • GlobalDirLight
    A light value that is applied to all brushes with FlatShade and DirectionLight flags set (see the appropriate flag descriptions in the Property listing for more information). Place the GlobalDirLight far away from the center of the world on every axis for best results.

    Areas lit using GlobalDirLights will generally need object lights or else objects will show up black. See ObjectLight for more information.
  • Key
    Path markers used by the KeyFramer. A keyframed object will follow a series of keys.

    Important: key Names should consist of a base name (e.g. fred) plus a number. The first key in a series should use 0 and increment from there (e.g. fred0, fred1, fred2).

    Tip: If you group the Keys in a given series, you can right-click on the parent node (in the node view tab) and select Set Path, which will draw a yellow line from one Key to the next, making your paths more obvious.
  • KeyFramer
    Allows you to set up objects to move along complicated paths or in complicated ways. Most of the dropships and in-game cinematics in Shogo rely on keyframers for object movement and camera movement.

    Here are some objects you can keyframe: WorldModels such as doors, etc.; clientlightfx objects; triggersound objects; camera objects; and props.

    It is also possible to use multiple keyframers on a single object for incredibly complicated events. This is comparatively advanced stuff, so I probably won’t cover it in this draft.


    Messages
    This object reacts to the following messages:
Message Action
On Activate
Off Deactivate
  • Light
    The primary method of lighting a level. A Light creates a sphere of illumination that radiates from the object’s center, fading gradually to the edge of its radius.
  • Model
    Models are engine objects. While you can place a model, it is generally advisable to use Props instead.
Message Action
Trigger Activate
  • ObjectLight
    Lights objects only. Object lights are generally necessary in areas lit by GlobalDirLights, as GlobalDirLights don’t illuminate objects. See GlobalDirLight for more information.
  • OutsideDef
    Defines the outside of a level for the processor. Starting at the GameStartPoint, the processor will attempt to find its way to the OutsideDef object. If it can’t, the level is sealed.


    Usage
    Place the object in an area you are confident is not within the interior of the level and select Process World in the World pulldown menu.

    Add "–leakfile [filename.lek]" in the Extra Parameters field under Advanced in the processor options. To save time, uncheck all processor options except for Import Geometry and process the level.

    In the processor summary, just above "Creating WorldModels", you’ll see:

    Creating leak file [filename].lek

    If your world is sealed correctly or you haven’t placed an OutsideDef object, you’ll see this message immediately afterward:

    ** Couldn't find an outside leaf.
    ** (Or the world is sealed correctly).
  • ParticleSystem
    Used to create a pre-defined type of particle effect in a level.

    Messages
    This object reacts to the following messages:
Message Action
On Activate
Off Deactivate
Remove Remove the object (good to use if you know you will never turn it back on)
  • PickupItem
    The base class for all items the player may pick up in the game. In general, only the subclasses will be used.
  • PolyGrid
    Creates a polygrid according to the parameters you specify. Polygrids may be used for flags or other effects.
  • Prop
    The preferred method for placing models in an environment. Props are generally used for decoration (destructible or otherwise) in game levels.


    Messages
    This object reacts to the following messages:
Message Action
Destroy Destroys object normally
Fire Fires weapon effect along forward vector (see ExplosionStuff below)
  • RampDownWaveLightFX
    A convenience class exactly the same as the ClientLightFX object, but with both IntensityWaveform and RadiusWaveform set to the appropriate default values.
  • RampUpWaveLightFX
    A convenience class exactly the same as the ClientLightFX object, but with both IntensityWaveform and RadiusWaveform set to the appropriate default values.
  • RaySelector
    RaySelecters are used in rare cases to help debug levels. Sometimes if you have a bad brush in the level, the preprocessor will make a large polygon and it’s hard to figure out which brush is causing it. If you place a RaySelecter pointing in the direction of the bad polygon and run the preprocessor with –RaySelect in the Advanced Parameters box, it will select the first brush the RaySelecter points at.
  • RotatingWorldModel
    RotatingWorldModels are generally used for gears, fans, turbines, and other objects that spin around a central axis. For rotating doors, use the RotatingDoor subclass of doors. For more elaborate rotating objects, use the keyframer.


    Messages
    This object reacts to the following messages:
Message Action
On Activate
Off Deactivate
  • SawWaveLightFX
    A convenience class exactly the same as the ClientLightFX object, but with both IntensityWaveform and RadiusWaveform set to the appropriate default values.
  • ScaleSprite
    The preferred method for placing sprites in the world.


    Messages
    This object reacts to the following messages:
Message Action
Damage Switches to "damaged" frame
Destroy Switches to "destroyed" frame
  • SearchWaveLightFX
    A convenience class exactly the same as the ClientLightFX object, but with both IntensityWaveform and RadiusWaveform set to the appropriate default values.
  • SineWaveLightFX
    A convenience class exactly the same as the ClientLightFX object, but with both IntensityWaveform and RadiusWaveform set to the appropriate default values.
  • SkyPointer
    A SkyPointer object is an object that points at another object and tells the engine to only draw that object through sky portals (brushes with the SkyPortal flag set to true). You should always build objects that will be in the sky a little ways outside of the level so they don’t interfere with anything inside the level. The simplest example of a sky would be a hollow cube WorldModel with textures on the 6 inside faces for a sky box. (This could be done by creating a DemoSkyWorldModel or a WorldModel/SkyPointer combination).

    The only types of objects that can be in the sky are Sprites and WorldModels.

    The SkyObjectName tells which objects you want to place in the sky.

    All the objects in the sky (DemoSkyWorldModels or objects pointed to by SkyPointers) are drawn in the order specified by their Index property. If two objects in the sky have the same Index, only one of them will be rendered. So if you had a sky box, and wanted something to be drawn in front it, you would give the sky box world model an Index of 0 and the object in front an Index of 1.

    The SkyDims and InnerPercent properties define a box in the sky that maps to a box enclosing the world. As the viewer moves through the level, their view into the sky box moves around the box you define with SkyDims and InnerPercent so you get a little bit of parallaxing in the sky. Only one SkyPointer/DemoSkyWorldModel should have its SkyDims set. If multiple ones have their SkyDims set, the engine will pick one of them as the official values.
  • Sound
    An engine object that creates a sound in a level. Use TriggerSound instead.
  • Spawner
    Used for spawning enemies and pickup items. The Spawner’s position and rotation will determine where the spawned object appears in the level.


    Messages
    This object reacts to the following messages:
Message Action
Default Spawns default item specified in Spawner object
[spawn command string] Spawns an item of the specified classname (e.g. FirstAid_25; CMC_Trooper; etc.)

Spawn Command String format

"<ClassName> <PropertyName> <PropertyValue>; <PropertyName <Property Value>; …"

The spawn command string is made up of tokens. Each token is separated from other tokens by a space. The first token is the class name. This is followed by 0 or more property definitions. The properties must be appropriate for the object type being spawned. Each property definition is separated by a semi-colon. Each property definition is given by a property name and the property value. All the tokens after the property name and before the next semi-colon are considered the property value. Each property value can be up to 100 characters long.

  • Sprite
    An engine object used for placing a sprite in a level. Use ScaleSprite instead.
  • SquareWaveLightFX
    A convenience class exactly the same as the ClientLightFX object, but with both IntensityWaveform and RadiusWaveform set to the appropriate default values.
  • StartPoint
    The start point base class. Use GameStartPoint instead.
  • StrobeWaveLightFX
    A convenience class exactly the same as the ClientLightFX object, but with both IntensityWaveform and RadiusWaveform set to the appropriate default values.
  • TransmissionTrigger
    Prints an image and text string at the top left corner of the screen. A TransmissionTrigger will also play a sound file if it finds a filename corresponding to the string ID. The sound file must be placed in the \voice subdirectory if you are building a Shogo level.


    Messages
    This object reacts to the following messages:
Message Action
Trigger Activate
  • Trigger
    The Trigger object is used to "trigger" (sends messages to) objects to do specific actions. A Trigger object is activated by one of two methods:

    A player (or AI) object touches the Trigger’s bounding box, or
    The Trigger receives a "TRIGGER" message from another object.

    The Trigger object uses the Name and Pos properties defined in BaseClass.


    Messages
    This object reacts to the following messages:
Message Action
Trigger Activate the Trigger (this is the same as if the player touched the Trigger’s bounding box). If the Trigger is locked, nothing will happen.
Lock Lock the Trigger. The Trigger can only be activated after it has received an UNLOCK message, or if the Player/AI has the UnlockKey (NOTE: this message was not designed to be used with the UnlockKey system of locking Triggers).
Unlock Unlock the Trigger. The Trigger can now be activated.
  • TriggerSound
    Used for ambient sound effects as well as one-time sound events.


    Messages
    This object reacts to the following messages:
Message Action
Start Plays start sound followed by the looping sound
Stop Play stop sound, followed by silence

 

  • VolumeBrush
    The parent object of all volume (or container) brush objects. The volume brush is used to turn a Brush into a specific volume type (e.g., water, wind, kato, etc.).


    Messages
    This object reacts to the following messages:
Message Action
On Activate
Off Deactivate
  • WorldProperties
    The WorldProperties object is used to set global variables for the current world. Every level should have one WorldProperties object. Only string properties are recognized.