Fabrefact

a blog by Sara Farquharson

Virtual Party Space Devlog #4: Audio spatialization

Today I tried to make audio spatialization work, and looked into Jitsi features and how to properly render isometric tiles.

Log

Calla

  • Calla as a library seems to be more usable than expected
    • Tutorial exists in sub-project’s doc directory
    • “broken” UI is the minimal client implementation from tutorial

Notes for Calla implementation

  • spatializer distance is in “meters”, may need to play around with math on this?
  • uses omnitone preferred, but has a number of different spatializers, depending what browser supports
  • library handles interpolation of audio over time and assumes you’re using that for avatar movement, need to think how to integrate with sprite movement
  • audio sources set their own max distance (so players can control how far people can hear them, but not vice versa)
    • except Calla user messages don’t include audio properties? So this would be a universal setting for all users in their world
    • can add mute flag to user array to allow people to mute individuals?
    • environmental sound can be set to whatever I like

Jitsi

  • Jitsi includes text chat, need to examine that for use/abuse cases
  • Jitsi Videobridge last-N feature may be hackable to only show nearest-N video streams
    • locations are sent peer-to-peer by Calla, so clients would have to request specific list of streams with each update
    • all audio streams will always be sent, most likely

UI/Game

  • How to do appropriate layering in isometric view?
  • Phaser isometric sample seems to use at minimum a different layer for every grid-Y, and change sprite layer based on y value

About this series

Back in mid-December I started an ambitious project to create a custom platform for a virtual birthday party in February. I kept notes on my progress, both for personal reference and to turn into a series of blog posts. It quickly became apparent that I did not have time to both do the project and blog about the project. I have retroactively decided to post my raw notes as a dev log.