Press Kit Wiki

Hurtworld Update #69


I finished off one of the barrels for the AR15 this week, there will also be custom coloured designs to go over these as with the cars. I am waiting to finish the current models with textures before I go and do all the graphic skins.

Really happy with how the PBR materials are turning out on these. The lighting in these screenshots doesn’t do it much justice as it isn’t the runtime game lighting. Now onto the Stock, then probably the Magazine then a Muzzle Brake or Silencer.

AR15BareelKeg_0001_Layer 3 AR15BareelKeg_0000_Layer 4 AR15BareelKeg_0003_Layer 1 AR15BareelKeg_0002_Layer 2


This week I’ve been working on our color customization system again that I explained in blog #65. Whilst the system was mostly working it ran into problems if two models were baked together that shared the same space on the color lookup texture. This was a rare occurrence as we allocate texture space based on slot type (ie. Head, Legs, Chest etc.) but something like a roach or goat wheel uses the same model baked to different wheel bones dependant on the slot it’s equipped in and also when dealing with mods we can’t guarantee the slot has been assigned correctly so I’ve developed a system to detect overlaps between equipped models and assign spare space to a model when necessary, overriding the models custom UV channel to point it at the new space.
I created a quick color randomizer, added some colorable goat wheels and setup a whole bunch of items with new color masks that Gavku made to test the system and the results have been good! Colors are now synchronizing over the network and color texture space conflicts are being resolved properly!

I also spent some time working on vehicles, fixing some bugs around lights and the new item system. I took this opportunity to make some improvements in vehicle parking behaviour, now wheels will update their position if the vehicle is moving at all and also whenever new wheels are attached which means no more wheels sticking through the ground when the vehicle isn’t occupied and when first loading them in.

I also made some improvements to our mesh baking tools again, our custom mesh attachments now store a reference to the model they were created from and you can recreate the mesh attachment in one click from its reference after making changes to the source model. I’ve also added a tool to create mesh attachments based off another mesh attachment, as long as they share the same space (ie. have the same offset to the same bone). This saves the hassle of having to position, rotate and scale each new model relative to the character skeleton.
These tools should help speed up the work flow both for us internally and for modders once we get to release.


Hey folks, this week I’ve left off creature progression and have been looking at the crafting machines, blueprints and general UI improvements.

Crafting is going to change a lot in ItemV2, and we’ve been discussing internally and on the devblog what those changes are going to be and why. A big part of this is finding a blueprint for an item you want, and then choosing to invest in that design by building some machine to build it. I’ve been implementing this machine, that uses a model that you may have seen before but has so far not been used. I’ve also been trying to keep in mind moddability when creating these items, so a lot of it has been changed to be very component driven and smart about hooking itself up. Hopefully we should get to a point where it’s very easy to attach visual effects to a machine that will automatically turn on, scale and react to the what the machine is doing.


Handcrafting will change as well. We see a system where all players have base recipes that they are able to handcraft, like now, and then are able to consume a limited amount of blueprints found in the world to be able to handcraft them. Not every blueprint would be able to be used in this way, but it means that you will be able to repair some items while out in the world, give out and trade items that are uniquely yours, and regear if you die and cannot respawn at your base. The effect of this is to hopefully tie the items that you find and are valuable to you, to your character in a way that persists across deaths, while it still being worthwhile to hunt and kill other players. This has flowed through to changing how a lot of the UI is built, which will allow for much more of how the UI works to be changed by mods. Mods should now be easily able to create their own UIs for custom machines and objects.


This week I implemented the blueprint system that allows any loot table (creature drop, resource node, crate) to generate a unique item, but instead of dropping the usable item it drops a blueprint to be crafted. To achieve this I used the nested item system used for weapon attachments, and wrapped the fully generated item in a blueprint container. This container then has its own loot table to decide how much the item will cost to craft. This can be configured like all other loot tables to increase costs based on rarity or quality of the roll on the item. For example, if you roll a rare pickaxe that give a big attack speed boost that most pickaxes don’t get, it can increase the recipe cost to craft it by 20%.

As cow_trix described a bit above, these blueprints will come in 2 varieties: Handcrafted and Machine crafted. The purpose of this is to give relatively new spawns a couple of item tiers where they can learn blueprints directly onto their character. Meaning before you have established a base, you don’t need to setup machines to craft your items. This makes it a little safer at low levels due to the fact that you can find a blueprint and learn it right away and cannot lose it.

Once you progress a bit further, higher tier items will require a crafting machine to use. Meaning if someone takes over your base, they can also take over your crafting facilities.

These systems are pretty much in place now, just waiting on that magical elusive content.

Build times
Once I started working on content I realized that the workflow for building anything from our content project had gotten so slow nobody could really get anything done. To preview an item in game took 5 mins of waiting. I spent a day splitting our content up into smaller manageable chunks and made our build process run in parallel. Taking content from authoring to build takes roughly 15 seconds now.

Lastly we bid farewell to Mr Gavku, who is taking a break from work to look after his new baby. All the best Gavku!

To re-bolster the Art team we welcome he who shall be known as Tehsplatt, who is a 3D sculpting wizard and once held the world record for Wolfenstien speedrunning. Expect to see a lot of him around the place.

Hurtworld Update #68


This week I finally implemented the dynamic item generator framework as the final system needed for procedural loot. What this does is control injecting random properties into item definitions on creation based on difficulty and rarity of the creature that was killed, and of course randomness. Its sematically similar to CowTrix’s creature mutator system and will be fairly similar to configure.

My test item isn’t very exciting, but shows 5 copies of the same item with different random properties applied to it on creation. Variations on the pick include colors, attack speed and mining power. The paintable pickaxe is a rubbish programmer art test also, but it proves the concept ready for proper content. The thing that stands out most here is the lack of an item icon renderer that shows any difference between them, its on the list of things to do, but for playtesting its not needed so I’m putting it off.

From the SDK side, the randomization of items is configured like this:


Also Mils spent a bit of time making some awesome icons for our SDK, so our custom types aren’t all just white squares anymore and you can actually tell them apart.


This Week

Today I’ve been putting together the blueprint system so that loot sources can drop a procedural items blueprint, you can decide if you want to craft it based on how good it is / if its an upgrade then load it into a workbench for limited uses. I should have that going by mid week, we are hoping to have an ItemV2 super rough prototype RPG progression test build up, with procedural creatures + loot working together for the first time internally by Friday. If this ends up being fun at all, I will push it out to our experimental branch and you guys can check it out.


This week I have mainly been working on allowing us a to spawn variety of enemy types via the custom colour shader that Tom has mentioned previously. This involves isolating sections of the albedo texture via a RGB mask and allocating the strength that the RGB mask has on your texture via the alpha channel.

RGB Mask example.


Example of an Alpha for the RGB Mask








Forest Shigi







Hey folks. This week I’ve been fleshing out the spawn building, fixing a few bugs in the HurtDatabase, looking into some possibilities for creature scaling, and setting up some temporary gating mechanics for creatures so we can test progression. Work was a little slowed by a big reorganisation on Tuesday, but we’re back to 100% now.

Spawn builders – the thing that takes a spawned object like a creature or a resource node, and changes it to fit the environment it was spawned in – are now a lot more fleshed out and easy to extend. I spent some time moving them across the Spencer’s generic value generation stuff, added in support for changing mesh attachment colors, and they are pretty much ready for content generation.

I’ve been looking a bit into exactly how we can gate harder creatures for players, so they have some kind of gear-check or skill-check. This led me to find a couple of issues with how we were using EntityStats on creatures, mostly with them being entities that didn’t think themselves for performance reasons and so more complex operations didn’t work with them. I implemented some prototype concepts like armor (player’s must do above x damage to a creature for it to apply), health regen that can stop when the creature is getting attacked, and a real temporary gating mechanic which pretty much means if you attack a creature above some magical number, you get killed real bad. Now emphasis on all of these is temporary, it’s unlikely that the real creature progression will work like this, but for now it gives us some temporary levers to pull as we figure out what the item, crafting and weapon progression looks like. I’ve pretty much just laid out a gradient of difficulty in a test level, to try and crunch down the game into as small a physical space as possible to focus purely on mechanics.seantest


This last week I’ve been finishing up the patch that was just released. As well as the rock check fixes I talked about last week I also patched up a bug in player to player collisions that was allowing people to see through walls. This occurred because we had a slight mismatch in character collider sizes where the colliders of other players clientside were slightly bigger than serverside. This meant when running into other players the client would stop before the server where it thinks the player collider is but then because of our server authoritative netcode it receives a correction to where the server collides. The problem is this ‘corrected’ position is now inside the other player which stuffs up all the collision checks being made during clientside prediction allowing players to run briefly through walls and other geometry before getting a correction from the server.


I also finished up the model viewer changes to allow previews with any characters implemented under our new mesh attachment system (players, ai and vehicles). It also can preview any animations assigned to the character and recolor any colorable attachments that have been setup, this allows you to preview content without having to rebuild your mod pack and load it in game.


I got the normal baking and 90% of the texturing done on the AR15 Receiver this week. The baking went fabulously, thanks Handplane Baker! I switched to this a little while ago because while XNormal is great, Handplane Baker has some time saving features. Everything baked out without much fuss. I moved onto the texturing and got most of the way there. Smart materials in 3D Coat are performing smoothly. I also added a few variants of custom plastic smart materials to my tool set, which were used on the AR15’s Grip.

Mmm metally….

AR15Rec_0002_Layer 3 AR15Rec_0003_Layer 2 AR15Rec_0001_Layer 4 AR15Rec_0000_Layer 5 AR15Rec_0004_Layer 1

Hurtworld Update #67


This week I’ve been fighting against rock bases again, getting a patch ready that will be released in the next few days and will be followed by a full infini wipe on Friday the 17th of February. We received some reports that rock bases are still around so I did some investigating and it turns out there is a very narrow edge case where the ‘am I inside a rock’ check fails when checking an area overlapped by multiple rocks. To deal with this edge case the check first scans through the raycast generating a list of expected colliders, after the standard raycast is complete it checks to make sure all expected colliders were hit, if not it runs the same raycast explicitly against the missing collider/s (ignoring everything else), adding all hits to the original hit count (the method counts hits going in and out of the rock and compares them to determine if inside).

That will hopefully solve the problem of players placing ownership stakes inside rocks but we also need to stop players getting inside the rocks in the first place. I don’t want to spill the beans about this just yet until the fix goes live but we’ve identified 2 ways players are doing this and developed fixes for both.

On the ItemV2 side of things I’ve been working on improving our model viewer, making it more generic so it can load more than just the player and also working on the ui so you can see what mesh configs are attached, adjust any custom color channels and quickly enable/disable visibility. I’m also adding search windows in for selecting mesh attachments to preview without having to build an item or a mesh config group.


I tweaked the metal smart materials in 3D-Coat last week, they are looking fii-ine. We may still tweak these, but they are getting really close and so is the workflow needed to reproduce this over all the guns. I did a lot of organising and folder restructuring of the assets in the project and in my personal working files, which was necessary so that I don’t end up in file chaos hell. There are a lot of parts and construction files that go into the guns, so now that I have something I won’t get lost in I can press ahead.

I also worked on the AR15 Receiver (Main Gun Body) Hi poly mesh and got that done on the weekend. I will be UV mapping and then baking in the coming days. Can’t wait to see the new materials on this. 😀

Note; these are renders of the Ironsight out of 3DCoat are at 4096 texture sizes, and while the in game guns look great they won’t be quite this texture density.

IronsightsWitnessMetal_0005_Layer 4 IronsightsWitnessMetal_0004_Layer 5 IronsightsWitnessMetal_0003_Layer 6 IronsightsWitnessMetal_0002_Layer 7 IronsightsWitnessMetal_0001_Layer 8 IronsightsWitnessMetal_0000_Layer 9

The AR15 Upper & Lower Receiver High Poly. Added a few dents and some repair work to add life to the mesh.

IronsightsWitnessMetal_0008_Layer 1 IronsightsWitnessMetal_0007_Layer 2 IronsightsWitnessMetal_0006_Layer 3


Good progress on the new progression this week. I implemented durability that can be applied to any item and extended item slot UI functionality to allow any item components to feed data into the progress bar (in this case used as a durability meter), and also for items to request that an icon overlay be displayed in a modular way. This will come in handy when we have items with things like battery power. I’ve also been thinking about moving item transitions into using this system to make things like cooking and going moldy easier to read in the UI.

Here is the system in action (with drastically accelerated rates of wear):


This week I have been finishing up some of the hair/beard sets and making sure all the separate eyebrow meshs/mats work as intended. I also wrapped up the Harem Pants.


I have also been going through the project and tying up loose ends, making sure that assets are in a finalized state and without errors. Removing, renaming, or replacing any such items. As well as making sure that work files and some archived older work and in game content share naming conventions.


Hey folks. This week I’ve been working on dynamically spawned entities. Before, when we spawned an object we would spawn exactly that object with no changes or randomness. A Shigi is always a Shigi, with the same health, texture, mesh, behaviour and so on and so forth. However, as discussed last week, we want spawns to be a lot more dynamic, different and diverse. Some Shigis should be Legendary Shigis, some should have crazy textures, or some mesh attachment, or anything like that. Diverse dynamic objects make for an interesting world. It also means that we’re dealing with way, way fewer prefabs as we don’t have to make an entirely new one to get some variety in objects.

So how this has ended up working is we give a builder object the difficulty the object was spawned with, a seed for making random decisions, and a rarity (things like Common, Uncommon, Rare, etc) that will all influence which object is spawned, what it looks like and how it will act. This has evolved into a pretty fully-fledged system for making these kinds of decisions. For instance, we can occasionally spawn Rare or even Legendary creatures in areas that are difficult enough, that have higher health and attack but drop way better loot. Check out an example of how we can mutate the Bor over harder and harder difficulties!

Itty Piggy -> Boss Hog

Itty Piggy -> Boss Hog

I’ve also been moving the creatures over to the new MeshAttachment system that the player uses for gear, that the rest of the team have been using and building for a while. We currently don’t have any art assets that take advantage of the system, and really we only swap out materials at this point, but it’s a step towards creatures having attachments that can distinguish and individualise them.

Dev Blog