RED Groups

Learning out to use groups in Red is essential if you want to become efficient in Red. Moving geometry (i.e. doors) cannot be created without knowing how to use groups.

There are 3 types of groups in RED - Master Groups, User-Defined Groups, and Moving Groups.

Group Rules

 * A brush and/or object can exist in more than one group.
 * Movers do not boolean with the rest of the world.
 * The center of a mover group must be in the world or it will not be created at game time.
 * Particle emitters cannot be attached to movers.
 * Only doors are supported in multiplayer.
 * When a level is saved (or Auto-Saved), movers will also be put at their gold keyframe.
 * Groups that are loaded or duplicated groups are always placed at the same coordinates as the original group.
 * You can copy and paste User-Defined Groups.
 * You cannot copy and paste Mover Groups but you can "Duplicate" them.
 * If you try to load or duplicate a group in a level and a group with the same name already exists in that level, the editor can automatically rename the new group.
 * You should never groups with the same name. Every group should have a unique name.

Master Groups
Master Groups are pre-defined by Red. Every single thing you create in Red is automatically assigned to a specific Master Group. For example, you can use Master Groups to easily select all the brushes or all the lights in your level. Master groups are not as flexible as User-Defined groups but they have their place and can come in handy sometimes.

User-Defined Groups
A User-Defined Groups (or just a "group" as it is commonly referred to) is simply a user-defined collection of brushes and/or objects. User-Defined Groups allow you to efficiently manage the level design process and have quite a few benefits.

With User-Defined Groups, you can quickly and easily select whole sections of a level then move, rotate, unhide/unhide and export these sections. For example, hiding everything in the level but the area you want to work makes the editor run faster (since it doesn't have to render as much) and you can avoid accidentally moving or modifying other brushes or objects.

You can also save and load User-Defined Groups. Saving a group allows you take parts of a level for use in other levels. You simply save a group and reload it in a different level. This allows for consistency across levels (which is a necessity for level loads in single player levels) and saves you a lot time since you don't have to rebuild and retexture common things like doors, for example. You can also duplicate groups within a level.

When saving groups, you can save multiple groups at once. When saving multiple groups, you can save User-Defined Groups and/or Mover Groups. Saving multiple groups at once is easy. In Group Mode, you simply click on the "Save" button and this will bring up the Save Group dialog. Now select the groups (CTRL + Left Click) you want to save and click "OK". This will bring up the standard Windows Save dialog box. The name displayed the Save dialog pops up is always the name of the first group in the Save Groups dialog box. To keep things simple, use a different file name to when saving multiple groups. Once you have named the group, click "OK" to save the new group file.

Loading the group that contains multiple groups is easy. Create a new level and (in Group Mode) click "Load" and this will bring up the standard Windows load dialog box. Select the new group file we just created and click "OK" to load. This will load the 2 individual groups we saved in the multiple group file and that's it.

The editor allows you to easily create "temporary groups". A "temporary group" is just a group that editor automatically names "temp001", "temp002", etc. Temporary groups just make it a little quicker to create User-Defined Groups by automatically naming them incrementally. There is also a "Dissolve Temporary" button that will dissolve all groups named "tempXXX" (XXX being numbers).

Moving Groups
A Mover Group (or mover as it is more commonly referred to) is simply a User-Defined Group that physically moves between two or more keyframes (Translating Mover) or around a single keyframe (Rotating Mover). Movers can be used to make a wide variety of doors, hatches, lifts, trams, etc. Movers are created in Group Mode and use a keyframe system to specify how groups should move. Also, a mover can be made up of many objects and/or brushes.

Follow these steps to create a mover group:
 * 1) Create the brushes/objects you wish to turn into a mover.
 * 2) Place them where you want them to start moving from (the initial state). Texture the brushes as needed.
 * 3) Go into Group Mode and select the brushes/objects (even if it's just one brush or object) and create a user group for them.
 * 4) Find the user group you just created and select it.
 * 5) Hit the "Keyframe" button to turn this group into a Moving Group and create the master keyframe for it. The master keyframe shows the starting position for this mover and is shown as a gold key object.
 * 6) After you create a mover you can "animate" it by giving it more keyframes that tell the mover what to do and where to move to.

Keyframes
The editor uses keyframes as the method for animating how movers move. They are a way to tell the game engine where the mover should go and in what order. You also use the keyframes to tell the mover how fast to go to the next keyframe, if the mover should reverse or start the process over when it finishes, and other such information.

Keyframe Properties

 * Is Door: Set this flag for a Translating or Rotating Mover that's used as a door so it will block visibility when it's closed. A door is considered "closed" then the mover is at the the gold keyframe.
 * Start Moving Backwards: This flag causes a translating mover to start at its last keyframe and go backwards through the keyframe list. On a rotating mover, it will start at its final position.
 * Rotate In Place: Set this flag for creating a Rotating Mover.
 * Use Travel Time as Velocity: This flag uses the values in "Departing Travel Time" and "Return Travel Time" to set a mover's speed (meters per second).
 * Force Orient: Not Supported.
 * No Player Collide: This flag causes the mover to not do collision detection.
 * Propagate Sounds: This will make all keyframes that have the same script name as the currently selected keyframe have the same sounds. This will not affect keyframes with the script name of "keyframe".
 * Propagate Properties: This will make all keyframes that have the same script name as the currently selected keyframe have the same properties. This will not affect keyframes with the script name of "keyframe".
 * Stop Sounds: This will cause all looping sounds that have been activated by a "Preview" button to stop playing.
 * Movement Type: Defines the movement behavior for the keyframe list. The movement types are explained below:


 * Starting Keyframe: This will determine the keyframe a mover will start at. This does not affect rotation movers. Also used conjunction with the "Preview" button to show a mover at a specific keyframe in the editor.
 * Preview: This will show the mover (in the editor) at the keyframe specified in "Starting Keyframe".
 * Start Sound: This is the sound that is played when a mover starts moving.
 * Looping Sound: This is the sound that is played when a mover is moving between any keyframes in it's keyframe list.
 * Stop Sound: This is the sound that is played when a mover either stops or pause at a keyframe.
 * Close Sound: This is the sound that is played when a mover that is flagged as a door reverses direction.
 * Volume: Each value will set the volume for the respective sounds. Default is 1.00
 * Preview: Click this button to preview the respective sound in the editor. This only works if you have extracted the sounds from the audio.vpp file.
 * Script Name: Enter a custom script name to allow sounds and properties to be propagated to other keyframes with same custom script name.
 * Pause Time: This sets the time a mover will pause at the currently select keyframe. This only works on silver keyframes.
 * Departing Travel Time: This is the time it will take a mover to go from the currently selected keyframe to the next keyframe.
 * Return Travel Time: This is the time it will take the mover to go from the previous keyframe to the currently selected keyframe.
 * Acceleration Time: This is the time it takes the mover to reach maximum velocity.
 * Deceleration Time: This is the time it will take the mover to reach zero velocity.
 * Trigger Event with UID: You can specify an event's UID so that when the mover reaches this keyframe, it will send a turn-on message to the event.
 * Contains Item UID(s): If you create a container (like a locker or crate), you have to specify the UID(s) of the object(s) here so the item(s) cannot be picked up until the container is opened.
 * Degrees About Axis: This is where you specify the amount a rotating mover rotates.
 * OK: Click this to confirm any changes you have made and close the dialog box.
 * Cancel: Click this to close the dialog box and lose any changes you have made.