Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.0.1] - 2022-01-28
Added
- Documentation updated with information that only available post-release, such as links to Unity Forum, or accurate images in the installation guide.
Changed
- Each demo/samples are now individually wrapped in their own assembly definition :
E7.TinyAmbience.DayAndNightDemoandE7.TinyAmbience.VariationsDemo. The code also uses anamespace:E7.TinyAmbienceDayAndNightDemoandE7.TinyAmbienceVariationsDemo(without the dot) sousing E7.TinyAmbienceis required, the same as your game, for the sake of good tutorial. - Outermost folder name changed from "TinyAmbience" to "Tiny Ambience".
- Demo/samples folder name changed from "DayAndNightDemo", "VariationsDemo" to "Day And Night Demo", "Variations Demo" respectively.
[1.0.0] - 2022-01-24
This the first version.
Exceed7 Experiments has released niche, but solid audio plugins like Introloop and Native Audio that was received well by Unity developers.
Tiny Ambience joins Exceed7 Experiments audio plugin family with the same C# code polish, full documentation, and excellent Unity Package hygiene you can expect from me.
Ambiences are often neglected, even more so than good BGM or good SFX. I have got a similar feeling developing this package as when I was developing Introloop, "Do people even care enough about this?". Public impression seems to be that ambiences are only for those big AAA games.
I would be the happiest if this package is lightweight and approachable enough that make even small time developers wants to start tinkering with ambiences in their own game. Tiny Ambience removes space requirement and prepare asset type for authoring for you.
In the future, I intended to distribute packs of ambience audio clips for free on the website as a token of gratitude too. Ambiences are quite unlike BGM and SFX in that they are subtle enough they can transcend genre and style easily. This is very good opportunity to distribute some starter packs that could be widely useful. Please stay tuned about this!
Unreleased
This serves as a roadmap of things that I had in mind for Tiny Ambience.
AmbienceSource : Fast-forwarding play
Start playing an ambience, simulated as if specified time had passed. Some chaos feature break this feature.
AmbienceSource : Get play head time
Ambience is on an infinite timeline. Combined with Fast-forwarding play, advanced user may want to save and load the ambience's state by remembering the time and then play again at that time to make it appears that the ambience could pause and resume across session.
The key other than able to fast-forward is you should be able to ask for current play time.
Ambience : Sorting AmbienceLayer
Currently AmbienceLayer piled up in Ambience cannot be rearranged. Instead of adding a grab handle or up/down button, I would like to add some automatic sorting tools instead.
A sub-menu to the right of toolbar let you do this.
- Sort by Volume Adjustment so more "prominent" layer comes up top, assuming that all the layers are mastered at the same level.
- Sort by
AmbienceLayer's asset name. - Sort by
AmbienceLayer's layer mode (Timeline or One Shot Program). - Sort by color tags, the menu let you choose a starting hue value and sorting direction (forward or backward in hue wheel).
AmbienceSource : Power saving features
Positional AmbienceSource running is wasteful in large scene where the player is not even in the listening range of that ambience.
The best would be automatically stopping and starting the routine that requires constant update only when player gets close enough to hear something.
AmbienceLayer : Chaos Marker
A Timeline Marker that brings chaos (non-determinism) to the AmbienceLayer in Timeline mode, not losing to that of One Shot Program mode.
This marker can abruptly change the timeline's play head location, and it will have chanced activation similar to that on One Shot Program mode. Resulting Timeline can sounds as if the clips had moved or disappear on their own, but actually they stay there but the play head gets errornous.
AmbienceSource : Single director optimization
AmbienceSource should use a single PlayableDirector for all Timeline layers instead of multiple to save some update calls, except when Layers Debugging is enabled.
AmbienceSource : Singleton director mode
If AmbienceSource finds an AmbienceLayer in Timeline mode, instead of spawning a dedicated PlayableDirector, there is an option to make it joins into a central graph to take the same delta time as other AmbienceSource in the scene. They can still use dedicated AudioSource output to retain their positional properties, just update the time together.
You will lose an ability to stop it individually, but an observation is that position-bound ambiences that are always left playing are very popular use case. If you are going to just Play On Awake and left them be, then this mode is likely a pure performance gain in large scene.
AmbienceLayer : Metadata and searching
Ambiences are highly abstract sometimes, and Night1, Night2, Night3 name can only go so far.
Before search system is possible, we need a way to edit layer's metadata. I aim to have fields similar to package.json where you have display name (not the same as asset name), description, keywords, and authors.
Additionally, I want to have some predefined tags (Specialized for ambiences, such as "rain" or "room".) so we can use the same standard unlike in the keywords which maybe any strings. An editor for this should make the task less tedious.
Ambience : Mute/solo layer
Instead of having to turn Vol. adjustment to 0% while trying out things, a mute/solo toggle maybe useful. (Solo will be a lot more work for me though...)