← Back to projects
Design Philosophy
Studio Darkly explores what games feel like when you strip away traditional visuals and lean into audio, vibration, and minimal HUDs. Both shipped titles prioritize VoiceOver and TalkBack support, localized UI (English and Spanish), and gameplay that works whether you can see the screen or not.
The project started as I added accessibility features to my Beer Guide Apps and realized that accessability as a secondary feature left a lot to be desired.
Apps are written to be visual and that leaves visually impared people to navigate the app with rudimentary tools. I set out to see if I could use the capabilities of devices to provide an experience that did not rely on visual content.
The games still rely on the Accessability features of the devices - as limited as they are - for instructions, configuration and navigation, but the game play experience is entirely in the dark.
Games
Dark Assault
Retro arcade defender · haptic-first
A space-invaders-inspired arcade game with no classic visual battlefield. You read the fight through audio cues, strong haptics, and a minimal HUD, then react with touch or tilt. Training mode includes silhouettes to help map cues to positions while you learn.
- Touch and tilt controls with multiple difficulty presets
- Selectable sound themes that change all in-game cues
- Screen-reader-friendly labels and two-line combat status
- End-game formations and configurable power-ups
React Native
Expo
expo-audio
Haptics
Dark Intercept
Audio-first hunt · spatial sound
Hunt mosquitoes in a toroidal arena using spatial sound, not sight. Each mosquito is a continuous spatial beacon — panned by bearing, attenuated by distance, Doppler-shifted by motion. An active ping reveals bugs beyond passive hearing range. Screen-reader players are the primary audience; visual training mode is optional.
- Custom native spatial-audio engine via
expo-dark-depths-proximity-audio
- Pure-logic game simulation separated from React UI and audio bridge
- Training, Go Dark, and Go Hard modes with level progression
- Joystick, tilt, and screen-reader stepper input options
Expo SDK 54
expo-router
Native module
i18n
Proximity Audio Module
proximity-audio is a custom Expo native module providing real-time positional audio using AVAudioEngine on iOS and AudioTrack on Android. It powers Dark Intercept's mosquito beacons and active ping system, and is consumed as a local file dependency by the game app.
An earlier spatial-audio prototype (audio-proto) seeded the sonar and motion toolkits used in Dark Intercept's audio bridge.
Swift / AVAudioEngine
Kotlin / AudioTrack
Expo Modules
TurboModules
Tech Stack
- Expo SDK 54, React Native 0.81, React 19, New Architecture (Fabric / Hermes)
- Custom dev clients (not Expo Go) for native module support
- EAS Build for production iOS and Android releases
- Python sound-generation tooling for Dark Assault asset pipelines
- Jest unit tests for game logic, audio, and persistence modules