21 January 2016
I’ve been trying out some ideas for atmospheric soundscapes to use within the dynamic music system Alex Rehberg is working on. These pieces are driven by percussive instruments, and could overlap and slot together to shift the intensity. This one uses bowed metal as the main instrument with distant drums and brass to drive it. I wanted to create the feeling of unease and expectation, while not being so intense to feel domineering, thereby being good for unspecified exploring! I’ve also been having a go at writing some 'home' themes, as Alex has previously talked about, for when everything is nice and cosy (!) which I can share in the next blog.
The old rain:
The new rain
A lot has been written over the last week about the admin spawn announcements. We added these announcements so that the members of the server are aware when an admin is spawning items. We feel that a large wedge of the server admin community owned a server so they could basically use it as a sandbox. While this is fine (it's their server, their money), we feel that the members of the server need to be aware of this. If a group of people on a server are spawning whatever items they need instead of playing the game, it's no longer a vanilla game, and the server should be on the modded tab.
The arguments I hear against it are that it hinders administrating a server. Admins sometimes need to spawn items to remove items in the world (we've added a remove tool). Admins sometimes need to spawn items to create arenas (your server isn't vanilla, install mods and be on the modded tab). Admins sometimes need to spawn a gun to fight hackers to determine whether they're cheating (???). Server admins can still abuse in other ways (godmode, flying etc) so why bother doing this(!!!). You can install server mods to remove the warnings (a whole different issue). Admins can shut down a server then spawn items quickly before the rest of the population join (yawn).
So what do you guys think? Do you want to know whether admins are spawning items? Or is it none of your business?
I really wanted to get started on dungeon performance this week, but we ran into a problem where Multiplay would kill our server process when it doesn’t respond for a while during start-up. This could happen during the stability warm-up for massive savegames, so I looked into ways to efficiently save and load the stability system and get rid of the need for the stability warm-up altogether as it’s a relic from a time where our stability system was so unreliable that it made sense to re-check it after a server restart and shouldn’t really be required anymore.
The problem is that all of my solutions would change the stability behaviour to some degree and therefore shouldn’t really be done without a wipe. Long story short, as a temporary workaround I made it so that we yield for a frame from time to time during the stability warm-up in order to let the host know that our process isn’t stuck. Expect the new system, that will get rid of the warm-up phase altogether, with the next wiping update.
Pretty self explanatory: it will illuminate objects up to 50m away, and because it's mounted on your weapon instead of your head you can actually wear a helmet and see in the dark at the same time!
This attachment works effectively as a crosshair, letting you know where your hip-fire shots will land. It also has the added bonus of reducing weapon recoil by 30%!
I started to produce our new building parts this week. As described in previous devblogs by Howie, these will work as an attachment to a universal frame type block. These are going to be the first batch, including:
- All current types of doors as double doors
- Prison cell wall and gate blocks
- Chain Link fences wall and gate blocks
- A shop front block with a little gate
As you can see there’s five different frames, one for each tier. I’m in the process of animating all of what needs to be as I write this, and if implementation goes well it might hit next week’s update.
Something that’s always bothered me was that in Unity a number of physics queries allocate memory that has to be cleaned up by the garbage collector. A long time ago I wrapped all of our physics queries in a custom wrapper class so that we can solve this problem in a single place should it one day be possible to do so. Well, that day has come. Unity updated their physics API and they now offer an allocation-free alternative for all queries. I updated our physics wrapper to use these new methods and now all of our physics calls are free of dynamic memory allocations. I love it when a plan comes together.
Picking stuff up used to be like this:
Now it's like this:
We used to use a line trace to determine what you were looking at. Now we're using a sphere cast with a bunch of fudge to try to work out what you want to do, so you don't have to aim right at something anymore.
You hopefully won't notice anything is happening, because it should just feel right. Which is the opposite of how it used to work - where you'd notice it because it felt wrong.
We spent a little bit more time on melee weapon strike sounds this week. A while back we added soft target (flesh, grass, etc) impact sounds for a bunch of weapons, and we’ve taken it a step further and added the ability to assign sounds to specific material types. Right now, we’re mainly using this to prevent metal weapons from ringing out when you hit wood (which makes tree chopping sound way better). I also did some polish work on a bunch of our melee sounds while I was working on this. This could also be used to do things like make metal weapons spark when you hit metal or stone with them in the future.
I took some time this week to go over a bunch of smaller things that have been in need of some love:
- Foliage rustles sound more crisp and natural
- Tree impacts sound a lot better
- Picking plants actually sounds like you’re picking a plant
- Tree leaves blowing in the wind are audible from a more reasonable distance
- Spear deploy sounds a lot better
- Tweaked how ambient sounds sits in the mix so there’s a little less mid range and it sounds a bit more natural now
I did a pass on the weapon attachments and halved or quartered their costs. In the future when we add new resources (glass, rubber etc) we will have another look at their recipes but for now this should make them more accessible.
A new key was added to the game (default: F) which will toggle your light emitting gear on or off. This means you no longer have to go into your inventory to toggle your miner's or candle hat. Flashlights and Laser sights are also toggled by this key.
A long-standing bug that’s been stumping me for a while now was the issue of player holds. For weapons such as the AK47/rifle, the supporting hand that holds the foregrip was offset for different players. It looked fine on my machine, but several people were reporting that the hand was way off.
I use inverse kinematics (IK) to place the support hand on the weapon’s foregrip. What I didn’t realize was that because different players had slight variations in bone scale, it was screwing up the IK system, and placing the hand in unexpected poses. This video explains it more clearly.
To fix this, I come up with a system that takes into the bone scaling and repositions the IK target correctly.
This one has gone unnoticed for a while. People were able to place signs on other players to do all sorts of abuse or grief. This is now solved.
We can’t have nice things. A while ago I decided to allow people to place roofs both downwards and upwards facing since it makes base design a bit easier in certain situations. It didn’t take too long for people to notice that they can abuse this by attaching roofs to other people’s bases from outside the cupboard range and then use them to reach the upper floors. Since it’s quite unintuitive to design a base in a way that prevents it, and since I’ve seen bases that have been raided this way a lot lately, I decided to go back to only being able to place roofs facing upwards - at least for the time being.
I fixed some of the terrible jerkiness some of the animals were exhibiting. Most notably, the bear when he would attack players, there was severe stuttering as the bear would transition between walk/run animations. After going over some code, I got it to look much smoother.
So with the addition of the admin spawn notification messages last week, admins were saying how they sometimes need to remove stuff to administrate their server properly. This was the number one reason they didn't like the notifications, because their players thought they were cheating but they were just administrating (by removing stuff for some reason).
So this new system lets an admin interact with entities via console commands. So for example, if you run the console command bind q "ent kill" when you press q it will destroy what you're looking at.
This is much easier than spawning C4 or whatever, and you can use it when spectating or using the debugcam mode. You can remove any entity with it too - not just buildings.
It's fun to confuse opportunist raiders with too. Until they find your body.
There's also "ent unlock" and "ent lock" - which is probably useful if you're an admin who wants to unlock paintings.
Added "ent kill" admin command
Added sphere entity for modders (assets/prefabs/visualization/sphere.prefab)
Added entity spawn console command (entity.create)
Added flashlight weapon mod
Added lasersight weapon mod
Added lighttoggle key
Fixed RCon banning legit connections for 60 seconds
Fixed seeing through walls by resizing window to be long and thin
Fixed water reflections on OSX
Fixed skin shader on OSX and Linux
Fixed pink sky on Linux
Fixed new SSAO frame lag
Fixed new SSAO induced wall seethrough
Eoka ladder exploit fixed
Doors open and close 2x faster
Sentry uses new AK47 model
LookingAt entity uses sphere cast
New rain effects
Can throw melee weapons while running
Animal animations are smoother
Material specific impact sounds for some weapons
Better tree impact sounds
New plant picking sounds
New semi-auto rifle sounds
Better foliage rustle sounds
Tree/bush leaf wind sounds audible from a shorter distance
Lots of small sound tweaks
Improved water reflection performance
Physics queries are no longer allocating memory
Batched building meshes refresh when building parts are rotated
Roofs can no longer be placed facing downwards
Reduced max placement distance of roofs
Signs can no longer be placed on players
Attachment costs reduced
Semi-auto rifle recoil more snappy
If you want to follow this project you can sign up to the mailing list.
We'll only update you about this project, we won't spam you about other stuff or sell your email address.