top of page

Internship (LIA)

Work experience from my LIA

During my internship as a programmer, I developed both my technical and collaborative skills while working on the dinosaur-/strategy-/adventure-game Dino Dynasty: Evolved.

I became a more proficient programmer and a stronger team member, while also gaining extensive experience working with Unreal Engine. I had the opportunity to contribute code directly to the game, which gave me valuable insight into real-world game development and the full implementation process.

Working in a small team, I had the chance to touch on many different areas of development such as the audio system, the UI, the characters, the AI and specific gameplay events.

Custom Audio System

When joining the team, the code base was pretty much a blank sheet regarding audio, and I got the opportunity to both write the functionality and think about the bigger picture architecture.

During development, I learned some very valuable lessons which I will dive into the details of below. 
Click the topics to see code implementation and learn more!

Soundtrack system

Responsive system for Soundtracks

Requests to change the intensity of the soundtrack through walking into trigger boxes.

The musical theme has three intensity layers all synced to 80 BPM (although 80 BPM is not necessarily quarter notes in every layer!). Showcasing SoundTrackTrigger and the MusicControlTrigger (Intensity Change, Intensity Override).

Data Assets & MetaSounds

In the beginning, using variables of type USoundBase* to represent specific sounds worked fine. Upgrading them to be of the custom struct type FMetaSoundWrapper to have volume multipliers, fade times etc tied to the audio asset, also made for an improvement.

What really changed everything though, was when I started using custom data asset types to pack multiple FMetaSoundWrappers into a single asset. This skipped a lot of headache from having to constantly edit(and version-control-lock!) a specific character blueprint every time a new sound was implemented. Using a data asset to represent the sound set for the player enabled me to instead open up the player blueprint once, assign the sound set data asset once and be done with it.

Playing sound from Anim Notifies and Delegate 

SoundNotify.png

Much of the character sound effects are triggered from Anim Notifies or via callback functions and Unreals built in event delegates.

Global Manager classes

The SoundManager and SoundtrackManager classes (bad naming, I know!) were created to act as common grounds for all audio related code. They are essentially wrapper interfaces that other classes throughout the codebase have to use in order to play sounds and therefore also a perfect place to have custom functionality and tracking happen.

bottom of page