A relaxing generative audio toy
Manipulate time to explore ambient soundscapes in this submission to LOWREZJAM, Brackeys Jam, and AGJam. Kaleidophone is an audio toy designed for deep thinking, meditation, and relaxation that’s best experienced with headphones.
Anatomy of a Web Audio performance hotfix
As promised, the latest soundStrider hotfix resolves some performance degradation issues that caused audio stuttering and drop-outs. With tactical problem solving I was able to pinpoint the issue to eight sounds that created audio sources which never stopped. Continue reading to learn more about my approach to debugging a complex Web Audio application.
Reflecting on a nine-month journey with the Web Audio API
Nine months ago I started a solo game development journey that began with a prototype and ended in my first self-published title. It’s been an incredible journey that’s tested my fortitude and taught me transferrable lessons. Throughout this post-mortem I will present an in-depth analysis of creating soundStrider with the Web Audio API, its effect on my finances, and my takeaways. Please join me in wrapping up this chapter of my life.
An audio game jam without graphics
Please join us on Friday, August 14, for the No Video Jam, an audio game jam featuring accessible games without graphics. Participants will create blind-friendly games of any genre using audio and accessible text. Submissions will then be judged by the public based on criteria like accessibility, fun, originality, and sound.
Since I began making audio games I’ve learned that it’s a niche and neglected market. Gamers who are blind often feel isolated from the mainstream gaming community and have few games made specifically for them. My hope with organizing this jam is to give them visibility by normalizing audio games with sighted developers and gamers. Then when it’s over they’ll have more games in their canon to enjoy and discuss.
I’m looking forward to hearing what everyone creates!
Now available on Steam and itch.io
After eight months of development I’m proud to announce the release of soundStrider. With this release the game is feature complete and finally available for purchase on Steam. Continue reading to find its final patch notes and learn what’s next for the project and me.
Learning from a new audience for v0.18.0
Last weekend I overcame my fears and shared soundStrider with a large gaming community for the first time. The feedback I received was invaluable and led to several breakthroughs about managing expectations, game design, and my commitment to accessibility. The latest beta reflects this feedback. Continue reading for a post on continuous improvement, fears slayed, insights gained, and all the patch notes (of course).
It's time to stand up against racism and police brutality
For a limited time I’m proud to offer soundStrider as part of the Bundle for Racial Justice and Equality. Please support this cause for as low as $5 USD to gain early access to the beta as well as hundreds of other great games. This charity ends on June 16 and does not include a Steam key.
Revisiting Soundsearcher with Synthesis quests
The latest soundStrider beta adds a new quest type and a variety of enhancements. In its Synthesis quests, adventurers search for musical components to repair broken chords. And improvements to world generation and the exploration system send adventurers deeper into uncharted lands. Continue reading to find the patch notes and learn more.
Mountain palette, mouse controls, and more
After six months and over 650 hours of development I’m excited to announce that the soundStrider beta—its largest update yet—has arrived!
In the Mountain palette, players will ascend to treacherous heights to enjoy chance music produced by standing bells and wind chimes. With its new mouse controls its procedurally generated worlds can be traversed in entirely new ways. And a remix of every sound ensures they can be enjoyed across a variety of audio setups.
Continue reading to find the patch notes, launch trailer, and learn more.
Urban palette and beta announcement
The latest soundStrider alpha adds a dynamic traffic system and a new palette to support it. In the Urban palette, players will navigate streets of various layouts bustling with motorized traffic. This update also includes a metaprogression system which tracks metrics across play sessions to drive some secrets coming in its full release. Continue reading to find the patch notes and learn more about its upcoming beta.
Aquatic palette and escort quests
The latest soundStrider alpha adds a new palette and a surprise new quest type. In the Aquatic palette, players venture into the depths of the ocean to swim through dreamy soundscapes. And its new escort quests task players with taking props from one place to another. Continue reading to find the latest patch notes and learn more.
Optimizations and polish
The latest soundStrider update improves the overall state of the game and its codebase. Included with this update are major performance optimizations, improvements to world generation, and some graphical enhancements. Continue reading to find the latest patch notes and learn more.
Breaking the silence
It’s been a busy six weeks as I’ve worked to fill soundStrider with content and prepared for its June release. Regretfully, I’ve been so busy that I’ve neglected to update this blog with important announcements about my progress. Don’t worry—it’s nothing but good news below.
Continue reading to play the alpha, watch its first trailer, visit its new website, and read all the patch notes.
Hardhats in the rain
The latest version of soundStrider introduces its industrial and storm palettes which leverage a variety of game systems to create evolving musical textures. Demo players will also benefit from a new tutorial quest and enjoy enhancements to the visualizer as its core experience continues to improve.
Continue reading to hear excerpts of these newest palettes and learn more about the upcoming early access release.
To the tundra and beyond
The latest version of soundStrider expands its textures with the addition of its tundra and astral palettes. Bridging the gap between its desert and elemental palettes, they leverage a variety of synthesis techniques to evoke the chill of winter and the vastness of space.
Continue reading to learn more about the latest excerpts uploaded to the shiftBacktick SoundCloud page.
Explore the elemental palette today
After three months of development, the soundStrider demo has arrived! In this demo of the elemental palette, players can explore infinite soundscapes of peaceful ambient music. Continue reading to play soundStrider in your browser and secure your early access by pre-ordering today.
Summoning sunshine and sand
The latest version of soundStrider doubles its number of sounds with the addition of its beach and desert palettes. Combined with its new dynamic wind system, no two moments or locations are ever quite alike as the sand and its imaginative secrets drift in the wind.
Continue reading to learn more about the latest excerpts uploaded to the shiftBacktick SoundCloud page.
An expedition into the elemental palette
After nearly fifty hours of development, the latest version of soundStrider has arrived at its destination. Its features include the beginnings of a procedural quest system, a fresh palette of evolving sounds to explore, and a dynamic compass to help lead the way. And with added accessibility features it’s more inclusive and approachable than ever.
Continue reading to listen and learn as we journey into the otherworldly textures of the elemental palette.
Reaching its first playable version
Development on soundStrider has continued at a strong and steady pace since my last update. Culminating over sixty hours of development, its latest minor version includes an ambient visualization for spectators (hello Twitch streamers), a loving port of the classic Soundsearcher objects, and a plethora of minor features, fixes, and enhancements.
Continue reading for new open eye visuals and audio excerpts as we unpack what went into building soundStrider’s first playable version.
From local experiment to distributable product
Since announcing soundStrider I have dedicated over thirty hours to its development and received an outpouring of support from empathetic friends and piqued ears. Its first minor version increase represents a major milestone for the project as it receives a graphical user interface and tooling to facilitate its eventual distribution.
Continue reading for fresh screenshots and a tentative roadmap.
An auditory exploration game and relaxation tool
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.
Starting with nothing for Ludum Dare 45
Last month I participated in Ludum Dare 45. Over its 48 arduous hours there were many challenges to overcome and insights to gain as I built a game completely from scratch.
As an accessibility advocate with a background in digital signal processing, I wanted to explore how the Web Audio API could be leveraged to build spatial audio experiences. The result was Soundsearcher, a minimalist exploration game designed for playing with your eyes closed.
A minimalist auditory exploration game
Explore a procedurally-generated world of synthesized sounds in this submission for Ludum Dare 45. Soundsearcher is designed for playing with your eyes closed. Headphones are strongly recommended.
Where have you been all my life?
Today I installed Python for the first time.
Whenever I learn something new I like to stay motivated with a small project. A friend and data engineer told me that Python excels at crunching numbers—and lately I’ve been quite a Numberphile—so I built a small library for generating my favorite OEIS integer sequences. When I encounter exciting sequences in the future they’ll surely get added.
You can explore the result at this GitHub repository.
An empathetic pitch
Unlimited data and processing power is a privilege.
Ignoring this privilege adversely affects: user experience because true performance is the foundation of perceived performance; accessibility because every requirement for a baseline experience is exclusionary; the economy as long as our users are paying for each web request with their labor; and the environment because every web request has material costs.
It’s easy to forget that the web is for all people. So it’s a moral imperative to prioritize performance when we develop for the web.
Crafting a lazy loader for lazy folks
Lazy loading is one of the best accessibility wins available to front-end developers. By deferring the loading of assets until we need them, we save our users’ data—and consequently their money. For folks who pay disproportionately more for their data, this can be invaluable.
In this tutorial we will craft a lazy loader that can be deployed with minimal effort on any site. Because we’re lazy folks. So we’ll leverage the MutationObserver and IntersectionObserver interfaces to lazily lazy load lazy-loadable elements whenever they’re added to the DOM.
Please feel free to skip to the result at this GitHub repository.
A new page appears!
Essentially it’s the latest snapshot of my life. It’s a place for me to be purposeful and transparent with my priorities. It’s where you can find a quick update if we haven’t connected recently.
I needed a page that could be easily edited, so there were no major code changes. There’s a lot to unpack from that. I’d love to write more about the thinking and technology that went into building the site in later posts.
Conjuring a Web 1.0 staple
The thing I miss most about the web before social media was everyone having their own blog or personal site. It was decentralized and punk.
The URL made it all work. One inbound link and you were in. And every outbound link made it stronger. So we all linked to our friends and favorites to include, inform, and pay respect. We called them blogrolls.
Let’s unpack some teachable moments that I encountered while implementing my links page.
Let there be light!