It’s a submarine now

A major change to Subsurface: now it takes place in a submarine instead of an underwater station!

I’ve been turning over this idea in my head for a while and thought it would make the game a lot more interesting, but I wasn’t sure whether it would be feasible to do using Farseer physics. The physics engine can’t handle collisions properly if one object is a lot larger than the other, and moving an object with smaller objects inside it is also somewhat problematic. But I managed to make it work pretty well by cheating a bit (for example, the submarine doesn’t actually move, only the map), and I think it was definitely worth the effort.

Now, instead of sitting in the same spot at the bottom of of the ocean, you’ll be guiding a submarine through procedurally generated caverns and trenches, trying to reach the next outpost/city/station to replenish your supplies and hire some new crew members to replace the ones who got eaten by some eldritch horror.

I think this change will improve some aspects of the game a lot. One thing is that it creates a much stronger sense of progression. Earlier, I would start the game, go about my daily routine for a while (fixing anything that needs fixing, making sure everything is running smoothly), waiting for the inevitable disaster to strike. After the situation had been resolved, I’d repair any damage and basically start from over again. I’d also gain better equipment and gather a more competent crew as the game progressed and the difficulty level of the random disasters went higher, but it still felt like I was going nowhere. Okay, I survived through that shift, lets start another one and have another monster wreck everything again.

How the game works now is somewhat similar to FTL. You have this large map with dozens of different beacons outposts, and you travel from one location to another through the aforementioned procedurally generated levels. I think it immediately gave the game some of that much needed sense of progression: you aren’t starting another round just to get through another round, but to make your way to the next location while exploring a completely new area with who knows what between you and the destination.

The “overworld map” – extremely bare bones at the moment but it shows the basic idea

At the moment the outposts are nothing more than points on the map with some creative name (such as “Location 985″), but obviously there will be more to them in the future. Some could be cities where you can hire new crew members or sign up for some kind of quests (“kill the enormous squid thing that’s stopping our ships from using some passageway”, “go to Place X and salvage something from a sub that sank there last month”). Some could be military outposts where you can buy weapons, ammo and explosives, or research facilities where you can buy cool new tech. Or remote underwater facilities that had gone completely silent some time ago after broadcasting a distress signal.

level

Random level (voronoi graphs ftw)

 

Having the game take place in a submarine also allows a wider array of things that can go wrong. Breaking the reactor and running out of power doesn’t just mean that the lights go off and oxygen generators shut down, it means you’re stuck at the bottom of some uncharted cavern until you fix the reactor or come up with some other way to power up the engines.

Navigation and steering the ship are also a new cause for potential disasters (as seen in the Youtube clip).

 

FacebookTwitterTumblrGoogle+Share

UNKNOWN SIGNAL ALPHA-██

S̘͖͚͖̘̺ͤ̄̀͡L̪̣̘̞̮͕̲͋ͬ̀̂ͪ̀͟͠ͅȆ̜͖̋̃̇ͭ̅̚
E̴̪͔̝ͤ̇̐P̌ͪͤ̾͋҉̬̯̦͇̫̺͍͟ ̂̎̑ͫ͆ͬ̉͟҉̬̦̥N̶̰̠̐̂͐̊̍̾͊͆ͮ̀͠O͖̠̖̗͎͙̣̐̂̊̄͌ͧ̆̚̚W̡̝͙̣̲̺̋̓̅͋̀ͨͦ́ͅͅ ̵̧̗̯̻̬̼̲̜̰̲ͩͩW̨̪̩̲͍̱͐ͯ͢H̤̫̝̺ͩ̊ͯ̎
I͍̜͖̦͓͒̍ͭ́͂ͥ̿̀͡͡Ļ͖̰̗̤̮̪̟̃̽̈́̆ͣ́̚ͅEͯ̌̉͌͏̛̰̻̟̗̙̮͉̻ ̵͚̱̠͍̣̝͇͋͊̍ͬ̃̇̈́̊̽͘͝Y̧͇͖̥̹̝̖̓̂ͧ͂͐ͮ͊̚O͇͚̯͙ͧ̋͐Ư̯̯̬͂ͣ͌ͅ ͈̩̳̱͕̒̍͐̉̇S̼̝ͨ͒T̴͉͉͚̘̥̱̈̆́ͅI̒ͦͮ͒҉̪̘̱͓L̷̵̮̥̱̭̥ͭͦ̔ͬ̾̓̕
̧͔̻̥͂͛́͢C̸̥̠̺̼̗̲̫̓ͣͪ̑́A̬̫͚̘̼̬̅̃ͣ͆̍͜͠Ǹ͈̙͈̗̝̖̄ͭ̅̌̇́͢

Internship & new Subsurface footage

A small update on what I’ve been up to lately in addition to SCP-CB v1.1:

The Computer Sciences degree I’m currently doing involves three 10-week internship periods and last week I started doing this years internship at a cool little game startup called FakeFish. They’re working on a game called Northbound, a really interesting story-driven RPG game based on the Finnish national epic Kalevala. Expect adventures in the northern wilderness, puzzles, tactical combat and exploring the Finnish folklore that ranges from comfy to horrifying and from odd to batshit insane.

Subsurface is also progressing nicely: it’s gradually starting feel more like an actual game and the multiplayer is now working well enough that I’ve managed to run a couple of online multiplayer sessions with a handful of players. Anyway, here’s a clip of what the game looks like at the moment:

As for when you’ll get to play it: I’m hoping on releasing the first public alpha version of Subsurface in one or two months from now.

Release date for SCP-CB v1.1

SCP – Containment Breach v1.1 will be released next Friday (May 15th)!

Originally the plan was to release the update alongside Containment Breach: Run, a short horror film being created by Lotims Inc. Unfortunately everything hasn’t gone as smoothly as we hoped with the filming and the release date for both the update and the film has been delayed quite a bit. Watch the following video where Gage Allen, the director of the film, explains what’s been going on with the film and where they’re at now:

So, we’re not far from the finish line but the project will still take some time. If you want to help with getting the last bits of the film done, please consider donating to Lotims’ Patreon campaign.

Anyhow, since version 1.1 has been basically ready for release for several months and it’ll still be a little while before the film is out, it doesn’t make that much sense to keep everyone waiting. The update will be released on Friday next week!

To be honest, I’m a little worried that after such a long wait some of you will be disappointed with the amount of new stuff in the update. Please keep in mind that even though it’s been almost six months since the last update, I haven’t spent all this time working on SCP-CB. As I’ve mentioned before, I’ve started putting more focus on other projects and for the past few months I haven’t really done anything with SCP-CB.

There will be some cool stuff in the update nevertheless, including a new difficulty system and a lot of stuff from the Box of Horrors mod (some of which has been expanded quite a bit!).

Wiring and signal processing

Subsurface now has wiring and signal processing mechanics similar to the ones in Space Station 13. For those of you who aren’t familiar with SS13, think redstone in Minecraft. Basically different constructions/items can send various signals through wires to other constructions, and with some logic gates and other components you can built pretty complicated contraptions.

Here’s a clip of connecting a button to a door – I think I’ve managed to make the system a little more intuitive than in SS13:

 

You just have to equip a screwdriver to open the “connection panel” of the item, and then equip a wire and drag it to the connection of your choosing. In this case “signal_out”-connection of the button, which just sends out “1” when someone pushes the button, and “toggle”-connection of the door which toggles the state of the door whenever it receives a signal.

At the moment there aren’t that many components to use in the contraptions, just basic logic gates (and, or, not), but at least the following are to be added soon:

  • “signal comparer”: sends out “1” if it receives a signal matching to some user-determined string
  • “voice processor”: whenever someone says something in the vicinity of the component, it sends out what the person said as a string
  • “speaker”: reads the input it receives out loud (not using a speech synthesizer though, the message just appears in the chat box at the lower right corner of the screen)
  • “wifi component”: sends out the signal it receives through an user-determined a wifi channel – can be used to send data remotely
  • probably something similar to the RegEx components in SS13 in case you need to analyze an incoming signal in a more complicated way
  • obviously something that can be used to do some damage – maybe a detonator which can be connected to whatever explosives you have available

So, what can you do with these? Here’s some ideas:

  • a system which only allows a door between an airlock and the facility to be opened if the airlock is free of water, and prevents either of the doors to be opened if the other door is open
  • a voice prosessor in a command room, which shuts down every door in the facility if it hears someone saying “SHUT DOWN EVERYTHING”, or some secret phrase set by the captain
  • a system which analyzes air quality through the facility and isolates sections that are running low on oxygen
  • shutting down non-vital devices/systems if running low on power
  • functional computers (I’ll be disappointed if we won’t see anyone build a tic-tac-toe game inside Subsurface)
  • a number of detonators and explosives hidden throughout the facility, connected to wifi components and signal comparers allowing the detonators to be activated remotely using some secret phrase – or the moment any of the players says “lol” in the vicinity of a voice processor


Some men women just want to watch the world burn drown

Harpoon

Two clips of a little addition to Subsurface:

As you can probably see, it’s still a work in progress, but already pretty fun to play around with.

Also, if any of you are wondering about the release date SCP – Containment Breach v1.1; the release of Containment Breach – Run has unfortunately been pushed back a little and as the plan is to release v1.1 along with it, it will still be a while before it’s out.

Networked physics with Farseer & Lidgren

In addition to SCP-CB v.1.1, for the past few weeks I’ve been working on the networking part of Subsurface (physics in particular). It turned out that the way I’d implemented framerate-independent physics made it almost impossible to keep the networked clients in sync, but after some modifications everything seems to be running smoothly even with high latency.

Previously I was using a variable timestep, which basically means that if the game is running at 50% of the preferred framerate for example, we’ll just move everything twice as fast each frame. This worked somewhat acceptably in single player mode, but the problem was that the behavior of the physics simulation wasn’t 100% consistent on every framerate. As the framerate dropped and the timestep increased, the physics and the animations of the characters started to get a little “off”, and with a large enough timestep, the physics joints would just go crazy and the characters would basically explode. The physics seemed to work fine on framerates above ~25 though, so I just limited the timestep so that the game doesn’t try to compensate the dropping FPS too much and break the physics.

When I started testing on syncing the physics between a server and client, it turned out the variable timestep just doesn’t work. Even though the physics looked consistent on framerates above ~25 FPS in the single player mode, the slightest differences between the two simulations would cause them to get out of sync. An item hits the ground in a slightly different angle in one of the simulations, bounces off to a different direction and ends up in a different place than in the other simulation.

After some googling I found this fantastic article about fixed timesteps. The technique described in the article wasn’t hard to implement, and now I have a physics simulation that behaves the same no matter what the framerate is.

I took some shortcuts and simplified the way the physics are synced between the clients. The characters or any other physics objects that can be manipulated by the players don’t collide with each other, and this isn’t an FPS game where it can be crucial if a character is “actually” in a slightly different position than it appears to be on your screen, so I decided to skip latency compensation altogether. This means that the server and other clients are always a little behind a client controlling a character (you can see it in the second half of the youtube clip below). As there is essentially no way for a client to collide with or otherwise manipulate any of the other clients, at the moment it doesn’t make much difference. The only case were it could be noticeable, would be if two players were trying to pick up an item at the same time: it might look like you picked it up first, but actually the other player was closer to it and his key press arrived to the server before you, in which case the item would be pulled from your character to the other one as soon as the “player 2 just picked up that item (not you)”-message from the server arrives.

There will be various weapons (or tools that can be used as weapons) in the game though, so this kind of simple system might turn out to be insufficient in the future in which case I’ll have to implement some kind of latency compensation, but atm it works great!

 

SCP – Containment Breach v1.1

The next update of SCP-CB will be released along with Containment Breach – Run. I can’t tell you the exact release date yet, but it’s not that far away!

There will be some pretty cool stuff in the update, most of which might look familiar if you’ve tried a mod called Box of Horrors. Although, most of the additions will be improved and expanded from the ones in BoH, so even if you have tried it, the update will definitely be worth checking out.

Some WIP screenshots:

178 1123 medibay

Containment Breach: Run – Featurette

In case you haven’t heard, a live-action promo film for Containment Breach has been on the works for 8 months or so. Actually, calling it a promo film doesn’t really do it justice – it will be a full-fledged short horror film based on the SCP Foundation and SCP-CB that stands on it’s own, not just as promotional material for the game.

The film also has a crew and budget behind it unlike any other work based on the SCP universe so far; Gage Allen (Lotims), the man responsible for the official trailers of SCP-CB and a number of other films, has gathered an impressive group of people to help in creating a film that will do justice to the SCP Foundation. This includes Hollywood Special FX and make-up artist Doug Hudson, voice actor Aaron “TheVolgun” McKee, composer Kevin MacLeod who is also behind a large part of the music in SCP-CB, as well as Gabriel Jade, Dr Dan and Dr. Gears, the authors of SCP-049, SCP-096, and SCP-106.

Although tt will still take some time before the actual film is released (I’m not involved in the making of the film to an extent that would allow me to give you any estimations on the release date, but hopefully it will be out in a month or few), in the mean time you can watch this featurette where Gage takes a closer look at the project with Doug Hudson and Jason Daniel, the lead actor of the film:

A little teaser of the film was also released a couple months back, so be sure to check out that as well if you haven’t seen it yet.

Animation stuff

In my first post about Subsurface, I mentioned “a procedural animation system which takes care of animating the characters (which are ragdolls run by Farseer)”.

Early on I decided that I will be using ragdolls simulated by some physics engine to get the characters thrown around by water bursting through a hole in the wall or dragged around by water flowing from room to another. Letting the physics engine take control of the characters when a water current is too strong or a jet of water hits them hard enough, but how would I get the characters to react to the water when they’re controlled by the player, not a ragdoll thrown around by the physics engine?

I decided to let the physics engine be in control of the characters constantly: the characters are animated by applying varying amounts of forces to their limbs. Thanks to this, they automatically react to the world around them. For example, a water current exerts a force on the limbs that are underwater, making the characters struggle to move their legs against the current, and carrying something heavy affects the posture and walking speed of a character.

Here are some clips of the current state of the animation system. It’s still a work in progress – as you can see, the movement is still pretty comedic at times (QWOP, anyone?) and especially turning around looks really unnatural.










Here’s also a clip of our hero trying to shoot a placeholder monster with the placeholder turret he just loaded: