Tuesday, July 11, 2017

Huge Improvements


It has been quite some time since my last update on this project. A lot has been going on all around, but let's talk about what V:SotN has been doing. We've made some amazing improvements to the game.

Let's start off with a little side story. When I first started this project, I had no idea what I was doing with Unreal Engine. I initially intended to create the famous "PreAlpha Build" and release that to selected supporters to test mechanics, and in working with the PreAlpha Build, I'd learn the engine and be prepared for the final build of the game. Once the PreAlpha was selectively released for testing, then I'd begin copying the code over to the new project, optimize it, and give it a bunch of happy little comments, optimize models and other assets, and everything would be wonderful. The downside of this though, is that I really didn't know too much about what I was doing in the beginning, as I stated. The code was messy, optimization was put on the sideline, and file hierarchies were absolute disasters. It was hard for me to work in the project. So, I skipped ahead past the PreAlpha release and began working on the final build of the project, making the code and assets much more desirable.

Everyone who was signed up for access to the PreAlpha build, don't worry; you will still get that! The PreAlpha map is going to be packaged with the final game, is all. You'll still be able to play around with fluffy Sergals before I start working on the actual story of the game.

With all of that out of the way, let's start talking about what we've got going on in this new version of the project.

Let's begin with:
The Character

- We brought back the three stances. Thanks to a very large and complex piece of code, players are now able to, in addition to standing and crouching, lay down on the ground. The big and scary part of the code comes in for smoothly transitioning the camera, allowing the player to change from any stance to any other stance correctly, dealing with players who want to go ham on the crouch and prone keys so they will end up in the correct stance, as well as a setting that players will be able to enable from the options menu that will allow them to change between toggle-button-stance changes and hold-button-stance changes. Crouching and laying down are both configurable to support this feature together, individually, or not at all.



- Players are also able to toggle (or hold-to-activate) slow walking for each of the stances. This will activate some stealth features in the final release of the game and will also allow you to take in the sights and sounds of the world, or match NPC walking speeds (which seems to be a technology that has been impossible to develop until now.)

- Although not implemented in this current build yet, we added a "disable head-bob" toggle for all of you people out there who like to glide around like robots.

- We also added code so the player will be able to adjust their mouselook sensitivity.

- Full key rebinding will be supported.


The Ultra Dynamic Sky

- Updated sun settings to be more realistic; added bloom and lens flare, as well as set proper inclination and orbit paths that correspond to where the player will be in the world, meaning that the sun rises and sets in the southern hemisphere of the sky.


- We have three different cloud layers now; the highest layer which is a wispy cloud layer that is a static image. This wisp layer can be changed to make the clouds more notable or fainter. We also have an upper and lower level of procedurally generated clouds that are able to change in density and speed.


- Clouds are also now able to change direction! No more cloud traveling in a perfect Northwestern direction; we can make our wind simulation more realistic.

- We also now have lighting palettes that we can manipulate in order to change the mood of the game. In a simple outdoors scene, we can make the weather seem warmer, or cooler based on the choice of color palette. We also have a palette to suggest extreme heat for desert areas.


- A bug was resolved that involved the subsurface scattering of our foliage models. If the game session began in the late afternoon, the flora would have a noticeable orange glow throughout the rest of the session. This was especially troublesome at night time. The UDS will now occasionally update its skylight actor by recapturing the sky scene, which is what was causing the problem with our glowing flora. Now, you can't navigate the darkness by the faint glow of orange everything.

- Pending contact from the GRG, the official people making the Vilous universe, based on their response, we may look into simulating solar activity that will make Aurora events a possibility. Below is a small demo of what such an event would look like.



The Landscape

This is perhaps one of my favorite things in this update.

- Dynamically tessellated terrain with 4 high-quality materials. Terrain closest to the player will have more polygons that it uses for displacing the terrain, as the further terrain will have their regular flat textures.


- The landscape is using an instanced version of the landscape material and not the actual material itself. What does that mean? That means we can add more immersive detail to the landscape by updating it during runtime. When it rains, the ground will get darker and glossier as a result from all of the water. Different materials will dry at different rates. Snow will be able to actually pile up on the ground, not only as a texture, but with physical body at no additional cost to the tessellated terrain, then it will even melt and make the ground wet before drying. We don't have a proof of concept yet, we're just planning for the future as this is something we're able to do with an instanced material; update it at runtime.

Note that Vilous isn't going to look as dead and dry as this demo terrain; this is just what I had in the engine to test with, and that is what I made with it. Vilous will be much lusher.


Props

- We've added 27 small ground props to add more detail to the terrain. (Be careful not to step on some of the smaller sticks. Well, you don't need to be, only because that feature isn't implemented yet. ;) ) One of the branches and three different rocks can be seen in the above tessellation demo .gif.


- We've taken care to outfit these props with LODs to ease rendering load. From LOD0 to LOD3, you can expect the props to be optimized by a factor of around 8. Below is a visualization of how the LODs work. The more screen space that a prop takes up, the more detail it will be rendered in.



And finally...
Dynamic Grass

We had fancy, subsurface lit, swaying grass in the old project. In this project:

- The grass is fully dynamic and able to be pushed out of the way by the player. No more clipping through planar textures when sneaking around in tall grass.

- Careful how you walk through the grass though; you'll leave a trail behind you of grass you've matted down. This can be useful for tracking animals, enemies, and even yourself if you get lost. Grass will eventually spring back to its original position.


- Unfortunately, due to a bug in one of our materials, we are unable to show this next feature. We do however have dynamic fire propagation! Fire can burn foliage, be influenced by wind strength and direction, and foliage type. Burning foliage glows a brilliant orange, and shrinks along its z-axis until it is in the ground, a which point, it'll disappear. What is left behind is a scorch mark on the underlying terrain material.



Thank you to all of our patrons supporting us on Patreon! Your support means so much to me. I hope you're all looking forward to future progress as much as I am! If everything goes according to plan, we'll have one more update before we finish up our Sergal model. The second update, the Sergal model update, should happen around the end of next month.

We also invite you to come check out our Discord server! I post game development stuff there frequently. Come play some games with us, hear about what is being worked on before Patreon finds out, and merp around with us!