Hello there! I am currently working on an RPG and was wondering how big can a map be before I’d have to separate the map into multiple places and if there are any ways I can allow it to be bigger.
The RPG has a focus on exploration and creating unique characters, and having a big map for players to explore without the inconvenience of teleporting to other places to explore the map would make it a better experience especially since I eventually plan to have 50-100 player servers once the map is big enough to support that.
I am well aware of streaming enabled but besides that I was wondering what other methods there were of allowing a map to be really big.
What do you mean by a big map?
Do you mean like a bunch of small maps connected to make a big map overall, or do you mean just one big platform?
If it is just one big platform, you can try resizing the Baseplate in the Workspace.
I mean a massive open world map, not the size of one like Jailbreak, like big enough that it would take a couple of hours to walk from one end to the other.
If you read my post correctly I am asking about how big I can make it before performance becomes a problem and about any methods of allowing it to go bigger without the problems that could appear.
If I find an efficient/good method to, I’d like to implement a system where someone/a guild can take ownership over entire cities and even make their own empires and get things like tax and whatever from them, the plan though is that players will be able to create their own unique characters that can stand out.
Performance depends on the machine and many many factors. How detailed of a world are you going to have? If it’s detailed and also huge, performance could be hit. It also depends on the scripts running and how many players there are. Honestly, I feel like the only way for you to specifically find out is by doing it. I would recommend splitting it between multiple places to allow lower end machines to be able to play like phones and tablet unless you are just being a desktop game. I would also warn against having a huge map because I have seen people advertise a huge map and then have it be lack luster since it’s “huge” but not detailed.
While it’s hard to give an exact estimate on when performance would suffer, It’s good to sort of go into big projects expecting performance hits, and working around that accordingly. The most common method of saving on performance while stuffing detail into a place that I’ve encountered would have to be loading certain taxing visual effects locally. I’ve seen games where the workspace was technically devoid of parts, but the client was able to see an entire world through some sort of replication magic. Some trial and error is definitely needed though. As Badandy11 said, you should definitely experiment with building loftier experiences in order to find the perfect performance/detail middle ground for your particular project. Good luck.
A map that large should have StreamingEnabled property of workspace to help the performance of players. Other then that everything else will just have to be built as best as possible such as using unions for similar objects, meshes, properties (such as having parts anchored and not collideable and transparency).
EDIT: Another thing you can do is lower the default walkspeed of everything in the area to make the map harder / longer to “travel”.
Well the problem with simply lowering the walkspeed would be that the large map promotes the usage of different forms of transport such as a train or even a dragon. Though if it comes down to it I might add in a lod system for foliage, character models, buildings, etc.
I don’t plan to support mobile as they might find it difficult to match a pc player in a battle (The game is planned to require actual skill in combat to win a battle, not just who has the stronger skill set)
I see you do not have a solution yet so I’ll try to pitch in with my tips.
So if I am reading your posts correctly this is what you want:
A large RPG map that still runs smoothly
A map big enough to have multiple empires and cities
A map large enough to not just be for Roblox characters, but dragons, trains, and entire transportation systems.
This is a very ambitious project, I will give my tips. However, be warned, a project this big could take a long time to complete.
1. Proper LOD system
LOD, aka Level of Detail, is basically when the detail level of an object reduces as you get further away from it. It’s useful because far away objects will not need to be as clear as parts right in front of you.
Roblox has LOD features for mesh parts and CSG parts.
And if you use smooth terrain, the new grass also has LOD features I believe.
If you have a good LOD system, players will have an easier time running the game because objects that don’t need to be as clear won’t be. It won’t hurt your game visually much from the player’s perspective.
2. Steaming Enabled
This has been mentioned before on this thread. Before Streaming Enabled, there was a part limit. Not a specific fixed limit, more of a limit we had to place on ourselves. However, with Streaming Enabled, maps can be as big as you want it to be and it will run smoothly because players will only load what they are next too.
The problem? While the players see only fractions of the map, in-studio you see the whole thing. You are going to need a powerful computer to run a game like this in studio.
Also, the game will look cut off, however, I know of a possible solution I will explain below. One thing I am unsure about, and it would be great if someone knew the answer and posted it here, I do not know if large games could still take a while to load up even with Streaming Enabled to get all the parts and instances for the game. However, you can cover this up with a good loading screen.
3. Build and test as you go
Many times the best way to get your answer is to run a test and figure it out your self. Build the map, and as you go keep running tests and test the performance. If you have a low end and high-end PC’s at home, try testing the game on them to see how it runs on various devices with different performance capability.
4. Use small files sizes
This is just something every game developer has to look out for. If your game is going to use a lot of meshes and stuff, hire an experienced modeler. A modeler who is knowledgable and experienced enough to not just know how to model what you want, but also how to make it as small in triangles and file size as possible. A beginner modeler may have the skills to model what you ask for, but you will need someone experienced to understand how to make a high poly model and significantly reduce the polys while maintaining the same look.
For example, say you hire a basic modeler who uses Blender. They may just model it not thinking about efficiency and stuff and end up with a high poly mesh. To reduce it, they may just throw in a decimate modifier and ruin the detail and then give it to you.
An experienced model will form the start to know modeling methods to try to keep it efficiently and properly modeled. From there, if they still have too high poly of a mesh they will maybe go in and manually delete unneeded polys to reduce it while keeping the shape. They will probably try baking the high poly to the low poly. And for experienced modelers the decimate modifier would probably be something at the end of their toolset. When they have done everything else and they just want to reduce it a little bit more, they may throw in a decimate modifier. And then they will send you the model. So yeah, try to keep your mesh file sizes low and keep the poly’s low while still getting the look you want.
5. Fake distant look with parts and fog
I believe that is a great tutorial. You can try using the method in that video but make it all happen within a script so that where ever the player goes they see that kind of never-ending terrain, but since the terrain will move with the player it won’t make the map look bad because the terrain will only take space where the actual map terrain will disappear because of Streaming Enabled.
I did plan on using StreamingEnabled already, I do plan on having an lod system for things such as buildings and characters (buildings would be separated to exterior, interior, etc and characters would be separated to body, equipment, armor, etc)
EDIT: And about your comment that this might take a long time to make, I am well aware of that and plan to release it with a small map then have an update every week for small things and an update every month for big things like new areas and features.
He doesn’t mean something as simple as resizing a baseplate (if it was that simple he would have done it himself) he means a more complex open world map. Probably using terrain.