Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
A VR Frame’s Life (oculus.com)
105 points by astdb on May 21, 2021 | hide | past | favorite | 18 comments


I wish more companies would do profiling breakdowns like this. Not to laud Oculus (or Facebook for that matter) since their business mostly depends on millisecond optimization, but I really think transparency with respect to performance is a hotly expanding medium. When Rockstar patched the obnoxiously long GTA 5 loading times a few months ago, I think they opened an avenue for more developers to be honest about their development cycle. It's not as though a bug like that could be ignored: whoever was testing or profiling the game's loading time must have just swept it under the rug and hoped nobody would care too much about a bloated JSON parser. Hopefully going forwards we can push the industry in a performant direction, instead of abstracting everything into containers and adding more overhead.


It's not about sweeping it under a rug or not caring. It's that when you have a choice between fixing a crash bug and fixing a performance bug, you fix the crash bug. And when you have a choice between fixing in-game performance and fixing out-of-game performance, you fix the in-game performance.

Slow loading times, frustrating though they can be, close to the absolute lowest priority issues you will have in gamedev. You only get to fix them (and trust me, game devs find them way more annoying than you do!) once all of the higher priority issues are fixed.


I think the priority should be weighted by the time.

If you can optimise game loading and reduce it by 1 minute, or increase FPS by 0.01%, would you still choose the latter?

Trite example obviously but the gta v loading issue was so bad. Decades of human time unnecessarily spent on loading screens.

Substantial revenue opportunity missed because you can't buy microtransactions during a loading screen.


I think in the GTAV case, they kind of dropped the ball by not doing profiling when players complained. The exact same thing happened to our game as well, it was also a Json deserializing library that caused the problem. At the first release, the player’s save files were small, so we didn’t notice the library was written poorly. After several expansions, the save data grew, some players contacted support complaining about start up loading time. We did a profile, found the culprit, migrated data to Bson format, done.

Back to the question. If there is a limited amount of time before release and I have to choose between fixing load time and fixing framerate. It’s definitely going to be framerate, some console platforms will reject your title if you frame drop multiple times within certain duration. Frame drop is also a deal breaker for most players especially for VR games. Stuttering can cause serious motion sickness in VR and make people throw up.

Overall I think the constraints of game projects are different to other domains like web and business. So we game developers tend to think differently. Like bugs are bad, but as long as not game breaking/save corrupting or happening way too often, players are kind of ok with that. People even found bugs in game entertaining and compiled a weekly reel of bugs https://kotaku.com/c/video/highlight-reel. On the other hand, performance is critical to us, if a game plays sluggish then no one can enjoy it. Compared to the web where users have more tolerance about rending speed.


It's definitely not as binary as my brief post made out. During my (fairly brief) stint in gamedev, we prioritized issues using an "impact factor" which tried to combine all the different aspects of how an issue could impact players into a single metric. I'm not sure what the final formula was but it would have been something like:

    impact = severity_factor * frequency * age_factor
where

    severity_factor = 1   (minor cosmetic/performance issue)
                    = 3   (major cosmetic/performance issue)
                    = 5   (annoying gameplay bug)
                    = 50  (avoidable crash/gamebreaking bug)
                    = 100 (unavoidable crash/gamebreaking bug)
    frequency       = times_occurred / hours_of_gameplay
    age_factor      = 1 + age_in_months


It’s not just a player facing thing either. Substantial loading times can really hurt iteration speed for developers. It’s kinda sad to see fellow game developers defend it as a low priority when it really, really shouldn’t be.


Looking at this, along with using all of Unity or Unreal's engine, make me think of the saying "standing on the shoulders of giants". I usually think of that more in an open source context, but the layers of abstraction that go into any area of modern computing are mindblowing at times. Humans are nuts.


Graphics are nuts. I did a lot of research months ago into how to build my own CPU, RAM, OS etc. from the ground up. I was able to figure out how a bunch of things worked that I didn't know before, and overall feel pretty confident in understanding at least a high level overview of a modern x86 computer.

I never figured out graphics cards. They are absurdly powerful and absurdly complex. The lack of documentation and open source drivers also does not help. As featured on HN a bit ago, AMD's drivers for Linux make up 10+% of the entire kernel codebase now!

I have no idea how the developers at Unity or Unreal stay sane. The amount of work that has gone into these base platforms we all take advantage of is...unreal.


A well-written GPU driver is a complete copy of an entire OS stack — inverted around the kernel driver. It's going to have at least one Unix-like OS (FW driver), a compiler, a driver-stack, network protocols, etc. I think of a GPU (and its SW stack) like Quade.


This is also a good series of articles to understand how a GPU works: https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-...

I think at this point a GPU card is more like a second computer inside your computer. I wonder if we could get rid of the regular computer and use a GPU only... are there any OS for a GPUs?


I don’t know about 3D graphics, but this article shows how to a graphics accelerator for 2D sprites.

https://andybrown.me.uk/wk/2014/06/01/ase/

At a high level it showcases the idea of offloading expensive graphics computations to a separate chip. A modern window manager uses the graphics device in a similar way to avoid redrawing the contents of windows as you move them around the screen.


Yet AMD's driver support is hilariously awful. I spent four hours yesterday trying to install the Pro drivers for a 6700xt on ubuntu 20.04 using the official drivers. No luck.

Nvidia drivers may be closed source, but it just works.


Am curious to see the perf boost from next gen gpu hardware (if you can get your hands on it). Sony's PS5 VR set is maybe a year away. But Wrench VR is one of those titles that gets attention. And the chrome shaders look immersively photoreal with DLSS and Ray Tracing turned on!

Wrench with RTX

https://www.youtube.com/watch?v=qhe4V-sqjwg


DLSS is so irritatingly restricted right now. It would be a game-changer for VR for X-Plane or Microsoft Flight Simulator, but neither of them support it!

It's more on the game devs than the graphics card devs, but getting the game devs on to these modern features feels like pulling teeth.


In the games I've had it supported in, and I'm running a 3080 and an Ryzen 3700x, it really does a fantastic job. Cyberpunk looks and runs great on ultra raytracing, and Amid Evil looks fantastic with its new DLSS and RTX patch.

There are a lot of games coming out, but I really don't think Flight VR games are it's major selling point right now. Just as Fight Sims haven't been the top sellers for anything expect their own equipment. If you want it added for Microsoft Fight Simulator, check the forums and I'm sure theres post you could boost with your opinion.

But I really never see X-Plane integrating DLSS into their product. They have to focus on realism in all aspects, and are more focused on appeasing the FAA for their flight sim accreditation then benefiting users.

This dislike of X-Plane started after the Spyware incident, even if they have doubled back, I really doubt X-Plane will be advancing anything this generation.

To circle back to your initial statement: >DLSS is so irritatingly restricted right now

Its just not true.

Its a new technology out for less than a year at this point. It takes more than 2 months to incorporate a completely new graphics stack unless you're already using an engine like Unreal 4. The comment just feels bloated with pretentiousness, and isn't fitting of this forum. I don't use DLSS because I don't really see the benefit without heavy raytracing, and I can't imagine what it for do for me in a game where I am flying 40k feet off the ground.


MSFS has DLSS in their pipeline (along with a bunch of other stuff).


That's news to me and that's great. It'll be a huge help with frame rate in VR.


"Life of a VR frame" would sound better




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: