Welcome to the Oculus Developer Forums!

Your participation on the forum is subject to the Oculus Code of Conduct.

In general, please be respectful and kind. If you violate the Oculus Code of Conduct, your access to the developer forums may be revoked at the discretion of Oculus staff.

Test Feedback - Graphics Test

ProfessorTroyProfessorTroy Posts: 80 Poster of the Week
Hey

I got the feedback that my app doesn't run at a consistant 60fps and I'm a bit confused by it. I recorded my game-play for awhile and didn't catch any drops in FPS below 60fps.  Are the submission folks testing FPS differently from how we're doing it?

Here's my video showing it in headset using an S7 - which the feedback said it didn't maintain 60fps :  

Am I missing something?

Troy

Best Answer

Answers

  • cyberealitycybereality Posts: 26,156 Oculus Staff
    This sounds like a mobile app, so I'll move to the mobile dev section. Did the email you receive mention any particular part that was choppy? Because it's possible it's running at 60fps for most of the time, but even one intensive scene or level could cause it to fail.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i
    Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
  • delphinius81delphinius81 Posts: 297
    Nexus 6
    Have you tried doing a wireless adb logcat of the game running to observe the frame rate statistics displayed there? Maybe there is a slight drop somewhere that isn't picked up in the GUI FPS counter you are using. Or maybe they made a mistake about which device type had the FPS issue.
  • ProfessorTroyProfessorTroy Posts: 80 Poster of the Week
    Doh, I just noticed I posted twice in PC Development.  Thought I was in the right sub-section when I did - thanks for moving it @cybereality


    No mention of what part of the game that was choppy. I've been doing optimization passes and have been in-game for over 40 minutes at a time. 
  • ProfessorTroyProfessorTroy Posts: 80 Poster of the Week
    @delphinius81  - they marked all devices as failed. 

    Where in the logcat would I be looking for FPS reports? That's a new place to look for me.
  • galopingalopin Posts: 355
    Nexus 6
    @cybereality It is good that you move things around, but the forum does not care, the thread is still list in the pcdev category :disappointed:

  • ProfessorTroyProfessorTroy Posts: 80 Poster of the Week
    @delphinius81  - thanks!
    I'll check out that blog post and see if there's a drop I'm not aware of, that the on-screen FPS counter isn't catching.

    I just hope they aren't referring to the moment when you start a new lobby. Binding to the network address will always cause a small delay no matter which phone you're on.  Anyway to get them to ignore that?
  • cyberealitycybereality Posts: 26,156 Oculus Staff
    @galopin It's because I left a redirect after the move, so the OP didn't think I deleted the thread. But now that everyone knows, I went ahead and removed the redirect.

    @ProfessorTroy If there are parts of your game that you know cause showdown, either fade to black before making the call, or see if there is a way to perform the function in a non-blocking way.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i
    Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
  • ProfessorTroyProfessorTroy Posts: 80 Poster of the Week
    So the primary problem appears to be the Lobby/Online matchmaking start up. No way around it, the calls to start up the networking library always invokes a 1 frame hit where it'll drop below 60fps.

    The only work around I can think of is putting that call at the beginning of a scene, so the fade to black is still present.  However, if the submissions team is checks FPS loss by profiler or some other means, no matter what, they're going to see that drop.

    Not a good thing. :-/
  • galopingalopin Posts: 355
    Nexus 6
    Put the long operation in a separate thread maybe ?
  • delphinius81delphinius81 Posts: 297
    Nexus 6
    That depends on whether he is making Unity3D API calls as part of the matchmaking setup. You can only make Unity API calls from the main thread.

    Though you could also use LoadLevelAsynch to do the network initialization stuff during a loading screen before hand.
  • ProfessorTroyProfessorTroy Posts: 80 Poster of the Week
    Pretty much using the networking system that comes with Unity.
    So I have to:

    1. LoadLevelASync and do it there.
    2. Insert a wholly cheap and unnecessary fade to black hit the call, then fade back in.
    3. Hope the player didn't mind what is essentially a needless state change to handle a small moment of frame drop (like 50ms for a frame).

    If it's even that. The submissions team is often tight lipped about it.
  • delphinius81delphinius81 Posts: 297
    Nexus 6
    edited July 2016
    Are you using a splash screen at the start of your game? I have a splash screen scene that fades in our company name and I do some sub-system singleton initialization there, along with an async load of our main application scene. If you have some heavy processing that needs to be done in your core scene, you can move those calls to Awake instead of Start. I believe the component lifecycle is such that Awake is processed as part of the async level load if the gameobject is active, while Start is in the first frame the gameobject is active and the scene is displayed. So if you move your network initialization stuff to Awake (if it isn't already), it can happen as part of the Async level load while your initial splash screen is still displayed.

    I used http://talesfromtherift.com/vr-splash/ as the basis for my splash/loading scene
  • ProfessorTroyProfessorTroy Posts: 80 Poster of the Week
    I'm aware of how to hide it. I have to do some serious changes to achieve it. There's also other optimizations to make as well. Network initialization also changes based on what the user is selecting. Hosting a lan server opposed to starting an online Matchmaking Lobby - or simply searching/joining games is different pings on the FPS.

    I'm curious what libraries other multiplayer games used to avoid the FPS hit from starting it up.
Sign In or Register to comment.