Repositioning village NPCs, Noel's fruit stall, and cutting the load when leaving interiors from 4.7 s to 0.35 s
I moved the guard, Lina and Luka to the spots I'd marked and added Noel's fruit stall and two guards at the east entrance. Leaving an interior used to take 4.7 s to load; keeping the village loaded but disabled cut it to 0.35 s.
I went back over the layout from 157 and marked the spots to fix on screenshots. Six things to fix.
- The gate guard at the starting point goes to the marked spot, and Lina, who was wedged between barrels, moves in front of the inn
- Noel talks about a fruit shop, but there's nothing around. Luka pokes out behind the awning
- Two guards at the east (3 o'clock) entrance
- Loading takes long when entering and leaving interiors, especially when leaving
I measured it: village → guild took about 1.7 s, and guild → village about 4.7 s. On the way out, loading the village scene alone took about 4.1 s.
Screens I built
I turned the green-awning stall next to Luka into Noel's fruit stall. Two tables with two apple baskets, tomatoes, small pumpkins and loose fruit, with a fruit crate beside them. Noel's original line about fruit picked this morning finally matches a stall.
I pulled Luka and the tables forward together (z 7.8 → 7.45) so Luka's head doesn't poke out past the back cloth. With the fruit handed off, Luka's display is now filled with general goods (three jars, bottles, candles) and groceries. Bruno moved to the streetlight on the west side of the road where the opening ends, and Lina moved in front of the foundation wall to the right of the inn's door steps. I found the step positions by measuring with raycasts.
In front of the pair of streetlights by the east bridge, I added two new guards, Otto (orange hair) and Lena (blond). Otto talks about the east bridge and Bruno, and Lena makes excuses for getting caught dozing and talks about Iris, the sword teacher. Otto had blue-gray hair at first, but on screen it was almost impossible to tell apart from Bruno's black, so I changed it to orange.
In editor Play, loading went from about 1.7 s to 0.63–0.86 s going in, and from about 4.7 s to 0.34–0.35 s coming out. Going back and forth between the three buildings leaves exactly one player, one camera and one audio listener, and the player stands exactly at the exit spawn point. Dialogue works for all 12 in the village, 7 in the tavern, 6 in the guild and 1 at the blacksmith. If you go in at night, the indoor night light is 0, and when you come out, 0.6 and the night sky are applied again.
Things I thought about
- Cutting objects doesn't help much. The village scene has 12,204 Transforms (grass 2,554, forest 3,441, buildings 2,209). Even removing the grass and forest in a test copy only cut the load from 4.1 to 2.7 s, roughly half.
- Dropping preloading. Preloading the village while you're indoors did bring the exit down to 2.3 s. But the preload caused a 3-second freeze indoors, so it just moved the cost somewhere else.
- Keeping the village loaded but disabled. When you leave the village, I disable its root objects that were active and load the interior additively. When you come back, I re-enable the village and unload the interior.
- A re-enabled scene doesn't run Start again, so I handle spawn placement, unlocking controls and aligning the camera myself.
- I keep the NPC Animator state, so when the village comes back on, all the idle animations don't restart in sync from the beginning.
- The dialogue manager lets go when disabled and takes over again when re-enabled. The day/night manager sets the character night light to 0 when disabled and reapplies the current time of day when re-enabled.
Rabbit hole: Noel's stall group got deleted
The plaza rebuild deletes prop groups near the origin, and the new stall group happened to be at (0, 0, 0). I fixed it by excluding the stall group by name.
Next up
- The village stays in memory while you're indoors. Not a problem at the current scale
- The village load when you first hit Play (about 4 s) is unchanged. Cutting it would mean switching the grass and forest to instanced drawing
- Measure loading times in a build

