Spatial Fear Dev Kit » Guides

SpatialED

Introduction

SpatialED is the editing program specifically created for the development of Spatial Fear. It is tweaked to better support elements such ascommunications, scripted sequences, and scripted pawns. It is based on UnrealED, so experienced UnrealED level designers should have no trouble adapting. The main reason to use SpatialED over UnrealED itself is that SpatialED supports our custom map format, whereas UnrealED does not. You can find SpatialED in the Spatial Fear start menu group or in the /system folder (note: do not launch from the exe itself, but the provided shortcut).

New Interface Elements

Once in the application, you'll notice that we have added a number of builder brushes. These are courtesy of Tarquin. For more info on the new brush builders, see the appropriate section below. Aside from a few language modifications and interface enhancements, you will find that SpatialED is exactly like UnrealED. There is, however, a new menu bar in SpatialED that adds a few key functions.

(from top left to bottom right)
  1. Align camera on selected actor - The active camera is moved to focus on the selected actor
  2. Reset Brush - Fully resets the selected brush (Location+Pivot+Rotation+Scale)
  3. Form builder brush from brush - Modifies the builder brush to fit the exact properties of the selcted brush
  4. FaceDrag Mode - Brings the editor into FaceDrag mode
  5. Add communication - places an SFCommunication actor at the active camera
  6. Add NPC communication - places an SFNPCCommunication actor at the active camera
  7. Show Pathnodes - Toggles the visibility of all pathnodes to be shown
  8. Hide Pathnodes - Toggles the visibility of all pathnodes to be hidden


New Builder Brushes

(note: this documentation was originally written by Tarquin, who created these builder brushes. The wording has been modified and compiled into this stand-alone resource for the sake of easier reference)
Parallelepiped builder
Extends the cube builder with options to make slanted boxes. This boils down to adding variables to specify all 6 possible skew types.

 
  • BaseSkewX, BaseSkewY - skew the base poly
  • InclineX, InclineY - cause the vertical edges to lean
  • DipX, DipY - skew in the z direction.
Wave builder
This is the terrain builder with a twist: the heights of the vertices that make a grid on the base are given by a sine wave.
  • WaveHeight - The half-height of the waves. They will extend by this amount above and below the base terrain brush's box. Beware: setting this to too large a number will cause BSP errors as the side diagonals will be crossing empty space.
  • PeriodX, PeriodY - The number of periods for the wave in each direction. Note this need not be a whole number - set to .5 for a single hill for example.
  • PhaseX, PhaseY - Shifts the wave across in the X or Y direction by this number of units.
  • MergeCoplanars - Set this to true to reduce the number of polys in the brush. This uses UnrealEd's built-in coplanar merge option; it's better to use this rather than a polys>merge command on the built brush, as this removes spare edges from the brush too. If you use this option, I do not recommend editing vertices on the resulting brush!
Known issues
Be careful with the WaveHeight setting, if that is too large it's possible to get bad polys.

 
Spiral Stair Builder
This builder is intended to replace the default Spiral Stair builder as well as the curved stair builder. I felt this was necessary because brushes made with the default Spiral Stair builder can't be subtracted.
In writing this new script, I've also found that the sloped floor / ceiling options in the native builder can throw up a lot of errors in the log. I don't know enough about the way UEd handles these to know whether this is bad for a level's BSP, but this new builder addresses this problem anyway. It also allows some new combinations, for example a flat base with a sloped top.
I had hoped to find a way to make the installation of this pack disable the default spiral and curved builders, but I do not think this is possible. If anyone knows of a way, please let me know!
  • StepHeight - The height difference from one step to the next - the height that a player climbs for each step.
  • StepThickness - The actual height of each step block. This is usually greater than StepHeight; setting the two to the same value will make a staircase where the steps only touch at an edge. If StepThickness is less than StepHeight, each step is totally seperate from its neighbours.
  • StepWidth - Width of the steps.
  • InnerRadius - Distance from the centre of curvature to the inner edge of the steps.
  • StepsPerCircle - AnglePerStep * StepsPerCircle = 360 degrees, if you prefer. I use this because I work in radians, and so do UnrealScript's trig functions. It would take you a long time to type in all the digits of pi. ;)
  • NumSteps - The number of steps in the staircase. This can be larger than StepsPerCircle in some cases only - if you try something that isn't possible, the 'Bad Parameters' dialog box will explain the problem.
  • AntiClockwise - Yes, I'm English. Counterclockwise if you prefer.
  • TopStyle - Select whether you want sloped top, or regular top with steps, or a flat top. The flat option will make stairs like the CurvedStair builder, and will not allow more than a full circle.
    Note that a full circle, flat base brush, as with CurvedStair builder, will meet itself and two polys will touch — the subtracted brush will have a sheet effect between the first and last steps.
  • BottomStyle - Same as above. Note in particular you can't have both set to flat - the code is complex enough without building cylinders too.
    You can't have both set to slope if StepThickness isn't strictly greater than StepHeight, since the brush would then have zero thickness throughout.
    The builder checks for these and other problems and explains them as you go.
  • GroupName - Works the same as in the native brush builders.
Known issues
The textures on the walls are turned by 90 degrees. I plan to do... sod all about this, because this builder has been murder to write.
Contact me if you find any bugs.

 
Torus Builder
This builder makes a torus, or sections of a torus, and was suggested by purice at the PlanetUnreal Forums.
  • OuterRadius - The outer radius.
  • TubeThickness - It might have been more logical to call the radii OverallRadius and CrossSectionRadius, as suggested on PlanetUnreal forums, but I'd already written the code, picturing the torus as a bicycle tyre, made from an inner tube looped to meet itself. This is then the diameter of the tubing, and will also be the height of the torus. OuterRadius - TubeThickness = radius of hole in the middle.
    Note for mathematicians, topologists and freaks on my wavelength: fiddle with the way it meets itself and you get a Klein bottle!
  • WheelSides - This is how many times the tubing is bent to make the full loop.
  • WheelSidesUsed - Works like the 2D editor's revolve tool, with an added extra: leaving this at zero tells the builder to use the value of WheelSides, so the number of sides of a full torus can be specified without having to enter two values.
  • TubeSides - The tubing is made from a cylinder with this number of sides.
  • WheelAlignType - 'Plain' and 'Side' work the same as the AlignToSide 'False' and 'True' respectively; 'Caps' is a special case of 'Side' which cuts the first section of a partial torus to the x-axis.
  • TubeAlignToSide - This works the same as the 'align to side' option in the native builders, and changes the alignment of the tube cross-section polygon. (To get a clear picture of what it does, set WheelSides to 4, TubeSides to 8, and look at both types in a side view.)
  • GroupName - Works the same as in the native brush builders.
Known issues
I've found that setting sides higher than 16*16 causes some of the polys not to display. This may be due to the sheer number of polys and BSP cuts.
Personally, I worry that because the vertices have irrational coordinates, what drops off when the floating point variable is rounded sooner or later becomes significant enough to cause a glitch - but I don't know enough about how these are handled internally.

 
Cylinder Builder
This makes a cylinder just like the native builder, but adds support for partial revolutions. People who remember the advertising campaign on UK telly in the 80s may, like me think the button looks like a piece of Edam cheese.
  • Height - Height of the cylinder.
  • OuterRadius, InnerRadius - These are the same as the native builder.
  • Sides - Number of sides of the cylinder. Note that the Unreal engine splits polys with more than 16 sides.
  • SidesUsed - Works like the 2D editor's revolve tool, with an added extra: leaving this at zero signifies 'full circle', so the number of sides of a full cylinder can be specified without having to enter two values.
  • Hollow - Same as the native builder.
  • TriangulateCaps - If the cylinder isn't hollow, this will split the two caps into triangles.
    Note: A partial cylinder that makes more than half a circle will have triangulated caps no matter what this is set to.
  • AlignType - 'Plain' and 'Side' work the same as the AlignToSide 'False' and 'True' respectively; 'Caps' is a special case of 'Side' which cuts the first section of a partial cylinder to the x-axis.
  • GroupName - Works the same as in the native brush builders.

Panorama Builder
This builder makes a panorama: a set of sheets arranged to make an open cylinder. This is intended for building backdrops in the skybox: most of the Epic maps use a mountain backdrop with 4 sides and 2 sheets per side.
The panorama could also be used for building waterfalls like the ones in DM-UT-Tourney][ by Olav Gjerde, as seen on the 0wnage.
  • Height - Height of the brush.
  • Radius / PanelWidth - The radius of the panorama can be set either directly or by specifying how wide each panel should be, allowing skybox textures to be aligned correctly.
    These two options are mutually exclusive — set whichever one you want to use, and set the one you want the builder to ignore to zero.
  • Sides - Number of sides of the cylinder formed by the sheets.
  • PanelsPerSide - Number of sheets on each side of the cylinder.
  • AlignToSide - Works like the 'align to side' option in the native builders.
  • GroupName - Works the same as in the native brush builders.

Extrude Builder
Because of the complexity of the procedure, it's not possible for this builder to check that it isn't making a brush that is bad in some way - so it's up to you, the user to exercise caution when you use this.


For the complete documentation on this builder, please refer to these documents and tutorials (note: these are linked to internet resources).

Documentation
Part 1: Properties list
Part 2: Presets & Command module
Part 3: Caveats
Tutorial
Part 1: the path
Part 2: the relative path
Part 3: turning and tilting the path