Spot System
- Jonas Knohl
- Jan 9, 2024
- 3 min read
Updated: Jan 26, 2024
The Spot System is a voice management tool, which can randomly spawn sounds around the player in their proximity. If the tagging is done correctly the system creates an immersive environment where dedicated sounds can play on certain objects depending on the biom the player is in and what environment components are around.
Given that the showcase was crafted using Unity, we are incorporating their terminology to provide a more comprehensive explanation of the processes at play.
Tagging
The combination of different tags makes it possible to determine what kind of object it is and thus what are the possible sounds that it could produce. For example, right now the system is using Biom and AmbientType. Biom can be something like Forest, Swamp or Desert and AmbientType thus is a bit more specific and can be Grass, Flower, Tree, Snag, Water, Rock.
Database
Next a database is needed that we can query for the right options of sound. Here we are using a tree as an example. You can add multiple options to each Element, thus a tree can spawn Songbirds and TreeRustling. Currently there are three other variables exposed
Propability (0-1 if 1 triggers everytime it is checked)
Cooldown (in seconds)
Max Instances (Max instances per object)

Register Objects
We implement an Octree for registration, providing the capability to dynamically add, remove, and reposition items within itself. This approach significantly streamlines collision checks by efficiently searching through existing nodes rather than assessing collisions for every element.
During the application's initialization, the registration of Ambient spots on objects is automatically executed. This process not only functions smoothly when placing AmbientSpots directly on objects but also proves effective when placing them on empty GameObjects, strategically positioned along a shoreline to simulate the organic randomness of waves rolling in.
Flow
If all the tagging is done you should see some red dots in the scene view. These indicate where AmbientSpots were placed.

The flow is pretty simple. The system finds all of the AmbientSpots nearby and checks if they are
still on cooldown
able to play more instances
in acceptable range to achieve a spatial spread
Spatial spread is applied so no two objects are too close together. This could result in all of the ambient spots spawning in just one very cluttered place.
If the AmbientSpot is able to play a sound a SpotInstance is created and taken care of by the SpotProcessor.
Result
With this system we achieved pretty good results. One can freely roam the plane and discover a dynamic atmosphere depending on the location. Keep in mind this is only the first iteration on it and we will keep on improving it.
With the current implementation, we've achieved commendable results. Users can freely explore the environment, unveiling a dynamic atmosphere that adapts to their location. It's important to note that this is just the initial iteration of our system, and we are committed to ongoing improvements and refinements to further enhance the overall experience.
If you want to try it out check out our Showcase.
Future Work
We want to add some more tags, to adjust to more environment specifics like
Time of day
Wind
Temperature
Weather
With adding these our system should also be able to apply modulation curves to each exposed variable. For example making the propability dependant on the temperature would require that. It is also in the works to being able to spawn wind and weather sounds on certain objects. For example if you have a rock surrounding, you could add some wind howling on certain stones or if its raining some droplets that rain down on to the rocks.
Comments