Are you good at multitasking? Can you perform under pressure? Learn to fly your spaceship with just one hand (or tentacle) and dodge obstacles like alien fish and asteroids to deliver pizza to all corners of the galaxy. It’s time to test your skill as a space-pizza delivery driver in Pangalactic Pizza Panic!
The ball is completely still
The ball is in motion
The Overview of the system
🛠️ Visual Audio Debugging Tool (Inspired by SONITY)
When debugging audio, it’s often more intuitive to visualize sound rather than relying solely on logs. To streamline this process, I developed a tool that allows me to see sound events in the world space. The key features I focused on include:
World Space Sound Position: Displaying the exact location of the sound within the game environment.
Sound Effect Name: Showing the name of the sound effect, specifically the event location name from FMOD.
The Overview: One of the biggest challenges in this project was splitting my script into several smaller ones and ensuring they could communicate and function together without relying on Unity's built-in tools. Managing the interaction between these independent scripts required careful design to maintain smooth coordination across the system.
✨ AudioManager
I’ve always found programming an ambience manager to be one of the most challenging tasks. I constantly question whether I’m implementing it in the best way. To tackle this, I created a system for smaller projects with just a few scenes. The system works by triggering a script whenever a new scene is loaded. It then reads the name of the scene and switches the ambience based on a naming convention that our team collaboratively developed.
🛠️ The Audio System We Used to Trigger FMOD Events
The method I use to trigger sound instances is by creating public static delegates and subscribing functions to these events. Once a function is subscribed, I invoke it from another script. This allows the system to operate independently from the scene, so there's no need to modify the scene directly. This approach is ideal for working in larger teams, as it isolates the audio functionality and makes debugging simpler. All the sound-related logic is contained within ScriptableObjects, with the only external action being the invocation of events.
One of the most useful features of this system is the ability to subscribe directly to programmer-defined events. This adds a lot of flexibility and robustness, making it easier to integrate and use, as I can subscribe to any event needed.
🛠️ Working In My Own Environment To Avoid Git Conflicts
In this project, I developed systems and tools that allowed me to work independently of the scenes, which were often in use by level designers. My main goal was to create a system that relied heavily on ScriptableObjects and prefabs. This approach enabled me to manage audio logic and events without directly modifying or pushing changes to the scenes. Whenever I needed to interface with a scene, I would push a prefab instead of altering the scene itself. ScriptableObjects handled all the sound logic and events, ensuring a smooth workflow with minimal disruption to other team members.
Additionally, I adhered strictly to using events, which provided a reliable way to track any issues in the code, making debugging easier and more transparent.
🛠️ Experimental: Emojis In FMOD To Easier Find Stuff
I really enjoyed using emojis in the FMOD folders! It made navigating and finding specific events much easier and quicker. The visual cues helped me stay organized and streamline my workflow.