Spencer
This week I’ve been tracking down the low hanging performance issues with ItemV2. At the start of last week I released a patch to fix the horrible UI lag in ItemV2 being caused by lots of sleepers being around, however this didn’t fix the core GPU load lower end machines were suffering from.
It has been hard testing on a GTX1080, so I decided to find the oldest piece of crap PC I could find in the office and set it up at my desk. At first I feared I had bitten off more than I could chew as the machine I found barely gets 15fps in legacy Hurtworld and was getting less than 5 fps in ItemV2. It took a little longer than expected, but finally broke the back of it today, getting it upto a completely playable 25-30 fps in ItemV2.
At the other end of the scale, my dev machine now gets a solid 100-110 fps in ItemV2 diemensland compared to a 75-80 fps in legacy.
This won’t be a silver bullet for everyone, but should give good gains across the board. For those who are still struggling, introducing:
Potato Mode
From my time testing on the mega potato, I got a chance to look at Hurtworld from a different perspective. We’ve been spending a bit of time improving graphics and I know there are a lot of people out there that are already just scraping the 18fps required to be able to run around. There is no reason our graphical upgrades should make it so these machines can no longer run the game.
Unity is a very scalable engine, due to the fact that a large part of its customer base is focused on mobile development. With the right settings, we can make Hurtworld run on pretty much anything. The only downside of this is that lots of videos and screenshots of the game will look shit. If the game runs better for lots more people, I say its worth it.
With this weeks patch I will be introducing a Potato mode setting in the graphical options. This setting will override all quality settings with the absolute bare minimum options possible. This mode will focus 100% on performance, with no care for what the game actually looks like. At the end of the day, if you can still participate in the game you don’t really care how it looks.
Not for everyone
The thing we need to protect against here is potato mode giving you a competitive advantage like increased visibility due to no grass, making it so people with their graphics on high have to also go into potato mode to be at an even playing field. To combat this, we will be adding various disadvantages to potato mode like short draw distances for players and bases.
The improvements for bottom end performance coming in this patch are massive, and we have quite a few more things up our sleeve on that front. With some other drastic settings like defaulting back to per vertex lighting and replacing the sky with a simpler calculation, I was able to get upto a solid 60fps on the mega potato. This won’t be released until we get a chance to fix some broken fallback shaders in this mode.
Patch
New patch will be going live on Friday. Tom has been working on the content side for this weeks patch, see his post for details.
Mils
This last week saw me implementing my part of the AWM into the game. This is going to look a bit average animation wise because we are using the current rifle animations and some parts don’t match up. The hand is more horizontal on the original rifle and the bolt is in a different place, so they will be in strange positions and won’t animate correctly. For now these have the standard grey boxing texture on them until we are happy with the design. Tom is going to have a quick look into the programming and stat values for this today.
As Splatt is looking into some other world item designs I took over the fabricator design which we will make a few changes to. You’ll see some grey box shapes below. These are initial ideas with a focus of getting some interesting silhouettes. The poly count on these shouldn’t be too high because there will be a lot of them in the base at any one time. I’m trying to keep it low-ish to save performance a bit. I’ll keep working on these over the next day or two.
Tom
This week I’ve mostly been working on improving the mesh combining system. As it is now in ItemV2 the mesh combiner repeats a lot of work, every time an item is equipped or unequipped that has visuals or a vehicle, creature or player is loaded in (these networked objects only load on the client once you are close enough to need the information) the mesh combiner receives a list of all the mesh attachments to put together for the object’s final look. Due to both moving the combination work to a background worker thread and doing as much as we can ahead of time in the mod build step, combining meshes is very quick but when swapping in and out of a skinned weapon (like the bow which deforms during animation) it triggers a rebake of the whole player mesh.
I’ve been implementing a caching system so we can save combinations and look them up by their list of mesh attachments allowing us to skip any combining job if we’ve already got a matching mesh for the combination. This also makes matching combinations point to the same mesh, this saves on memory which is a boost to low end systems.
Because there are so many potential combinations we need to be able to delete meshes we aren’t using anymore to free the memory, for this I’ve implemented a reference count where other systems like the ragdolls and player renderers register and deregister their use of the mesh. When the cache needs to be shrunk this count is checked to make sure we don’t kill anything we’re using. This allows us to share meshes across different systems for varying timescales.
These changes still need more thorough testing and might not make it to the next patch but it won’t be far off.
As well as the mesh caching I’ve been working on changes and fixes for the next ItemV2 update coming out Friday. These include:
- Adding the AWM sniper Mils has been working on into the game to replace the FR18
- Fixing bugs with durability on the recurve bow
- Fixing vehicle spawn locations so chassis will once again spawn in towns
- Fixing the resolution options in the menu
- Fixing a bug where seeds could recolour your hat
- Fixing player and sleeper ragdolls sometimes not showing
- Removing our current motion blur effect due to some performance issues
- Simplifying pickaxe research costs so they don’t require a lower tier pickaxe
- Setting up the new vehicle icons and world items
These will show up in Friday’s update along with adding item repairing to the fabricator machines (the ones used to create the blueprint items).
Repairing won’t cost any resources but it will take some of your blueprints durability, currently we’ve got it set so you get about 4 full repairs for the same durability cost as crafting one item.
Keep in mind that the installed blueprint of the fabricator has to match the item you are trying to repair.
As well as repairing I’m going to give a balance pass to the early game, expect to see initial base construction get easier and food become easier to find.
TEHSPLATT
This week I made the 9mm ammo box, this has probably been my favourite one so far in terms of design. Each cardboard ammo box should be easily recognizable now based on colour alone, this is so you don’t have to sit there trying to read the boxes to find out what bullets they contain as this would be bad in a life or death situation. The muted and weird colour scheme came out nice and adds to that vintage ammo box feel which I really like.
I also made some new world items for the current vehicles as the old ones were just ripped straight off the vehicles themselves, where as these ones are a bit more manageable. As a car guy I love engines but as a 3D artist I hate them, they have so many little lumps and bumps they can easily eat up your poly budget. The large holes running along the sides/top looked terrible when they were just blobs of black texture pretending to be holes but I found a solution that wouldn’t destroy my poly budget, it involved using an alpha cut up across the top and cones with a gradient to give the holes a sense of depth, this worked out really well which is nice.
Here’s a picture of the engine and transmission together. The rust was was done for both stylistic, practical and logical reasons. One of the main reasons was I felt shiny objects this large rolling around the world wouldn’t look so great and a few tests proved I was right, this is also the real state that these parts would be in if they were just left half buried in conditions like Hurtworld’s. I also think contrasting PBR materials works really well so having the matte rust mixed with the shiny paint adds something interesting for the eye.