At current I am working on my honours project: An Investigation into the Applications for the Procedural Generation of Virtual Reality Environments. I am very interested in both procedural generation and virtual reality so when it came to choosing an honours project I decided to combine these two interests and create a virtual reality application in which a player can explore a procedurally generated environment.
Last semester, before Christmas, the project proposal had been created as well as a prototype with the full application and dissertation being worked on now. The application uses a combination of noise, cellular automata and marching cubes in order to generate the environment. It is being developed in Unreal 4 using C++ for the PC and HTC Vive.
More recently I have added simplex noise based stalactites and a chunk system and will upload videos and or pictures soon.
Using Unreal 4’s Material visual scripting I created a material that used Gerstner waves to appear like an ocean when placed on a plane.
Gerstner Waves Algorithm
In C++ a Gerstner wave algorithm was implemented using the same values as the material. This was based on NVIDIA’s tutorial from the book GPU Gems.
A buoyancy system was created to react to these waves by placing points around any mesh and apply force to the mesh base don what points where above or below the waves.
Starting out originally as a personal fun project to see how Gerstner Waves worked it evolved into being used as my Gameplay Mechanics module coursework. By using a combination of C++ and Unreal 4’s material system I was able to create an impressive looking wave material that any object would react to with buoyancy. After working on the waves for a while I realized that if i were to create a buoyancy system this project would be a perfect fit for my Gameplay Mechanics coursework. So I continued to work on it and implement a buoyancy system and got the project into a good state to submit. I’m very glad i was able to use this personal project as course work as well as for fun, since it was a lot of fun to work on and I got an A+ for this module.
Programming Language: C++ & Blueprint Visual Scripting.
Engine: Unreal 4.
Project Type: University/Client.
Platform: PC & HTC Vive.
Main Role: Lead Programmer.
Other Roles: Designer, Technical Artist.
In this VR project I worked on all the VR elements from movement to interaction as well as all the game play involving the VR player.
All the user interface systems in the game were created and designed by me using the Unreal 4 widget system. The game is mostly controlled through interaction with the wrist based UI attached the left Vive controller. One of the main features of the wrist mounted UI is a scanner screen allowing the player to see points of interest that they can interact with as well as see a path to follow if they get lost.
Using Unreal 4’s materials system I created the games lava using a highly modified Gerstner wave system this lava material was used for all the lava in the game and created so that the amplitudes and other elements were editable through the use of material instances so that other team members could modify the lava and use it for different types of lava in the scene.
For the game to work as it was designed the player needed to go from the hub to planet surfaces and back so level streaming was implemented so parts of levels could load in in pieces for much smother transitions. This had to be designed and done well as it would have been very jarring if done wrong in VR.
In the 3rd year of my Computer Game Applications Development course we were given a list of briefs from real clients and were sorted into teams with the other students from game development related courses based on which brief we had chosen. We had the length of 3rd year to design and then create a prototype for our clients. this module was designed so as to simulate what it is like to work for a client on a project as part of a team. The process consisted of working alongside another programmer as well as designers, producers, artists and a sound engineer. Weekly meetings were had with the client throughout development where they would check in on the progress, give feedback, critiques and advice.
We were tasked with creating a Virtual Reality interactive space game that could be used as a fun and interesting way to get people interested in space and scientific fields to do with space like astrophysics and astronomy. As a team we spent the first semester designing the prototype we were to make and through this process I was able to learn a lot about design and scope as well as how to work well as part of a team. During the design process me and the other programmer on the team worked on creating prototypes to test the mechanics and other design decisions to make sure they were feasible and to have a tangible representation of the design to demonstrate to the clients. We would demo these prototypes weekly for the client to show progress as well as to get feed back from them. Through second semester we worked on creating the full prototype for the project and I learnt a great deal about making a game using Virtual reality and about creating games using Unreal 4. It was a tough process and a lot went wrong but we were able to produce a prototype that showed of well our ideas in the end and I learnt a great deal about game development as part of a team with the many benefits as well as the trials and tribulations that it can entail. Continue reading →