Optimizing a large, detailed map?

Hello! I’ve been working on an Assassin’s Creed inspired parkour system for quite a while now. I’m very happy with it so far as it nears completion!

But now I need a playground which can effectively accompany it. A large, varied city with many parkour opportunities which can be approached in a number of ways to keep players engaged by inviting them to take different routes.

So the problem becomes clear; a large city with tons of detail where every prortrusion on any building can be interacted with and used as a handhold will be sure to cause trouble for some devices - particularly low end ones.

Here’s a few examples to get an idea of the level of detail i am aiming for (note that none of these are truly finished yet). Heavily inspired by Damascus from AC1:



So my question is, what approach should I take for optimization? I’ve already ensured that the builds themselves are built as efficient as they can be.

Is Streaming enabled + model LODs my best bet?
Or should I consider making my own system? maybe dividing the map into chunks for example and loading in the high detail versions for the closest ones (old AC took this approach)

Thank you for your time

8 Likes

I use the Streaming enabled feature for my game, it works well. PC users should see map fine, while mobile users will only be able to see a short distance. You can also add a feature for players to remove shadows or/and remove textures in a GUI. Which ever way you want it to be should be fine, just make sure to test it to see which option will look best for your game. Your creation looks amazing as well!

1 Like

im rlly only interested in pc players cause i think making the parkour system work on mobile with all the buttons it needs would be like asking for a miracle :sob:

1 Like

Okay I really had to look into optimization with my current wip build.
Turn off collisions on everything where it isn’t necessary.
I would say the trims too but you did say this is assassins creed so im assuming people will hold onto them.


Change EVERY unions and meshes collisionfidelity to box or hull unless it is required to have preciseconvex
Turn off shadows on everything that doesnt even affect shadows… like at all; such as


I’m not going to circle everything in the images that could have shadows turned off but I’m sure you get it.
You can use future lighting as long as all the lights shadows are off
but you should use shadowmap or voxel

1 Like

yes, certainly! i’ve already been doing most of these things so don’t worry, but admittedly i might have been a bit sparing with it because sometimes a tiny shadow just looked nice…
but thanks for reminding me, i’ll go back and double check everything to make sure it’s all refined as can be

1 Like

Try streaming enabled first. It’s much easier than custom streaming. Bonus is that your code (using CollectionService tags) will most likely still work when you decide it’s necessary to do custom streaming.

Do thorough testing before deciding if streaming isn’t enough. It probably is enough, especially if you only plan to support pc, which is relatively much more performant than mobile or console.

1 Like