April 30th 2021 by SDGNelson
Anecdotes from the past month of gamedev.
It has been an unusually quiet month. Lots of various behind the scenes work, and preparation for the next curated map. There were a few updates continuing previously discussed efforts in Unturned e.g. weather, effect audio replacements, physics material extensions.
I moved SDG's email from G Suite to ProtonMail after using it personally for about a year. The move went smoothly after setting everything up, just swapping the MX record near midnight. It might be overkill, but I do not want to depend on too many services from any single company. This feels a little ironic considering Unturned PC depends on Steam as much as a fish depends on water.
Despite my recent excitement on Unturned, I should probably get back to more full-time focus on Unturned II. There has been some fun experimentation in the meantime. Taking a step back has kind of made me wonder what aspects of the game I should really be focusing on: what is Unturned? Just looking at what is in Unturned II so far one might think it is an inventory management simulator, and this has helped me better see the criticisms of the extremely nested complicated inventory UIs e.g. batteries. Maps like Elver showed me I am definitely more of a programmer than a game designer, so perhaps my current approach has been too programming-driven. Valheim is clearly doing something right with their focus. Regarding experimentation I have also been wondering if it would be good to leave the custom Unreal fork and instead just use workarounds in a public Unreal release, that way anyone could download the project modding files immediately without licensing difficulties.
Quiet voice chat has long been an issue in Unturned. Learning more about audio recently it occurred to me during the netcode rewrites in March (perhaps already obvious to you though) that we could compress the audio on the receiving end.
My naive approach was to calculate a moving average of the amplitude during network decompression, and periodically adjust the gain per-player. Initial experiments with this hurt my ears, but after some tweaking it sort of worked. One drawback was a period of quiet audio followed by loud audio (e.g. whispering and then yelling) would spike in volume before recovering, and could probably be abused in multiplayer.
I later realized this was significantly over-complicating the problem. Since we receive the audio data in short windows anyway (~50ms) we can measure the peak volume during decompression and then normalize in a second pass. During the end of speaking volume tends to quickly taper off resulting in multipliers of 200+, so the normalization is limited at 8x to reduce noise. As far as I can tell this has worked great to solve the quiet voice chat.
Change of Scenery
Earlier in the month was a bit less productive because my partner and I were looking at buying our own place. We have lined up a nice condo for possession in July, and are just waiting to get mortgage approval - fingers crossed! It will be great to have more space.
Yoga Ball vs Chair
I have always used a yoga ball as my desk seating because that's what my Dad used at his office. Trying a chair had been on my to-do list for a while though, so last week I purchased a used Aeron. Funnily enough it was startling to sit in a stationary position, as if the monitors are locked in place rather than swaying around. It is taking some getting used to and I am not sure which I prefer yet.