Hey guys. Couple of new things this week, including construction, and looking at highlighting community servers that are doing cool things.
When I haven’t been getting this patch sorted, I’ve been looking into revamping the construction system. Currently, the system has exactly the same mesh for collisions and rendering. Because complex mesh colliders are very expensive, this means that the building generally have to look very simple as well as collide very simply. It’s also tricky to do things like complex level-of-detail, finding out what part of a building a projectile hit, and more complex destruction.
So, I’ve been looking at expanding the already very nice construction system to be able to accommodate all of this! First, a bit of information about how the construction system works, specifically the passive construction system. Things like machines, firepits, storage lockers, we refer to as active, and are just objects in the world we treat like individual things, because they need to do stuff. However, if we did that for every single wall piece in the world, the game would be unplayable. So, for things like wall-pieces, trusses, foundations, etc. we gather them all up, and bake them into combined meshes to save on both physics processing, and rendering.
Basically, say you construct a new wall. The game goes and finds the whole structure, and tells it about this addition. The structure adds this information to a list of things that have gone into making up the structure, and then goes and rebakes whatever meshes it needs to – in this case, all the combined walls.
So one tricky problem we had to deal with was this. Say you’ve combined a building into one big collider, and then you shoot it. How do you tell which of the original building parts it hit? The physics doesn’t have any distinction anymore between one part of a building and the next, it just treats it as one big object. The solution we figured out was to count the mesh triangles. Let me explain. Meshes are made up of a list of triangles, or tris, that describe an overall shape. When you raycast against a mesh collider in Unity, one of the bits of information you get out of that is what the index of the triangle you hit in that mesh was. We also know how many individual triangles were in each piece of the building parts. So, we can simply count upwards, adding on the total triangle count for each piece as we move through this list of additions, and when we get to the range surrounding our number, we know we’ve found the piece.
Awesome! This opens the door to cool things like stats for individual parts of buildings, and much more dynamic destruction. You might be saying C4 already does what seem like fairly dynamic destruction, and you’re right, but the way it does it is very expensive and not particularly good. This method is much more flexible and future-proof. We can start saying this piece of wall has this amount health or heat resistance or anything, really.
Featured Community Servers
Something we’ve wanted for a while is a way to highlight community servers that provide a good experience for players, or are doing something really cool with mods. We’ve introduced Featured Community Servers, so we can highlight servers that we think are cool and should get some more love. Of course, we want to do this with the server owners consent, so we’re not flooding someones intentionally small server with attention and new players. We’ve had some awesome feedback and lots of nominations on this! It’s been really awesome reading about how much you folks love the servers you’re on and want to see them get the recognition they deserve.
If you’ve got a community server you think should be featured, let us know here!
This week I have started to update our construction materials and textures. The process I use at this stage is to usually grab a photo ref texture base, tweak it in photoshop ( mainly levels and saturation, sometimes quick painovers ) then take it straight into unity and throw it onto some construction pieces. Making sure that the tiling isnt overly obvious is the first thing I pay attention to, either tuning the tiling settings in the material setting, or scaling the texture in photoshop. Having a large structure built like the one below helps in this and I will move to various distances to check the readability as well as occasionally changing the lighting conditions. During this time I am also taking into account how the colours read and whether or not something is standing out too much against its neighbor. I then take the base texture back into photoshop and paint out a lot of the photo real detailing, making sure that everything still tiles ok as I do.
I want to add normal maps and spec maps to the new materials ( nothing crazy just something to add a tiny bit more pop and personality ) so when I have a texture that I think possibly looks ok, I will paint a height map and use that to generate a normal map. I also use the height map as a fairly decent start point for a spec map.
I’ve been hard at work on the upcoming equipment restructure and infamy changes. As part of these changes I am taking the opportunity to do a major refactor of the equipment system which will provide massive improvements to the stability and quality of gunplay. Now that we are starting to see some deathmatch servers coming up (with new awesome community made maps), we have a better platform to iterate over the gunplay and push them to the quality we have been aiming for.
I am still a few weeks out on getting any of these things in game.
Item Schematic Concept
I’ve spoken a few times about wanting to introduce procedural loot drops (think diablo / borderlands) and have been trying to figure out a way to fit them into a more survival crafting oriented style. The biggest challenge I see is the difference between finding something awesome, and crafting something awesome. In a lootfest RPG, you constantly sift through trash loot until you find something that is an upgrade for you, stuff you don’t want is of no cost to you. Some RPGs also contain a crafting element where you collect resources and basically get one roll with a decent chance of good stats. In reality you end up crafting 10 of the same item hoping for something decent and throwing away the rest, as your gear gets better the chance of getting an upgrade gets lower and lower meaning having to craft more are more for less returns.
I personally never buy into these systems as it feels like a waste of resources, and re-crafting the same thing over and over isn’t much fun.
Now take a survival game, where most things are crafted from resources. How do we infuse the loot drop excitement with resource gathering and crafting without it being a very expensive gun slot machine?
The solution I am leaning more and more towards is having creatures / loot crates drop single use schematics that have already revealed the random bonuses on the item. The item still needs to be crafted at an advanced crafting table with variable resources required depending on the quality of the item, however there is still the gathering and crafting element similar to the existing items in the game right now.
I feel this will be the best way of delivering loot with varying quality, stats, bonuses and attachments while still fitting into a survival game. Upgrading the gear after the fact isn’t out of the question however this would be much more expensive.
I will be fleshing out this idea over the next couple of weeks, and it will hopefully make it into the game at the same time as procedural loot (still a while off)
I went on a Road Trip this week. Having created a good range of pieces for the Buildings, Sidewalks and Roads, I moved on to creating the proper assets within Unity. Firstly I made some tower prefabs, which after some thought, seems to be the best way to quickly build various shapes and sizes of structure.
Next I built a network of roads, and the idea here is that they be modular as with the buildings. I had to create a few more pieces as I went to plug small holes and generally make the system more flexible. I can think of 10 more meshes at least that will help the road system along. I need to dirty things up a lot more in general also.