As a longtime "entertainer" (and I use very heavy air quotes on that word) on the internet, I feel like every time I make some kind of game or video, I have to make sure that it feels as exciting and as real as can be. This time, I might have taken it a bit to far.
I'm working on a game (shh, no spoilers) right now, and I'm trying to include a 3D physical menu in the ROBLOX environment. However, I'm becoming all too aware that ROBLOX contains players with screens of all sizes, anywhere from an iPhone 4 to a 4k Ultra-Wide from LG. This is a problem, because, of course, if you compare the appearance of the exact same camera position on both devices, there is a startlingly large difference.
My first thought is to make the menu be able to scale up and down appropriately. Ignoring the fact that such a function would be a mathematical nightmare (algorithms any more complex than the Pythagorean Theorem set my head spinning), there are a couple of drawbacks to this:
- Latency. Because of the fact that a player can, at any time, re-size their ROBLOX Player window to how they want, a script that auto-sizes the menu would need to do so at a high rate in order to maintain smoothness in transferring. (The minimum smoothness rate would need to be about 1/24th of a second.) Doing anything for multiple players that fast would affect the game, anywhere from minimal to game-crashing depending on the device.
- Scaling, not Sizing. If I designed a 16x9 menu for my game, much like most PC screens and not too bad for most mobile devices, there would still be a major flaw in the design. My menu uses decals and unions, neither of which can have their aspect ratios changed without consequences, so I have to use some form of scaling. The problem arises because while the menu may look nice on my HD 16x9 monitor, it would look sketchy at best on my 800x600 secondary monitor, and it would be wasting a ton of space on a giant Ultra-Wide LG monitor. Sizing would be needed to make the most of the space given.
So that's where I stand. My method is both slow and at some times an eyesore. Do you have any ideas on how I could work my way around this? I'd love to hear them! And now I'm going to bed because I should have been asleep a long time ago.