Monday, November 14, 2016

Graphics in XING + The Bright Side of Delays

Hello, John here!

For my blog post today I'm going to ramble about some of the development process we are going through, as well as some of the tougher problems I'm working to solve. I'll also address the ongoing delay of the release.

First, a quick update on development. I've recently been busy integrating the changes made in Unreal Engine 4.14 to our custom 4.12 build specifically to better support the ever changing SDK's of all the VR headsets we are supporting, as well as for a few other nice improvements to the editor. Our friends at Cyan were the ones who really encouraged us to mess around with the engine itself to better suit our needs, and while it's initially a daunting task I'm really happy I dove into it.

We've actually cycled our entire project from engine version to engine version since the original 4.0 release, and getting my hands dirty with the engine code is certainly helping me better understand some of the "magic" that makes up Unreal.

Rainforest Landscape Material

The specific changes I've made to the engine are mostly small, but important for our game. For example, I modified the code used for saving the game on PS4 to run on an asynchronous thread, meaning the game saves without hitches or pausing. Doing this change opens up the opportunity to have saving run in the background and not rely on breaking gameplay to save the game. Of course, having background saving presents the problem of how to let the player know their game is saved - something we'll need to address at some point.


Anti-Aliasing

Another important change I've made is modifying the internal Screen Space Ambient Occlusion (SSAO) shader to apply a simple full screen blur for use with Fast Approximate Anti-Aliasing (FXAA). This is essential for avoiding the strange dither pattern on SSAO when we are rendering without Temporal Anti-Aliasing (TAA).


Speaking of AA (anti-aliasing, or "removing jaggies"), I've decided to stick with FXAA as our primary AA solution. While TAA has some awesome strengths and really can completely remove aliasing in a lot of cases, the ghosting and Vaseline effect it gets criticized for in modern games like Fallout 4, as well as adding a slight rendering cost on lower end hardware, has led us to defaulting to FXAA. I'm not sure if we'll be offering TAA as an option as it currently breaks a couple of shaders, but you will certainly have the option to disable AA if you like, as well as super sampling the game if you have the hardware for it.
Scaling Cloud Shader
Scaling Cloud Shader

Graphics Settings

Graphics settings are an interesting point of discussion regarding PlayStation as well. While I've seen a few titles offer some settings to players in the past, it seems like more and more games are giving players some presets to play with on consoles - things like sacrificing frame-rate for resolution and vice versa. I'm honestly not sure what we are going to offer on that note.

All of our demos on PS4 so far have been 1080p unlocked frame-rate that sticks pretty close to 60 at all times, but to be fair we've been mostly demoing some of our less-demanding content. I personally prefer the game to be running at 45+ fps - any less and I start to "feel" the frame-rate, but I know some people strongly prefer 60 fps, even if it means sacrificing quality. I'm not super keen on providing a 900p setting, although I think a lot of games are 900p and most people don't even notice. Interestingly, another puzzle game (The Witness) decided to stick with 900p to lock the frame-rate to 60 on the PS4.


Profiling
Obviously the PSVR has a strict frame-rate requirement that we are required to hit, and to do so there is certainly a hit to post process quality and scene detail. I'm not gonna lie to you and say all these screenshots you've been seeing are coming straight off of a PSVR - the settings are noticeably dropped to maintain frame-rate (not to mention VR photos are pretty unsightly at the moment - I wonder if we'll see a better solution to that in the future?). In the interest of transparency, here's some work in progress photos demonstrating what some of the scalability settings will look like.

Work in Progress - High Preset
Work in Progress - Medium Preset
Work in Progress - Low Preset

Conclusion

On a concluding note, I'm very much interested in making sure XING is an extremely polished experience no matter the hardware you are playing on. I hope this attention to detail somewhat alleviates the admittedly extraordinary duration some of you have patiently been waiting for.  The scope and reach of this project has FAR exceeded my expectations setting off, for better or for worse.

But don't worry, this multi-year delay has some fantastic benefits for you, the player:

  • The game has about four times the content than we had initially designed
  • Voice-acted characters
  • A massive set of optional puzzles and content
  • Literally three years of polish
  • A completely ridiculous amount of art for a 3 person indie team to try to push out
  • Way too much music - levels that were going to have one track now have 4+ with variation
  • PS4 support
  • Support for the three major VR headsets, including tracked hand controllers
It's been a long wait, and because we still have a lot of unknowns ahead of ourselves there no point in specifying a target date. What I can say is we are very far along - things have never looked better for the future of the project, and we are in no way in any danger of disappearing. We've all worked extremely hard to get to where we are now and we will continue to do so until we are happy with the entire package we are releasing to the world.





4 comments:

  1. Just bought my psvr last weekendand literally finished all psvr games i like that sony has on offer. This is one my kind of games, however, i hope you don't fall into the 'too little too late' category like so many 'good' games. Set a target, get the game out, leave the artistic enthusiasm for the next game. Or it will be too little too late. Try for this christmas, if you can't then you'll know it's not gonna happen.

    ReplyDelete
  2. Looks fantastic. Been following you three for a while and I was hoping it wouldn't fall off the map. I think Myst-likes (that's a compliment) are going to have a great future in VR. I don't know what "unknown" is talking about, I think all of your polish has gone a long way, and I think you're just in time. Best of luck!

    ReplyDelete
  3. Hey John,
    Now that UE supports forward rendering with MSAA (since 4.14), would it be feasible to rework the game to work with this rendering path? I personally think that any future VR projects using UE4 should use forward+MSAA - it's so much sharper and crisper, and yet lacks aliasing (well, except for specular aliasing, depending on the materials; also there's no alpha-to-coverage support yet but it's coming soon). But I suppose switching to it that late in the development is out of the question? :(
    Anyway, keep it up, looking forward to playing it "in" my Vive.

    ReplyDelete
    Replies
    1. It would be certainly possible to use a purely forward shading path for XING. In fact we started production in UE3 which used a forward shader for everything. However, you kinda used the right word - rework.

      We've done some tests with the forward shader in UE4 and while it is promising, it still lacks some very key features, especially for a dynamically lit game like XING. Likewise, XING is actually a massive game especially in terms of art, so at this point reworking shaders and assets for use in the forward path at this juncture is likely not in our best interest. At release I would expect to play the game using the deferred shader in VR, and hopefully on some beefy hardware for super-sampling to mitigate aliasing.

      That being said, if we and the VR market end up selling very well and if Epic continues to work on the forward shader, I could see us taking a look at the forward shader again down the line.

      Delete