Welcome to the Open Horizon Dev Log! I will post about the progress and development of Open Horizon here, sort of as a time capsule to see how development has been throughout however long I have been working on this project! The posts here can get quite lengthy and so if you have a short attention span I would recommend just skimming through or something.
LOG #2
July 1st 2024 - PBR Materials and Game Performance.
As we all know, the introduction of PBR materials for use in Roblox games has been one of the best additions to the platform as a whole. Giving parts, unions, meshes, and anything alike the ability to have aspects like depth, multiple colors, texture, and image-map based reflectivity which allows these simple pieces to now feel embedded into the atmosphere of the map.
(An image of an in-game PBR surface, showing how light interacts with the material’s texture.)
However, like all good things; there is almost always a caveat. And the biggest caveat with PBR textures is their performance impact. The reason PBR textures have such negative performance impact using VR can be summed up to three main causes:
- How PBR works
- How Roblox works hardware-wise
- How Roblox renders on VR devices
How PBR works on Roblox
To put simply, PBR works by layering multiple image layers (maps) on to a surface. These maps together on a surface give the engine the instructions on how to render the texture of the surface. Non-PBR textures are just images slapped on a surface. Because the game needs to put multiple images on every PBR surface and needs to render light differently on the PBR surface, this is going to of course cause the game to be less performance rich.
How Roblox uses your hardware
To put simply, Roblox barely uses your GPU and RAM. Relying almost entirely on your CPU to process whatever game you are playing on the Roblox platform.
(Open Horizon running on my laptop in non-VR mode. My laptop has a Intel i7 11800H CPU, 64GB of SODIMM RAM, and an RTX 3070 laptop GPU with 6GB of VRAM.)
As seen in the above photo, the Roblox Game Client was only using around 22%-50% of my CPU, 919.4MB of my 64GB of usable RAM, and 28%-54% of my GPU. This isn’t the best for a game like Open Horizon that has a big map and multiple physics objects; also not to forget that when I took a screenshot of these numbers, I was the only one in the game! Little to say, Roblox doesn’t utilize as many resources as it should when running on one’s personal computer with ample resources. I’m almost certain this is because Roblox wants to make sure that all devices, including low end and outdated computers can run on their platform. This of course is all fine and dandy, but what confuses me is why Roblox doesn’t make use of some kind of hardware scaling so higher end computers can make use of more resources; or if they do, why they don’t let the user choose how many resources they want Roblox to be using.
How Roblox renders gameplay to a VR device (PC to Quest 2 over AirLink)
From my knowledge, when you play Roblox on a Quest 2 device on PC (wired or wireless), Roblox renders the game twice on your computer so you can have two slightly different angles for each eye to give the player the illusion of depth (stereoscopic view). The key words here being render and twice. As you can imagine, rendering a game twice while trying to keep the performance in almost the same margin as rendering the game once is not a very good design.
(Open Horizon running on my laptop in VR mode. My laptop has a Intel i7 11800H CPU, 64GB of SODIMM RAM, and an RTX 3070 laptop GPU with 6GB of VRAM.)
When playing Open Horizon in VR mode, a similar set of numbers is shown for the performance margin, my CPU runs between 15%-47%, my RAM consistently stays around 1.1GB - 1.2GB usage, and my GPU only showed almost no difference than from when I played in non-VR mode using 25%-53%.
And this isn’t only my game either; games like OVR Group’s OPPOSER VR (with the blood option turned off), and Mad Vikings Production’s VR Hands v3.1 both showed similar results, using practically the same amount of resources on my laptop.
(All games, including mine, were ran at the max graphics quality Roblox has in it’s menu.)
All this to say, Roblox is very inefficient at running games while VR mode is active. So adding more resource intensive things like PBR textures needs to be done in the right amount where the game looks fine while still being able to handle a large amount of players.
For these reasons, Open Horizon will not feature blood as particles and decals are very resource intensive for the Roblox engine. Most importantly, performance is one of the reasons why Open Horizon is not planned to be playable on Roblox’s official Quest app.
After reading all this, you might be wondering how games are able to run at all when Roblox’s engine is so limiting on VR users. And that’s where the ‘semi-magic’ called “Content Streaming” comes into play.
To put simply in the language of the gaming world, content streaming is Roblox’s version of Minecraft’s “chunk rendering”.
(Open Horizon’s current content streaming options)
A quick run down on the above image, the StreamingMinRadius
number is how much distance from the player the objects in the world will show in full detail, the StreamingTargetRadius
is the full distance (view distance) the player can see in total.
With Open Horizon being an open world FPS, it’s pretty important that the players can’t see each other through walls or when a building is out of a players viewing distance, as players still need to render outside of the StreamingMinRadius
in the instance that a player is using a scoped or high precision weapon. For this reason, StreamOutBehavior
remains on Default
(aka LowMemory
, so the stuff only renders out when the player’s Roblox client deems it’s self as being low on memory.)
Using content streaming, developers can somewhat alter how a game performs, an integral feature for VR games in particular with Roblox’s engine rendering the game twice while using the same amount of resources it would use rendering it once.
I hope this Dev Log update will help put the current state of Open Horizon’s performance situation into the minds of those who wish to be updated as to whats going on in the game’s development. Performance is something I keep updating often to ensure that players can have the best playing experience while playing Open Horizon on the Roblox platform even if some sacrifices need to be made.
Thank you for your time and patience!
-Apt
LOG #1
December 30th 2023 - A Year In! Early Development and The Current State of The Project.
The beginning of the Dev Log! As of me writing this, Open Horizon has been in development for around a year! Never thought I had it in me to actually be dedicated to a project like this for this long.
(The front page of Open Horizon’s Development Build on December 30th 2023)
The project file it’s self is a year old as of the day after Christmas!
Anyway, I want to start off by talking about the current state of development. It’s in an interesting place right now. I have done everything up to this point practically by myself so far, I of course have friends who occasionally give me some support (huge thanks to @Desty_e), but other then that, most of what I have so far is a product of my own work. I do not yet want to show any pictures of the project right now, but to put simply, I have the basic start of a city. Around 7 buildings are finishing completion with about 10 in development. I plan to make a much larger city despite how slow my development is, I have dreams of a Roblox VR game with a city that feels like a city in scale, I want players to get lost in the vast expanses of concrete and large multi-floor structures. That’s all they are right now though, dreams. It has been almost one whole year and I dont even have like 2% of what I want complete. It leaves me with only a few obvious options.
- Hire more builders for the map.
- Decrease the scale of the map significantly.
- Spend more time on the project it’s self.
- Just continue development at the current pace.
Hiring more help for the map sounds like the best option on paper right now, but it comes with an array of issues. The biggest of course being funding, I started this project not wanting to monetize the game at all because of the fact every game on this platform feels like a cash grab and nothing more in the first place. This means I fully expect not to earn any money on this at all, a fruitless endeavor. Because of this, I have no money to spend on more support for building and I have no idea how I would even want to monetize the game even if I did actually want to start making money on it. Apart from the obvious monetary issue that comes with this option, creativity and direction are also one. To put simply, to deviate control of the map’s design over more people would be me splitting control of the finished product away from me, something I’m just not sure I’m ready to do this early in development. It doesn’t help this is literally the first project I have ever seriously worked on so something like this just kinda feels out of my reach right now.
Decreasing the scale of the map also sounds like a pretty good idea, in fact it may even be the most reasonable option here. The only caveat of this one is a pretty obvious one, a less interesting map. I have always envisioned Open Horizon being one large map that gets updates every now and then to keep the gameplay interesting. To explain why decreasing the map doesn’t sound too appealing to me I need to go through a few crucial parts of the game it’s self, specifically the playerbase and scope of the game which I plan to get in to in a bit.
Spending more time is the option I least want to do and is the least possible in my current situation. Open Horizon from the beginning has been about just having fun making a Roblox VR game and nothing more. Of course since the beginning of development the scale of the entire game has increased quite a bit. What was once just a open world VR shooter that takes place in an imaginary region of Michigan has turned into a larger scale open world VR shooter with an in depth player relations system and awesome planned territorial system with a few other planned features including a fully open source custom Roblox VR client. I just feel that if I spend too much time working on this it will begin to feel less like a fun thing I do and more like a chore, completely defeating the purpose of the project in the first place. Not to mention, but as of me writing this, I am a 19 year old dude living in America. I have a life outside of this project and have responsibilities that need to be fulfilled. No matter how much I love this project and what I’m doing in it, I still have a life that goes on. And as I said before, this is a fruitless endeavor, I make no profit doing what I’m doing.
The final option I can think of is just continuing at the pace I am right now. I love working on this game and I’m very excited to see where such a project could possibly lead to or grow with proper care and love given to it. I have no plans to stop development any time soon, but it means full well that this game may not make it to release until years down the line, and who knows what the Roblox climate is going to look like then. A game like mine might not even be appealing to players by then, a big issue for a game that is reliant on it’s multiplayer aspect.
Either way, I’m confident I can find a solution to this by the end of next year, 2024. I have truly found out that I like developing on Roblox Studio, that I’m capable of finally being a part of something bigger then myself! Most importantly, I love the current idea of what Open Horizon is turning out to be!
Next thing I would like to bring up is one that has been discussed somewhat heavily by a few friends and the group of development around Open Horizon. Transportation. On paper just slapping in vehicles to a game like this sounds like a great idea. Gets the job done, self explanatory, works well with the theming of the game. These are all true expect for one VERY crucial thing. This game is a VR game! I think it is known fact that nine times out of ten, driving and VR do not mix. Don’t get me wrong, I have seen it done well even on Roblox, but that’s against the point. Motion sickness is the main issue with adding such a thing. The VR community on Roblox is already quite small as it is. With a map like the one planned for Open Horizon, this driving mechanic would practically be a necessity for anyone playing, this is unfortunately just something a lot of people can’t do, a major hit on a game that already depends on quite a small part of the entire Roblox playerbase to even be playable. So as much as I want to add driving, this just doesn’t seem like something that is logistically possible for such a game unfortunately. However as said before, the Open Horizon map is definitely on the larger side. For quite a few, having to walk the entire map every time you needed to get somewhere just simply would be too boring or too long of a task to partake in, so some kind of travel feature is a necessity for the game if we continue in the direction we are right now. I’m really against fast travel because that feels too limited and too lazy of a feature to add in. What I have been thinking a lot of recently is the “Recall Potions” from the game Terraria. They allow the player to use a physical item to teleport their character back to their spawn location, making the player actually need to find or craft the item needed for a fast travel feature sounds like it’s up the ally of the game we are making. Either way such a feature like traversing the map probably wouldn’t begin development until a large sum of the map is completed so we know what we are working with and can implement the feature correctly in a fun way.
I think this is where I want to end the first Dev Log! I think working on Open Horizon has been a blast so far and has acted very well as a great outlet for my creativity. If you managed to read until the end I would like to say I very much appreciate your time! Thank you!
-Apt