So far, basic progress has been made. We have the basics like movement, doors, and multiplayer working. We also have some map generation, doors, and a very unfinished item system.
Voice chat was very strange to get right, because some of the way we send audio over the network and how the Godot Engine handles audio. Here is the pipeline for voice chat:
The compression parts are done with a library called Opus. It's a very popular open lossy audio compression library. For the speaker output we have to write to an audio buffer and play it back at the right time. The problem is playing audio at the right time isn't the simplest thing in the world, so there can be gaps between when audio stops and starts playing, causing a crackling sound to be audible. On top of all this, if the audio is sampled at a different frequency, the audio will sound weird and distorted, so we have to resample the audio, which is done with the NWaves library on GitHub.
Thanks for reading!