Hot Air Balloon
The Hot Air Balloon is now live! You’ll find them all around the map, mainly in fields or other areas with flat ground. Hop on and fill it with Low Grade Fuel, hit the ignition and it’s up, up and away… mostly.
To steer, you’ll need to find a pocket of air moving in the direction you wish to go and attempt to stay in it by maintaining that altitude. To help you with this, the balloon has a windsock and various flags positioned around it to help you gauge the wind direction. If you’re rising too far above the pocket, disengage the engine and allow the hot air to dissipate. This will lead you to lose altitude. Re-engage the engines to rise again, and rinse and repeat until you reach your destination. The HAB comes equipped with a small storage pouch to hold excess items, and can comfortably take 4-5 passengers.
Be wary of SAM Sites. The more damage the balloon takes the more it loses the ability to climb. It can be repaired with Cloth, though.
This is the first real form of direct transportation available in the game, and it was a major undertaking by many members of the team. It may have a few flaws and issues we are unaware of, but rest assured they will be addressed in upcoming patches. We’ll be patching this bug ASAP, so maybe don’t raid with it just yet:
Soon people will be able to fly over your compound in a Hot Air Balloon and totally circumvent your defenses. But don’t worry about it, the SAM Site has you covered.
Available at the Scientist Outpost for 500 scrap, this deployable will keep the skies clear of any slow moving air vehicles. Simply deploy it, fill it with SAM Site Ammunition and forget about it. One thing to note is that the SAM site is indiscriminate towards air targets, so make sure you take the ammo out of it if you’re planning on a balloon trip yourself.
Please note that there are several SAM Sites positioned on the roof of the launch site. These can be taken out with projectiles or explosives, and will remain inactive for some time allowing you to land, but taking the stairs may be the more efficient route.
Cargo Ship Rounds
A much requested and needed feature has been added to the Cargo Ship. We now have multiple looting rounds. Here’s how it works:
Upon spawn, the ship will fill itself up with a plethora of loot:
- 1x Locked Crate
- 1x Elite Crate
- 4x Military Crate
- 4x Regular Crate
These will spawn everywhere, including below deck!
After 10 minutes, (or CargoShip.loot_round_spacing_minutes) the loot will respawn, but in different locations. This will happen 3 times (or CargoShip.loot_rounds), and the cargo ship will now depart after 50 minutes (or CargoShip.event_duration_minutes). You will know a new round has bagun when the ship sounds its horn.
There are 30 crate spawn points on the ship, and each round the loot will appear in a different spot, so you’ll have to sweep the ship to make sure you get everything. This should lead to a hell of a lot more action and fun interactions because you know that as long as the ship is active on the map there is something worth fighting for on it.
Moving forward, I’d like to add a bunch of controls to the ship to open and close doors, as well as CCTV cameras to really add to the experience.
Tactical Glove Nerf
I guess 100% aim sway reduction was a little bit much. It was so accurate that I almost felt like I was using the debug camera when aiming. We’ve reduced the aim sway reduction to 80% instead, which is still pretty good.
Rad Protection Exploit
A minor oversight by us last month meant that a certain configuration of clothing allowed you to have rad protection so high that you could wander around launch site without taking any damage. This has been fixed by reducing the wetsuit’s rad protection from 20 to 15 points.
Pumpkins were the only plant to have multiple harvest seasons. This was kind of broken, and the whole pumpkin patch thing was getting out of control. We’ve limited their season to one, like all the other plants. Hopefully we’ll all see fewer pumpkins around, and enjoy higher framerates!
Cargo Ship Interior
This month I primarily worked on expanding the playable area within the Cargo Ship, adding a large interior underneath the deck of the ship. This interior can be accessed via doorways on the front and back of the Lazarus. When you enter it, you will find two large rooms filled with shipping containers, crates and loot boxes, all guarded by Scientists. Here’s some shots.
Cargo Ship Variant
This month we offer you a slightly different experience on the Cargo Ship event on top of the interior that is available to explore now. Cargo ship style 2 carries tanks, helicopter, and some ominous biohazard waste. The new layout is more open than the containers one while still providing a lot of cover for traversal.
This month I added a new module to our shaders for generating real-time, procedural wind animation for generic surfaces. We already had a module specific for vegetation, but this one extends it and allows usage on any kind of material.
Our first usage case was the Hot Air Balloon cloth, flags and windsock:
It might come in very handy to animate details on player’s clothes, weapon details (eg. straps) or even other more generic elements around the map monuments.
Tree Impostor Optimization
Spent part of the month researching improvements to our Tree Impostors, including some third party solutions. Unfortunately, our trees (and other models) may end up showing the lowest quality model (impostor) very close to the camera, either during streaming or even by lowering quality settings in graphics options (e.g. Max Tree Meshes = 10). Thus, our impostors may show up very large and take a big chunk of screen area.
Most solutions don’t handle that very well, since most of them were built to display impostors at a distance, where technique-specific artifacts are barely noticeable.So after getting disappointing results with third party solutions, I decided to keep our flat impostors and, instead, optimize them as much as I could by targeting the biggest GPU bottlenecks.
Shaders were tweaked and redundant textures were removed in order to make pixel rendering as cheap as possible. Another big change was adding support for tighter meshes with more vertices, instead of simple quads, in order to help reduce overdraw on areas that are basically empty. Areas on impostors that are fully transparent still get processed by the GPU and sometimes it’s worth adding more vertices in exchange for saving pixel processing:
In our case, our tree impostor textures had quite a lot of empty space so our savings may reach 30% overdraw reduction on a per-tree basis. These savings should help low and mid-range graphics cards the most, especially on areas with dense forests.
MacOS/Metal Support Progress
This long overdue task has been on the backlog for a while. I started picking up on it this month and most of the problems are now fixed. Most were rendering or shader related. It was a bit harder than I expected and seems like Metal support on Unity is in desperate need of some attention.
The reason we’re doing this is because OpenGL has lost support from Apple and they are now focusing on Metal. This means we’ll have to switch as well, hopefully sooner rather than later, in order to keep up in terms of features and performance. It also means we’ll be able to turn on some features we’ve kept disabled on MacOS, due to not being supported by Unity/OpenGL, like occlusion culling and optimized impostor rendering.
I’m hoping to roll it out for next patch. The performance jump is looking promising, albeit not dramatic.
Water 4.0 Progress
With all the recent event and water vehicle additions, we felt it was time to improve the actual water as well. That means both aesthetics as well as physics. For this iteration we’re planning to add proper large scale waves, including displacement, foam, disturbance and a few shading tweaks.
In this work-in-progress video you can see the low frequency wave displacement on top of the higher frequency waves we already had:
Navigating won’t be as easy with all the waves affecting the physics, and conditions at sea may even be change depending on location or weather.
Parented Entity Movement Improvements
I continued my work on the parented entity movement system. There were some issues with getting kicked by our anti-hack system when jumping off moving entities which are now handled correctly. Another big improvement is the angular velocity estimation when entities are far away from the origin of their parent, which primarily affected the cargo ship. Lastly, physics props like dropped items and grenades are now correctly handling intermittent parent changes and preserve their world velocity. I think we’re getting to a really solid place with this, and the new hot air balloon is a fairly impressive demonstration of how far we have come.
Network Interpolation Improvements
I fixed a number of small issues with the client side entity movement interpolation. Physics props like dropped items and grenades now show much smoother movement on the client by using the correct physics timestamps. I also fixed an edge case that could cause some visible jitter for a few frames after an entity was instantiated, which affected both physics props and server projectiles like rockets.
Asset Bundles 3.0
Unity’s asset management in general, and asset bundles in particular, suck. It’s ridiculous that something that should really be supported out of the box without any custom code is still a seemingly unsolved problem as soon as your project exceeds a certain size. The gist of it is that asset bundles only support 4GB (formerly 2GB) of assets, so you have to split your project into multiple bundles. However, the more bundles you use the slower your loading times become and the bigger the overhead. Assigning asset bundles in the editor also has the downside that you end up including assets in the server build even if they aren’t needed, which slows down build times and needlessly increases disk usage and update size of the server install.
The only positive news is that in 2018.1 Unity added the option to pass a code generated asset bundle build map to the build method. Using this you can figure out an asset layout that leads to the minimum number of bundles that won’t throw cryptic error messages when trying to load them. Since it’s code driven you can also use different layouts for client and server builds and therefore exclude assets you don’t need from the server build. Once you’ve gone through the process of writing all that pointless code you end up with a somewhat future proof solution that hopefully prevents artists from accidentally fucking up the entire build because they added a new texture. So, that’s where we are now: miserable, but hopeful that nobody has to touch any of this again for a long time.
Temporary Game Bans
Recent advancements from the EasyAntiCheat team has enabled us to start manually issuing temporary game bans to players who refuse to play fair. We take a zero-tolerance approach to cheaters and players who repeatedly play with them, ruining the game for others.
Previously we only issued server bans for players who repeatedly played alongside cheaters, we can now extend this punishment across all servers with temporary game bans of up to one year. Expect to see this feature expanded upon in the near future.