I Need To Pick Your Brains Please

Associate
Joined
2 Sep 2008
Posts
292
I'm designing and developing a VR game for the Quest 2/3/Pro atm. It's going to be a VR Arcade simulator with 4 minigames to play, and if I can work out wtf I'm doing I'm planning on having the game compatible with motion simulators.

And I'm currently working out what to put in my Menus.

So I've got a Main Menu, Pause Menu and Options Menu so far.

Is there anything that I've forgotten?

Here's a copy pasta from my notes:

Main Menu

New Game
Load Game
Quit

Pause Menu

Resume (B or Menu Button)
New Game
Load Game
Save Game
Options
Quit

Options Menu

Resume (Menu Button)
Video Options
Sound Options
Comfort Options
Back To Pause Menu (B)

Video Options

Resume (Menu Button)
Resolution 0.8 1 1.1 1.2 1.5
Back To Options Menu (B)

Comfort Options

Resume (Menu Button)
Turn All Comfort Options On
Turn All Comfort Options Off
Snap Turning On/Off
Degrees Of Turning 0/30/45
Fade To Black When Turning On/Off
Vignette When Moving On/Off
Return To Options Menu (B)

Sound Options

Resume (Menu button)
Music Volume
Sound Effects Volume
Back To Options Menu (B)

Just in case you're wondering, those Resolution figures are a placeholder and will be adjustable in game for when the player buys a new headset. And a developer I had a chat to a couple of years ago gave me the tip of having 0.8% Resolution just in case I have trouble with keeping a consistent 80fps in my mini games. That way, I can pass the Meta VR Checklist (AKA Standards testing) by having things running at 80% Resolution, if I need to.

And the higher than 1 Resolution option will automatically switch when a Quest 3 is playing the game or when Meta launch a more powerful headset.

So have I forgotten anything? Many thanks in advance for any help!
 
Last edited:
Associate
Joined
13 Jun 2013
Posts
1,764
I'm designing and developing a VR game for the Quest 2/3/Pro atm. It's going to be a VR Arcade simulator with 4 minigames to play, and if I can work out wtf I'm doing I'm planning on having the game compatible with motion simulators.

And I'm currently working out what to put in my Menus.

So I've got a Main Menu, Pause Menu and Options Menu so far.

Is there anything that I've forgotten?

Here's a copy pasta from my notes:

Main Menu

New Game
Load Game
Quit

Pause Menu

Resume (B or Menu Button)
New Game
Load Game
Save Game
Options
Quit

Options Menu

Resume (Menu Button)
Video Options
Sound Options
Comfort Options
Back To Pause Menu (B)

Video Options

Resume (Menu Button)
Resolution 0.8 1 1.1 1.2 1.5
Back To Options Menu (B)

Comfort Options

Resume (Menu Button)
Turn All Comfort Options On
Turn All Comfort Options Off
Snap Turning On/Off
Degrees Of Turning 0/30/45
Fade To Black When Turning On/Off
Vignette When Moving On/Off
Return To Options Menu (B)

Sound Options

Resume (Menu button)
Music Volume
Sound Effects Volume
Back To Options Menu (B)

Just in case you're wondering, those Resolution figures are a placeholder and will be adjustable in game for when the player buys a new headset. And a developer I had a chat to a couple of years ago gave me the tip of having 0.8% Resolution just in case I have trouble with keeping a consistent 80fps in my mini games. That way, I can pass the Meta VR Checklist (AKA Standards testing) by having things running at 80% Resolution, if I need to.

And the higher than 1 Resolution option will automatically switch when a Quest 3 is playing the game or when Meta launch a more powerful headset.

So have I forgotten anything? Many thanks in advance for any help!
That seems like a comprehensive list to my untrained eye. Note I'm no expert, I'm just finishing my 1st app for Quest 3. I struggled a bit with the menu etc. Mine is very simple with not many options. Maybe be aware of not having menu overload with many options (I'm not saying yours does), and have a good structure that makes sense. Consider that a user may have no experience of such an app. Saying all that your menu looks ok to me.
 
Last edited:
Soldato
Joined
19 Dec 2010
Posts
12,031
I'm designing and developing a VR game for the Quest 2/3/Pro atm. It's going to be a VR Arcade simulator with 4 minigames to play, and if I can work out wtf I'm doing I'm planning on having the game compatible with motion simulators.

And I'm currently working out what to put in my Menus.

So I've got a Main Menu, Pause Menu and Options Menu so far.

Is there anything that I've forgotten?

Here's a copy pasta from my notes:

Main Menu

New Game
Load Game
Quit

Pause Menu

Resume (B or Menu Button)
Main menu
Load Game
Save Game
Options


Options Menu


Gameplay

Video Options
Sound Options
Comfort Options
Back To Pause Menu (B)

Video Options

Resolution 0.8 1 1.1 1.2 1.5
Back To Options Menu (B)

Comfort Options

Turn All Comfort Options On
Turn All Comfort Options Off
Snap Turning On/Off
Degrees Of Turning 0/30/45
Fade To Black When Turning On/Off
Vignette When Moving On/Off
Return To Options Menu (B)

Sound Options

Music Volume
Sound Effects Volume
Back To Options Menu (B)

Made some changes to your menu system. You don't need a resume option in every menu. Just at the pause menu. I took out the Quit in the Pause menu as well. And put a Gameplay section in the Options menu. In the Gameplay settings you could have stuff like subtitles, difficulty, accessibility etc.

In the video options are you only planning to have resolution scaling? No refresh rate settings or anything else?
 
Associate
OP
Joined
2 Sep 2008
Posts
292
I totally forgot about the refresh rate! Thanks for pointing that out!

I realised soon after I made my post that the Resolution can be automatically set depending on what headset is playing the game.

With regards to saving the game, I'm not too sure what I'll be doing with it yet.

I'm planning on having RPG elements in some of the minigames, so I'll end up having 4 separate saves, I think, 1 for each minigame, and of course I'll need to save the Options chosen, too.

The game is going to work like this:

When a new game is started or a previous game is loaded, the player is placed in the bar environment.

They then need to walk to the arcade cabinet of the game that they want to play, pick up the VR glasses on the cabinet and pull the VR glasses towards their head, and if no save is available a new minigame is started or if there's a save there from a previous play session, I'll have a menu pop up asking if they want to start a new game or load the save from a previous session. I might even have several save slots, I'm not 100% sure yet.

Thanks for all the help so far, guys!
 
Associate
Joined
13 Jun 2013
Posts
1,764
I totally forgot about the refresh rate! Thanks for pointing that out!

I realised soon after I made my post that the Resolution can be automatically set depending on what headset is playing the game.

With regards to saving the game, I'm not too sure what I'll be doing with it yet.

I'm planning on having RPG elements in some of the minigames, so I'll end up having 4 separate saves, I think, 1 for each minigame, and of course I'll need to save the Options chosen, too.

The game is going to work like this:

When a new game is started or a previous game is loaded, the player is placed in the bar environment.

They then need to walk to the arcade cabinet of the game that they want to play, pick up the VR glasses on the cabinet and pull the VR glasses towards their head, and if no save is available a new minigame is started or if there's a save there from a previous play session, I'll have a menu pop up asking if they want to start a new game or load the save from a previous session. I might even have several save slots, I'm not 100% sure yet.

Thanks for all the help so far, guys!
You made me realise I can automaticallly set the res too depending on the headset used. A resolution slider or something might still be cool though, if it's not too much trouble, I like messing with my games resolution using the Quest Games Optimizer, I'd prefer to do it in game though without needing additional software. My app has been assessed for App Lab and it failed on no privacy policy and the performance not reaching 90 fps in certain situations, I was using 8xMSAA so going to dial that back. Which game engine are u using?
 
Associate
OP
Joined
2 Sep 2008
Posts
292
You made me realise I can automaticallly set the res too depending on the headset used. A resolution slider or something might still be cool though, if it's not too much trouble, I like messing with my games resolution using the Quest Games Optimizer, I'd prefer to do it in game though without needing additional software. My app has been assessed for App Lab and it failed on no privacy policy and the performance not reaching 90 fps in certain situations, I was using 8xMSAA so going to dial that back. Which game engine are u using?

I'm using the Unreal Engine.

Unless Meta have closed that loophole, you can always change the resolution to 80% by default.

I chatted to a developer about doing this when he had similar problems. In a moment of pure inspiration he got around this by changing the resolution to 80%. And Meta/Facebook were fine with it. That was a PC VR title as far as I remember, but if they were allowing it for PC VR I'd assume that they'd be okay with it on the Quest.

Be careful with failed Submissions, unless they've changed the rules, you're only allowed 3 fails.

I can't remember if they ban your game from further Submissions or if they ban your entire studio from further Submissions. I'm also not sure if App Lab games are given extra leeway regarding Submissions, either.

It certainly was the case with Submissions to the Rift Store years ago.
 
Associate
Joined
13 Jun 2013
Posts
1,764
I'm using the Unreal Engine.

Unless Meta have closed that loophole, you can always change the resolution to 80% by default.

I chatted to a developer about doing this when he had similar problems. In a moment of pure inspiration he got around this by changing the resolution to 80%. And Meta/Facebook were fine with it. That was a PC VR title as far as I remember, but if they were allowing it for PC VR I'd assume that they'd be okay with it on the Quest.

Be careful with failed Submissions, unless they've changed the rules, you're only allowed 3 fails.

I can't remember if they ban your game from further Submissions or if they ban your entire studio from further Submissions. I'm also not sure if App Lab games are given extra leeway regarding Submissions, either.

It certainly was the case with Submissions to the Rift Store years ago.
Thanks for the heads up about failed submissions. I'll reduce the anti-aliasing first to see if that helps performance, then try your 80% res hack. Meta said it was dipping to 60 fps at times. It's been good to get feedback on it tbh.
 
Associate
OP
Joined
2 Sep 2008
Posts
292
Thanks for the heads up about failed submissions. I'll reduce the anti-aliasing first to see if that helps performance, then try your 80% res hack. Meta said it was dipping to 60 fps at times. It's been good to get feedback on it tbh.
I think one of the biggest problems with VR development is that Normal Maps are broken, so you need to mitigate that by adding geometry, and that increases your polygon count.

But an even bigger drain on resources is the amount of draw calls.

This can be mitigated by grouping multiple objects together. So for my VR Arcade environment, I've got plenty of tables and chairs. So if I've got 7 tables and 28 chairs, that's 70 draw calls. One draw call for each item of furniture, and one draw call for each texture. And I have 4 arcade cabinets, so that's another 8 draw calls.

But if you group the tables together, group the chairs together and group the arcade cabs together, you have 2 draw calls for the group of tables, 2 draw calls for the group of chairs and 2 draw calls for the group of arcade cabs. So that optimisation has reduced your draw calls from 78 to 6!!!
 
Associate
OP
Joined
2 Sep 2008
Posts
292
You can also try reducing the size and resolution of your textures, too. And add LODs as well. With LODs, the further away you are from an in game model you are, the lower LOD is displayed. And when you get closer the higher LOD is displayed.
 
Associate
Joined
13 Jun 2013
Posts
1,764
I think one of the biggest problems with VR development is that Normal Maps are broken, so you need to mitigate that by adding geometry, and that increases your polygon count.

But an even bigger drain on resources is the amount of draw calls.

This can be mitigated by grouping multiple objects together. So for my VR Arcade environment, I've got plenty of tables and chairs. So if I've got 7 tables and 28 chairs, that's 70 draw calls. One draw call for each item of furniture, and one draw call for each texture. And I have 4 arcade cabinets, so that's another 8 draw calls.

But if you group the tables together, group the chairs together and group the arcade cabs together, you have 2 draw calls for the group of tables, 2 draw calls for the group of chairs and 2 draw calls for the group of arcade cabs. So that optimisation has reduced your draw calls from 78 to 6!!!
I noticed that with Normal Maps! Spent hours & hours trying to solve it, in the end I ditched the material that used Normals. But then changed render pipeline and didn't do a recommended step in getting mixed reality working (iirc didn't remove the Skybox in Unity) and it seems to be ok.

Good idea about the draw calls. I'm only drawing/animating 1 object, an NPC. Will look into LOD's, I've seen the setting in Unity. I have been using/testing my app at 72Hz as I'm ok with lower refresh rates. I'm going to use 90Hz from now on as that's what afaik most people use.
 
Associate
OP
Joined
2 Sep 2008
Posts
292
I noticed that with Normal Maps! Spent hours & hours trying to solve it, in the end I ditched the material that used Normals. But then changed render pipeline and didn't do a recommended step in getting mixed reality working (iirc didn't remove the Skybox in Unity) and it seems to be ok.

Good idea about the draw calls. I'm only drawing/animating 1 object, an NPC. Will look into LOD's, I've seen the setting in Unity. I have been using/testing my app at 72Hz as I'm ok with lower refresh rates. I'm going to use 90Hz from now on as that's what afaik most people use.
If Unity is anything like Unreal, the engine will create the LODs for you. So it's not much work to get it sorted out.

I haven't got any lighting or textures yet so everything is white and with no lights there aren't any shadows.

I'm going to upload a screenshot or two so that you get an idea of what my VR Arcade bar environment looks like.

Everything is REALLY low poly, but I've got Substance Painter and Substance Designer, so when I start work on the textures, hopefully decent looking textures will cover up how pants my models are lol
 
Associate
Joined
13 Jun 2013
Posts
1,764
If Unity is anything like Unreal, the engine will create the LODs for you. So it's not much work to get it sorted out.

I haven't got any lighting or textures yet so everything is white and with no lights there aren't any shadows.

I'm going to upload a screenshot or two so that you get an idea of what my VR Arcade bar environment looks like.

Everything is REALLY low poly, but I've got Substance Painter and Substance Designer, so when I start work on the textures, hopefully decent looking textures will cover up how pants my models are lol
Yeh seeing some screenshots would be cool. There have been some recent VR arcades, I think there's a recent thread on here from ShiWarrior about 1. Interested to see how you are going about this. Edit: i disabled anti-aliasing and my app now runs at 90Hz in almost all situations i tested it and certainly in all typical situations, so all good.

May I pick your brains please? Do u have experience of Oculus/Meta SDK's in changing the res? If so, how do I go about setting different resolutions in code? I'm thinking OVRManager will be used somehow? I think I'd like to offer this to the user. Just something very simple like 80%, 100%, 120%.
Edit: XRSettings.eyeTextureResolutionScale = <scaling factor>; is what i'm after.
 
Last edited:
Associate
Joined
13 Jun 2013
Posts
1,764
I've no idea tbh. In Unreal you change the value of r.RenderResolution if I'm remembering correctly, but don't have a clue how to do that using the SDK.
No problem, I found it last night, it was what my edit to my last post was. I've found the official Oculus/Meta docs etc to have been of great help these last few months.
 
Back
Top Bottom