Press Kit Wiki

Hurtworld Update #100

Spencer

Hi Guys!

Welcome to the 100th episode of “Hurtworld Dev’s ramble about their week”! Hard to believe we’ve written 100 of these things, I wanted to announce the release of ItemV2 on to our main branch with this update, however I think we are still too experimental to lock down an exact date that we think everything is going to be awesome enough to hype up again.

Our nicely planned out 2 week release schedule has been good to give us a push to get things playable and out in the wild, it makes it hard for us to ever really iterate on what we put out because we are working on new features right away. We will still be doing our best to push out a wipe update every 2 weeks, we will however be trying to do things a little more free form. What makes it in makes it in, what doesn’t will get pushed back to the next release.

I’ve spent the first half of this week sick, now am moving on to some much needed bug fixes. I’m hoping to fix bugged creatures today (something that’s been on my list since 2015, just haven’t gotten around to it).

Next I will be moving on to PVP, thinking about all elements from the ground up and hopefully refining some issues with the equipment system animations, recoil and weapon balance.

Random Location Loot
We’ve always had points of contest in Hurtworld maps, and have struggled for ages to make them a fair engagement and stop people just building next to them and taking no risk. We added nobuilds, but this didn’t solve the problem. We made entire biomes no builds, this made it a running simulator.

Something we’ve always had half implemented is meteor showers that provide rare resources at a random location, this is a no brainer and is proven to work. You can’t build next to it as you don’t know where it is, it funnels larger maps into not only geographical hotspots but time based hotspots. Unlike a town, where you might see someone there if they come at the same time as you, there will pretty much always be a contest at an airdrop or meteor strike.

We will be phasing these in over the next month and moving a large source of loot into these sources. Then heavily relaxing the nobuild requirements.

Tom

This week I’ve been continuing to work on item customization and attachments.
The tech side of stuff has taken me longer to get through than I had hoped, originally the plan was to use MaterialPropertyBlocks to override the mask being passed to the shader but unfortunately they are set on renderers rather than materials. Because the mesh baker combines mesh parts into a single renderer, setting a mask override here would override the mask on every mesh part (and this isn’t what we want because we can’t do something like apply a beanie mask onto a jumper because their UV mapping doesn’t match up even if the pattern looks compatible).
Instead of using the property blocks we’ll create a new material for each mask and when the meshes are being baked together each mesh part looks up it’s material assignment based on the mask assignment in its parent item.
I also made some changes so nested items (like scopes, silencers and other attachments) cannot be separately customized but will instead inherit these settings from their parent item (ie. the gun’s receiver), we thought individual customization of attachments would be confusing to manage and 9/10 times would result in an inconsistent look that was worse.

I know last week I said the customization would work like it does for vehicles but after discussing it we think that would be too hard to implement properly in time for the patch. Currently in itemv2 items are essentially throwaway with a low cost to craft, durability and no current way of repairing.
This doesn’t work well with a system that asks you to invest items (masks, paints) because you’re never going to feel like it’s worth it and you also end up not wanting to use your cool items because you don’t want to ‘waste’ their durability.
Instead we’re going to make items ‘roll’ their appearance when they are created. Basically each item will have a series of looks defined by a custom color set and a mask, rather than pick these options in an even distribution there will be common and rare types.

The other thing I’ve been working on is the item inspection window, currently this gives a preview of the inspected item and shows any available attachment slots. You can drag and drop compatible attachments over the slots to equip them. The item being replaced will be consumed, this adds a nice overhead cost that makes picking a setup more of a decision, reduces inventory maintenance type tasks for players (like swapping your good parts out before the weapon collapses) and makes duplicate attachments still valuable to the player in some way.
There’s still some work to go here, the window is still in ‘programmer art’ stage and I’d also like to extend it to show more information about the inspected item kind of like a tooltip+.
Then we can use the item mouseover tooltip to compare against whatever item is inspected (when it makes sense).
At this stage though I think the comparison is a nice to have feature that might not make it into this next patch.

TEHSPLATT

Hello, this week I did some running around in the build/green biome to see how it felt, at the time some areas felt empty (that’s not the case now thanks to Cow_Trix and increasing the overall amount of trees). I started looking into ways to make it feel like you were moving through different sections of land, specifically in the dead areas. I added a brown bush and some dead looking plants that would only appear on patches of dead ground with no green. I also scattered some of the new rocks I made around (you can’t really see them in this image) to give certain areas some more interesting features. This worked alright but as the week  went on the map got filled with more interesting features and the original stamps I made to achieve interesting areas worked pretty well with new focal points on the map and once the decision to increase the tree count was applied it instantly solved a lot of the scale issues and weird empty feeling. I also need to iterate on the cliff rocks I did as they give off a weird scale due to their noise frequency.

DeadAreaFoliage

Still working on world items in the back ground. This week was trying to get Amber to look decent without using a custom shader for things like translucency. The current texture is too realistic but I have other ways of toning that down, the main problem here is that it doesn’t really pop. It just feels like a brownish blob.

AmberTests

Mils

I worked on bringing the AWM up to speed and now it is fairly in line with the AR15. I have migrated the parts between the two guns that cross over between them. Items such as Scopes, Red Dots, Muzzle Brakes & Suppressors’s are now authored to both weapons. Mostly it was bringing the AR15 components over to the AWM but I did add the scope to the AR15 also. I also got two of the masks complete for the AWM and these will be generic masks now that they are shared between the two weapons. They will be shared between all the weapons  in the future, and I am also working on another one. I am going to shift gears and move onto making some colour masks for the players clothing this week. These are supposed to blend with the environment more, so as to not stand out like Canine Cojones when traversing the dangerous wilderness.

AWMSkins01 Ar15toAWMAttatch

Cow_Trix

Heya folks! This week was spent refining and polishing the new version of the map. I’m pretty happy with how it’s turned out, especially the central build biome, which has turned out a lot more interesting than other map areas we’ve made before, in my opinion. I think a big part of this was the workflow of having these negative-space “decorator” stamps, in this case things like a field of long grass surrounded by a fence, or a change in ground texture. These stamps just modify the ground scattering and micro details. I think this workflow works really well for adding interest and dynamicness to the map, and so hopefully I’ll be able to bring this into other biomes in the near future.

The road tool earned it’s keep in this iteration, with the current version of Mangatang featuring over 1000 nodes – pushing, pulling and tweaking the map all in various different ways. One use that Spencer discovered, that turned out to be a pretty awesome tool, was the ability to use the road tool to plant tree lines and occlusion lines. This was an easy, non-destructive and fast way to block off areas that were too open, and just reinforces that the road tool is more like a general spline tool, which can do roads with the correct set of components.

This week I’ll be continuing polish on the map, trying to apply some of the lessons we’ve learned to the weaker areas. I’ll also be seeing about getting the Raid Drill back up and working, improving performance and fixing up as many bugs as I have time for.

MapCombined

Hurtworld Update #99

Spencer

Hi Guys,

This week we’ve been powering forward with map and progression updates for the red desert release going out this Friday. The map tools have finally gotten to a point where I don’t have to pest cow_trix every 5 mins with a bug stopping me from proceeding. And I’ve got to say, these tools are awesome. We are just putting the finishing touches on the SDK update release, should have it out to you guys soon to start playing with.

The desert is coming together nicely, it’s definitely feeling like it has more character than any of our maps to date. I’ve tried to break away from too much formulaic structure that makes everything look the same, mostly thanks to our new tools that allow a lot of manual authoring in a non destructive process.

reddesert

This biome has become quite big, which will likely need a vehicle to traverse easily. I’ve clustered lots of content around the south border which will border the build biome, so getting your first vehicle should be easy enough on foot. The real star of this process has been the road tool, which should more appropriately be named the spline tool. We’ve been using it not only to create awesome roads, but to create streams, deform terrain, plant lines of trees and run power lines. This is incredibly useful for making a map feel full as being able to paint a line of tree occlusion scattered in a natural way in 2 clicks if an area feels too open, has sped up my workflow immensely.

Looking forward to sending it out in the wild!

Mils

I decided to become a road worker this week. Got a sore back from diggin’ 😛

These have come out nicely. The Asphalt is pretty similar to the last build we put out, but is a bit darker and less ‘powdery’ I added a subtle normal map to show the raised area at the edge of the road and the subtle raised paint of the white lines. I made some intersection pieces also. There’s a ‘T’ Junction for the asphalt and the Unsealed Roads. There’s also a T Junction for where the Unsealed Road reconnects to the Asphalt Road. These use sneaky UV mapping to avoid having to make specific road textures. We will probably make those at a later date.

RoadsAsphaltFinalised01

Below: I made a generic Unsealed Roads texture, which uses brown tones. This fit most of our biomes that didn’t have thick sand.

RoadsUnsealedGenericFinalised01

Below: For the thicker sand biomes namely; Red Desert and Start Desert I made another couple of Albedo’s and used a new normal map that really expressed the softness of the sand. This normal shows big soft tyre tread marks. Really satisfying working on these.

RoadsSandFinalised01

TEHSPLATT

Hello, this week I got into trying to make the green biome feel more interesting as you explore it without taking up actual space with junk. This was a bit of a hard task, it’s easy enough to just chuck a bunch of stamps all over the map but this takes up valuable building space and also still leaves everything in between the stamps the same, which can make the map feel boring. As you can see I’ve made a bunch of different stamps, small being tight areas with little rock walls sectioning everything off, medium being farm land with lots of occlusion from trees, hay bails and long grass, and finally large stamps that consist of 90% terrain splat changes with subtle tree lines to give the player a sense of moving through an ever changing land scape. These stamps need real world rules to make them feel correct, as you can see the small stamps (red) are focal points that get tucked into corners or other tight spaces, they are then padded with medium stamps (yellow) these farm stamps which are larger and can create interesting battle zones and cover for stalking players, then comes the large stamps (blue), these are used to suggest civilization, for example as you are coming over a hill you may not notice a farm or a town like area but you can see the ground has changed under you which in the real world generally indicates that the land has been touched by other humans and civilization may be near.

Stamp Rules2

I also made a spray can and ash world item. The spray can will have different patterns assigned to it for vehicles which will be displayed on the can. The pattern on this can is an example.

SprayCan Ash

Cow_Trix

Heya folks. This week I’ve been chipping away at the new Mangatang map, trying to polish some areas of the map with some new techniques and tools. Luka created some great stamps that will vary up the ground texturing and add in some interesting object scattering, while still being negative space that players can claim and build in. I’ve been working on placing those stamps in the build biome and fixing some issues that came up with ground texture blending. I was finding for much of the first half of the week that I was getting a lot of artifacts and blending issues with both ground textures and grass, when stamping them down and when setting them with the road tool. I realised, after one mostly successful refactor attempt, that I’d kind of overcomplicated the logic and I could simplify everything down. I was basically trying to figure out, given a point in the map, if I should read data from all the layers beneath where I was looking to figure out what was there – which is appropriate if nothing has altered the layer yet – or to look in the layer for the value of that data – which is appropriate when something else has altered the layer. I realised it would be a whole lot easier to just copy all the compound layer data to the currently executing layer right at the start, and then never look at the base at all. This simplified the logic immensely and actually let me spot a few other bugs in code where I was sampling things just a little bit off.

Progress on the map has been going well, with me and Spencer trying to figure out a good workflow for splitting things up and working on the same map separately. Something I’ve realised with this stuff is that the key word is “context”. When something has context with something else, you really do need to be putting them in the level, or stamp, together so that context can be preserved. So, for instance, when setting up these isolated scenes to author individual areas of the map, we need to be very careful that we don’t put things with context in areas of the stamp that won’t have 100% control over that point, as the context will change. For instance, if you have a stamp that places some walls on the ground, and you’ve authored that stamp with flat ground, then the walls have a context where they require flatness. If you stamp them somewhere on in such a way where they’re placed on uneven terrain, you get some walls that really don’t look right.

The road network for this map is more complex than we’ve had in Hurtworld so far, so I’m looking forward to seeing how that plays. There are a lot more trails, intersections, and roads to travel down in this coming build. Check out screenshots below!

Map1

Tom

This week I worked on the recently released 0.4.5.1 bugfix patch and started to flesh out how our customization system is going to be implemented in an upcoming patch (at this stage targeted for a 6th October release).

As part of the 0.4.5.1 patch I made some changes to the spawn system used by vehicles and Antor hives. Previously the respawn timer was calculated by MaxRespawnTime / ServerPlayerCount but with the longer respawn of the Antor hive we needed more control over how player counts affected the spawn timer. We setup the hive to have a 1 hour respawn on a full server but this meant on an empty server it would be a 60 hour respawn!
Now the spawner uses a user definable curve that is given normalized server fullness as its input (ie. 0 for empty server, 1 for a full server) and the result of this is multiplied by SecondsPerSpawn to find the final spawn time. In this example Goats will respawn every 300 seconds on a full server and 10x that (3000 seconds) in an empty server.

GoatSpawns

I also fixed plants appearing bugged after a server restart. It turned out we were saving the plant’s planted time relative to server start instead of relative to the current time. This meant that an Owrong planted 15 hours into server start wouldn’t appear ripe after a restart until restart time + planted time + grow time.
Another tricky bug was getting the construction hammer to teardown all of its ui features properly. Because the construction validation has to occur server side but the construction selection through the ui runs on the client there is shared authority over the system and some necessary delays while one side waits for the other to process. The bug where complexity costs and attachment point previews would stick around after unequipping the hammer was caused by either a quick equip and unequip or a quick selection change (ie. foundations to walls) and an unequip. This would cause the following sequence of events:
Equip or selection change is sent to server to setup the construction preview object.
Hammer is unequipped on client, turning off the ui elements.
Client receives construction preview setup message from server, turning some ui elements back on.
To fix this the construction manager now tracks the client predicted state to see if a construction hammer is equipped and the construction preview code now makes checks against this when making client side changes.

I’ve also started working on item customization scheduled for the 0.4.7.0 update. For this we’ll be improving weapon attachments allowing you to do things like swap between different sights on your gun. Also, the customization previously available to vehicle panels will be expanded to include several items and gear pieces (you will be able to apply different design masks and also change colors).
So far I’ve been mostly focused on getting the tech side of this up and happening so items can easily have masks applied and swapped and creating asset types that allow modders to easily create new masks for items. I’ll be going into the design side of this system this week and fleshing out how you’ll be able to earn these masks in game and what other changes to items are required to properly support the system (ie. we will likely return item repairing to allow you to keep any items you get attached to and end up customizing). Watch this space!

Hurtworld Update #98

Tom

This week I worked on the recently released 0.4.5.0 experimental and 0.3.8.8 master patches.
I was hoping to spend this week polishing up the Antor and DartBug iterating on their behaviour and balance but I ran into problems getting the game to build properly and also suffered a local git repository corruption that left me with less time than I was planning on and things ended up a bit rushed leading to some bugs and also a bit of a performance regression there wasn’t time to properly deal with (we’ll be dealing with these issues this week).
To avoid this in the future I’ll be making a more concerted effort to get the build finished up in the week prior so we have the final week purely for testing and any emergency changes.

SendBufferSize

The 0.3.8.8 master patch addressed a critical exploit where players were able to alter their send buffer size. The send buffer is memory that gets reserved by the network socket that connects to the hurtworld server. It uses this memory to send messages to the server with info like your input and position in the world. Players were lowering their buffer size so low that there wasn’t enough memory to send any of these updates allowing client and server to get totally out of sync but because the socket still retained the connection the player would never be kicked.
If you’re a server owner you may have seen the warning in your log file about the sendbuffer being full when the server gets really busy. This occurs when the server is trying to send too much data in a single frame to a player and the socket starts throwing errors when asked to send packets. Luckily this isn’t a critical problem as any important data will be sent through a reliable call meaning if the packet containing this call is dropped due to the buffer being full it will just be resent in the next frame.
This means the message is a warning and not an error, it’s an indication something is wrong not the actual problem itself (the problem is too much data being sent by something), we are planning a pass on server performance that should address this and other server issues before ItemV2’s full release.

First up this coming week will be addressing the critical issues in 0.4.5.0 which seem to be mostly with the spawning system more specifically with the Antor nodes not respawning properly and town loot caches not spawning at all.
I’m also hoping to address a few long standing AI bugs that cause desyncs between client and server making creatures show up in the wrong location appearing non-responsive as well as some bugs with the new creature sounds.

TEHSPLATT

Hello, this week I dived head first into a new work flow I’ve been slowly heading towards, it was a hell of a lot of work to get everything optimized and making sense, but in the end it worked out pretty good. Usually I would give myself a bit of time to sort out the best way to do something but this time round I felt like doing the task the normal way would be wasting a lot more time in the long run. I’ve been playing around with a program called Substance Designer and had specifically been working on ways to make good looking proceduraly generated rocks and cliff faces within Substance Designer, but I felt like I was at a point where I could save a lot of time by extracting what I was doing in Substance to achieve the task of new cliff rocks. First up I had to create a half decent looking cliff face height map within Substance, this allowed me to randomly generate height data over and over without having to manually change anything which is a huge step up from re-sculpting details over and over.

BTE

I then took this height data and turned it into geometry to take through the normal pipeline, this brought its own huge set of kinks that I had to work out. We decided set pieces that fit nicely together would be the best option for placing them. While I feel like there’s a lot that could be done better, I am extremely happy with how easy this work flow is going to make other big under-takings like this. Here’s the large set pieces covering an area where there’s a sudden change in the height map.

CliffFaces

Another thing I had a go at was concepting focal points in the map and trying to imagine how it would flow together instead of just creating little scenes with no idea where exactly they would go. I’m not a great concept artist so this is extremely rough and also unfinished but it does allow me to visualize the focal points we want to add in the map. The main challenge we are facing at the moment is stopping the build biome from feeling like its a constant wave of rolling hills by filling it with interesting stuff but also leaving lots of room to build bases, to achieve this we are trying to separate patches of land with interesting ground textures and different foliage, like you see on farms. I would really like to change the warmness and over all feeling parts of the map give you my gradually moving the colour pallet at different ends of the map, but I don’t want to get ahead of myself.

BuildBiomeConcept

Mils

I got a moon tan whilst on holiday these last 10 days. I did get some stuff done on the roads before I left for holiday town. I did a little more work today also, so the culmination you can see in the images below.

I was pleasantly surprised by CowTrix’ new road shader that uses some decal magic to blend the road edges with the terrains and additionally between biomes. This seems to be a kickass solution for the roads and I have managed to make one texture that looks good in all the biomes at the same time. We may make additional textures if this texture looks bad in future biomes but It’s nice that this suits them all for now. I am also working on the Unsealed Roads mesh and textures to bring them in line with the Asphalt Roads.

AsphaltRoad_SeanShader01

Here’s a little diagram to show the tricks used to make the road. We made the outer shoulder strip of poly’s large in World Space, but very thin in UV space. This was so we didn’t waste texture space, since the alpha specifies the outer shoulder strip to be invisible and instead inherit it’s information from the terrain underneath. The Asphalt part of the road has 100% white, to denote that it does not receive any colour & normal information from the terrain. Moving out from the edge of the Asphalt, there is a roughened gradient that starts at about 70-80% white. This helped the colour information blend with the splat underneath making it blend nicely and look like part of the scene. It’s a nice workflow, so much better results than the previous road scenario.

AsphaltRoad_SeanShader02

Cow_Trix

Heya folks. This previous week I’ve been working on the next iteration of the map , which is probably going to be my task for the coming week as well. This next iteration will include a new Red Desert biome that Spencer and Luka are working on, some new assets of Luka’s, and a tweaked layout. I reworked a lot of how the road tool works to get better results when we want to do complicated things, and finally got my head around the decal system for Unity surface shaders, that solves a lot of the road blending issues we were having.

You may remember in some previous blog posts we’ve talked about blending the roads with the terrain, and we came up with some pretty complex ways of doing it that involved things like storing a massive texture of the normal map of the terrain, and so on and so forth. However it was seeming to be a bit of a nightmare to really get this solution looking good, so I had another go at comprehending the Unity decal surface shader functions. Basically, in deferred shading, every model renders a bunch of information to something called the GBuffer. The GBuffer contains information like the albedo, occlusion, specular, etc. With decals, we can make shaders that modify the GBuffer, instead of overwriting it, which is perfect for roads! Check out Mils’ post for a screenshot of this shader in action.

I also vastly improved stamping and terrain recalculating performance, as I realised how much time we were spending getting the combined information from the layers below the currently calculating layer. A quick caching system for this data increased speeds by about 50% across the board for most operations.

I also wanted to push the road tool a bit further this iteration, and see what it can do. I experimented with a river preset, and a suspended bridge. Check it out!

RiverTest

Looking forward to getting this next iteration of the map out to you all, which will feature a bigger build biome, and more interesting features and landscapers. Stay tuned.

Spencer

This week I’ve been working on the heat progression and designing the red desert part section that will be rolling out in mangatang next week. I know I mentioned there would be a full progression going out next week, since then we’ve decided to shrink the scope a fair bit since we had also planned a large iteration on the build biome. This would mean multiple new biomes (not just ones pulled from legacy), plus designing an entire content progression. We decided to focus on one rolling out the red desert plus updating the build biome as not to spread our selves too thin.

We’ve been iterating a lot lately on our map development tools, and focusing on workflows that allow us to author more unique elements. This iteration we’re testing a workflow of authoring complete biomes separately before integrating them into the map. This allows much more granularity over how elements of the map fit together in a cohesive way. Instead of throwing 20 stamps at Cow_Trix and leaving it up to him to throw them together in a random order, I can design the flow of the map including where roads lie, how different areas blend together and ultimately iterate over what looks like a final product without having to work in the final map scene. The final map scene is getting pretty massive and hard to work with, this lets us prototype smaller chunks without wasting work.

To start the macro look of the biome, I’ve been back into World Machine to create something of a hybrid between Utah and Darwin. These features will be much larger than our classic biomes, and will serve more as landmarks that overshadow the smaller valleys and focal points.

Pasted image at 2017_09_12 03_06 PM

From there I spent a bit of time in MapMagic running some procedural texturing tests based on heights which looks pretty cool

Pasted image at 2017_09_12 04_39 PM

With this as a canvas I am now starting to create smaller occlusion focal points within the negative space and connecting focal points with long roads.

Gameplay Flow

Without a full fledged progression in the red desert, the main focus will become vehicles. Finding vehicles has always been a sloppy mechanic and been very hard to balance. My aim with the red desert in this iteration is to give players a way to focus on building a vehicle in a reasonable amount of time.

You won’t need to progress through all theirs to reach this biome, meaning at an early stage you can choose aiming for a vehicle, or aiming for better PVP/PVE gear. Finding each vehicle will vary in difficulty and likely require first building a goat before progressing to kanga / roach.

This patch is scheduled for release on Friday the 22nd of September at 5pm Melbourne time.

Dev Blog