Sunday, September 10, 2017

Augmented vs Virtual Reality

Augmented vs Virtual Reality


I think there is a recent misconception that being able to walk around your house via inside-out tracking is the next big thing.

In my mind, augmented and pure virtual experiences are different beasts. I think both are valid applications but a pure virtual experience is not going to have you walking around your house. You are going to need to be in a space that allows some freedom of movement but you are going to need to teleport around the virtual world for it to be immense.

I am tired of virtual experiences that confine me to a space. I feel like I am on a stage and it breaks the immersion. The next generation of virtual reality experiences need to allow you to go in all directions indefinitely and not have crappy/low-res graphics.

Having a world that unfolds infinitely in all directions allowing unlimited freedom of movement is the primary design decision for my upcoming game. That is what I want from virtual reality and so that is what I am going to deliver.

It isn't easy. No it is not... but... my latest experiments show it is possible if you build a reality creation frameworks specifically for the needs of VR.

Saturday, September 9, 2017

Distance Resolved

I have basic elevation working and have resolved the distance rendering issue so that the world looks immense.


Tuesday, September 5, 2017

Elevation is Working

Elevation is Working


Elevation is hard. Really hard.

I got the basic framework for it working today. It works surprisingly well. I have a long way to go, but this is definitely a step in the right direction. I added an elevation that goes up and to the right indefinitely. I teleported around about 1/2 a mile up and it kept working like a champ.


Monday, September 4, 2017

Foliage Lag

Foliage Lag


I have foliage working again. I have disabled deletion of foliage for the moment but I have a plan on how to efficiently manage rebuilding foliage indexing if it is needed. The basic framework is in place for it.

My bigger concern is trying to determine the most effective use of foliage.

I made all my props foliage and noticed that large foliage objects (walls) create lag where non-foliage actors do not. This means foliage works best for smaller objects. It may be that foliage comes into play for an actor when it is further away from the player. That would be painful to implement so I'm just going to stick with foliage for small objects like grass for now.

Foliage for grass did improve performance so it is working as expected.

Today's task is fading the camera in and out for teleportation when I know it require significant adjustments to the scene. Knowing unreal, this will be a herculean task. It looks simple but I'm sure it is going to suck for some unforeseen reason.

------------- UPDATE -------------

I got the teleport fade out implemented in about an hour. It works very well. I only need to do it when I know a lot of processing is about to occur.

After some experimentation, I have decided foliage is bad for performance. Frame rate starts out great and you think foliage is helping. But... I started getting low frame rates after teleporting around a while. I removed the foliage and voila, frame rate never went low again.

This is really unfortunate. I probably spent several weeks carefully incorporating foliage into my framework. Oh well.

Sunday, September 3, 2017

Distributing Processing Over Time

Distributing Processing Over Time

Since the game now adjusts its quality automatically, I can try out different strategies and see which ones improve game quality.

My first change was to distribute load over time. I changed my world generation logic to queue changes instead of processing them all at once. About 10% of the queue is then processed every frame/tick.

This had an amazing improvement in performance. It improved quality by a factor of 4!

This evening I will changing my foliage logic and see how that changes the quality.

Saturday, September 2, 2017

Automatic Quality Adjustment

Automatic Quality Adjustment

Everything in my game is dynamically added as the player moves around the world. I've been thinking about how to automatically improve FPS (Frames Per Second) by adding logic to the game mode tick.

I did that today and it works amazingly well. The game now monitors FPS and if it dips below 80, it slowly reduces game quality settings until it is at least 80 FPS. I also have it automatically improve quality if FPS goes above 85.

I teleported around the world for several minutes and there was no stutter. It was interesting to see what settings the game settled on versus what I thought was acceptable. It was much lower but my FPS stabilized at 85. I know 85 is below the recommended 90, but 85 looks fine to me.

This means the game will automatically adjust itself based on the player's graphics card without them having to adjust any settings.

Next I will rewrite my foliage logic and see what quality settings the games adjusts itself to. I expect it to get better.

Sunday, August 27, 2017

Foliage Gotcha

Foliage Gotcha


Foliage is a copy of a mesh that renders very fast. All foliage based on a mesh render the same way except they have a different location, rotation and scale. This allows you to put a lot more items on the screen.

When you add foliage, you get an index. That index matches an entry in an array on the parent mesh the foliage is based on. Problem is, if you delete any foliage, the arrays shrinks invalidating the indexes you were previously given. I did find a way around this issue but in the end, the performance downside of managing foliage indexing outweighs the performance gain from using foliage.

More work is needed in this area, but for now, I am disabling foliage on all my meshes.

Exactly what was unreal thinking when they designed this? The only handle you have to the foliage is an index they give you. That index can be invalidated by deleting any other foliage. wtf?

I have spent a LOT of time incorporating foliage into my framework. I think I may have to stop using it unless I stop deleting foliage unless it is absolutely necessary.