Asset Bundles
We've been running into a problem: if we change a 100 byte material file in our project then commit it, the build server kicks in and builds and uploads it. We have OSX, Linux, win32, win64, server, and the debug versions of each of those to upload. That's 10 versions to upload to Steam. The clients weigh in at around 2GB each, so when we change that 100 byte file, we could potentially be uploading 10GB+ to Steam, which sucks.
What asset bundles are meant to do is give us more control over the file layout. We can split the content into logical groups, so when you change a material it uploads some materials instead of the whole project. We used asset bundles in Legacy, but it turned into a huge burden. The way the asset bundle system was programmed in Legacy made developing the game hard work. It was literally easier to commit code untested, let the build server do its thing, then download from Steam to test.
In Unity 5, the asset bundle system is much improved. It's incremental--meaning it only builds the bundle if it has potentially changed--and it works really well, bringing our build times for four platforms down from 10 minutes to one minute.
The ideal situation with asset bundles is that we'd only build them once and all the platforms could share the data. This isn't happening at the moment, because the shaders seem to be incompatible between OSX/Windows. Unity support generally aren't very supportive unless you can make a repro project (or upload your 18gb game project to their FTP), so I haven't contacted them yet. But will do next week, because it would take our Steam footprint from 10gb to more like 3gb.
Doing this wasn't a small task, and there might be some issues with it, so please keep that in mind when shit goes wrong.
Candle Hat
You either love the candle hat or you hate it. Either way, you probably hate it going dark when you swap away from your torch at night. And we can all probably agree that this would definitely work in real-life, so there's no need to question that.
Implementing the candle hat wasn't trivial. We didn't really have any systems in place for clothes to be functional like this. Now we do, so we can start work on some other stuff.
There are some bugs with lights in the sea right now. Don't worry: Diogo is going to look into those.
Emission
When implementing the candle hat, it became apparent to me that the fire was all wrong. It wasn't emissive: it was just additive sprites, and it wasn't emitting light--like the sun does--so it wasn't getting bloomed and tone-mapped and all that good stuff like it should.
Now any particles that should be emitting light are emissive. That's pretty much just fire, embers, muzzle flash.
Legacy
You may have noticed that when you launch the game it no longer asks you if you want to play the new version or the old version. They're no longer installed side-by-side. The good news is that if you really only want to play the old version,
you can so do by switching to the Legacy branch in Steam's properties.
Added Barricades
Vince made these barricades a few weeks ago. Now you can give your base a legit insurgency feel with sandbags, concrete and stone barricades. They don't do anything special other than look nice and stop bullets.
Added Floor Spikes
Vince also made some floor spikes! You probably want to walk AROUND these.
Added Language Selector
You can now select your language in the main menu. Translations are community provided, so I'm sure there's a few things that are wrong, and maybe a couple of racial slurs. If you want to help translate you can do so
here.
Fixed Sleep Talking
I'm a bad programmer, so I see a lot of bugs. Not many of them make me laugh, but this one tickled me. Tickled me good.
When you use in game voice chat we use Steam's peer-to-peer stuff to try to send it directly to the other players around you. We weren't careful about this though, and tried to send voice chat to sleeping players.
This normally wouldn't work because the sleeping players aren't usually connected (or they'd be awake). But what if they're playing on another server? Well, they'd receive the voice data and ignore it because they couldn't find a player that it was meant to come from. But what if it found the player's sleeping body on the server we're connected to? Well, the player's sleeping body would sleep talk - from the other server.
So we have a situation where players can use their sleeping bodies to communicate to each other across servers. This is how you tickle a programmer.
Everything Else
- Fixed melee attack exploits.
- Fixed missing pickup icon.
- Fixed map being all blue on lower graphics settings.
- Fixed weapon models at feet.
- Fixed dropped items falling through rocks (potentially).
- Fixed escape not working properly on rename sleeping bag screen.
- Can cancel in progress craft.
- Crafting cancelled on die, resources returned to corpse.
- Crafting cancelled on disconnect, resources returned to sleeper.
- Fixed clicking invisible crafting buttons when looting.
- Updated Steam SDK.
- Fixed player stats not uploading.
- Tweaked building components to prevent building in rocks.
Next Week
On my list for next week are ladders, some mining work, some stats work, some server browser improvements, some throwing stuff, some streamer mode stuff.