Hello, and, welcome back to the ‘Aperture Science Ingenuity Testing Vault Step-by-step Creation and Development Reference Manual’ Secondary Installment Two’.
Readers must be informed that they may be informed of applicable eye-strain and bad-posture-related issues. No further information is needed or will be provided, and Subjects should be encouraged to attend a Health and Safety Posture-and-Eye-Strain seminar.
Beginning the Level Design – Room One
The default ‘First Person Blueprint’s’ objects were not needed and so were deleted from the level. From the left of the screen, under the ‘BSP’ menu, a ‘cube’ was dragged out and placed into the map.
With the size tools on the left, it was adjusted to be as large as was necessary and was made to be ‘hollow’ by use of a simple tickbox in the options beneath the size tools.
Some materials were added to help give it an initial effect of being a standard ‘Aperture Science Test Chamber’, and the PlayerCharacter was positioned to be inside it. There is currently no shading as the lighting has not yet been built.
Here is a comparison between built and unbuilt lighting. The desired effect from having a room so tall was that, when the game started, if the player looked up all they would see was the room disappearing into nothing, giving the dual impressions of scale and creating a sense of unease via the looming, overshadowing darkness.
The required sizes of all the rooms have already been worked out (not the layout or order, but it is known what the Unreal units must be a multiple of, for the textures to work correctly). But, as the rooms are created with ‘hollow’ BSPs, which come with a standard ‘wall width’ of ’10’ (set to 25, because the width of the doors suggests this would be more accurate), they must be made “a multiple of [the number] add 25” for the textures to still fit.
This ensures all the textures fit together correctly and are scaled appropriately. After testing that these all worked, I moved on to the creation of the rest of the map.
First was the exit of the first room. I wanted the room to begin somewhere where it appeared as though there was no way out — creating an obvious sense of tension in the player. The panels on the wall would, after a delay, however, move back and reveal the next location.
As animations cannot be used on BSPs, I created four Basic Geometry shapes to cover the doorway evenly, positioning and texturing them so as to look to just be a part of the wall. I selected ‘Cinematic > Add Level Sequencer’ and opened the Level Sequence animation editor.
The small box on the right of this image is the animation editor. The four blue bands are the four pieces of ‘panel’ which make up the doorway; and the red dots are the ‘keyframes’ — the set-positions the pieces of panel will be at, at the given time (time runs left to right; represented by the white line going down the middle).
Wanting not to create a too ‘formal’ or ‘standardized’ look — wishing to make something which looked more ‘playful’ and ‘spontaneous’ — I ensured not to standardize the timing or movements of the panels too much, making them move at different speeds and in different original directions; as can be seen by the right-hand-side window which shows the panels part-way through opening.
Making a Staircase
The room which the first room will lead into will be a small staircase, heading to a door which, itself, reaches into the elevator room. The staircase — as is the norm in Aperture Science Test Chambers — appears to be made from the “Panels” as advertised by Cave Johnson.
Thereto, it is suggested that the entire location can metamorphose and reshape, and that the stairs simply come from sections of panel, which have risen up from it; revealing an ominous, red glow from beneath.
Above is the code for making an ’emissive’ texture. Under a correctly named file (under ‘Content > User > Material > Other’ in this case) a new material was created by right-clicking on the list of materials and selecting ‘New Material’.
A constant and a Constant3Vector were created and converted into Perimeters. These were linked into a ‘Multiplayer’ and dragged into the ‘Emissive Colour’ node. This tells the material to ’emissive’ light; a Material Instance (a copy) of this was then created which came with options to change the colour.
This red, emissive material was dragged into the bottom of the hole I had previously made to fit this, and the first step was created — in accordance to the sizing noted down in the previous step; taken from the original game — with a particular width, depth and a tapering-off of the lower edge.
These were arranged as they appear to be in the game; replicating their design and putting them on black ‘cylinders’ to act as the support — upon which the steps would move up and down at GLaDOS’ control.
As can be seen from this comparison of the two below-panel light sources, in the original game, they also have a partly transparent grating to protect Subjects from falling down.
After researching how transparency worked in Unreal online, I found a texture which suited this ‘grating’ design and made two copies — one of inverted black-and-white colour. I, as before, created another material and set its blend mode to ‘Masked’, dragging the standard texture (right, above) into the Base Colour and the inverted version into the ‘Opacity Mask’.
The staircase is now finished. This is useful, as it can be reused later on in different staircases, can be adjusted, and have animations put on them to rise up or lower before/as the player walks over it.
A light was then added in the space beneath the staircase — a light of dark red colour which radiates out from the red, emissive-texture of the space below. Although, while it does glow, it does not put actual light into the environment.
Making an Elevator
The next room to be made was the elevator room. In 3dsMax, I created a simple elevator which the player could stand with, and then imported it into Unreal. It was given a glass wall and two lights which would travel with it. There were also two Box triggers added: one inside the door; the other much lower and outside the front.
When the outer box trigger is activated, a Level Sequence that causes the elevator to move down the elevator shaft into position is triggered. When the player then walks in, they trigger the inner box trigger, which starts a 10 second animation wherein the elevator moves down two floors to the first of the test chambers.
However, owing to problems in the Engine, if the Player Character was then to move elaborately (jumping, running and so forth) there is a high risk they would glitch through the floor and break the game. Thereto, a ‘Disable Input’ node was added, linking to a 10 second delay before allowing ‘Enable Input’.
I then created a small wire mesh to go over the entrance into the elevator shaft, and added an animation in the Sequencer that would open it upon the elevator’s arrival, and close it upon its departure.
Here is the elevator shaft in-game, after the elevator has arrived and wire mesh has risen.
The Following Room…
After following the elevator, the player then exits into the first of the test chambers. Using a subtractive shape and a wire mesh I had made in 3dsMax and placed across the opening. Then I put a red emissive texture and a red light of the same colour behind it.
The door to get in consisted of two box triggers attached to either side of the door. The first plays an animation to raise the door up for the player to walk through; the second plays that animation again in reverse to close it. Below are some cinematic images of the first testing room.
To make this window, a standard basic shape was placed in a space created by a subtractive brush. Both sides were then given a glass texture which came with its own transparency, however, one of those sides was then given a blur volume and had its opacity adjusted until it was frosted glass.
I found an issue during testing that the player could often get stuck going through doorways, if they walked too closely to the edge of the door. This, possibly, is because of the hitbox getting stuck on the sides, which are colliding with the gradually reducing height of the doorway-cylinder. To counteract this, a basic shape was added on either side of the doorway and ‘render in viewport’ was set to false, leaving the collision with no visual indication of its presence.
To make a button, a cube was made and ‘Simulate Physics’ was turned on (so it could be picked up and dropped by the player, as set up in Part One), and ‘Generate Overlap events (allowing it to activate trigger boxes) was ticked. These now activate the Buttons with the hit boxes on them, which trigger a ‘Create Level Sequence’ and play the door opening animation.
Above, some more examples of the frosted glass in a different context and more of the door-collide-glitch-stopping-barriers.