During the past few weeks Barotrauma has gotten a nice surge of new players, and I’d like to thank all of you for all the feedback, ideas, bug/crash reports and of course the fun multiplayer sessions I’ve taken part in. I though I’d also share some random pics from the /vg/ threads:
The new version is up now! The changes to the way the game handles moving the submarine “under the hood” were definitely the the biggest and most time-consuming change in this update, and unfortunately it isn’t something that’s visible for the players (at least until underwater ruins and shipwrecks are added). There’s still quite a lot of other additions and a huge amount of bugfixes in the update, as seen in the changelog.
Here’s some gameplay footage that shows some of the new stuff:
Since the last update I’ve been mostly working on changing how the game handles moving the submarine which is why there hasn’t been much to show. In the current version the levels actually move around the submarine while the sub itself is stationary, which makes it really difficult to have multiple submarines in the same level, or any structures outside the sub for that matter. Even though a game mode with multiple subs isn’t on my to-do list at the moment (maybe at some point in the future though), some sort of explorable underwater structures (sunken subs, alien ruins…?) are a must, so I needed another way of moving the submarine.
How it works now is that neither the submarine or the level actually move: instead there’s an invisible submarine-shaped physics object moving around the level and the insides of the ship are just rendered wherever that object is.
Here are a couple of screenshots of some other additions:
For the past few weeks I’ve been working on improving the networking code and there hasn’t been much new stuff to show, but here are two additions that will be included in the next update:
It looks like the lag was caused by my careless use of a feature in the Lidgren network library which allows sending messages through UDP reliably (= so that they’re resent if the recipient doesn’t acknowledge receiving them). In some cases that lead to severe congestion problems, causing enormous lag not just in the chat but all the reliable messages that the game sends. Rewiring devices, picking up or dropping items and attaching/detaching items were all synced using reliable messages, and there were definitely problems with all of those even though the chat lag was the most obvious effect.
I think I’ve managed to fix the problem though: the reliable messages are now sent using a homebrew packet loss detection system which allows me to slow down or cancel the resending process entirely if it seems like the line is choking (once again thanks to Glenn Fiedler his excellent articles which have helped me quite a few times during the development of Barotrauma).
However, I haven’t yet been able to test and verify that the fix is 100% working, because I still haven’t managed to reproduce the issue when playing the game on my computer. I did host a few “real” online rounds with 4-5 players and everything was working great, but it’s still possible that the problem re-emerges when there are more players. So, I decided to upload the current build
so that I can use you guys as free testers in case you want to try a version that probably works much better than v0.2.2 while I try to get rid of any bugs in the new netcode and verify that it’s actually working.
tl;dr: Chat lag and a bunch of other networking issues probably fixed, try at your own risk by downloading the latest build here:
There’s also a bunch of other small additions and fixes in the build (such as being able to ban players and hit people in the face with a wrench).
Apparently the problem with the chat getting unbearably laggy after a few rounds is still there, even though I thought I managed to fix it. After the optimizations done to the networking code I haven’t been able to reproduce it when debugging the game on my machine (even with 10 clients and very high simulated lag and package loss), but it’s definitely still there even though the game may run smoothly for a few more rounds than before…
It seems that it isn’t just a problem with the chat but all the messages that are sent using a reliable delivery method (such as picking up items and damage done to the walls), the chat lag is just the most noticeable effect. I’ll be doing my best to fix it as soon as possible, but in the mean time I guess the best way to work around the bug is to restart the server whenever the lag appears.
The problem with the autoupdater should be fixed now btw, turns out it was a problem in the update servers end and not the launcher itself. Although, I did add proper exception handling to the place where the crashes happened so if there are any similar issues in the future, the launcher will show an error message instead of just crashing.
Unsurprisingly my “one or two week” guesstimation of the release date wasn’t accurate, but here it is now! Also, thanks for all the name suggestions even though I ended up going with Barotrauma.
Here’s the changelog for the new update:
Multiplayer: - major optimization and much better lag compensation - tons of bugfixes that should fix most of the syncing issues - admins can play on their own server without launching another instance of the game - setting the job preferences actually does something now - reconnecting to a server if the connection is temporarily lost works much better now - proper error messages if UPnP port forwarding fails Items: - security guard gear: ballistic vest, helmet & stun baton - wifi components that can be used for transmitting signals between devices - wall labels with a configurable text - a bunch of new sprites and sounds - wearing a diving suit slows the characters down - supercapacitors - attempting to fire the railgun when there are no shells loaded doesn't consume power anymore Submarine: - improved version of Aegir - a new submarine, "Vellamo" - nuclear reactors overheat much more slowly and there are warning signals for overheating and a remote shutdown button in both of the default subs - ambient sounds change according to the speed of the sub - fixed parts of the submarine getting stuck in the level on collision - the autopilot is a much better driver now (although it may still crash at very tight spots) Crew: - aiming underwater is much easier - improved humanoid animations - stunned/dead characters can be dragged - all characters can now use plasma cutters and welders regardless of their skills, but insufficient skill level will make them flicker and work much less efficiently - same for the harpoon gun, anyone can shoot but lower levels will make the gun less accurate - rewiring devices may cause electric shocks if the electrical engineering level is too low Creatures: - some random "prop fish" swimming in the background - a new hostile creature Misc: - a tutorial going through all the basic tasks and game mechanics (more in-depth tutorials will be added in future versions, including one for making custom subs) - an auto-updater in the launcher - the game generates a detailed report if it crashes - physics optimization (i.e. using simplified physics & animation for off-screen characters and disabling them entirely if they're far enough) - lighting optimization (caching the lights/shadows if a light source hasn't moved instead of recalculating them every frame) - two new background music tracks - better looking explosions - better looking water particle effects - minor UI improvements - better UI scaling on different resolutions - health/oxygen bar improvements and status icons for bleeding and water pressure - gap-hull connections are visible in the sub editor - pumps don't have to be manually connected to a hull in the editor anymore, they automatically empty/fill the hull they're inside
Subsurface is progressing nicely and I’ll be releasing a new version in a week or two. However, it probably won’t be called Subsurface anymore. Back in the first posts about the game I mentioned that Subsurface was working title, but it kind of stuck and I started liking it. Now I’ve noticed that the name is a bit problematic: apparently there’s an indie game studio called Subsurface Games and a dive log program called Subsurface, which makes the game somewhat hard to find by googling.
So, I guess a new name would be in order. So far I’ve come up with one potential name, which I think sounds very appropriate for the game:
Barotrauma typically occurs when the organism is exposed to a significant change in ambient pressure, such as when a scuba diver, a free-diver or an airplane passenger ascends or descends, or during uncontrolled decompression of a pressure vessel
If any of you want to share your thoughts about the name or have any other name suggestions, I’d love to hear them!
Also, here are some of the things that will be in the next update:
– Major optimization and a ton of bugfixes/improvements in the networking code. And by major I mean MAJOR: most of the time I’ve spent on the game after the last update has gone in testing everything I can think of and making the multiplayer mode smooth and stable. The game now also generates a detailed report whenever it crashes, which will make it much easier to fix the bugs that I’ve missed.
– Several things to prevent people from sinking the sub within minutes of the round starting. There are security officers armed with stun batons now, who may attempt to immobilize and capture saboteurs. Blowing up the reactor is also much harder: it takes almost a minute for it to overheat, and when temperature starts to get critical, a warning light switches on in the command room and a button can be pressed to shut the reactor down remotely.
– A basic tutorial which walks players through the most common tasks on board the sub. In the future there will also be additional tutorials that take a more in-depth look at the various game mechanics (and why not one that explains how to use the submarine editor).
– Server admins can now play themselves without starting another instance of the game.
– A bunch of new items, graphics, sounds and a second submarine in addition to Aegir Mark I.
– An auto-updater, so you won’t need to re-download the entire game whenever there’s an update.
– Linux port of the game is almost finished and will most likely be released alongside the next update. After that, I’ll start looking in to the Mac port.
A big thanks for all the feedback I’ve gotten on Subsurface, the amount of work people have been putting on getting the wiki up and of course everyone who’s played the game so far! The couple of multiplayer sessions I’ve taken a part of have been great fun despite all the bugs and other issues.
And speaking of bugs, Subsurface v0.1.1 is now out with a bunch of bugfixes and additions. Mostly stuff related to the multiplayer mode and some item bugfixes/improvements.
I think the next bigger thing I’ll be adding to Subsurface will be an in-game tutorial: I know the game is quite hard to figure out at the moment and I think many of the players haven’t managed to completely understand a large part of the game mechanics yet. I’ll also publish the source code on github as soon as I get around to writing some sort of EULA for it: since I’m planning on eventually putting a price tag on the finished game, I don’t think I should just “toss it out” the way I did with SCP-CB.
And no, I haven’t forgotten about the SCP-[REDACTED] update for SCP-CB. Now that the Subsurface release is out of the way, I think I’ll try to set some time aside to get the update done. The SCPs in the earlier “teaser posts” aren’t the only new thing coming up: Astray488 (the artist formerly known as Mirocaine) has been sending me some other cool stuff as well…