Difference between revisions of "Mapping Tips & Tricks"

From Oldunreal-Wiki
Jump to navigation Jump to search
m
Line 1: Line 1:
2. USE SEMI-SOLIDS!!! It will cut down on BSP holes, ESPECIALLY if you are using complex brushes. (proof?)
UnrealEd is a complex tool, running on an old and complex engine. Here are a number of tips and notes to help you getting started. They cover the proper use of the software, some help, advice and technical details which will be helpful in creating, optimizing, cleaning the map, and achieving a balanced level. They do no cover gameplay, distribution or beta-testing.


4. Save multiple copies, you never know when you need to go back.
==Brushes and Textures==
*By default, the Unreal world is full: you create a map by subtracting matter to create rooms. You can create an additive map where the world is empty, as in engines such as Source, Gldsrc, or the Quake Engines.


5. Keep adding to your work! Update your map. New ideas will always come to mind :)
* Semi-solids are important tools. They are similar to normal brushes, but to no create BSP cuts on the surfaces of solid and subtracted brushes, as they are another branch of the BSP tree. As a result, they should be used for details and decorations which are not part of the main structure of the map. However, they affect each others in the same way as normal solid brushes affect the whole level: do not use abuse them. They are also very sensible to BSP errors, and cannot be placed in contact with zone portals or a non-solid of any kind - including sheet brushes. In many cases, a semi-solid brush placed in contact with a solid brush will suffer also. The problems arising then can go from a surface of the semi-solid disappearing, or the semi-solid brush turning into a non-solid one, to to a full-blown Hall of Mirrors when the problem is more serious.


6. For the love of pie, dont have a non-solid and a semi-solid touch!! Unreal Editor goes 'OMGWTFBSP!!' (if something goes trough a sheet brush, make it a mover, a solid, or a mesh, else...)
*An easy way to select a brush in the 3D Viewport is SHIFT+LMB click on any surface of the brush. You can select several brushes this way by pressing CTRL+SHIFT while clicking on brushes.


1. NEVER use cubes as zone separators (I made a nonsolid cube w/ sides marked as portals and it worked out fine until it cut a bsp hole through half of my map... replaced with 4 sheets (from floor to ceiling) and it worked fine).
*Texture alignement has been facilitated in UnrealEd 2.1 by the addition of two options in the contextual menu: after a RMB click on a surface, select ''Align Selected'': the ''Align To Wall Around X Axis'' and ''Align To Wall Around Y Axis'' are the vertical equivalents of the ''Align to Floor'' projection, which aligns vertical surfaces perfectly.


4. Avoid using reflective surfaces (translucent + mirror) near fake backdrops (I did that because I can but only once, for lulz).
*Make sure all the textures in your map are properly aligned: nothing looks more ugly and amateurish than a map where coplanar walls with a similar texture are not properly aligned.


6. Basic geometry goes first (use "Set ZoneInfo AmbientBrightness 255 | Flush" while playing through"), then basic lights, then detail geometry, then fine lighting and finally items and enemies (but make sure you leave enough room for everything).
*By default, textures wrap: a texture too small to fit the surface it is applied on will be repeated - hence the importance of "looping" textures. This is the normal way things work. New options has been added in the texture browser to prevent the looping: by setting ''UClampMode'' and ''VClampMode'' to ''UClamp'' instead of ''UWrap'', the texture will not be repeated.


7. Save before rebuild!
*The Texture Browser no features a '''All textures in use''' button. This displays all the textures used throughout the map currently opened in UnrealEd.


8. Keep multiple copies of your map so if you fuck something up, you can easily revert (like I keep at least 1<s>00</s> snapshot<s>s</s> of my virtual PC where I code).
*Some textures are loaded by the engine but not displayed in the map. Such is the case, for example, of textures applied to surfaces which are entirely hidden (in contact with another piece of geometry, for instance). You can delete such textures by entering '''Texture Cull''' in the command prompt of UnrealEd. The log then shows the list of textures and a list of the textures which have been deleted.


11. If you *DO* rebuild paths every time you rebuild your map (because you didn't know this before, hurf durf), select all Inventory, Pawn, Keypoint (?) and NavigationPoint (sub)classes, right click one of the selected actors and select Order -> To Last. That will sink reachspecs like Titanic sunk itself (lol fail).
*The '''Environment''' surface flag creates a reflecting effect on the surface, to simulate a shader.


13. (optional) Delete all test rooms and test brushes before releasing your map (if you want to keep your brushes for later lulz, keep a copy of your map with them for yourself).
*You can set Tesselated to true in the builder brush window to have the faces of a cube tesselated. You cannot do this for cylinders, and cylinders do not have all their vertices snapped to the grid. Here is a trick you can use to create tesselated cylinders and prisms snapped to the grid:


14. (optional) Add music and ambient sounds into your map if it's not a very silent map (like underwater or something) to keep it interesting.
{|
|[[image:Vertex_snap_tesselated_cubes_trick_1.png|thumb|200px|Build a cylinder, then snap a tesselated cube to one of the cylinder's faces.]]
|[[image:Vertex_snap_tesselated_cubes_trick_2.png|thumb|200px|Delete the added cylinder and rebuild, leaving only the tesselated cube. Then deintersect a cylinder that is snapped to that tessalted cube..]]
|[[image:Vertex_snap_tesselated_cubes_trick_3.png|thumb|200px|Rotate the cylinder and repeat for the other faces till all cylinder faces are tesselated.]]
|}
 
==Lighting==
 
*OldUnreal's 227 patch adds a '''Lighting Only''' view mode, which allows you to see the geometry with only the lightmaps and no textures. This is a powerful and useful mode.
 
*You can determine how fine and accurate the lighting and shadows of an area are by modifying the ZoneInfo (or any other adequate Info actor): under ZoneLight, decreasing the values in LightMapDetailLevels will make the lighting of the zone more accurate. Increasing the levels will make the shadows less accurate, mor blocky and generally less pleasant. A finer lightmap means a nicer scene, a bigger filesize and more strain on the computer's resources.
 
*The previously not-working flag Dirty Shadows can be activated on a surface to add random patches of shadow on a surface, regardless of its lighting.
 
*You can prevent an actor from casting shadows with the parameter ''bNoShadowCast'', under Display.
 
*The DistantLight Actor can be used when the maximum lighting distance of a light actor is not enough: it supports a lighting radius superior to 255 without adding several normal lights.
 
*If using a fog effect, make sure the DistanceFog parameter has a superior value then DistanceFogStarts. Otherwise, the engine will be unable to display fog: Distance Fog is the distance where the fog becomes opaque, and cannot be smaller than DistanceFogStarts, which is the distance at which fogs begins to be visible.
 
==Static-Meshes==
*You can create static-meshes from BSP Geometry by selecting one or several brushes and choosing RMB - Convert - To Static Mesh. Note that surfaces with the flag '''Fake Backdrop''' will be eliminated from the mesh, allowing you to control what is and is not part of the final mesh.
 
*Subtracted brushes will have strange problems when converted to static meshes, as their normals will be upside down. Do not convert subtracted brushes, or structures containing such brushes, into static meshes: start by intersecting the structure.
 
*You can build an entire map with static meshes, but you will need at least one piece of BSP somewhere (possibly out of view) inside the map. Otherwise, the lighting rebuild will not be possible.


18. Add pillars into tall rooms for more realistic look except if the map is abstract or something so pillars really bother and you don't want them.
*You can create movers from static meshes by selecting the desired mesh in the mesh browser and RMB clicking on the addmover menu, then choosing one of the options followed by the [Mesh] signal.


1. If it's a surface, if it's flat, it could probably use more decoration.
*Among other things, you can prevent a static mesh from receiving static shadows by setting ''bBuildStaticLights'' to false.


2. Trims and borders are essential for a polished look. Trim your walkways, platforms, stairs. You can add trims to a lot of things and it's always nicer with them.
*You can disable the collision of all the surfaces of a mesh bearing a specific texture by going in the texture browser, and opening the mesh's properties: under StaticMesh - Materials, select the desired material and set ''bNoCollision'' to true.


5. A noiseless map is a dead and lifeless map. Everything makes noise in the real world (outside the window). Everything should do the same in your map.
*You can speed up the rendering of static meshes by disabling "bUseMeshcollision".


6. Emitters are cool. Trims are cool. A lot of different texture packages are cool. Sometimes, mixing everything in one huge bloated map is not as cool as the sum of the cool things it has in it.
*Static meshes use a special type of lighting: they do not have lightmaps, but the lighting is calculated at each vertex of the mesh, and then extrapolated for the whole triangle. Make sure the vertices are not inside a well if the mesh appears black. If you still have lighting issues after converting brushes into static meshes, exporting and reimporting the mesh as a .obj file may fix the problem.


7. A singleplayer campaign should not be the story of a man whose ship crashed on an unknown planet. We've been playing this for ten years, we know all the tricks you can come up with.
==Optimization==
*Zones now require an Info actor (Zoneinfo, WaterZoneInfo, SkyZoneInfo or other) to be counted as a separate zone. They will otherwise be merged with one of the adjacent zones. If two zones with separate Infos are merged into one, the zone is either not sealed (i.e: the zone portal does not cover all the separation), or a BSP hole affects the portals and prevents the division.


8. If you have only one height level in one room, it better be a small and useless room. If something happens in this room (like, I don't know, the player fighting), it should have at least two levels. Three is good. Four is very good. Five is too much. Six is a cheap and impossible labyrinth (or the entry hall of a skyscraper).
*The new DynamicZoneInfos can be moved or generated on the fly. They do not count towards the maximum limit of 64 zones in a map.


9. Adding stairs of 2 steps in the middle of the room does not count as a different height level.
*A problem might arise if a single zone portal covers several opening between two zones (for example, if a single zone portal is used to seal two windows). In this case, delete the portal and replace it by several smaller ones, one by opening.


10. A lot of textures of the original game are very, very, very abstract and can be used for a lof of different things, including things you didn't see in the game. Making a map with the exact style of an existing map is dull, useless, uninteresting and not creative. And you should be creative (one good way to do that is using a lot of textures that are only scarcely used in the game and using them for something they were NOT made to. The Skaarj.utx texture pack is used a lot at the end of the game, but you can use the ceiling textures on your walls and vice-versa).
==Miscellaneous==
*You can activate the fake backdrop rendering in both real time preview and in simple preview modes in UnrealEd. By default, the real time preview has the fake backdrop activated, and the simple preview does not. You can activate the fake backdrop in simple preview with the '''K''' key.


11. If you really want to make something with the oldschool style of the original Unreal maps, make something with great amplitudes. Think Sunspire, don't think Rajigar mines.
*Textures projected by a Projector will have a blue tint when combined with distance fog. You can prevent this by using the AlphaBlend style.


1. Align every possible surface in your map. Otherwise it look ugly.
*It is a good idea to tream the borders of platforms and walkways. The transition from one texture to another is less jarring this way. Use a trim texture which has a significant contrast with the other textures, so that the edges of the map stand out.


2. NEVER try to make your map too *cool* or realistic because it may waste too much time.
==Good Practices==
*Save often and save multiples copies of your map. It is a good idea to save before any rebuild.


3. Make an easter egg in your map.
*It is best to path the map after the map is finished. Rebuilding the map rebuilds paths, which adds invisible actors used by bots to navigate the map. With successive rebuilds, this can slow down the whole process. A solution is to select all items and NavigationPoints in the map and set them to Last (Order - To Last) before the final rebuild.


4. Semisolids reduce node count, but excessive usage of semisolids lead to BSP holes hell :P. It's better to think solid brushes as the hull or core structure of a map, and semisolids as the details or decorative parts that aren't essential to keep a building structurally stable. Semisolids that are nonsolid in game (i.e. player can fire and walk through it) are a sign of BSP holes.
*Do not try to fit everything in a single map. Select a theme and stick to it. Many maps are plagued by unfocused design.


6. Don't stretch your zone portal sheets trough the walls/floors of your map. If there is a corridor with two windows, from where you see the outside, don't place a large sheet to cover both windows at once, make one sheet per window and fit them to the window boundaries.
*Use music and sounds to bring your map to life. A map without any sound is both unrealistic, boring and feels like it lacks something.


7. Starting off 227f, there is a new dynamic zone info actor which can create water without needing a separate zone. Take advantage of it! Pounds, fountains, pools, lagoons or a sea with nothing but a flat underwater floor can be done without wasting zones now. Note: you'll still need one or more sheets to show the water texture.  
*You can use groups to save time. Assigning a group to several brushes allows you to turn them on and off at will: when turned off, they will not be displayed or rebuild, speeding the rendering, building process and decluttering the screen. You can then turn them back on for the final rebuild.


9. If a zoned off part of your map isn't being zoned off after rebuild, there is a BSP hole that is causing the zone to leak. One visual sign of a BSP hole is a invisible surface that shows up on some wall/floor/ceiling. Note: starting off 227f, zones must contain a zoneinfo actor to be counted.
*An easter egg is always appreciated.


10. To increase productivity use the groups feature to rebuild your map in pieces. Group structures and actors under the same group's name, then you can simply hide things that aren't hardlinked to other things in your map, speeding up both rendering in editor and rebuilding times as you won't be working with the full map everytime.
==Design==
*The traditionnal way to build a map is to first build a rough sketch with no decoration or lighting, then detail the geometry, then add the lighting and finally the items, monsters and AI pathing.


12. Vertex snap + tesselated cubes trick. With this trick you can have tesselated cylinders/prisms.  
*A lot of textures of the original game are very abstract and can be used for a lof of different things, including things you didn't see in the game. Making a map with the exact same style as one of the stock Unreal maps is dull, and uninteresting. A good way to break away from this is to use a lot of textures that are only scarcely used in the game and using them in ways they were not designed to: The Skaarj.utx texture pack is used a lot at the end of the game, but you can use the ceiling textures on your walls and vice-versa). The change will allow you to be original and creative with old assets.


{|
|[[image:Vertex_snap_tesselated_cubes_trick_1.png|thumb|200px|Build a cylinder, then snap a tesselated cube to one of the cylinder's faces.]]
|[[image:Vertex_snap_tesselated_cubes_trick_2.png|thumb|200px|Delete the added cylinder and rebuild, leaving only the tesselated cube. Then deintersect a cylinder that is snapped to that tessalted cube..]]
|[[image:Vertex_snap_tesselated_cubes_trick_3.png|thumb|200px|Rotate the cylinder and repeat for the other faces till all cylinder faces are tesselated.]]
|}


== See also ==
== See also ==
Line 72: Line 97:


[[Category:Mapping]]
[[Category:Mapping]]
[[Category:UnrealEd]]
[[Category:FAQs]]

Revision as of 18:48, 29 September 2013

UnrealEd is a complex tool, running on an old and complex engine. Here are a number of tips and notes to help you getting started. They cover the proper use of the software, some help, advice and technical details which will be helpful in creating, optimizing, cleaning the map, and achieving a balanced level. They do no cover gameplay, distribution or beta-testing.

Brushes and Textures

  • By default, the Unreal world is full: you create a map by subtracting matter to create rooms. You can create an additive map where the world is empty, as in engines such as Source, Gldsrc, or the Quake Engines.
  • Semi-solids are important tools. They are similar to normal brushes, but to no create BSP cuts on the surfaces of solid and subtracted brushes, as they are another branch of the BSP tree. As a result, they should be used for details and decorations which are not part of the main structure of the map. However, they affect each others in the same way as normal solid brushes affect the whole level: do not use abuse them. They are also very sensible to BSP errors, and cannot be placed in contact with zone portals or a non-solid of any kind - including sheet brushes. In many cases, a semi-solid brush placed in contact with a solid brush will suffer also. The problems arising then can go from a surface of the semi-solid disappearing, or the semi-solid brush turning into a non-solid one, to to a full-blown Hall of Mirrors when the problem is more serious.
  • An easy way to select a brush in the 3D Viewport is SHIFT+LMB click on any surface of the brush. You can select several brushes this way by pressing CTRL+SHIFT while clicking on brushes.
  • Texture alignement has been facilitated in UnrealEd 2.1 by the addition of two options in the contextual menu: after a RMB click on a surface, select Align Selected: the Align To Wall Around X Axis and Align To Wall Around Y Axis are the vertical equivalents of the Align to Floor projection, which aligns vertical surfaces perfectly.
  • Make sure all the textures in your map are properly aligned: nothing looks more ugly and amateurish than a map where coplanar walls with a similar texture are not properly aligned.
  • By default, textures wrap: a texture too small to fit the surface it is applied on will be repeated - hence the importance of "looping" textures. This is the normal way things work. New options has been added in the texture browser to prevent the looping: by setting UClampMode and VClampMode to UClamp instead of UWrap, the texture will not be repeated.
  • The Texture Browser no features a All textures in use button. This displays all the textures used throughout the map currently opened in UnrealEd.
  • Some textures are loaded by the engine but not displayed in the map. Such is the case, for example, of textures applied to surfaces which are entirely hidden (in contact with another piece of geometry, for instance). You can delete such textures by entering Texture Cull in the command prompt of UnrealEd. The log then shows the list of textures and a list of the textures which have been deleted.
  • The Environment surface flag creates a reflecting effect on the surface, to simulate a shader.
  • You can set Tesselated to true in the builder brush window to have the faces of a cube tesselated. You cannot do this for cylinders, and cylinders do not have all their vertices snapped to the grid. Here is a trick you can use to create tesselated cylinders and prisms snapped to the grid:
Build a cylinder, then snap a tesselated cube to one of the cylinder's faces.
Delete the added cylinder and rebuild, leaving only the tesselated cube. Then deintersect a cylinder that is snapped to that tessalted cube..
Rotate the cylinder and repeat for the other faces till all cylinder faces are tesselated.

Lighting

  • OldUnreal's 227 patch adds a Lighting Only view mode, which allows you to see the geometry with only the lightmaps and no textures. This is a powerful and useful mode.
  • You can determine how fine and accurate the lighting and shadows of an area are by modifying the ZoneInfo (or any other adequate Info actor): under ZoneLight, decreasing the values in LightMapDetailLevels will make the lighting of the zone more accurate. Increasing the levels will make the shadows less accurate, mor blocky and generally less pleasant. A finer lightmap means a nicer scene, a bigger filesize and more strain on the computer's resources.
  • The previously not-working flag Dirty Shadows can be activated on a surface to add random patches of shadow on a surface, regardless of its lighting.
  • You can prevent an actor from casting shadows with the parameter bNoShadowCast, under Display.
  • The DistantLight Actor can be used when the maximum lighting distance of a light actor is not enough: it supports a lighting radius superior to 255 without adding several normal lights.
  • If using a fog effect, make sure the DistanceFog parameter has a superior value then DistanceFogStarts. Otherwise, the engine will be unable to display fog: Distance Fog is the distance where the fog becomes opaque, and cannot be smaller than DistanceFogStarts, which is the distance at which fogs begins to be visible.

Static-Meshes

  • You can create static-meshes from BSP Geometry by selecting one or several brushes and choosing RMB - Convert - To Static Mesh. Note that surfaces with the flag Fake Backdrop will be eliminated from the mesh, allowing you to control what is and is not part of the final mesh.
  • Subtracted brushes will have strange problems when converted to static meshes, as their normals will be upside down. Do not convert subtracted brushes, or structures containing such brushes, into static meshes: start by intersecting the structure.
  • You can build an entire map with static meshes, but you will need at least one piece of BSP somewhere (possibly out of view) inside the map. Otherwise, the lighting rebuild will not be possible.
  • You can create movers from static meshes by selecting the desired mesh in the mesh browser and RMB clicking on the addmover menu, then choosing one of the options followed by the [Mesh] signal.
  • Among other things, you can prevent a static mesh from receiving static shadows by setting bBuildStaticLights to false.
  • You can disable the collision of all the surfaces of a mesh bearing a specific texture by going in the texture browser, and opening the mesh's properties: under StaticMesh - Materials, select the desired material and set bNoCollision to true.
  • You can speed up the rendering of static meshes by disabling "bUseMeshcollision".
  • Static meshes use a special type of lighting: they do not have lightmaps, but the lighting is calculated at each vertex of the mesh, and then extrapolated for the whole triangle. Make sure the vertices are not inside a well if the mesh appears black. If you still have lighting issues after converting brushes into static meshes, exporting and reimporting the mesh as a .obj file may fix the problem.

Optimization

  • Zones now require an Info actor (Zoneinfo, WaterZoneInfo, SkyZoneInfo or other) to be counted as a separate zone. They will otherwise be merged with one of the adjacent zones. If two zones with separate Infos are merged into one, the zone is either not sealed (i.e: the zone portal does not cover all the separation), or a BSP hole affects the portals and prevents the division.
  • The new DynamicZoneInfos can be moved or generated on the fly. They do not count towards the maximum limit of 64 zones in a map.
  • A problem might arise if a single zone portal covers several opening between two zones (for example, if a single zone portal is used to seal two windows). In this case, delete the portal and replace it by several smaller ones, one by opening.

Miscellaneous

  • You can activate the fake backdrop rendering in both real time preview and in simple preview modes in UnrealEd. By default, the real time preview has the fake backdrop activated, and the simple preview does not. You can activate the fake backdrop in simple preview with the K key.
  • Textures projected by a Projector will have a blue tint when combined with distance fog. You can prevent this by using the AlphaBlend style.
  • It is a good idea to tream the borders of platforms and walkways. The transition from one texture to another is less jarring this way. Use a trim texture which has a significant contrast with the other textures, so that the edges of the map stand out.

Good Practices

  • Save often and save multiples copies of your map. It is a good idea to save before any rebuild.
  • It is best to path the map after the map is finished. Rebuilding the map rebuilds paths, which adds invisible actors used by bots to navigate the map. With successive rebuilds, this can slow down the whole process. A solution is to select all items and NavigationPoints in the map and set them to Last (Order - To Last) before the final rebuild.
  • Do not try to fit everything in a single map. Select a theme and stick to it. Many maps are plagued by unfocused design.
  • Use music and sounds to bring your map to life. A map without any sound is both unrealistic, boring and feels like it lacks something.
  • You can use groups to save time. Assigning a group to several brushes allows you to turn them on and off at will: when turned off, they will not be displayed or rebuild, speeding the rendering, building process and decluttering the screen. You can then turn them back on for the final rebuild.
  • An easter egg is always appreciated.

Design

  • The traditionnal way to build a map is to first build a rough sketch with no decoration or lighting, then detail the geometry, then add the lighting and finally the items, monsters and AI pathing.
  • A lot of textures of the original game are very abstract and can be used for a lof of different things, including things you didn't see in the game. Making a map with the exact same style as one of the stock Unreal maps is dull, and uninteresting. A good way to break away from this is to use a lot of textures that are only scarcely used in the game and using them in ways they were not designed to: The Skaarj.utx texture pack is used a lot at the end of the game, but you can use the ceiling textures on your walls and vice-versa). The change will allow you to be original and creative with old assets.


See also