Skip to content

Size theme models by the meaning of their slot - #1126

Open
4ian wants to merge 10 commits into
mainfrom
claude/upbeat-gates-76hmpq
Open

4ian wants to merge 10 commits into
mainfrom
claude/upbeat-gates-76hmpq

Conversation

@4ian

@4ian 4ian commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Theme models took the volume of the placeholder object. Store models are sized as cubes, so tall characters, long trucks and flat props came out much too small or too large. Themed copies now size each model by what its slot means, using the real dimensions the themes publish (GDevelopApp/GDevelop-assets#732).

Changes

  • fit per model slot in theme-slots.json:

    • height: characters, trees;
    • length: vehicles;
    • volume: projectiles, rocks;
    • contain: props and buildings, as large as fits in the object's room, whichever way the model faces.

    This also applies to instances with a custom size and to scattered models. Bundles without real dimensions keep the old volume rule.

  • Character slots also have scale: 1.2. A person is much thinner than the capsule standing for it, so at the same height it looked too small next to cars and buildings.

  • Physics bodies stay the placeholder's. A model fit by its height keeps its placeholder's Physics3D body, scaled to its new height, with the same mass. Otherwise a character's body would include its bind-pose arms, and a tree's its canopy.

  • Slots split by shape: building.house / building.tower, and prop.obstacle (cones) / prop.barrier (barriers, sandbags, containers used as cover). Their descriptions say the shape to pick.

  • Placeholder room. The objects of the flat RTS market and storage, and of the thin FPS gun, are bigger. The placeholders are drawn exactly the same, since a model keeping its proportions is drawn at the largest size that fits its object.

  • A theme can scale a model on purpose (scale, 0.5–2, defined in the assets repo).

  • Size check in the build. It warns, without failing, about models drawn far from their placeholder, one line per starter object. Across all themes and starters it went from 1,590 to 603 warnings. The remaining ones are squarish houses on long lots and pistols in place of a long rifle; none is a model drawn too big.

Before (current main) / after


The preview images are added in one commit and removed in the next, so they don't reach main.

Checks

  • npm test (99 tests), check-types and check-format pass.
  • The starters' own gameplay tests on themed copies (suburb, medieval, downtown; GDevelop 5.6.287):
    • On the 54 copies with physics-driven characters or trees: 136 passed, 11 failed.
    • On the copies I re-ran with main's themer, main also fails 11. 4 are fixed (tank shell in suburb and downtown, FPS horror push-back in suburb, the medieval skeletons), and 4 are new.
    • The new ones come with specific theme assets, which fail the same tests in a sibling starter on main:
      • the medieval cart faces Y, so it drives sideways in GTA (on main too), and the full-size player teleported next to it hits its side;
      • the medieval tree fails harvesting in survival crafting;
      • the downtown enemy fails the push-back in the FPS with enemies.
  • The 6 starters whose object sizes changed pass all their own tests.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GFZnZzotWzU9G5uKtndUsF

…ar from their placeholder

A theme model took the volume of the placeholder object: as the store sizes a
model as a cube, a tall character, a long truck or a flat prop ended up much
too small or too large. Each model slot now says how its model takes the place
of the placeholder (`fit` in theme-slots.json): its height for characters,
trees and grass, its length for vehicles, as large as it fits for the rest.

This uses the real dimensions the themes now publish, and the size of the
placeholder as drawn (read from its .glb), for objects, instances given their
own size and the copies of scattered models. Without the real dimensions, a
model is still sized by volume.

The build reports the models drawn far from their placeholder: a prop of
another shape fit much smaller, a vehicle much broader. They show the
placeholders and slots to fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GFZnZzotWzU9G5uKtndUsF
…t commit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GFZnZzotWzU9G5uKtndUsF
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GFZnZzotWzU9G5uKtndUsF
@github-actions

github-actions Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Preview the game(s) changed or added in this Pull Request


This is an automatic message displaying links to the games in this PR - double check the JSON in case of doubt.

… and size rocks and projectiles by volume

The size check showed what made theme models much smaller than their
placeholder:

- Slots grouping objects of very different shapes. Buildings are now a
  `building.house` (the houses, barns, crypts, the RTS buildings) or a
  `building.tower` (the skyscrapers, the tile tower), and obstacles a
  `prop.obstacle` (the cones) or a `prop.barrier` (the road barriers,
  sandbags and shipping containers used as cover). Slot descriptions say the
  shape a theme should give them.
- Props fit in the drawn placeholder rather than in the room of their object:
  a crate where a thin seed bag was. A model is now fit in its object's size,
  which can be larger than the placeholder on an axis the placeholder does not
  fill without changing the starter (a model keeping its proportions is drawn
  as large as it fits). The flat RTS market and storage, and the thin FPS gun,
  get that room.
- Shapes that vary a lot within a role: projectiles (a ball where a missile
  was) and rocks (a boulder where a flat rock was) now take the volume of
  their placeholder. The trunk collisions of scattered rocks keep their
  diameter whatever the height of the copies, so this also matches the
  collision better.

A theme can also give a model a `scale` (0.5 to 2) to draw it larger or
smaller on purpose: it is applied on top of the fit and not reported.

Across all themes and starters, the models drawn more than 20% off their
placeholder go from 1,590 to about 600: mostly squarish houses on long lots and
pistols in the place of a long rifle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GFZnZzotWzU9G5uKtndUsF
… request (removed in the next commit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GFZnZzotWzU9G5uKtndUsF
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GFZnZzotWzU9G5uKtndUsF
@4ian 4ian changed the title Size theme models by the meaning of their slot, and report the ones far from their placeholder Size theme models by the meaning of their slot, split slots by shape, and report the models far from their placeholder Nov 13, 2026
A person is much thinner than the capsule standing for it in the starters,
and looks smaller at the same height: next to the cars and buildings of a
theme, the characters looked too small. The character slots now have a
`scale` of 1.2, applied on top of their fit. It only changes the themed
copies, and the size check counts it as deliberate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GFZnZzotWzU9G5uKtndUsF
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GFZnZzotWzU9G5uKtndUsF
The 3D physics behavior sizes a body on its own from its object. For a
character, that included the arms of its bind pose, and for a tree its
canopy: a skeleton enemy got a capsule much fatter and heavier than the
placeholder's, and stopped being pushed back by shots or got stuck chasing
the player. A model fit by its height now keeps the body of its placeholder,
scaled like the model, with the same mass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GFZnZzotWzU9G5uKtndUsF
@4ian 4ian changed the title Size theme models by the meaning of their slot, split slots by shape, and report the models far from their placeholder Size theme models by the meaning of their slot Nov 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants