A Stargate is an alien portal that can transport people and objects to other planets.
The Stargate is a passion project I have wanted to work on for a long time and is based on the popular movie and television franchise Stargate.
The goal was to create a fully game ready system that is both easy to modify, easy to implement into any existing project and most importantly, true to the source material.
The project took around 4 weeks to complete, I will quickly go through the inteded work flow with the finished product then talk about the process of making everything.
The finished system that is exposed to the user is the stargate itself, a control panel and a data table for storing information not tied to a specific level.
The control panel is the standard way of interacting with the stargate, but it is not neccesary and I made sure that it was easy to set up other means of controlling the gate if the user wants to.
Setting up the finished Stargate blueprint
That's it! The stargate is now ready to be used to transport the player to any level available in the data table.
To add a new level; simply choose a 7 character long adress and specify the level name.
All valid characters are available in a seperate data table.
In the future I would like to streamline this process so that users wont have to edit data tables, insted adding levels would be taken care of with an editor script.
Scripting the Stargate and Control panel
For the Stargate to become functional, a lot of systems would have to work together. The gates connect to each other by a telephone-like system. The user has to enter a series of 7 characters in order to create a connection.
I decided to create a queue within the gate so that no matter what input the gate gets it would always handle it the same way.
The control panel receives input from a very light weight interaction system on the player. It then calls the above function and sends the character associated with the button pressed. The function is set up so that anything can give the gate an input signal.
Here is a quick demonstration where I both adapted the existing systems to a 3rd person character I made and made a script that inputs 7 characters automatically:
And this is the script responsible for sending the input to the gate. The script has an exposed variable that is the adress the script will send to the gate.
After the gate receives the 7th character, it will search a data table for the specific 7 character code entered. If one is found the gate will activate, allowing the player to travel to the level associated with that code.
Audio and Visual feedback
A lot of what makes the Stargate unique is how it looks and sounds. In tandem with the scripting I worked on animating all the parts to be as truthful to the source material as possible.
I spent a lot of time watching clips of the stargate to get the feel for all the timings and effects. Here is a side by side comparison of my gate and the one from the tv-show Stargate SG-1.
Spinning the ring, moving the chevrons, playing sounds etc. was quite straight forward. The interesting part was making the famous "puddle" and "kawoosh" effects since they were made using clever practical effects that are very hard to replicate in a game engine.
The sound effects are being played from the gate blueprint where I used an event timeline to match the sound with the animations.
Gate Open Effect (The Puddle)
The puddle consist of 2 materials on a round plane. One for the creation of the puddle and one for the static puddle. I use a material function and a lerp in order to blend between the 2 materials.
Both materials is a collection of noise, normal and tesselation effects. Parameters are controlled via blueprint to create a convincing transition effect.
I use point lights to create the shimmer effect on the surface and spot lights to create the water caustics effect projected on the surroundings.
Gate Activation Effect (The Kawoosh)
The kawoosh was by far the hardest effect to create. I first tried to animate it in Maya but was not able to achieve good enough results and I was spending too much time on it. I decided to abandon the animation approach and go for a more simple approach.
The final result is a mesh being scaled in the x-axis via a blueprint timeline, I then apply a material to the mesh that uses tesselation and displacement to create the wavy water effect.
3D modelling the Stargate and Control Panel
I modelled the gate and control panel in Maya. I gathered measurements from various official sources and referenced images from the tv-show for a lot of the details.
Since the gate consist of 9 radially symmetrical pieces I only had to create 1 of the pieces then copy it 8 times to complete the gate.
I kept many of the pieces seperate because I knew that I would have to control them individually once I began scripting all the funtionality, such as rotating the ring, controlling the lights and animating the chevrons.
I am really happy with the final results. In the future I would like to improve the "kawoosh" effect and try to polish the models and textures a bit.
There is also a bunch of quality of life changes that can be made to make the set up even easier, such as setting the stargate reference automatically, editor scripts to add the level to a data table and so on.
A lot of the work I did would probably be best suited for C++, but since I wanted the system to be very script friendly and easy to modify I decided on a pure blueprint implementation.
If you have any questions or want to know how I did things in more detail feel free to contact me using the information below.