0
\$\begingroup\$

I have an overworld with multiple buildings in it. Each building has a separate interior model with ~500 triangles. I was wondering if it would be better for performance to store the interiors in the same scene, and teleport the player to them, or if I should make a new scene for each interior and load that when a player enters the building?

Each have their own drawbacks and challenges, so I was wondering what the general consensus was about the topic.

\$\endgroup\$
3
\$\begingroup\$

Making sure your problem is a problem

First I would just load everything in the same scene all at once and see if that's actually a problem. 500 triangles is tiny for the interior of a building in the context of a modern computer, are you using high-res textures or targeting super low end devices? You might realize everything can be loaded simultaneously and synchronously and avoid these problems altogether.

Ok so there's a (memory) problem

Especially if you're targeting low end mobile devices, memory constraints may pose a problem. In that case you'll only want to load the interior of buildings when you need them.

Seamless 🏠🏡

I would try to intelligently load scenes in place asynchronously and additively first to avoid loading bars and maintain a sense of continuous space. But it depends on what type of game you're making if this is worth the technical complexity of a seamless experience. You could use Scenes to do this, or Asset References (using Asset Bundles).

Loading Bar 🏠 ▓▓▓░░░░░░ 🏡

If immersion and seamlessness aren't particularly important, then progress bars and synchronous loading are the simplest option. Maybe you actually want interiors to be bigger than they appear from the outside, in which case you'll have to do the character teleporting strategy anyways.

\$\endgroup\$
4
  • \$\begingroup\$ I’m not targeting low-end devices but my art style opts for low-poly models and low-res (64x64) textures. When you mention intelligent loading, do you mean like starting to additively load a scene if the player gets within a radius of a loading zone? \$\endgroup\$ Sep 8 at 0:50
  • \$\begingroup\$ In that case I'd be surprised if you couldn't have everything loaded in memory at once if you wanted, if the open-world is really large and you have a lot of interiors, maybe it would make more sense to do more area-based loading (grouping interiors together) than have it be so granular. \$\endgroup\$
    – Charly
    Sep 8 at 0:56
  • \$\begingroup\$ Also yes, that's exactly what I mean by "intelligent". Probably just a radius check would be sufficient in most cases, but depending on your game it could mean any number of strategies. \$\endgroup\$
    – Charly
    Sep 8 at 0:58
  • \$\begingroup\$ About scene adding/removing. Depending on the type of game that approach may require (re)storing of the state of the scenes. And in some cases it may mean a lot of additional work. \$\endgroup\$
    – Nikaas
    Sep 8 at 6:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.