LOD, DRAW DISTANCE AND CULLING SYSTEM
I’ve been working on some optimization already, making a flawless LOD, draw distance and culling system. There is still more work to be done, but for now I’m happy with the results regarding the performance. Here is a quick preview of what this system does, make note that the system can be adjusted – you can increase any of the draw distance parameter within the game for a better looking environment.
WEATHER, DAY/NIGHT SYSTEM
Weather system is still WIP but the fundamental idea is already implemented. Weather in Floatlands will be a Simplex noise, where each color of a cell around you coresponds to what type of weather that cell will have – cloudy, rainy, snowy or clear. A noise map will then move around and generate a procedural generated weather! How cool is that! Will work on particles (rain, snow) next week.
FORTRESSES – high level difficulty POI
We already mentioned that fortresses will be the most difficult to capture from enemy robots. We want to include some variance and make these fortresses of multiple shapes and sizes. I prepared lots of concepts in the form of sketches, but obviously not all of them will come to life. The guideline was to make them look a bit disarranged (out of place) so that they fit into a random place and not look generic. The other intent was to make them easily accessible from above and attackable from all sides. I recorded my workflow creating a special kind of Flying fortress.
The “buzzard” tier 1 is the basic craftable aircraft capable of traveling medium to short distances at slow speed. It provides some mobility so you can visit and explore floating islands at medium range. You can however upgrade the key components to improve the performance and add various utilities to the aircraft. For example, the tier 1 fuel tank will allow you to fly for 2 minutes continuously. If you choose to upgrade it to tier 2 you gain visual update on the aircraft model itself, and extend the flight time to approximately 3 minute flight time. (keep in mind the numbers are still subject to change).You will also be able to upgrade utilities, such as the storage capacity to store the tools and craft materials you find on the way, and even add different light sources to the aircraft to keep you illuminated at night. Because the conflict with enemy NPCs is imminent, you must also find a way to protect the aircraft. To repel the attackers you can mount a small turret to the front of the “buzzard”, and to protect yourself you can also upgrade the shell so the enemy NPCs will have a hard time hitting you.
- Animations for Sheep: I had quite a few problems doing animations but already solved most of them. The biggest one that I had was syncing issues and doing callbacks (when animation finishes it calls method in code). Movement was also problematic, because you can’t suddenly change parameters in animator (needs to be smooth) or it looks out of place.
- Behavior of Sheep: I made a basic behavior for the sheep, it’s still incomplete but sheep already has some life. Behavior is being built with Behavior Trees with extended Actions/Conditionals. Works quite cool now, still having problems syncing animations with behavior trees.
- Mob damage: I made DamageRouter script which adds DamageProxy to array of hit colliders. DamageProxy re-routes damage events to target script. For damageables we use interface IDamageTaker, so that projectiles (and explosives) can just query (Raycast/OverlapSphere) world for this specific inteface with GetComponent<IDamageTaker>(), and call TakeDamage(dmg, point, dir, damageGiver). Interfaces can really simplify some things.
- Basic layout for NPC relationships: I have laid down a basic idea for relationship between NPCs (and Player/s). It’s very simple but I think it should be enough to be also very effective. These are relationships actors will be able to have between them: Enemy, Predator, Neutral, Prey, Friend. How I will program this, I don’t know yet, but it can’t be that hard right?