When I created Soundsearcher earlier this year, I hadn’t anticipated the radical enthusiasm for game development it sparked in me. It demonstrated to me the flexibility and power of the Web Audio API—and in harnessing that power, it was possible to cultivate worlds and captivate minds.
Throughout this article series I will detail and reflect upon my progress as I build a worthy successor to that surprising experiment. My hope is that it will keep me responsible and sincere during my sabbatical.
Close your eyes and imagine a world that you can only hear. Its lush environments are filled with orchestras of analog synthesizers that evoke colorful and imaginative images. Exploration rewards you with mysteries to solve and contemplative places to revisit.
This is soundStrider—part exploration game, walking simulator, four-dimensional ambient music generator, and relaxation tool.
Its features include:
- Rich soundscapes. Compared to its predecessor, soundStrider will have over sixteen times the number of atmospheric sounds and creatures. Props are grouped into distinct palettes that give each scene a unique aesthetic. Even while sitting still, its day and night cycle will give further depth to its evolving scenes.
- Binaural modeling. Experience the world of soundStrider more realistically than its predecessor. With a psychoacoustic model that simulates human hearing, players will be able to reason with space and localize sound sources behind them.
- Procedural generation. With a proper procedural generation system, soundStrider has deterministic but limitless possibilities given any seed. Explore infinite worlds of unique scenes at any pace.
- Adventure mode. There’s more to do than simply explore. A procedural quest system will generate pickups and lead players to their destinations with a dynamic compass. Items will react to the environment and trigger lasting changes.
- Convenient bookmarks. Find the perfect soundscape to relax or study to? Any location in soundStrider can be conveniently saved and revisited from a bookmark manager. Because of its seeded procedural generation, bookmarks can be easily shared online and experienced by friends. In the future, this may lead to a free bookmark player that could be accessed anywhere with a browser.
The final deliverable will be packaged as a standalone Electron application with support for assistive technologies. Ideally, it will be distributed through Steam and itch.io for the price of a sixer. Cheers, queers! 🍻
In many ways, I wish I had started this devlog sooner.
For the last three weeks, the underlying engine has been incubating, so many of its features are already functionally complete. I may retrace my earlier steps later. Thankfully, I avoid the squash and rebase workflow for my solo projects, so there’s always my prolific commit history. While helpful for larger teams, it usually gets in the way and doesn’t illustrate how I’ve grown.
The screenshot below is of the current build with an arbitrary seed (
alexx) that I’ve used for testing.
While the intended experience is to play closed-eyed, I found it challenging to develop many of its systems without a visual tool.
Using the Canvas API, I created a two-dimensional projection of the world.
Beware: I don’t intend on shipping anything of the sort on release.
Arriving here was a long road. Immediately, the Soundsearcher engine was rewritten entirely for clarity, modularity, and performance. Implementing binaural audio that simulates head shadow and the speed of sound involved a ton of research and mathematics to achieve an authentic experience. The game world is streamed in small chunks that are seeded with a custom linear congruential generator so they are always the same. Finally, a custom Perlin noise algorithm drives multiple fields of values that determine attributes like palette selection and musical pitches. In total that’s 130 commits.
From here, the game engine is ready for its first injection of content.
The road ahead
While away for the holiday next week there will be plenty of liminal space for me to imagine a list of possible palettes and their props. For its adventure mode, I’ll also need to understand how the procedural quest system will work and identify the additional sounds it will require. Those plans will help define and focus the sound design and compositional tasks ahead.
I anticipate writing at length about implementing footsteps. Here the footsteps will be more varied than its predecessor because they’ll be influenced by the surrounding palette and a depth field. For example, footsteps could sound more grassy, rocky, or wet than in other areas. The result will be a very complex synthesizer.
Finally, it’s critical for the user interface to be stylish and accessible.
A menu system is needed that responds to multiple control schemes and exposes itself to assistive technologies.
For the gameplay itself, I envision a simple visualizer that uses an
AnalyserNode to display a histogram.
It should be aesthetically pleasing but never a distraction from playing closed-eyed.
The road ahead is clear, bright, and exciting. Expect another update shortly after the new year.