[New release] The "Lockdown" update.

With the whole world on lockdown, it is time for an EE update.

This update contains a bunch of things. First off, things related to internet play, as what to do when locked in your home? Play EE on the internet.

  • You can enter your name, and this shows in the ship selection for reach selected station. So you can see who does what.
  • Build in voice chat. With [`] key to talk to your own ship, and [backspace] for the whole server.
  • A proxy server, for better distributing network load and hosting behind firewalls that do not work with port forwarding. (More on this later)

Next to this, the translation system is in place. This allows for a localized UI and scenarios. But nothing is translated yet. Language selection needs to be done with the options.ini file.

By my guess, enough can be translated to make the game playable for people that do not speak English. Note that any comms messages will be in the language choice of the server. So if you put your local client on a different language, you will still see English in relay.


There are also various other small improvements and additions. Know that this was an effort of multiple people, on code changes an testing effort.


About the proxy. It is a relatively simple application that sits between the server and multiple clients. So there is only one connection to the server and multiple clients connected to the proxy. The server only needs to send updates once and the proxy will send it to all clients. Putting the bandwidth requirements on the proxy side.

This allows for running a proxy on for example AWS, while still running your server locally and giving easy access to the GM console.

Documentation is up at https://github.com/daid/EmptyEpsilon/wiki/Proxy-Server but can always use some improvements.

Comments

  • Very cool.

  • edited March 23

    Many thanks for your work on this daid!

    I will help to update the wiki on the proxy server.

  • Nice! Integrated voice comms allowing separation of intra- and inter-ship communication is brilliant.

    The ability for the Relay officer to use voice communication with the relay officer of other ships would be a great extension of that feature.

    That proxy server is brilliant and will be super handy. I will always be running one of those on my computer so that my 4ish connections will not overload my computer's WiFi chip.

  • The proxy server was one of those things I always knew wasn't a lot of work (due to how EE's network code is designed) but never had a reason to do so. Until Kilted Klingon had a use case for reliability reasons on his ~100 clients event. Once I made it, I discovered there where other use-cases as well.

    The voice chat is easy to expand:

    This function figures out who the targets are of a voice transmission. Filtering on selected stations would be easy.

  • How does the voice chat work?

  • You hold [`] or [backspace] and you talk into your microphone.

    Or, on a technical level? It uses SFML to capture voice data, encode it with http://opus-codec.org/ and send it trough the network, where it gets decoded again and played back as audio.

  • Yeah, I meant on a technical level, sorry for being ambiguous. Thanks.

  • If you don't mind I have a couple more questions about the voice chat. Started looking at opus, looks pretty cool. But it doesn't support 44.1khz audio. I noticed you have a bunch of 44.1kHz audio files in EE. I didn't see anything in the playback code that would know the sampling rate was (or wasn't) 44.1kHz. Are you resampling the 48000Hz opus decode to 44.1kHz before playback, or maybe your audio library is somehow smart enough to know to do that, or are you just playing the 48000Hz audio at 44100Hz (or vice versa)?

  • SFML's audio streams can run at different sampling rates. So I just run the voice at 48000.

    But, I did notice there is a CUSTOM_MODES define in the opus code, which isn't documented. But in the code it says that it enabled other sampling rates.

    Also, recoding at 48000 and playing back at 44100 didn't even sound that bad, as I did that by mistake at first.

    The important classes are:

    https://github.com/daid/SeriousProton/blob/master/src/networkRecorder.cpp

    https://github.com/daid/SeriousProton/blob/master/src/networkAudioStream.cpp

  • Thanks. I also was wondering what would happen if you record at 44.1kHz, tell Opus on both the encode and decode phase that it's 48kHz, then play back at 44.1kHz. All the frequencies for e.g. high pass filtering and whatever other DSP magic it's doing would be off by 10% or so, but sounds like it's worth trying as a first attempt. Portaudio (what I'm using for audio) is a bit lower level, it's not clear to me if I can have multiple concurrent playback streams at different sampling rates with it, and the playback stream I have is 44.1kHz. I suppose for VOIP application a lower sampling rate, e.g. 16kHz could make sense.

  • Note that the opus documentation states that capturing at a lower sampling rate does not lower bandwidth requirements, just lowers quality. So there isn't a real reason to do so.

    And if 44100 capture with 48000 encoding gives bad sounding results, you could switch the encoder from OPUS_APPLICATION_VOIP to OPUS_APPLICATION_AUDIO, which should preserve all frequencies better at the result of more data.

  • Well, we played some EE today. I tested the proxy server and successfully had 6 clients running on my computer communicating to a proxy client on the same computer. I have had trouble running even 3 before--the bottle neck was defiantly in the network bandwidth.

Sign In or Register to comment.