Repository navigation
Conversation
…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
Contributor
… 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
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
…ommit) 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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
fitper model slot intheme-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, andprop.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) / afterThe preview images are added in one commit and removed in the next, so they don't reach
main.Checks
npm test(99 tests),check-typesandcheck-formatpass.main's themer,mainalso fails 11. 4 are fixed (tank shell in suburb and downtown, FPS horror push-back in suburb, the medieval skeletons), and 4 are new.main:maintoo), and the full-size player teleported next to it hits its side;🤖 Generated with Claude Code
https://claude.ai/code/session_01GFZnZzotWzU9G5uKtndUsF