Jens Petter

Game Programmer

Deep Space

2019


Deep Space is a VR game heavily focused on using voxel graphics & VFX to make a unique VR retro gaming experience for the player. The player needs to avoid enemies that spawn in a wave based pattern. The player can attack enemies in various ways where one can shoot the player but one can also tag multiple enemies to shoot at once.



Project info

  • Game: Deep Space
  • Role(s): Tools & Gameplay programmer
  • Engine: Unreal Engine 4
  • Platform: PC (VR)
  • Development time: 4 weeks
  • Team:
    2 programmers
    3 artists
    2 designers
    1 producer
My responsibilities

Gameplay

  • Creation of a blueprint inheritance system for designers to extent upon where multiple enemies can be created with. The base functionality for one enemy was made by me where designers could easily extend upon this functionality to make a new type of enemies.
  • Creation of a dynamic data table driven wave system where a wave can contain a stack of elements that are flees of enemies, single enemies or a certain formation of enemies. Designers could with this system easily make and playtest multiple waves very quickly.

Data table driven wave system

This game is wave based where it was discussed with the team to make an extensive custom wave system where it is an aim to make sure that waves can be easily made. The choice for going with data tables has been made since it is an interesting concept in itself, easy to adjust and extend and if done right can be very dynamic as well.

Shown here is a visual overview of every element that is inside the wave system, keeping in mind that the system is built in a way that every element in this system can be extended and modified very easily.


Shown here are screenshots of how a wave sequence data table in Unreal looks like. A wave sequence is a collection of waves with extra variables such as a wait timer after the way has been completed to wait for the next wave element to execute. What follows are screenshots of some other wave specific elements that can be made and assigned in data tables. In this case a “wave” and a “flee”.


Data table driven audio system

The audio system for this project is also set up with the help of a data table. Unreal supports a lot of audio techniques to support beautiful sounds in Unreal: Sound bases, sound cues, sound mixes etc. I tried to make this system as I would think it makes sense for the user. The system supports 2D sounds, 3D sounds, sound attenuation, sound bases, playing a random sound between a given array of sound bases and variables to change the sound like the volume and the pitch modifier.


2D audio

As shown in the screenshot here, one can call this function from anywhere without needing a reference to anything to produce 2D sounds. One only needs to give an enum value as a parameter of which sound one wants to play. The underlying audio functionality of this function is handled through a blueprint function library.


3D audio

As shown in the screenshot here, one can call this function from anywhere without needing a reference to anything to produce 3D sounds. One only needs to give an enum value as a parameter of which sound one wants to play and the location of where the sounds needs to be played. This function returns an audio component variable which can be modified after the sound is played. This is handy for adjusting the volume over time of a 3D sound for example. One does need to make sure that this sound is active however otherwise errors occur.


What I learned from this project

I really learned how much I like tools programming when I was working on the data table driven wave system in this project. It was a very short project though where I would have loved to extend this system further if the project lasted longer.

I also learned to look more broad into solutions to problems when facing a problem in this project. I researched first how difficult it would be to make a wave system in a custom tool and inside an in engine tool such as data tables of Unreal before I actually made the call to work on this system. I really liked this view of approaching a problem since it opens my view more towards multiple solutions to a problem instead of directly tackling the problem with the first solution that comes to my mind since the first solution is not always the right solution.

Let's have a chat!


I'm always happy to talk! Feel free to contact me at any time.