Help me flesh this out! Note that we'll probably need icons or something to indicate which UED version we're talking about for some of these in the near future.
Feel free to ask questions!
Useful Hotkeys
- Ctrl + W ................ = Duplicate
- Ctrl + L ................. = Save level
- Del ........................ = Delete
- B ........................... = Show/hide the builder brush
- Q ........................... = Purge selected texture from map
- Shift + Click ......... = Select brush from surface
- Alt + Click ............ = Apply current texture to clicked surface
- Alt + Right Click ... = Make clicked surface's texture the current texture
- Ctrl + Alt + Click ... = Applies texture AND alignment of alt+right clicked surface's texture to the current texture
- Ctrl + I ................. = Insert segment in 2D Shape Editor
- Ctrl + C ................. = Copy selection
- Ctrl + V ................. = Paste selection (you can also copy/paste to and from Notepad)
- Shift + T .............. = Select all matching textures
- Shift + B .............. = Select all textures on brush
- Shift + J .............. = Select all adjacent surfaces
- Shift + W .............. = Select all adjacent wall surfaces
- Shift + C ............... = Select all coplanar surfaces
- Shift + F ............... = Select all adjacent floor surfaces
Selection
- Hold ctrl + alt and drag the mouse in any 2D Viewport. You'll get a resizable marquee that selects all visible actors in its area.
- Enter ACTOR SELECT OFSUBCLASS CLASS=<CLASS> into UED's command bar. This will select all actors of a given type. Just replace <Class> with a class name, such as ScriptedPawn or NavigationPoint.
- Enter SET ACTOR BHIDDENED FALSE into UED's command bar to display all actors in a map, including things like InventorySpots.
- Use Groups! If you have a lot of similar actors, especially lights, group them.
- Use good naming conventions for groups to keep everything organized. You'll thank yourself when you need to make changes to hundreds of actors all at once with a single selection.
- Block off large chunks of a map and group them like BSP-Area1 and BSP-Area2 or so. This enables you to turn on and off whole chunks of the map, making rebuilds MUCH faster.
- Example: I name my groups like L-CrystalIncidence and L-CrystalMain and L-CrystalCorona so I know that all of the above lights are for, say, Tarydium Crystals, and I can easily select the low-radius NonIncidence lights or the coronas or the larger-radius ambient lights with ease.
- UED's Search button: use it! You can list all actors in a map or list only a specific kind, and even search by Event and Tag.
Positioning
- Manual Location: to fix just-off-the-grid problems, go to the object's Properties > Movement > Location and set your values as you see fit, or set everything to 0 if you need to reset the location.
- Alternatively, right click and Reset > Move to Origin or Reset All. The latter will also reset rotation.
- For brushes, right-clicking any vertex will snap that vertex to the grid.
- Select a brush, then right click somewhere and go to Pivot > Place Pivot Snapped Here to create a new artificial pivot for movement or rotation. You can also add an unsnapped-to-grid pivot with Place Pivot Here.
- Go to Properties > Advanced and set bEdShouldSnap to True to make any actor snap to the grid. You may need to move it to the origin before it is properly aligned to the grid, though.
Rotation
- Manual Rotation: 360 degrees = 65536 rotational units in UED, so 90 degrees would be 16384, 180 would be 32768, etc. 270 degrees = 49152 OR -16384.
- To reset rotation, go to Properties > Movement > Rotation and set every value to 0.
- Alternatively, right click and Reset > Reset Rotation or Reset All. The latter will move the object to the origin AND reset its rotation.
- Is your object rotated in some odd way? Having trouble getting it how you want? You can circumvent rotational issues by making your current rotation the default in one of two ways:
- Right click and Transform > Transform Permanently. This makes the current rotation the "default" and resets its values to 0 without changing the position of the object. Note that for brushes, this will reset all texturing you've done. To get around this, try Method 2:
- Make a builder brush that encompasses your geometry, and reset the builder's rotation. Then, Intersect or Deintersect your original brush, delete the original, add or subtract the intersected brush. The new brush will have reset rotation and the original texturing. Note that this can destabilize geometry, so do it sparingly!
- Need to align brushes to a 5- or 12-sided cylinder (or something that doesn't have 2^n sides)? Manually rotate.
Example: You have a 5-sided tower and need to put windows on it.- Position your first window on the side of the cylinder that does not require any custom rotation.
- Select your window brush, right click the origin of the cylinder, and go to Pivot > Place Pivot Snapped Here. You can now rotate the brush around this pivot.
- Alternatively, duplicate the window and reposition it. Make a builder brush at the center point of the cylinder, then move it and the copied window into an open space. Rebuild, then intersect the window. The window's origin should be offset so it matches the cylinder's origin when the window is in position. This will produce a permanent offset (unlike Place Pivot Snapped Here).
- Duplicate the window. Divide 65535 by 5, giving you 13107. Enter this as a Yaw value, and it will align perfectly to one of the sides.
- Duplicate again. For the next, simply double 13107 to 26214.
- To match the other two remaining sides, use -13107 and -26214. The fifth side should already be aligned to the grid. You should now have a 5-sided tower with a window perfectly aligned on each side.
- Get in the habit of using correct world rotation for your brushes. This makes it easier to change the layout of an entire map later on without causing some brushes to rotate in one direction while others go somewhere else.
Example: A 128x512x128 hallway, with reset rotation, runs North-South. Let's say you want it to run East-West. Instead of rotating the brush 90 degrees, change the values to 128x128x512. Now it's East-West. Do this enough and you won't have to do anything fancy later on if you need to rotate that hallway and all the brushes inside it 90 degrees since the rotation is technically the same for every brush.
Brushwork
- Warning: Advice about how to build stable geometry varies wildly, and different pieces of advice affect different maps in different ways. Consider this section only a rough guide to making stable geometry!
- Pay attention to your nodecount! 65536 is the theoretical maximum node limit for UE1, but in reality, your map will start becoming much less stable way before then. A good upper limit to aim for is 40,000 nodes. This gives you some buffer room up to 50,000 before things really go to hell. Ideally, you should be done with your map well before 40,000. Over 55,000 and you are very likely to have the editor crash during rebuilds.
- NEVER let Semisolids touch Nonsolid geometry, especially zone portals.
- Avoid using Semisolid geometry at all if you can, even for sheets. Save Semisolids for very specific situations. Zone portals must always be nonsolid, however.
- Semisolids that intersect Semisolids can create null zones which contribute to your Zone Limit of 64. Check your map in Zone/Portal View for any brown sectors; these are usually nestled underneath Semisolid brushes where they intersect the world edges or other Semisolids. Move these brushes or make them Solid to overcome this.
- Use the command ACTOR ALIGN to snap all vertices of a brush to the grid. Be sure you actually WANT all vertices to be snapped, though (don't use it on anything made by the Cylinder Builder, for example). Also, due to rounding errors in UED, this can sometimes result in vertices being just barely off the grid, which is only visible when zoomed all the way in. Your mileage may vary, but this is still a useful command.
Lighting
- Light Period under Properties > Lighting affects how fast a dynamic light animates.
- Light Phase affects a dynamic light's animation time offset.
Example: If you have two pulsing lights next to each other, you can have them alternate by setting one of them to have a Light Phase of 128. The full cycle of any given light animation is 255, so 128 is half way through. - UED has a color picker for Lights you can use if you're unfamiliar with the values or are just lazy. Go to Properties > Light Color and click the Color button. Uses Windows' built-in (lame) color picker to get RGB values!
Texturing
- The command TEXTURE CULL will remove all unused textures on non-visible surfaces from a map. WARNING: Using this on hidden brushes/groups will purge their textures as well. Only use after a full rebuild as a finishing touch for best results!
- Alt + Right Click a surface in the map. This will make that surface's texture your current texture. Next, Alt + Click another surface. It will apply the current texture to that surface. This can save a lot of time when you need to apply already-used textures in a map to other locations. No texture browser needed!
- When panning textures, select all that should be aligned, align them to Wall Direction and Wall Pan, and then start panning. Deselect textures one at a time as they are lined up. This way, you don't have to keep selecting and panning textures individually, and the group stays a roughly the same texture position as you work through it.
- Got a huge terrain brush that's impossible to align manually? Rotate it 90 degrees onto its side and align all the walls to floor. Rotate the brush again 90 degrees on a different axis and repeat. Restore the rotation, and bam: your cliffside walls will all be aligned! Beware stretching for edges that are too sharp.
- Quick/Lazy Unconventional Alignments: In the Surface Properties window, on the Alignment tab, check off Relative and set one of the dimensions to 1 and the other to 0.99 or 1.01, then hit Apply repeatedly until the texture is positioned as you like it.
- The command POLY TEXSCALE UU=# VV=# VU=# UV=# can skew textures. Fill in the #'s with numbers; negatives and decimal fractions are widely used here.
2D Shape Editor
- Right click and drag to move your view around. Note that if you move too much you can wind up permanently lost due to a bug! If that happens, close and reopen the shape editor or create a new shape.
- Hold ctrl to select multiple vertices. If you have multiple vertices selected, clicking the Bezier Curve button or inserting a new vertex will apply the action to all selected segments.
- For Bezier Curves, you can change the number of segments in a single curve by right clicking on the segment and going to Segment > Detail Level and choosing a number or putting one in Custom.
- To line up shapes to a door frame from a texture, Alt + Right Click a surface or select the texture you want in the texture browser, and then go to File > Image > Get from Current Texture. You can now easily place vertices on the edges of the frame.
Navigation Points
- Right click on a viewport and go to View > Show Paths to see all Navigation Point linkages. Blue lines represent connected paths, while red lines represent paths that have LOS but do not properly link for AI purposes. Navigation Points without paths are either too far apart or unlinkable for other reasons.
- Teleporter Setup: Source Teleporter's URL field should link to Destination Teleporter's Tag. When triggering Teleporters to enable or disable them, make the Tag for both Teleporters identical, but only fill in the URL for the Source.
UE1 Engine Limits
- World Dimensions: 65534 x 65534 x 65534 (Visible world border. Exceeding this may be possible, but definitely is not recommended.)
- Node Limit: 65,536 (theoretical), 45 - 55,000 (practical)
- Zone Limit: 64. Exceeding this will cause some zones to merge together, which can result in an entire map being underwater or something dumb like that. Note that poorly-used semisolid brushes can create null zones that contribute to this limit.
- Mover Vertex Limit: <need info> It's pretty high and unlikely to be reached by any normal level, but too many highly-complex movers with hundreds of vertices can crash UED.
- Maximum size for any linked list (Level.PawnList, Level.NavigationPointList, etc): 1116. This means you cannot have more than 1116 Pawns or 1116 Navigation Points in one map at any given time without running into problems (i.e. crash to desktop without error messages when saving). Note that you can have an infinite number of pawns in a level so long as 1116 never exist in total when you save.
Further Reading: References, Tutorials, Editing Advice, etc.