This week I’ve been working on the upcoming bugfix patch. This patch will be going live on the 12th of May (Friday) and we will be wiping ALL official servers on release.
We’ve got a release candidate of this build up on our devtest branch now, so if you want to jump in, try and break it and let me know how you go (email@example.com) that would be really appreciated!
We’ve upgraded our devtest server (220.127.116.11:12871) with this build or you can change the dedicated server tool over to the devtest branch to test yourself locally.
To switch branches, right click on Hurtworld in your steam library and then click on properties. From there switch to the beta tab then change the drop down menu over to devtest. This should start the download immediately although sometimes you’ll need to restart steam or verify the files from the local files tab to force it to start.
- Triggers have been added to the borders of the Diemensland map that will instantly kill any player wandering out too far
- No build colliders have been added to doors and the hatch preventing a range of construction exploits
- CharacterController height is synced with crouch state every simulation frame, this prevents potential desyncs where the character acts like they are standing up but they have a crouching height on their collider
- Fixed the attachment dependency for the hatch, hatches will now stay alive in unoccupied grids until their attached wall is removed
- Added a temporary NoBuild zone around C4 explosions, this prevents defending players instantly rebuilding destroyed walls/doors/etc
- Improved player movement correction, correction offsets no longer accumulate, moving in the direction of the offset reduces it by the same amount and offsets past the maximum limit are instantly rewound. This fixes a bunch of issues where players could peak through geometry when affected by some kind of desync
- Improved construction validation against machines. This prevents a bunch of bugs where you could build things over ownership stakes and other machines to hide and protect them
- Added an extra NoBuild collider on the ownership stake to improve construction validation
- Fixed vehicle exit validation to properly check against trees
- Slightly reduced size of c4 collider and fixed the construction validation. This fixes an issue where c4s could be placed inside a player to push them around
Hey folks, this week I’ve been working on fixing a bunch of bugs and regressions that occurred with the 5.6 Unity upgrade. Not many pretty pictures from me this week! There were quite a few gotchas that came up with this upgrade that broke a few things. For instance, in 5.6 it seems that a RenderTextures don’t correctly take the alpha channel of the camera’s background. Because of this, I needed to write a simple post effect on the icon camera that put the alpha back in from the depth map. There was also an issue where disabling and re-enabling a Reflection Probe caused its texture to destroy. As we turn off all Reflection Probes when we’re rendering an item, this meant that reflections broke every time an item needed to be rendered for a few seconds. To fix this, I changed the pattern from disabling Reflection Probes to changing their effective size to zero. This worked well! 5.6 also changed how UI canvases anchor themselves in the UI hierarchy which meant we had to remove them from all sub-windows. Still trying to find out if this is a bug, or an intentional change. Hopefully the former as this was an easy way to section off UI invalidation.
A lot of machines were in a broken state that I’ve been working on bringing back up to speed.I began fixing C4, but that quickly took me into deeper problems with how we were managing construction ghost instantiation and data management. There wasn’t really a clear authority for who was responsible for setting what, which meant that quite often a construction prefab would get into a bad state and either remain in the world or disappear forever. I fixed up the structure of this a lot more to make it clearer and not susceptible to race conditions across the network. I also brought a few UI windows up to scratch with the ever evolving UI structure, which is moving towards a much more UnityEvent based and component based system. Really there’s only two problems to solve at this point for pretty flexible modded UIs: dynamically linking server variables for machines to client side UI elements, so an Oxide script or whatever can have it’s variables reflected in a UI window on a client, and sending client events like button presses, sliders, etc, back to the server.
This coming week I’ll be continuing to fix a bunch of bugs in the UI, as well as continuing the process of bringing everything back up to parity with the live game.
I’ve been busy putting 3 skins that I designed last week onto the components of the AR15. I’m getting closer and have done about two thirds of the parts. We chose 2 of the concepts and stuck with the Angular Camo skin that was initially tested also. For now there will be 3 skins which will be unique to the AR15. These skins are fairly basic and will initially not have Specular and Gloss overrides on. This means that unlike the earlier testing phase where you could add Metallics and Pearlescent paint to sections of the designs, they will simply be a one-finish paint style. Eventually we will probably make the finishes changeable, but for now we’ll stick to the basics.
I should be done with these tomorrow and we’ll be getting them into the game and having a good gawk at them and a bit of a play possibly.
Got heaps of stuff done this week, I’m starting to get hyped for the initial ItemV2 release, awesome to see it all coming together!
Unity 5.6 Upgrade
I started the week with the 5.6 Upgrade, gotta say props to Unity, massive improvements with only a few regressions. I upgraded our AI to use the new built in navigation system, which is not only a lot faster, it means map makers can bake the Navmesh for their maps with the click of a button inside unity before publishing their map, no more screwing around with the live game. You likely won’t see any behavioral changes with AI from this update, however it opens up the door for us to do a lot more stuff with the navigation as we didn’t really want to go near it before.
I also switched over a few of our image effects to the new Unity official post processing stack which some would call an uber shader. It saves a few blit operations as it rolls many post effects into one shader. In addition to this 5.6 has some really nice graphical upgrades including a reverse depth buffer that puts a lot more detail closer to the camera over long render distances. This should stop a lot of the shadow flicker you’ve not seen for ages because you have had shadows turned off.
We upgraded time of day to be more compatible with 5.6, and its looking amazing.
Performance check in
Its easy with a developer spec machine to let performance get sloppy in long dev cycles, I’m running a GTX 1080 so its pretty hard to tell when perf has degraded. So a while ago Mils put together a potato machine for us to test with, he just so happened to have our exact min spec lying around. Cow_trix had some concerns about the performance of 5.6 so I fired up our current un optimized dev build on the potato. Results were awesome!
The potato was pulling a solid 60fps with the graphics around the medium settings, which I think is better than what it gets in the current live build. We still have a few new optimizations up our sleeve which is going to make things run mega tight even on older machines, so fear not that the new graphical upgrades are going to kill your FPS, if anything with ItemV2 you will get a boost.
Red dot sight
I implemented the red dot sight mils finished recently. It works slightly different to the holosight, mainly that the dot doesn’t parallax when the gun is angled, it feels very awesome and accurate. While I was at it, I increased the gun FOV slightly and pushed the sight from the camera.
Here is it in action in both night and day:
UI Design Pass
I spent a bit of time skinning the new item slot stuff and hotbar making everything pixel perfect and what not, still a fair bit to do as I have disabled rarity showing on the slot which we will likely have in there, for now I’m happy with the basics.
While I was at it, I created decent icon poses for the runtime icon render system. Its quite a challenge to fit complex objects into 48px and make them look readable. I found that very low fov and rotation tricks help the best.
Progress this week has been good, we are burning through our bug list. Still hopeful we can get an experimental dev build out to you next week. Stay tuned 🙂
This week was spent really trying to nail a few key items that are going to be pretty prominent in players inventories without spending more than 2 or 3 days on each. Due to time constraints a lot of the concept sculpts need to be done specifically so they look good as icons otherwise you end up at the end of the pipeline with an unreadable icon. This presents a lot of challenges that you would not expect from something as small as 48×48 pixels. Silhouette and colour contrast are generally the two main things that get lost in icons, so while doing these last 3 we have really gone back and fourth on pushing them to their best so they are readable and look good at such a small size. These two have a sharpen filter on them to make them pop nicely.
This render here is in Substance Painter, using their standard iron material. This is a perfect example of something looking good up close but not working as an icon. The detail was too fine for the light to really catch the edges at such a small size so the icon would just look like a flat blob of grey hence why a second icon mesh was made with much thicker bevels to catch the light nicely.
This is the icon for stone, in it’s current state it look good up close but once scaled to icon size, it too will look like a grey blob. The plan is to add different colours to certain faces as if the stone has freshly broken away, lighter faces mixed with the illuminated and shadowed faces create a good amount of variation for an icon to pop, then with possibly a little bit of colour variance it should make for an icon that looks great in your inventory.