Mapping Tutorials

Here's a specific forum for discussing potential maps, maps that need a vacation and optimizations and modifications for better playability.
Post Reply
DW_Ant
DW Clan Member
Posts: 2670
Joined: Sat Jun 21, 2008 11:00 pm
Location: North Carolina

Click [anchor= goto=Bottom]here[/anchor] to go to the end of this post.
Click [anchor= goto=Bottom2]here[/anchor] to go to the end of the second post.
I think some mapping tutorials are growing scattered around the forums. I believe it'll be more organized if I were to post these tutorials into one thread so whenever someone has a question, they may go to this place. Or if someone had a question that was previously answered awhile ago, I can simply direct them to this link. Simply to make life easier.

[anchor=Contents goto=]Table of Contents:[/anchor]
  • [anchor= goto=Planning]+[/anchor]Planning
  • Building Your First Map
    -Angel Mapper
    -Local
  • [anchor= goto=BSPConstruction]+[/anchor]BSP Construction
    [anchor= goto=IntersectingTools]-[/anchor]Intersecting Tools
    [anchor= goto=VertexEditing]-[/anchor]Vertex Editing
    [anchor= goto=2DEditor]-[/anchor]2D Editor
  • [anchor= goto=ConsoleCommands]+[/anchor]Console Commands
  • [anchor= goto=ConvertingGametypes]+[/anchor]Converting Gametypes
  • [anchor= goto=ConvertingMylevel]+[/anchor]Converting to Mylevel
  • [anchor= goto=DecorationSuggestions]+[/anchor]Decoration Suggestions
  • [anchor= goto=Emitters]+[/anchor]Emitters
    [anchor= goto=TriggeringEmitters]-[/anchor]Triggering Emitters
  • [anchor= goto=InsertingRemovingCustomMaps]+[/anchor]Inserting/Removing Custom Maps
  • [anchor= goto=MoverTypes]+[/anchor]Movers Types
    [anchor= goto=ConstantRotatingMovers]-[/anchor]Constant Rotating Movers
  • [anchor= goto=Navigation]+[/anchor]Navigation
    [anchor= goto=Movers]-[/anchor]Movers
    [anchor= goto=Teleporters]-[/anchor]Teleporters
  • [anchor= goto=Optimization]+[/anchor]Optimization
    [anchor= goto=ZonePortals]-[/anchor]Zone Portals
  • [anchor= goto=ScreenshotSlideshowPreview]+[/anchor]Screenshot Slideshow Preview
  • [anchor= goto=Skybox]+[/anchor]Skybox
    [anchor= goto=RockingSkyZoneInfo]-[/anchor]Rocking Sky Zone Info
  • Terrain
    -Angel Mapper
    -Epic Games
    -Local
  • [anchor= goto=Textures]+[/anchor]Textures
    [anchor= goto=TexPanner]-[/anchor]Tex Pannar
  • [anchor= goto=Triggers]+[/anchor]Triggers
    [anchor= goto=TriggeringDamageVolumes]-[/anchor]Triggering Damage Volumes
    [anchor= goto=TriggeringEmitters]-[/anchor]Triggering Emitters
    [anchor= goto=SoundTriggers]-[/anchor]Sound Triggers
  • [anchor= goto=UndoingSimplifiedCollisions]+[/anchor]Undoing Simplified Collisions
__________________
[anchor= goto=FAQ]+[/anchor]FAQ
[anchor= goto=NottoForget]+[/anchor]Things NOT to Forget

-------------------
[anchor=Planning goto=]Planning[/anchor]
-------------------
Okay, so you have an idea, and you wish to see your project on the servers, and watch 20-32 players kill each other in your environment. To be honest with you, this vision, this dream is the toughest step in the planning stage because it requires you to think creative enough to motivate yourself to spend many hours on a single project. At this point, you may feel like you are ready to jump in the editor, but there are other important facets to consider before you get into the meat.
When you came up with your idea, you are either building this project based on gameplay/layout or theme/appearance. You may get excited for your idea, but it is recommended to plan both ends. Several people often have a brilliant idea, and they’ll improvise the layout. The lack of gameplay could destroy a beautiful map where it potentially could have been fun. Once you have a picture or an idea in how your level looks, you should then concentrate on constructing a layout that is relevant to the theme, and that has a good flow into it. When I mention relevant, I mean make the layout relevant to the theme. DM-Manifest is one example where the layout is irrelevant to the boat theme, however that map does have a good flow. DM-Mainfest is still a cool map though. I guess one of the challenges is balancing these two limitations. It’s best to have the layout before you. Either draw bird’s eye view on paper, or construct real basic BSP layout and run through it several times in game. Gotta keep in mind that gameplay is very opinionated. If you are very serious about your current project, you should take it a step further and discuss your layout with other people. Be sure to check out 'Planning Gameplay' portion of this tutorial for further steps in designing a smooth layout and ensuring maximum FPS speed for your map.
On the other end of the spectrum, maybe you have this awesome layout, and you disregard the appearance half of the planning stage. If you take absolutely no care into the appearance, you’ll end up creating an ugly box map. The truth is that the lack of the map’s appearance will deduct the excitement of your gameplay indirectly. Thus, defeating the purpose of your map. The reason of this is that you’ve just created a dull map, no eye candy, nothing exciting happens. It’s just there. Giving enough time, your map will corrode and will be forgotten. Your potential legendary gameplay will be a waste, and your labor will be in vain.
Planning the appearance/theme of the map is just as important as setting up the layout. If you struggle in developing a theme, do not hesitate to browse google images, or locate a lead to assist you in finding your style. There are plenty of themes to tackle that are not beyond UT’s limitations:
· Forest
· Desert
· Urban
· Frozen/icy
· Space
· Alien planet
· Egyptian
· Evil (DM-Curse theme)
· Industrial
· “Mini Me” (These are not best for Monster Mash)
· Humanoid (this theme gets boring quickly…not recommended)
Or if you feel like tackling an advanced theme:
· Space Station
· Super tall Skyscrapers
· Cartoon
· Cavern/underground
There are plenty of other themes, but one of the most unique things of being a mapper is that YOU must be creative. You are in the position in developing these ideas, and You have the power to design your map in any appearance that appeals to you. One thing to keep in mind, never forget that this is your map. You can send it to people for suggestions and ideas, but they can never force you to create your map their way. You are the captain of your boat. It is up to you whether you take their suggestions or not. If their feedback seems logical and has reason, I would advise thinking twice before refusing to change the map.
Planning Layout
As mentioned before, a good layout is in matter of opinion, but most people will agree that a map with a good layout has a good flow. In a typical DM map , the players should be able to walk around the map without running into any dead-ends. You do have freedom in connecting two rooms in several creative ways. Jump pads, lifts, teleporters, gravitational pulls, doors, holes 'n ceilings (one way entry), steep ramps (dodge jump), lift jumps, and even tricky ledges (wall jump or shield jumping). All of these aspects encourages players to practice some navigation abilities, and once they master wall jumping, shield jumping, dodge jumping, or other slick ways of moving around your map, they will appreciate your map; hence, they'll play your map more frequently.
MM maps' gameplay branches from this kind of method. MM players are much more mobile. Now you ought to concern translocators, flight weapons, seeker pulls, hoverboards (if you allow), and even team cooperation. This will add some new choices to place some new ledges and unique places for the players to move around in. Keep in mind that this new freedom will allow players reach to places that you may not have intended. Just keep in mind that if you place a ledge you think is out of reach, they will reach up there. Just keep in that in mind.
Another thing to keep in mind with layout is not to create the perfect tactical position. Usually bottleneck hallways will cause this. When players are forced to go in one direction with no dodging space, this will risk the possibility of players abusing this by camping the other end, spamming rockets at the narrow hallway. Always leave multiple dangers to any camping areas.[/color]
<Planning a layout for ONS is a different story. I think I'll need someone else to fill in here.>
Scaling
It could be quite a disappointment when you gotten so far in your map, then when you test it, you find the scaling off. Either by bumping your head, or spending a whole minute to travel across the room. Scaling is often important. A handy tool to place to aid you in this is the mutant pawn. You can find this actor through the actor class browser ---> Pawn ---> UnrealPawn ---> xMutantPawn. This friendly actor will simply stand there until he is killed. Use this actor to help you adjust the size of the rooms, and determine the elevation of the windows and buttons.
Planning for Maximum FPS
Never forget to check to see if your map is even possible to play at a decent frame rate. Some maps with lack of "obstacles" will cause FPS lag, and may be impossible to optimize the map without sacrificing details. If you are planning a DM map, do your best to scatter the battles. If you have everyone battling in the same large room, you should consider of dividing the battles. Not only this will reduce chaos, but also this will increase frame rates since the computer doesn't have to render as many skins, projectile's, animations, etc...
The next thing to consider is the size and detail density you have planned. If you have a massive room with much detail (outdoors generally), you should consider the amount of "obstruction" in the possible viewing angles. You should consider some objects to "cover" some of the details behind it. By doing this, you may create room for an anti portal to take place. Feel free to take a quick glance on Optimization-Antiportals for further details. Creating Large boulders, hills, or building rubble may interfere with your original gameplay layout, but you should ask yourself if you prefer a laggy map over a slight modification with your gameplay. If you are not planning on making your main/large room so detailed, then you shouldn't have to worry about placing a large object in the middle.
Generally, MM maps with one large room (typically a single large outdoor area) with no other places for action will cause lag. When monsters spawn in the same room, and players render all the monsters at once, it will cause low FPS. Just be sure to you leave some other areas open for monsters to lower the monster density, and so the players don't have to render all monsters at once.
Z-Action
Z-action is used a powerful facet that builds onto flow. Flow may be a difficult concept to grasp, but it is a subject all good mappers must understand. Flow is one of the major contributing factors that make positive gameplay. I like to view flow as the ability to navigate around your level. Is your map fun to run around in without anything shooting at you? I often build my geometric structure, play the map (no bots), run around for a long time, make adjustments, then build the real deal. But when I'm running around in my boxy map alone, I look for potential places where I could make lift jumps, wall jumps, find dead ends that could link to other rooms (usually dead-ends negatively affects flow).
When you throw in Z-action, now you have stairs, ramps, windows, and ledges attached to preexisting rooms. Here, you could find short cuts to get to certain places when you wall jump or dodge up a ramp. Play the original Rankin to see great examples of this (notice the steep ramps).

Playing lots of TAM will help you understand Z-action. When you play those maps, you'll find yourself looking in all directions (even up). You'll also notice that almost all DM maps have no dead ends. Each room goes somewhere, and often branches off into many directions.

Usually terrain/outside maps lack flow since it's just one big room. That's why you don't see many terrain maps since they can all melt into one. Terrain with snow and terrain with sand, what's the difference? That's why you should consider placing cliffs and valleys to amplify gameplay (check out Desert Isle)

Also there are maps with outstanding flow. They have the distinguishable gameplay. They have their own unique identity just by their own flow. In Akbal, I've spent five waves just running around just for fun. I used the lifts to get to the hidden ledges nearly up to the ceiling. I shield jump from ledge to ledge finding new shortcuts to evade raptors and anguses (while leaving my trans at the hiding spot). This is not just Akbal that has flow. You also got maps like: FlightUnleashed, Fiji, Flight, DeepViolet, GrendelKeep, Peak (use the jump boots), etc...
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

-------------------------------------
[anchor=BSPConstruction goto=]BSP Construction[/anchor]
-------------------------------------
In simple terms, BSP is geometric construction. It is where you add/subtract 3 dimensional shapes from the environment. With the BSP tools, you have complete control with your map. Comparing with static meshes, BSP is much more easier to make elbow curves, 45 degree turns, and even trimming. If you find a spot that needs to be corrected (including Structural layout and texturing), this may be corrected through the editor instead of needing a new copy of a static mesh. Lastly, BSP helps keep your map very smooth (high frames per second).
[anchor=IntersectingTools goto=]*[/anchor]intersecting tools
There are two intersecting tools (intersect and deintersect). The intersect tool prevents BSP brushes from overlapping each other. Whenever you overlap two brushes (subtracted over subtracted -or- added over added), then you risk HOM problems. Intersection tools will modify your red brush builder so it will either be completely in or completely outside of the current geometry in the map.
The intersect tool will only modify the shape of your red brush builder into a unique shape. With this tool, it will modify the brush so that none of it will overlap any subtracted spaces. After clicking this button, the brush builder should not be inside any subtracted room.
The deintersect tool will do the opposite of the intersect tool. This will modify the brush so that none of it will overlap any solid spaces.
Pressing these buttons will not affect your level. You'll still need to hit the add/subtract button to make a difference. If you deleted any brushes or edit any vertices with brushes, the intersect tool will not detect the changes until you Compile (Geometry specifically).
[anchor=VertexEditing goto=]*[/anchor]Vertex Editing

Warning: To prevent HOM, be sure to have SnapToGrid toggled on!!
You may locate this tool in the upper left corner of the editor (to the right of the Camera Movement button). under the Vertex Editing is a handy tool to modify any brushes. You can manipulate most brushes in case you need to skew, displace, or stretch the brush. The main thing you need to keep in mind that you must keep the surfaces flat. If you bend the surface then the entire surface of the brush will be HOM. To be safe, the best way is to make sure you make your cubes tessellated. When you set the dimensions of the cubes, further down the properties list, you'll see:
...
bHollow = false
bTessellated = false <---Set this to true
Hit build and you should see diagonals cross through all six surfaces of the cube. By doing this, you are free to manipulate this shape as much as you want with the Vertex Editing Tool.
[anchor=2DEditor goto=]*[/anchor]2D Editor
The 2D Editor is a mini editor embedded into the UnrealEd. You may find this editor on the top of the editor. The button will look like a red equilateral triangle. In the 2D editor, you may build any 2 dimensional shape by adding many vertices as you like, convert any segment to bezier segments, and position any vertices any where you like (don't intersect the segments, it must be polygons). After completing your polygon, you must click on any of the tools to apply this new shape to your red brush builder:
Create a Sheet: This will convert your red brush builder to a flat sheet of your polygon. (keeps it 2D)
Revolved Shape: You'll need to make your pivot point (the green dot) either completely on the left or the right of your polygon. This will rotate your shape around this pivot point. It's a bit difficult to describe so I'll post a screenshot some time. Since it's late at the time I'm editing this part, the screenshot is not available yet.

<Screenshot here>
Extruded Shape: This will make your polygon "thick." This will take your polygon, and extend the length of the shape to its respective axis you've set it to. For example, if you outlined a room using the 2D Editor, then you should set the Depth property equal to the height of the room, and set Axis to Z (so it'll extrude your outline vertically).
Extrude to Point: This will do the same as Extruded Shape, but it will extrude to one point (the green dot). The Depth property will determine how "tall" this pyramid will be.
Extrude to Bevel: This is the same as Extrude to Point, but you may have a cutoff to the pyramid.
After executing any of these properties, you may find your red brush builder in an unique shape. Simply add/subtract to apply your new shape onto your level. You may apply the intersecting tools, too!
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

--------------------------------------
[anchor=ConsoleCommands goto=]Console Commands[/anchor]
--------------------------------------
Knowing some Console Commands is handy for testing. To open/close the game console simply press the ~ key. Feel free to type up the commands (without the quotes) to go through some advance testing:
"ghost": You'll be able to walk through anything. This is handy if you want to get to places that's out of reach in local play.
"Walk": Gets rid of the ghost command so you may walk again.
"god": Simulate what it's like to run the globe. Type god, again, to remove invincibility.
"Loaded": Instantly gain full adren and all weapons with 999 ammo.
"Review Jumpspots": Spawn an AI pawn that'll simulate all Jump Spots in your map. Very handy to pinpoint any JumpSpots that fail.
"suicide": Kill yourself. If you keybind this, this will be the quickest way to kill yourself rather getting the rocket launcher to finish the job.
"causeevent (name of event)": Trigger an event at any time you enter this command.
"causeevent invwave1-16": Simulate the wave triggers. In MM, this event will automatically trigger in wave 1-16 (respectively).
Console Commands are NOT case sensitive.
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

-----------------------------------------------
[anchor=ConvertingGametypes goto=]Converting Gametypes[/anchor]
-----------------------------------------------
Some times you find yourself in a need to convert gametypes for your map.
First, change the prefix of your map file to the correct gametype
DM-Deathmatch (Invasion accepts DM maps)
CTF-CaptureTheFlag
DOM-DoubleDomination
ONS-Onslaught
AS-Assault
Then verify the default gametype is set to the right one. You should open your level properties (view--->LevelProperties). Go to the level info category, and check to see if the properties DefaultGameType and PreCacheGame exactly matches to
"xGame.xDeathMatch" (copy and paste this text without the quotes)
"XGame.xCTFGame"
"XGame.InstagibCTF"
"XGame.xDoubleDom"
"Onslaught.ONSOnslaughtGame"
"UT2k4Assault.ASGameInfo"

Of course you also need to add/remove the appropriate objective. If you are to convert a DOM to a CTF, then you should remove the A & B Domination Points and add the Red and Blue flags.
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

--------------------------------------------
[anchor=ConvertingMylevel goto=]Converting to Mylevel[/anchor]
--------------------------------------------
So, you got some unwanted external files needed to run the map. Myleveling these resources is the most effective way in making your map easy to download since people only need to download one package rather than a whole folder of content.
Static Meshes:Simple Process to replace external meshes with mylevel meshes.
First you'll need to place a copy of the old mesh anywhere in your map. Do not modify the size, rotation, and pivot point. Simply Right click and convert to static mesh.
Select one static mesh from mylevel through the static mesh browser.
Go to your map. Select any copy of that static mesh existing in your map.
Right click that mesh go to select ---> Matching static meshes.
Now that all of the old static meshes of that mesh is selected, open their properties
Go to display ---> static mesh
Hit use...the text field should change to: mylevel'..something here....'
Now repeat this process until you've successfully replaced all old external static meshes with the mylevel static meshes.

Textures: Textures should be fairly easy. All you need to do is to save a copy of the texture into mylevel. Then within the texture browser, you can find the replace tool. Just like replacing words on a word document, you can easily replace the old textures with the new myleveled textures in a finger snap.

Emitters: Sometimes when using prebuilt emitters, those emitters will not work online. To fix this, all you need to do is to convert them to mylevel.
First, place the normal emitter actor from the actor class browser. Here's a minor illustration which emitter.
-Actor
....ASCinematic_Camera
....AntiportalActor
...+Decoration
...-Emitter <---Use this actor
......SubEmitter
......SubEmitter
......SubEmitter
....
Go to your original ('prebuilt emitters') emitters, open properties, go to emitter category, open the emitter array. Through the line that says something like: SpriteEmitter'myLevel.SpriteEmitter1' or in some variation (should be the line above the gray properties). Copy that text.
Go to the new emitter, open properties, go to emitter category, hit add a few times (matching the number of emitters from the previous emitter array). First line, then hit paste.
Repeat this process (copy the next line from old emitter, paste the next available line to the new emitter) until you've copied all emitters from that one actor.


Sound files:For safety reasons, save an additional copy of your map.
In the sound browser, highlight the sound files of the original sound package you used in the map. Right click, rename, and save them to mylevel.
Note: by doing this, you may find that the original package will be edited. So when you close the editor, do not save changes to this package.
But when you renamed the packages, you'll automatically convert the sound files in your map to mylevel.
To double check if you done it right, you should go to your ambient sound and read the entire file name. It should be emitting sounds from mylevel instead from the original package.

If everything looks good, close the editor. Do NOT save changes to the original package. Then reload the map. I did experience two rare occasions by converting ambient sound caused my map to fail (It would crash every time I would save or even autosave. By default, the editor will autosave the map every 5 minutes). This is the main reason why we backup the map. If you're capable of saving your map, you should be good to go.

Loading an entire Package to mylevel: In the command line at the bottom of the editor type the following and hit enter:
obj load file=superdupermeshes.usx package=myLevel

(take note of spacing and lack thereof - and replace the filename appropriately)
I recommend building and saving before doing this, as it sometimes doesn't work and/or crashes the editor. I also recommend putting all the meshes you might want to use into the map immediately (you know just dump 'em in a pile), then build and save again (with a new name) then close and reopen the editor (the ones you added should be there, the others should be gone, and hopefully it worked and didn't crash the editor)
[align=right]-BrainPan[/align]
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

----------------------------------------------
[anchor=DecorationSuggestions goto=]Decoration Suggestions[/anchor]
----------------------------------------------
Many times, you may build this large room, and you may come to ask yourself, "What in the world should I put in it?" It is certain you may place many decorative facets to spice up the boxy room.
BSP Trimming: Usually placing some BSP arches, pillars, or even trims around edges greatly reduces the boxy look. Arching the ceiling by subtracting (increases overall height of room), or adding arches supporting the ceiling will remove many sharp corners up there. BSP trimming is generally a good idea to place on ceilings. There aren't many ceiling decorative static meshes for ceiling. Yeah, you could place a suspended light light here or there, but you can still place them anywhere after you finished with the BSP. BSP is fast on triangle calculations, therefore you don't have to worry about slowing your map down when placing detailed BSP trims.
Also, subtracting a box (ranging from 4 uu - 64 uu) on a flat ceiling will allow you to place neat highlights on the ceiling. Especially when you can place a unique texture (one tile of this texture across this surface) on this new square. Not to mention you could place more trims (BSP or static meshes) around it. Be sure to check out XibalbaE for excellent examples of detailed ceiling architecture:
Image
For the floors, you can't place too many arches. Since players will be walking on this surface, you can't be too dynamic with the Z-axis with this floor without interfering with the gameplay, but you can still apply some details to the floors.
If you have tiled floors, then I would recommend displacing some tiles. This is texture specific so be sure you want this texture and the texture is properly aligned. Now you want to subtract spaces for all the tiles you want to displace. Now to add the new location of the tile. Keep the same shape of the red brush builder. Add it anywhere in mid air, texture it properly, save a copy of a tile as a static mesh (Package = mylevel), place the static mesh to the tile's real location, and delete the original added brush (the copy you've converted to static mesh). This will greatly enhance the level's history. By displacing tiles, it shows that this arena seen its wars. Here's an example displacing tiles:

<Screenshot here>
Take caution though, if you rotate the tiles in the roll or pitch axis (tilts the tiles other than bird's eye view), then the players may stomp their toes crossing over the floor. If this ever happens, you could simply disable collision of the static meshes, and place a blocking volume (no roll or pitch rotation).
Also when you subtract a bunch of squares in a single floor surface, mappers tend to forget that subtraction must be treated with care. Any improper alignment to the grid, or intersection with the brushes will risk HOM.

Suppose your floor doesn't contain a tiled floor, but your floor appears to be a bit dull. An efficient way to build a characteristic to your floor without affecting gameplay is to replace a section of the floor with a grated floor! By doing this, the floor is still flat so it won't affect the player's movement, and you can add details underneath the floor. You could be very creative in what goes under the grate: pipes, liquid, junk, plants, smoke, terrain, etc...

If anything, terrain could fit in anywhere. It's not just restricted to outdoors, but you could place it indoors, too. By placing piles of dirt, or even create a dynamic floor (3D tiles).

Common Static Meshes: This will be a simple brainstormed list you could go through in case you are looking for static meshes to fill your room: Pillars (in the middle or wedged on the wall), Ceiling arches, Suspended Support Beams on ceiling, Suspended lights, Lights on walls, windows to view other rooms or the skybox, ventilation panels, wall panels, pipes embedded in walls, bricks popping out of the walls, a Garden in a section of a floor, walkways (stones, dirt path, or concrete sidewalks), puddles, projections, torches, and misc common objects (like boxes and barrels...Note: these will interfere with gameplay).

Special Effects: Don't forget that there are other facets you could addition other than static meshes. Terrains could have multiple layers (masked textures overlapping). Emitter particles will cast animated effects such as fire, steam, smoke, flares, splashes/splash rings, flares, and even blood drips. Be sure to check out the emitter tutorial for further detail.
Link is not available yet.
Lighting is used to enhance color and shadows. Position them well for realistic shadow effects. Don't forget about Coronas, too. Link is not available yet.
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

------------------
[anchor=Emitters goto=]Emitters[/anchor]
------------------
[anchor=TriggeringEmitters goto=]*[/anchor]Triggering Emitters
First we'll need to create this emitter into its own class. Go to the actor class browser--->emitter--->NetworkEmitter (so it's usable online). Right click NetworkEmitter and hit new.
PackageName MyLevel (It must be MyLevel so the emitter class is embedded into your map)
Name (AAAnyName) (I put a couple A's infront of the name so it'll be on top of the list when your browsing through the million classes...You'll see later)

Once you hit okay, you'll see this script log. If you don't know programming, don't be afraid. All you have to do is to hit the compile changed scripts button up on the top. Once that is done, you should be able to see at the bottom (6 lines successful or something).

You may close the script log, return to your map, locate the emitter, open its properties, and open the emitter category. Where it lists the array of emitters, select it and hit Crtl+C (Copy). The first line [0]; it should look like something like this: SpriteEmitter'myLevel.SpriteEmitter1'. If you have multiple lines then simply copy the first line.

Go back to your actor class browser. Locate your emitter class (Emitter ---> NetworkEmitter ---> then AAAYourEmitter). If you can't find it, then you'll need to uncheck unplaceable actors up top to be able to see all actors. Right click your emitter then open it's default properties. This properties window should look very similar as if you were opening any properties.

Set these properties:
Go to advanced:
Directional = true
NoDelete = false
LifeSpan = An int value (If your emitter lasts for a whole minute, set this to like 75 seconds. This will terminate the actor after it was spawned for this amount of seconds. No need to render dead actors).
Caution: The LifeSpan property is a bit buggy. If you set your value into that field, and it still says zero, simply ignore it.
Go to the emitter category:
Hit New
At [0] hit Ctrl + V (paste) (This should paste in the lines SpriteEmitter'myLevel.SpriteEmitter1' or something similar).
Leave this window open.

Go back to your map, open the original emitter's properties. Go to line [1]...Copy.
Go to your new emitter class default properties. Add line [1]...Paste.
Original emitter properties---> line [2]...Copy.
New emitter default properties. Add line [2]...Paste.
Keep going until you pasted your last line of emitters.

At this point, do not close the editor. Your emitter is not saved into your map until you used it. If you close it, you'll have to start over. That isn't fun.

Go to the actor class browser. Go to keypoint--->AIScript--->ScriptedSequence--->ScriptedTrigger. Place a scripted trigger to a location where the emitter will be spawned. I'm not really certain how you have your sequence, but I'm going to run some assumptions.

[0]WaitforEvent
-ExternalEvent = Any Event name that'll trigger this trigger.
[1]SpawnActor
-ActorClass = "AAAYourEmitter" (Now you should see what I mean the long list of classes. If you set yours to AAA....then your emitter should be on top of the list.)
Other properties you may leave alone ;)
[2]PlaySound
This is totally optional, but if you want to make a some sound FX, this is the place to do it!
If you want this trigger to loop then...
[3]GotoAction
-Action = 0 (Go back to the beginning)
Otherwise
[3]Disable this script
Although this doesn't do anything, it's still nice to know that this is the point where the script ends. It's good practice.

The moment you've set your SpawnActor to SpawnClass = AAAYourEmitter, the emitter should be saved into your map. At this point it's safe to close the editor, and your emitter is saved into your map. I would recommend testing your scripted trigger before closing it though...just to be safe.
For more detailed information about triggers, see [anchor= goto=Triggers]Triggers[/anchor].
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

---------------------------------------------------------------
[anchor=InsertingRemovingCustomMaps goto=]Inserting/Removing Custom Maps[/anchor]
---------------------------------------------------------------
To install any custom maps you find, just put the .ut2 in your Maps folder (and any included .ucl's/.int's in the System folder). If the map has custom content it's a little more complicated:

* .ukx goes in UT2004/Animations
* .ka goes in UT2004/KarmaData
* .ogg goes in UT2004/Music
* .uax goes in UT2004/Sounds
* .usx goes in UT2004/StaticMeshes
* .u goes in UT2004/System
* .ucl goes in UT2004/System
* .int goes in UT2004/System
* .upl goes in UT2004/System
* .utx goes in UT2004/Textures
To get rid of a custom map just delete the .ut2 and it'll go away. If that map has custom content you can either delete it or just leave it alone.
[align=right]-40Shards[/align]
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

------------
[anchor=MoverTypes goto=]Movers Types[/anchor]
------------
For a basic introduction to movers, you should check out this [anchor= goto=Movers]link[/anchor] to get you started.
[anchor=ConstantRotatingMovers goto=]*[/anchor]Constant Rotating Movers
1. Place a mover to your desired location
2. Open the mover properties and modify the following properties.
bFixedRotation (Movement) = true;
Physics (Movement) = PHYS_Rotating;
RotationRate (Movement) = Any Pitch, Roll, Yaw value to determine the speed and direction this mover will rotate. (Yaw will rotate the fan "parallel" with the Z-axis. Pitch is X and Roll is Y).
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

--------------------
[anchor=Navigation goto=]Navigation[/anchor]
--------------------
[anchor=Movers goto=]*[/anchor]Movers (A basic lift)
Select a lift static mesh through the static mesh browser. In the lower left corner of the editor, right click the mover, and hit Mover. A copy of that static mesh will appear wherever the red brush builder may appear. If you look in wireframe mode, you may see it appears in purple segments rather than green.
Open your mover's properties:
Display category
ShadowCast: boolean value (Do you want this mover to cast a shadow?)
StaticLighting: boolean value (if your mover appears extra brighter than you want it to, then set this to true. If it's false the mover will accept dynamic lighting allowing it to change its lighting while it moves. It's your decision).
Mover category
Delay Time: float value (How long does the mover wait after someone stands on it)
MoverEncroachType: (When a player stands in the mover's way, does it stop, ignore (goes through), turns around, or crush the player?)
MoverGlideType: (Glide = accelerates/decelerates between keyframes. Move = Moves in constant motion)
MoveTime: float value (The duration it takes for the mover to travel between keyframes)
NumKey (not KeyNum): int value (How many keyframes it takes to reach the end of the lift. This is handy if you need to get around corners. Default = 2...One for the bottom and the other for the top).
StayOpenTime: float value (How long does the mover sit at the top before going back to keyframe 0.
MoverEvents Category
ClosedEvent: Trigger this event when the mover just finished its cycle (going back to keyframe 0).
ClosingEvent: Trigger this event when the mover departs from the last keyframe (Going back down after waiting for the StayOpenTime).
LoopEvent: TriggerControl is hold while this mover is in motion (handy for triggered Conditions).
OpenedEvent: Trigger this event when the mover reaches the last keyframe (up top before the StayOpenTime).
OpeningEvent: Trigger this event when the mover departs from the first keyframe (the mover just started moving).
MoverSounds (Plays a sound during the respective events. Read MoverEvents category if you want to learn what each field is).
Object
InitialState: Why kind of mover is this? If you want this to be a standard elevator then do StandOpenTime (triggers mover when someone stands on it).

Now to position the keyframes. Move the Mover to its starting position. Right click it, go to Mover ---> Hit 'Key 1'. Move the mover to it's next keyframe, Right click, Mover ---> Hit 'Key 2' (or hit 'Key 0 base' if this is your last keyframe). If done properly, your mover should reset back to its first keyframe.
For further details on Movers, feel free to check out this Movers Tutorial from Epic Games.

[anchor=Teleporters goto=]*[/anchor]Teleporters
TeleporterA (The place you want to go to):
Properties ---> Events ---> Tag: "Any name"
TeleporterB (The place you go to to teleport):
Properties ---> Teleporter ---> Url: Must equal to TeleporterA Tag property.

If you want the teleporters to teleport to eachother then simple take this extra step:
TeleporterB
Properties ---> Events ---> Tag: "Any name different from TeleporterA"
TeleporterA
Properties ---> Teleporter ---> Url: Must equal to TeleporterB Tag property.

Don't forget to find the right rotation for each teleporter, you don't want players teleporting to the other place, facing the wall. (Rotate through the Top Viewpoint): Yaw axis.
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

-------------------------
[anchor=Optimization goto=]Optimization[/anchor]
-------------------------
[anchor=ZonePortals goto=]*[/anchor]Zone Portals
1. Select a texture for your zone portal (the wm_textures package has a texture that says "zone portal" right on it).
2. Make a sheet builder brush that is large enough to completely fill the opening (window, doorway, hallway, etc.) that you are going to zone off (it can be slightly bigger and stick into the BSP) and place it across the opening.
3. Click the "special brush" button and in the prefabs drop down list select zone portal.

Once you get an area completely zoned off you can view in "zone portal" view and the different zones should be shaded different colors.

Note that if you are viewing in dynamic lighting view and have realtime preview selected (the joystick button on the top left of the viewport) you will not be able to see your zone portal sheets.

Also note that zone portals must be placed across BSP openings not static meshes.
[align=right]-BrainPan[/align]
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

---------------------------------------------------------
[anchor=ScreenshotSlideshowPreview goto=]Screenshot Slideshow Preview[/anchor]
---------------------------------------------------------
1. Getting/preparing the screenshots
-First take some screenshots in game. Be sure to remove your HUD, and maximize your texture quality, highest world settings, and check detailed textures for best results.
-Locate these screenshots and open them in any photo editing program. You want to set the image's dimensions precisely to 512 (height) X 256 (width) pixels.
-If you don't have Photoshop or Fireworks, then you might have to use MS paint. In MS paint, you can stretch/skew your image through the menu bar--->image--->stretch/skew. Unfortunately, you can't stretch your image on exact pixel, only by %. So, we'll need to find the right %. Get paper ready. We can only calculate one dimension at a time. The formula will be 512 (height you want it to be) / You current height dimension.
If you are playing the game at 800X600 resolution, your images dimensions will be 800X600. To calculate the % stretch, you'll take 512/800 only for the height. 256X600 for the width. Always round up when you result in a decimal. In this case, I got 42.66666% You can't do decimals in the stretch field in MS paint. If you round down, the stretch will overshoot your target, in the end, you'll need to stretch it back out (don't want to enlarge images). If you round up, you'll still be slightly larger than your target, and that's okay. We can still shrink again it without losing any quality.
Hit okay, and go to the bottom right corner (zoomed in). In the very corner, you may see a blue pixel outside your image, you can drag that blue pixel to resize your image to the nearest pixel. While dragging it, you may see your image's current dimensions changing in the lower left corner. You should be only a few pixels off, so it should be easy to adjust it to 512X256.
-Be sure to save your image as a bmp. (editor will not take Jpg)

2. Importing to the editor
-Open your map. Open the texture browser. Hit File--->import. Locate your images. Select them all. Hit import. A window will pop up.
package must be "mylevel" (no quotes). This is done so the images will be saved with your map
group: any name (I usually call it Screenshots)
name: leave it as it is.
uncheck generate mipmaps. Since these screenshots are only for the menu preview, there wont be a distance between the player and the texture. So there's no need to generate smaller textures for this one.
Hit okay to all.
-You should go you mylevel in the texture browser (You may find it in the drop box next to the all button). If you don't see it, then your images did not import properly. Please verify that you got the proper dimensions (512X256). It always must be in powers of 2.
-Now to save downloading time and memory size you should compress your textures before you forget. This is an easy process, and you wont notice any negative effects to this action. Right click your texture (must be one at a time), go to compress ---> DXT1. Done!

3. Creating your slide-show
-First you'll need to create a material sequence. Go to file ---> new.
Package: mylevel
Group: screenshots (should match with the group where your screenshots are saved)
name: Any distinguishable name (MySuperSlideshow)
Material: MaterialSequence
Leave everything else the same. Hit okay. Once this is done, the material sequence properties should open up. In the texture browser, select your first screenshot you want to show. Go back to your material sequence properties. In the SequenceItems array, hit add twice the amount of screenshots you have. (If you have 8 screenshots, hit add 16 times).
Follow this sequence:
[0]Action: ShowMaterial
Material: Hit use (once you hit use, another list of gray properties will pop up. Ignore that. That is simply your screenshot's properties. No need to edit that).
Time: Any int value (how long do you want this screenshot to show before fading?)
---Select your second screenshot---
[1]Action: FadetoMaterial
Material: Hit use
Time: Any int value (how long do you want this fade transition to last?)
[2]Action: ShowMaterial
Material: Hit use
Time: Any int value (usually it's best to keep the duration the same as other screenshots. So I would use the same int value you used in the [0] element's duration time)
---Select your third screenshot---
[3]Action: FadetoMaterial
Material: Hit use
Time: Any int value
[4]Action: ShowMaterial
Material: Hit use
Time: Any int value
---Select your fourth screenshot---
Keep repeating this process until your reach your last element.
---Select your first screenshot---
[n]Action: FadetoMaterial
Material: Hit use
Time: Any int value

The reason why I split the first screenshot to the ends of this array is so that when you're in the menu (browsing through the maps), your map will not start its slideshow during a transition. You may only have a split second to show a good first impression, so gotta make this split second impression a solid image on display ;)
Always be sure to use your best image as your first one.

4. Making the Material Sequence as your Map Preview
-Select your material sequence. Leave the browser. In the editor's menubar, go to View--->LevelProperties. A properties window will popup. Go to LevelSummary category. This is where you place information about your map: The author, the map description, the ideal player size, the real title (no DM- prefix needed), and your screenshot.
-To apply your material sequence, simply go to the screenshot field, hit use.
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

---------------
[anchor=Skybox goto=]Skybox[/anchor]
---------------
To build a skybox, you first need to build an isolated room. Texture this room with sky textures, and include a skyring (optional). To make this work, you want to place a SkyZoneInfo inside the isolated room. You can locate this actor through the actor class browser. Go to the Info category--->ZoneInfo--->SkyZoneInfo. Place the SkyZoneInfo actor around the middle of the isolated room (skybox). This actor will act like a "camera" for your fakebackdrop in your arena.

Now for the magic to work, return to your fighting area. Click on the BSP surfaces that'll show the sky. Open their properties, and simply check FakeBackDrop. Rebuild the map, run the map, and it should work.

If you are working with sky renders and you end up with a smear like in this image:
Image
If all sides are completely smeared, then you want to pan the textures by 1 uu to both U and V directions. Go to the surface properties. Go to pan/rot/Scale tab. Tap one for the Pan part.

When you are encountering partial smears, there are a couple of possibilities that could be causing this.

First thing to check are your dimensions of your cube. If you are using textures by size 1024X1024, be sure you build a cube with dimensions 1024X1024X1024 (yes, it's that picky).

Second thing to check is to check the location of the skybox. Some times it does help if you were to position the skybox in specific points in the editor. Increasing the grid spacing to a higher value like 128 or even 256 will ensure proper alignment. Don't forget to check for the Z-axis.

If not, then hit build Geometry only (or build all if you want).
It's a 90% (estimated chanced) chance for success. There is a slight chance that it's still smeared, but the next step may be a pain.
From here, there may be many issues that could be causing this. Try flipping your image horizontally. Try aligning manually. Check the area around the skybox. Are you encountering any BSP cuts. Run in wireframe mode, see if there's any unneeded brushes nearby.

[anchor=RockingSkyZoneInfo goto=]Rocking Sky Zone Info[/anchor]:
Rocking Sky Zone Infos are used to give your skybox a rotating effect. You can see some great examples from stock maps like CTF-FaceClassic.
First, you'll need to place a RockingSkyZoneInfo actor in your Skybox. You can find the class through the actor class browser ---> Info ---> ZoneInfo ---> SkyZoneInfo ---> RockingSkyZoneInfo
Once you've positioned your RockingSkyZoneInfo actor, open the properties and set these variables:
In Movement category
Physics = PHYS_Rotating
bFixedRotationDir = True
RotationRate = some value(s) This determines which direction and the speed of rotation.

Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

----------------
[anchor=Textures goto=]Textures[/anchor]
----------------
[anchor=TexPanner goto=]Tex Panner[/anchor]:
1. Create a new texture (file ---> new). Package: mylevel and group and name can be set by your choice. Set Material Class equal to TexPanner.
2. The texture properties should open up when you hit new. Minimize this window and find the texture you want to use, and select it.
3. Go back to your new texture properties, and select the Modifier section in the upper right hand corner where the texture tree is located.
4. When that is selected, look at the bottom section of the texture properties. Go to the Material property, and hit use.
5. That is all that is needed, but then of course you may change the direction and speed of the scrolling by modifying the PanDirection and Pan Rate properties.
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

----------------
[anchor=Triggers goto=]Triggers[/anchor]
----------------
[anchor=TriggeringDamageVolumes goto=]Triggering Damage Volumes:[/anchor]First trigger some event (either by scripted trigger, usetrigger, proximity trigger, or any other actor that causes events). For this example, I'll set the event name to: EventTriggered
Place a volume trigger actor anywhere near your volume (so you know this actor is associated with this volume)
In the volume trigger's properties. Set the Events ---> tag property equal to the event called (this example, it'll be EventTriggered)
Now that the actor heard an event, it will now trigger a new event whatever may be set in events--->event. This example will be DamageVolumeToggle

Now create any physics volume. Set the volume's tag (events ---> tag equal to DamageVolumeToggle).
When this event is heard, the volume will toggle the bCausePain property (making false switch to true and vise versa).

It doesn't modify the DamagePerSecond and DamageType so you'll have to initialize those properties.
Triggering Emitters: Click [anchor= goto=TriggeringEmitters]here[/anchor] to see how to trigger emitters.
[anchor=SoundTriggers goto=]Sound Triggers:[/anchor]You have two choices to do from here.
1. Using a Scripted Trigger
This process is fairly simple.
[0] Wait for Event
-Event number
[1] You got two options here...
PlayLocalSound which will play sound on a global scale where everyone can hear it on a normal volume.
-or-
PlaySound that will play the sound, but providing you a few additional options (sound volume, radius, pitch, occlusions, etc...)
-OR-
2. Using a mover to trigger the sounds
Make a mover, set its property to hidden, turn its collision off, give it a tag, place it where you want the sound to emanate from, just make it move a little (doesn't matter cuz its invisible), set it to trigger opened timed with some small movement times (second or two to move and stay open), assign the sound to the opened (or closed) sound property of the mover (under the MoverSounds tab), adjust the sound properties of the mover (i.e. radius, volume, use full volume, etc. - under the Sound tab). If you place it in the center of the map and give it a big enough radius you should be able to hear it from anywhere on the map.

Then trigger it using a scripted sequence instructions but use a trigger event instruction triggering the mover instead of PlaySound/PlayLocalSound. You might also want to insert a WaitForTimmer instruction after the WaitForEvent so you can delay the mover/sound a few seconds (so it plays after the announcer does the beginning of the wave countdown).

I say this because sound that comes from movers sounds infinitely (slight exaggeration) better than sounds initiated directly from scripted sequences (i.e. you can control the volume and radius much better).
[align=right]-BrainPan[/align]
Click [anchor= goto=Contents]here[/anchor] to come back to the Table of Contents.

------------------------------------------------------
[anchor=UndoingSimplifiedCollisions goto=]Undoing Simplified Collisions[/anchor]
------------------------------------------------------
Initially, simplified collisions are made simply to optimize collision detection to reduce computer calculation with player collisions on detailed static meshes, but at times whenever you scale up a static mesh with simplified collision, the simplified collision interferes with gameplay (hiding inside a static mesh, or an invisible wall will annoyingly block players).

First place another copy of the same static mesh anywhere in your map (it doesn't matter where since you can delete any time you've converted it to mylevel). It is important that you don't rotate or scale this static mesh though!
Right click it, hit convert, and Convert to static mesh.
Package: mylevel (this must be mylevel)
Group: Any name (I usually name it Collision if I'm modifying the collision)
Name: Any name
Open the static mesh browser, and go to mylevel (the package may be located next to the "all" button on the top.
You should see your copy of the mesh there. Select the mesh, and return to your map.
Go to the original static mesh (the one with the simplified collision)
Open properties, go to display, then static mesh. Hit use.
Click [anchor=Bottom goto=Contents]here[/anchor] to come back to the Table of Contents.
Last edited by DW_Ant on Sun Feb 13, 2011 5:27 am, edited 18 times in total.
The difference between successful people from others is
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.

FFE466

_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
DW_WailofSuicide
DW Clan Member
Posts: 1634
Joined: Wed Dec 28, 2005 12:00 am

I'm too lazy to check, but have you considered posting any of this info to UnrealWiki? Forums are nice and all, but UnrealWiki is [/should be] the hub of all knowledge about Unreal. This kind of stuff is much more valuable over there where all kinds of people might see them.
DW_Ant
DW Clan Member
Posts: 2670
Joined: Sat Jun 21, 2008 11:00 pm
Location: North Carolina

Well these tutorials aren't ready yet. So far, I just did a simply copy/paste job from the old archives from these forums. Many of the tutorials are answers are specific questions, but I need to broaden them to the whole picture.

I also have several other tutorials from my dead website I would like to post here, but I don't feel like uploading tons of images. My style in writing changed from the old tutorials. It's way too cheery for me. I have a feeling I'll need to rewrite them all, then post it here.

There are several new tutorials I've learned between the times that I would like to share.

Things that needed to be added:
  • [s]Planning a Map (General themes, Planning the gameplay flow, design the map so it'll be at a playable speed)[/s]
  • [s]BSP construction (Intersecting Tools, Vertex editing, 2D editor)[/s]
  • Texturing (importing and creating)
  • [s]Decoration Suggestions (General ideas you could do to fill up that blank boxy room)[/s]
  • Lighting
  • Creating Classes
  • Emitters (creating basic emitters)
  • Scripted Triggers (creating some complex scenes)
  • Custom Death Messages
  • Complicated Movers
  • Destoryable Objects (breaking class, walls, & ships...I like blowing things up. I feel there should be more things I should blow up!)
  • Custom Loading Screens
  • Advanced Terrain (I need to edit an older thread with the terrain tutorial. There are new techniques I've learned that's not applied on that tutorial).
  • Converting and importing to mylevel (Static meshes, ambient sound...Replacing textures seems to fit here, too.)
  • AI (pathing, jumpspots, Pathing for Vehicles, forced/proscribed paths, assault paths, etc...)
  • WarpZones (fun!)
  • Security Cameras
  • Volumes (blocking, water, damage, limitation, etc...)
  • Optimization (Antiportals, terrain layers, terrain sectors, collision, emitter particles, cull distance, lighting optimization (both dynamic and shadow details), and distance fog)
  • Gameplay (Flow, balance, collision, MM balance, and also SV balance)
  • Taking in the Criticism (The experience of mapping)
I didn't take the time to organize this list into a decent order. Right now I have two options:
1. I can organize tutorials based on relevance to its neighboring tutorials.
2. I can organize alphabetically.

I also want to include some important links: Map Submission Rules and Other mapping stickies. Static mesh index, and also links to sites with many tutorials (unreal wiki, epic games, and angel mapper).

I also have this Texture Index that's organized by theme and content each package has, I'm debating if I should start a new thread, or post it here.

I doubt anyone is going to read the whole thing, but I'm guessing someone will gather info from one tutorial while another may learn a different tutorial. That's all that is needed to make this useful :)[/color]
The difference between successful people from others is
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.

FFE466

_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
DW_Ant
DW Clan Member
Posts: 2670
Joined: Sat Jun 21, 2008 11:00 pm
Location: North Carolina

Blast!
Forums wrote:Your message contains 61251 characters. The maximum number of allowed characters is 60000.

I'll create a new post every time this limit is hit.

____________________________________________________________________

[anchor=FAQ goto=]FAQ[/anchor]
Q: Where do I download the editor?
A: You don't download the editor. The editor should come with the game the moment you install UT2k4 (Macs excluded). You'll locate the editor in UT2004 ---> System ---> UnrealEd.exe. Or you may locate it through the start menu ---> All programs ---> Unreal Tournament 2004 ---> UT 2004 Editor. If you have the Anthology, you may locate it through UnrealAnthology ---> UT 2004 ---> System ---> UnrealEd.exe.

Q: When I open the editor and I get this blank white screen, where are my viewports?
A: Simply go to view ---> viewports ---> Configure. Hit okay.

Q: Why does my monitor appear extra bright/dark whenever I run the editor?
A: It's running the gamma properties from your UT game. To correct this, create a shortcut for the Unreal Editor. Open it's properties, and go to Shortcut tab. In the target field, you may see something like "...UT2004\System\UnrealEd.exe" Simply add -nogamma right after that line so it'll appear as "...UT2004\System\UnrealEd.exe -nogamma"

Q: Why do I die the moment I spawn?
A: You need to hit the "build all" button in the upper right corner of the editor. You may also find this button through the menu bar in the "build" menu.

Q: Why do I die the moment I spawn? I don't even see my dead body after I die!
A: The issue is that your player start is below the Zkill. To "see" your Zkill, simply go to your side viewports & zoom out. You notice the red line going across? That's the Zkill. That thing will literally remove every single actor in the game from projectiles to monsters to live players. You got two choices to fix this:
Raise your entire map where your playerstarts are above it.
-or-
Lower the bar, itself.

To lower the bar, open the level properties. You can find the level properties through the menu bar in "View" category.
Once you got into the properties, go to ZoneInfo category--->ZKill--->**lower Value here**
The Value will set the plane's Z location so the higher the value, the higher the line...The lower, the lower the line.

Now keep this in mind. This property you adjusted through the level properties is only for the zones that remain undefined in your map. If you place Zone portals, then you have to adjust the Zkill for those, too. Don't worry though. You can select All Zone Portals and adjust them all at once.

Q: Whenever I test this map, why do my pickups disappear, I get all weapons when I spawn, and I win the match whenever I die?
A: Open your level properties (view ---> Level Properties). Go to the Level Info category. Be sure it says xGame.xDeathMatch (copy & paste this text) in the PreCacheGame field.

Q: How do I trigger movers on a designated wave?
A: Set the mover's initial state (found in the object category) to TriggerToggle if you want absolute control in telling it when to open and when to reset.
-Or-
Set the mover to TriggerOpenTimed if you want the mover to open until X many seconds that is set by the StayOpenedTimed (found in the mover category)
Now to trigger the mover by the wave, set the events ---> tag property equal to invwave# but replace the # sign with its respectful wave number.

Q: My surface is flickering as if it's trying to render two textures. How do I fix this?
A: Don't place two static meshes (or a static mesh exactly on a BSP surface) right over each other. This will cause the "flickering." To fix this issue, always displace one of the meshes 1 uu (unreal unit).

Q: How come my sunlight actor is not working?
A: You need to place some fake backdrop surfaces that'll cause the sky to be visible. The sunlight actor is a directional light that "bleeds" through fake backdrop surfaces.

Q: Whenever I place some ammo pickups, some times I cannot see them using my top viewport. How could I see my pickups through using the bird's eye view angle?
A: By default pickups have a cull distance property set. Cull Distance is a optimizing property that will make these objects disappear when your player is this many uu away from it (this property is disabled when it's set to 0). You could set the cull distance property (display--->Culldistance) to a different value, but I would recommend you change your mode from top view to side or front view. Move your camera down to your ammo pickups location, then reset it back to top. Since you've changed the Z-axis on your top view, you should be able to see the ammo pickups then, now that the ammo pickups are closer to your camera.

Q: Why am I getting the HOM (Hall of Mirrors)?
A: You need to have your BSP brushes aligned to the grid. If they are offset from the grid (event by the nearest .001 uu), you risk HOM.
Also you want to make sure your brushes are not intersecting. Whenever you subtract a brush that's already subtracted, you also risk HOM. Go to wireframe mode to correct these issues.

Q: How do I make it stop snowing/raining inside after creating a XWeather actor?
A: Set the XWeather actor tag (events--->tag) equal to "NoSnow" or "NoRain" then you'll need to create a volume covering the entire area you don't want it to rain/snow in. Open the volume's properties. Set the tag (events ---> tag) equal to the XWeather actor tag. Rebuild your map.

Q: Where did my static meshes go? They suddenly disappeared!
A: You may have toggled them off. Select your viewport, and press the 'W' button to toggle visibility. If you have grouped the static meshes, be sure your group is visible.

Q: Why do I get this HOM when I go outside the map in the editor?
A: You must have fake backdrop visible (the option that allows you to see skyboxes). Select your viewport, and press the 'K' button to toggle visibility.

Q: Why is my actor properties not opening up?
A: Your actor properties must be off screen. Try lowering your start menu, or increase your resolution to reposition it.
_____________________________
Some things [anchor=NottoForget goto=]NOT[/anchor] to forget:
  • Ion Cannon
  • Zone/Location descriptions
  • Ambient Sounds
  • Compress all custom textures
  • Don't make my computer cry. Always optimize your maps.
  • Notes. Other mappers may open your map in the editor. Show them your personality by placing a few note actors around your map.
  • Delete your mutant pawns when finished.
  • Final Touches (Author, Music, Title, Description, and screenshots)
  • Always compress your map before uploading
I be sure to include some more tutorials later. Expect this post to grow.
Click [anchor=Bottom2 goto=Contents]here[/anchor] to come back to the Table of Contents.[/color]
The difference between successful people from others is
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.

FFE466

_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
Post Reply