Repository navigation
Let themes paint the 3D terrain: material and color slots for custom objects - #1082
Merged
Merged
Conversation
Contributor
Preview the game(s) changed or added in this Pull RequestNo games are changed 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. |
This was referenced Oct 13, 2026
Open
4ian
force-pushed
the
claude/awesome-knuth-vaoj1s
branch
from
October 14, 2026 09:43
b8b5ef0 to
49a896c
Compare
Contributor
Author
|
Rebased on
The starters PRs (#1086, #1087, #1088) and the themeable GTA (#1083) are being rebuilt on top of this, with scattered models for their vegetation. Generated by Claude Code |
4ian
added this pull request to stack #1092
October 14, 2026 11:30
- New slot kinds: "material" (a texture with its normal map) and "color". - A starter maps the properties of a custom object in theme-slots.json: an image to a texture slot, a color to a color slot, or a layer texture to a material slot along with the property taking its normal map. A theme without a normal map for it empties that property. - New slots for the terrain of the starters with a map: terrain.ground, terrain.dirt, terrain.road, terrain.rock, terrain.sand, terrain.pavement, and the colors of the grass blades. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
A custom object property holding a 3D model (like the model of the "Scattered models" object of the 3D terrain extension) can be mapped to a model slot: the theme model replaces it, and the other properties (like the size of the copies) are kept. Custom objects drawing a 3D model must be mapped or ignored in theme-slots.json, like 3D model objects. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
4ian
force-pushed
the
claude/awesome-knuth-vaoj1s
branch
from
October 14, 2026 12:17
49a896c to
6541de0
Compare
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.
Lets the starter themes reach the 3D terrain (and any custom object): its painted layers and the colors of its grass. Needed by the 3D starters "with a map" (#1081 and the ones coming next), whose ground is a
Terrain3Dobject instead of 3D boxes.Goes with GDevelopApp/GDevelop-assets#704 (ground materials and terrain slots in every theme). Merge and deploy this one first: the assets build checks the slots of the themes against the deployed
themeSlots.json. #1083 then makes the GTA with a map themeable.What changed
theme-slots.json:material: a texture with its normal map, for terrain layers.color: a color like52;104;36.terrain.ground,terrain.dirt,terrain.road,terrain.rock,terrain.sand,terrain.pavement(materials), andterrain.grass.base,terrain.grass.tip(colors of the grass blades).theme-slots.json:StarterThemer:checkStarterThemeSlots: custom objects don't have to be mapped, but a mapping must name properties the object has, of the right type (resource or color), and slots of the right kind. Their 3D children (like the terrain'sAreaPlaceholder) still have to be mapped or ignored, as before.How it was tested
scripts/lib/__tests__): 12 new tests for the mapping of custom objects, materials, missing normal maps, colors and the checks.npm test(44 tests) andnpm run check-typespass.checkStarterThemeSlots.Pirate (lush grass, sandy roads, cobblestones), winter (snow, gravel, cobblestones), Halloween (dead leaves, gravel, mossy cobblestones) and city (grass, asphalt, concrete).
Not checked
npm run build) and the deployment to staging: I ran the slot checks and the themer directly on the starters.claude/awesome-knuth-vaoj1s-screenshotsbranch, which only hosts them and isn't meant to be merged.🤖 Generated with Claude Code
https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj