Repository navigation
Conversation
Contributor
4ian
force-pushed
the
claude/awesome-knuth-vaoj1s
branch
from
October 14, 2026 09:43
b8b5ef0 to
49a896c
Compare
4ian
force-pushed
the
claude/awesome-knuth-vaoj1s-more-maps
branch
from
October 14, 2026 12:16
d1d9a1c to
042d988
Compare
4ian
force-pushed
the
claude/awesome-knuth-vaoj1s
branch
from
October 14, 2026 12:17
49a896c to
6541de0
Compare
4ian
force-pushed
the
claude/awesome-knuth-vaoj1s-more-maps
branch
from
October 14, 2026 13:25
042d988 to
a7b178b
Compare
4ian
force-pushed
the
claude/awesome-knuth-vaoj1s-more-maps
branch
from
October 14, 2026 13:48
a7b178b to
77b2733
Compare
Variants of four more 3D starters on maps made with the 3D terrain extension, built from the starters as they are on main, with the latest versions of their extensions. Forests, rocks and plants are scattered models. The lake of the flight and the stream of the RTS are Water3D objects whose edges are under the shore. The RTS units walk with navmesh pathfinding, and two fingers move its camera on touch screens. The RPG player walks on the deck of the bridge, is stopped by the buildings, and is kept out of the trunks and the river by events, without invisible obstacles. 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-more-maps
branch
from
October 14, 2026 17:13
77b2733 to
d91fab9
Compare
…p on main They get the skybox of their starters in the standard cube orientation (#1069). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
…r tests - The grass of the survival and the RPG covers the whole terrain (one Grass instance): it only grows on its layer and on gentle slopes, and the far chunks are hidden. - The water of the flight, the RPG and the RTS: opacity 120, crests 231;248;255, foam 0.05, ripples 600 px, waves 2 px high, 150 px long, at a speed of 1.8. Each keeps its color. - Folders: the scattered trees, rocks and plants of the flight and the survival are in "Nature", their buildings and camp in "Decoration". - The tests checking how the map is made (objects starting on the ground, climbing a given hill, a given mountain, house, tree or river stopping the player, a path around a given hill, the copies of the scattered models) are removed: a game made from the starter changes the map. The tests of the gameplay are kept. - New previews. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
The events moving the player are removed: putting it on the ground, on the deck of the bridge, out of the trunks and the rocks, and back out of the river. The player is a 3D physics character instead of a top-down movement: the 3D physics behavior, the 3D character behavior, and the keyboard (arrows, like the starter) and joystick mappers. It walks on the terrain and on the planks of the bridge (a static body with the shape of its model), and is stopped by static bodies: the buildings, the obstacle of the starter, the trunk collisions of the trees and rocks, the walls at the limits of the map, and new invisible walls along the river banks and the sides of the bridge. The events are those of the starter, except that the dialog deactivates the two mappers instead of the top-down movement, and that the player is no longer separated from the obstacle (its body stops the player). The "Obstacles" group is removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
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.
Adds "with a map" variants of four more 3D starters, on maps made with the 3D terrain extension, modeled on the 3D GTA with a map. The original starters are unchanged.
Uses the theme support for custom objects, the
terrain.*slots and the model slots for scattered models of #1082 (merged). Based on the latestmain. Same approach as #1086 and #1087.The starters
starting-3d-flight-sim-with-a-map— "3D Flight Simulator with a map"starting-first-person-survival-crafting-with-a-map— "3D First Person Survival Crafting with a map"starting-3d-top-down-rpg-with-a-map— "3D RPG with a map"starting-3d-rts-unit-selection-with-a-map— "Top-down RTS (unit selection) with a map"Each variant is built from the starter as it is on
main. What changed in the events is only what the map needs:Terrain.GroundZ(PlayerAircraft.X(), PlayerAircraft.Y()) + 20), and inside the map (a new event clamps its position, with a comment). The lake is a hollow dug in a flat shore; its water (aWater3Dobject, rotated along the lake) is as high as the hollow holds it, and all its edges are under the shore, so the shore draws the outline of the lake (no straight edge, no water above the ground).RaycastSurface, so that items are placed on it. The trees and boulders to gather stay objects; the bushes, berry bushes, plants and flowers are scattered models.Platformer3DKeyboardMapper,Platformer3DMultitouchMapper). It walks on the terrain and on the planks of the bridge (a static body with the shape of its model), and is stopped by static bodies: the buildings, the obstacle of the starter, the trunk collisions of the trees and rocks, the walls at the limits of the map, and invisible walls along the river banks and the sides of the bridge (RiverBank, 10 boxes): the bridge is the only way across. The only changes in the events: the dialog deactivates the two mappers instead of the top-down movement, and the player is no longer separated from the obstacle (its body stops the player). The dialog box keeps the button variants of the starter (OptionButton) through the update ofPanelSpriteButton. The 5 grass models of the starter are now a scattered models object (GrassTufts), asGrassis the terrain grass in the starters with a map. The camera instance is moved above the village.NavMeshPathfinding), instead of the grid pathfinding of the starter with invisible obstacles over the hills and at each tree. The navmesh is built from the terrain (slopes over 22° can't be walked on, so the units go around the hills and stay in the valley), the trunks of the scattered trees and rocks, and the buildings, and it follows the terrain and the forests when they are changed. The units avoid each other (crowd). The destinations are put on the ground (Terrain.GroundZ): the navmesh keeps the units on it. The map being bigger than the screen, the arrow keys (or WASD) move the camera object, clamped above the valley, and the layers look from it every frame. On touch screens, dragging with two fingers moves the camera (the point of the ground between the fingers stays between them, withTouchX/TouchYof the two touches), in a "Two-finger camera drag" group; the touch controls of the starter (tap to move, hold and drag to select) wait until the fingers are lifted. The buildings are Fantasy RTS models where the starter has its impassable boxes. The water boxes of the starter are replaced by aWater3Dobject like the river of the RPG, as high as the shallow stream (the units walk across it), with its edges under the banks.The events of these starters are unfolded, except the groups (which can stay folded).
Each variant has its forests, bushes, rocks and plants as scattered models (
Terrain3D::ScatteredModels, GPU instancing, theirModelmapped to thenature.*model slots, in aNaturefolder), mountains around the playable area (and walls at the limits where the player could climb), its shape in theEditsproperty of the terrain (generated by a script running the terrain and scatter code of the extension), ambientCG ground textures with normal maps, CC0 asset-store models credited in its README, a new project UUID, apreview.pngfrom a 1280×720 screenshot, the latest version of every extension it uses (including GDevelopApp/GDevelop-extensions#2310), and its objects mapped to theme slots.The survival and the RPG have grass on the whole terrain (one
Grassinstance: it only grows where its layer is painted and on gentle slopes, drawn in chunks of 500 px, the far ones hidden). The flight and the RTS, seen from far away, have none.The water of the flight, the RPG and the RTS is a
Water3Dwith an opacity of 120, wave crests 231;248;255, foam 0.05, ripples fromassets/WaterNormalMapwith a size of 600, wave height 2, wave length 150 and wave speed 1.8. Each keeps its color.Tests
The tests of the starters are kept and run on the map, with tests added for the gameplay the map changes (in bold; the flight and RPG starters had none):
Removed, because they check how the map is made, which a game made from the starter will change (they would break as soon as the map is edited):
The tests render at 160×90 without shadows, with the grass and the scattered models hidden, and with a 60 s timeout. All 9 tests pass with
node scripts/run-gameplay-tests.jsand the latest build of GDevelop'smaster(the one the CI uses). Checked apart for the RPG with its 3D physics character, with tests not kept: the arrow keys move the player and it walks up a hill; the river stops it; it crosses the bridge walking on its planks (1 to 5 px above the deck), and the walls along the bridge keep it on the planks; a house, the well, the obstacle of the starter and a tree trunk stop it.Events compared to the starters
What changed in the events of each starter, compared to the starter without a map:
Terrain.GroundZ(...) + 20) instead of above the ground box, and inside the map (a new event clamps its position).RaycastSurfacegroup.MoveTowith the destination on the ground, instead of the grid pathfinding (twice: touch and mouse). The camera: the arrow keys (or WASD) move it (4 events), the "Two-finger camera drag" group (following the two touches and moving the camera, 9 events), and an event keeping it above the valley, the layers looking from it. The touch controls of the starter wait while two fingers drag (a condition).Screenshots
Views of the maps (1280×720, scaled down):
3D Flight Simulator with a map

3D First Person Survival Crafting with a map

3D RPG with a map

Top-down RTS (unit selection) with a map

With themes applied (built from GDevelopApp/GDevelop-assets#704), first view and overview. These were taken before the grass covered the whole terrain and before the new water settings:
Not done / to check
Layer.convertCoordswithout a result point, which crashes on 3D layers (inGDJS/Runtime/layer.ts, the 3D branch passesresultinstead ofposition). With a one-line fix in GDevelop, the starter could use it, but it would then need that version of GDevelop.GDevelop-ai-prompts).npm run build(database) stops in this sandbox when fetching the deployed themes (proxy). The theme slots were checked withcheckStarterThemeSlots, and every theme was applied to every new starter withapplyThemeToStarter.🤖 Generated with Claude Code
https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj