I want sound to play a big role in my environment, so I set out to make it so when you gaze at the spheres to teleport to that location, it also plays a sound cue. I downloaded several royalty-free sound effects and music from PurplePlanet.com and Dig.CCMixter.com including some deep bell and gong sounds.
I then imported them as .wav files into Unreal. You have to convert them to a Cue, by simplying right-clicking and choose “Create cue.”
Then you select the trigger capsule you wish to play the sound, and right-click, choose “Add Event / OnActorBeginOverlap”.
Sound cues
At this point, Unreal switches you to the Level Blueprint, where you can begin to work with the Event. Pull out a wire to Play Sound at Location, then near the Sound input, select the sound cue you want to play from the pull-down menu. It’s that simple!
To package a project for Windows from Unreal, you must have the proper software installed, including Visual Studio 2015. (See the documentation here.)
I wanted to package my game to send to others, but when I tried File/Package Project/Windows, it packed for a while then gave me a fatal error. Several forum posts I read said to delete your Saved and Intermediate file. This created a tremendous problem when I realized I had started building my introductory level using the Default level, which got deleted when I threw away those folders! Recovering them from the trash only recovered a portion of the scene, so I had to rebuild much of it. Lesson learned: Don’t build your levels in the Default level! Start a new one.
Another thing I did to simply the Package process was to turn off all supported platforms that I wouldn’t be using, such as Linnux and iOS.
By reading through the lines and lines of text in the Error log, I found this:
UATHelper: Packaging (Windows (64-bit)): Cook: LogTexture: Warning: Cannot retrieve source data for mip 0 of texture Mushroom3-texture
This could mean the image file was corrupt. I deleted the Mushroom mesh and texture altogether from my content file, and then my game packaged successfully! Next steps will be to re-save the files, re-import and try again to see if I can use the mushroom mesh.
After the game packaged successfully, the next step was to test the .exe file in VR. When I launched the game, it loaded, but only showed up on the computer monitor, not in the VR headset. After more digging through forums, I found some advice on Blueprints, so I added a Delay of 2 seconds, then something to Enable HMD, and also added the Execute Console Command (although that last part doesn’t seem to work automatically like it should):
Start in VR Blueprint
If your game doesn’t start in VR automatically, you can type the Tilde key on your keyboard while in game, which opens up a command console, then type “stereo on”. This will launch it in the headset.
The thing that seemed to work best though is a very small setting that is hard to miss and not very well documented. In the Project settings under Description, look for a checkbox that says “Start in VR” under Settings towards the bottom.
Start in VR setting
After doing all this, my game launched in VR successfully.
I found a great tutorial from Hangry Bunnies From Mars on how to get an animated mesh to move along a spline. I created the blueprints and everything worked great, except for one problem – the salamander moves sideways to the spline. You can see in the image below, the salamander is 90 degrees rotated from the vector of the spline, which causes him to walk sideways, looking very silly.
I tried rotating the mesh in the blueprint viewport, but no luck. The rotation may look fine in the viewport, but when you play the animation, it reverts back to it’s original orientation.
This looks correct, but orientation doesn’t stay
One thing that’s very nice and handy about Unreal blueprints, is that in the Details panel where you plug in the Animation and Mesh they are color coded green and megenta so you know which part of the mesh to plug in where. Pretty handy once I noticed it!
Below is the Event Graph blueprint. Everything works splendidly, except the proper orientation.
After spending quite a bit of time on this without an answer, I went to Plan B, which was to animate it using Cinematics.
Salamander Cinematic
This method worked beautifully, and kept the proper scaling and rotation.
There are a lot of tutorials out there on how to attach an animated mesh to a spline using Blueprints, which leads me to wonder why that method might be preferred over using a Cinematic?
I decided it would be helpful to have a “pre-level” in my game that would introduce new players to the concept of Gaze Teleportation, so they know how to move around the scene.
I imported some assets I had created last semester, and set up a stage of sorts.
I also learned how to create Billboards, which are incredibly useful floating text boxes that always face the player.
Intro Level
I also wanted to make the spheres representing the chakras light up one by one, to simulate what will happen metaphorically in the game. I found a great, easy to follow tutorial by Brigid Costello that was so valuable to learning this quickly.
Chakra lights
To do this, I created a Cinematic. I assigned each sphere to a new “Empty Actor Group” then gave each group a Visibility track. You can keyframe when things are Visible (Show) or Invisible (Hide). I timed it so they each become visible a second after the previous one, so they light up in sequence.
I then created a small Cone shape in the scene, and assigned a Movement track to it. I keyframed it so it flies backwards away from the figure towards the teleportation sphere, thus drawing the viewers’ attention. Once the viewer gazes at that sphere, they are instantly teleported to that spot.
Directional cone
Overall this was a good lesson for me in Cinematics and Billboards.