Ok so if you have read the title, essentially I want to guidance when it comes to extremely large maps. In my game, I want the gameplay loop not to get boring too quickly so I have brainstormed a few ideas although I still feel I could use some insight. Here are some ideas I have had
Decently large map, but the map changes every 24h (realtime) hours. This idea has some flaws though, as lore wise it would be weird to have the map change since there are npcs, some with quests, etc, Despite this being an open world survival game.
Just having the map be really big. 2 Main flaws, the reason I came here too. 1 Being floating point errors, if you know what that is then you can see how that would be an issue. And 2 being it would be bad without level streaming and I’m not good with coding with level streaming.
Last idea I had is that its a still decently large map, big enough but not big enough for floating point bugs, and if you get to the border of the map it like, transports you to another large part of the map essentially removing you from the previous map onto another one, but staying in the same server. I personally don’t like this one too much even though I made it up, It just feels wrong in a way.
Finally, I could just have a regular but large map.
All I ask is for some insight from some more experienced developers and your opinion on this. No idea is wrong, just I am trying to get a specific vibe.
Hey, I’m currently making an infinite game, and I’m pretty sure that massive maps, as you said around 10k studs, should be completely fine. My game’s map starts at Y 5,170, but other segments of the map are wayyy up at Y 5,782, but it all works completely fine.
If your 10k x 10k map starts at 0, 0, 0, you’ll be completely fine, however in testing for my own game, even going up to Y 10,000 is completely fine, only there it starts getting visually messy but physics remain mostly in-tact from a quick test.
Yeah, I get that. I’m still wrapping my head around how content streaming works and am still encountering issues with it myself. But of course, with most things it’s probably not hard to figure out how to script around it, all I’m doing right now is running code on specific objects purely when required and when I KNOW they’ve been loaded, however there’s probably many optimizations I could make, so I’d recommend you doing your own research into streaming as I’m not too reliable with myself still learning.
So you should be fine making a massive map, just not too massive like 100k studs.
Also, small update: I’ve done some research and found CollectionService to be exceedingly useful with content streaming. I’ve already implemented it into my game and so far, its working as far as I can tell, completely flawlessly.
The smallest representable difference (Unit in the Last Place/Unit of Least Precision, ULP) at ~10K for a double precision float (fp64) is approximately 1.82×10^−12, a very small number.
When working with instances in workspace on the client, always assume it won’t be there, build your code around instances being loaded in, or wait for them to exist if you know they should.
This doc should provide some useful info: Instance streaming | Documentation - Roblox Creator Hub
Well even If I use stuff like WaitForChild() and so forth, what if there is say something far away that I need to be loaded in, but it won’t ever say due to the player not being close enough? (Also sorry for late reply)
I dont know what the point of your game is. But i can show an example of game that has a core loop and pretty funny gameplay, it also has large map. And this is Parkour.
Actually its not necessary to go to some locations in parkour. It’s fun to play parkour because you creating the point of the game, but you still have locations to go, and i think this is the main loop.
You just do what you want to. And you creating youre own unique gameplay with movements.
instead of making map big, make it seem big, add vertical layers, caves and stuff like that, make areas denser with trees and assets and at the end add some background terrain to make it feel even bigger, this way you don’t need very big map to make game feel large