RvS Mapping Tutorials
Odds & Ends
Navigation

Building Skyboxes in Raven Shield
-by Beckett, last updated March 24, 2003

In this tutorial, you'll learn how to create a working skybox for your custom Raven Shield map. The process is pretty similar with any Unreal engine game. The major difference with Raven Shield is that the skyboxes have all been designed as static meshes rather than textures (static meshes which are, of course, textured themselves... to be technical about it). You can browse through a number of skybox textures in the editor, but if you try to plug them into your skybox directly they simply won't display properly (as many of you have probably discovered already).

This tutorial assumes that you are already familiar with UnrealED and know how to load a simple custom map into Raven Shield. If this is not the case, take a look at my earlier tutorial, "
Building Your First Raven Shield Map", and then come back to this one. I'm not going to spend much time in this tutorial dealing with textures, lighting, insertion points, or path nodes. I'll assume you know what you're doing and can improvise these as you go along.

Let's get started. Open the texture browser and choose "R6_Common.Backdrop" by opening "R6_Common.utx" and selecting "Texture Backdrop [DXT1]". Carve out a cube sized Height=640,Width=768,Breadth=1408. Change the ground surface to any appropriate terrain texture. Select the ceiling and 4 inside walls, right click, and choose "Surface Properties". Select the "Fake Backdrop" checkbox and then click the "Apply" button. This tells the map to look for a skybox to use as a background for these surfaces. (It is important that you apply the R6_Common.Backup texture on any surface which you designate as a fake backdrop. This texture has no impact effect set, which will allow bullets to sail into the distance, rather than unrealistically bouncing off of the fake backdrop.)

Close the surface properties window. Open the Actor Classes browser, expand "Info" and select "ZoneInfo". Right click in the center of our area and choose "Add ZoneInfo Here". (Note: this step was not in the original version of this tutorial, and as a result the skybox did not appear for clients when playing multiplayer games.) Add an insertion zone and and a node point as well. (If you need help with this,
review my earlier tutorials).

Return to the Actor Classes browser, expand "Light" and select "Sunlight". Right click in the center of our area and choose "Add Sunlight Here". Position the Sunlight icon in the top half of the 'world', and rotate it so that the red arrow points downward. Open the properties window, expand "LightColor", and set LightBrightness to "240" and LightHue to "50". (This will illuminate the ground pretty well as long as you pointed the red arrow down).

Now, create a builder brush sized Height=256,Width=512,Breadth=512. Drag this brush completely outside our subtracted area (the two areas should not touch) and then subtract the cube. It doesn't matter what texture you have selected, because this texture will never be seen. Open the Actor Classes browser, expand "Info | ZoneInfo", and select "SkyZoneInfo". Right click in the center of the area we just created and choose "Add SkyZoneInfo Here". This identifies the entire inside of this area as our skyzone (you should only have one skyzone per map). Make sure the SkyZoneInfo actor icon is completely inside the cube, both horizontally and vertically.

Now open up the static mesh browser, open "Airport_SM.usx", choose "Skybox", and select "SkyBoxAirport". Right click inside our skybox and choose "Add Static Mesh: 'Airport_SM.usx.Skybox.SkyBoxAirport'". Postion the static mesh so that it fits perfectly inside our skybox. Open the Actor Classes browser again, expand "Light" and select "R6GlowLight". Right click in the center of the skybox and choose "Add R6GlowLight Here". Make sure the lightbulb icon is completely inside the skyzone. Open the properties window, expand "LightingColor", and set LightBrightness to "1" and LightHue to "50". That will do a fine job of lighting our skybox background.

The vertical positioning of the SkyZoneInfo actor in your skybox is very important. In the case of the airport skybox that we are using here, I recommend we place the SkyZoneInfo actor just slightly above the floor of our skybox; this will set a low perspective, causing the mountains to rise up majestically over you. In some cases, you will want to set the SkyZoneInfo actor higher in the skybox. For example, in the Penthouse map, you are looking down at the city below so you want to set a high perspective. The best way to think about it is to imagine that your entire subtracted world been shrunk and stuffed inside the SkyboxInfo actor icon. Note that you can test how the skybox is positioned right from the editor. After repositioning the SkyZoneInfo actor, rebuild, position your camera low to the ground in your map, and press [K] to toggle 'Show Backdrop' in the 3d view. Then move the camera around the map, staying low to the ground where the player will be, to see how it looks. Press [K] to hide the backdrop again.


Now, we'd better cage the player in a bit. In my opinion, one of the most important decisions in building a map is how to block the borders of the map without making the player feel like they are trapped or living in a box; this can make all the difference in how realistic the map feels. The best borders are those that are layered, for example a vehicle, followed by a fence, followed further back by a small building and finally by the far off mountains in the skybox. Some of the Raven Shield campaign maps go to great lengths to make you feel like you're part of a larger world. When I burst through the Garage level for the first time, and found myself looking at a 3d modeled ocean, I fell out of my chair.

With all that said, we'll be keeping it pretty simple for this tutorial. Our goal is simply to keep the player from ever seeing a 'horizon' where the ground abruptly ends and the sky begins. Not only does this look unrealistic, but if the player peeks over the edge, they'll see a hall of mirrors effect. That doesn't mean you've built the skybox incorrectly. You just need to do a good job of keeping the player away from the edges.

Create a cube builder brush sized Height=224,Width=16,Breadth=1408. In the texture browser, open "Airport_T.utx", choose "Wall" and select any of the wall textures. Add one wall on the far side of the world and one wall on the near side, right along each edge. Next, place a shorter wall (sized Height=64,Width=736,Breadth=16) to block the left edge of the map. However, then place an identical wall about 256 units in from the first one to keep the player from getting to close and peeking over the edge. Our 'sun' won't do a very good job of lighting these, so open up their surface properties, select the "Unlit" checkbox, and click the "Apply" button for each one. (I rarely recommend using the "unlit" setting in a final map, but it'll do fine for now.)


Now open up the static mesh browser again, and browse to "Airport_SM.Vegetation.Backdrop_01". Place this static mesh, rotate it, and position it along the right edge of the area. Return to the static mesh browser, select "Airport_SM.usx.Vegetation.Backdrop_02" and position that on the map as well. Make sure no vegetation is sticking through the floor. You should be blocking the entire right edge now, but it doesn't need to be exact, since we won't let the player get too close.

Return once more to the static mesh browser. Browse to "Airport_SM.Fences.Mur_Grillage3_Air" and place it about 256 units in front of the vegetation. It's slightly wider than we need. Open the properties window, expand "Display", and change DrawScale to "0.95". Make sure the fence isn't sticking through the floor or either wall. Our 'cage' should be complete.

Rebuild the map, save it, and try it out in-game.


I hope you found this tutorial helpful. If there's anything I've gotten wrong, please let me know and I'll correct the information. Email me if you have any questions or mapping issues you'd like to discuss.
-Beckett

Display a printable version of this article


2005, RvSMaps.com, all rights reserved
Send questions, critiques, etc. to http://www.juncmodule.net/rvs/rvsmaps/content/contact.htm