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
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.Terrain.GroundZ(Player.X(), Player.Y())), and separated from a newObstaclesgroup (the starter's building obstacle, the houses, the inn, the blacksmith, the well, the market stand and the walls at the limits of the map). No invisible obstacles at the trees or along the river: events push the player out of the trunks and the rocks, from the position of the nearest copy of the scattered models (NearestCopyX/Y/Distanceexpressions), and put the player back where the ground was dry when it is under the water of the river. The river flows under the bridge, whose deck is at the level of the banks: on it, the player walks on the deck (OnBridgevariable). 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), and the event putting the units on the ground every frame is removed (the navmesh does 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); 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.Each variant has its forests, bushes, rocks and plants as scattered models (
Terrain3D::ScatteredModels, GPU instancing, theirModelmapped to thenature.*model slots), 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, grass only where it is seen up close (none for the flight and the RTS, seen from far away), 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.Tests
The tests of the starters are kept (the flight and RPG starters had none), and tests of the map are added:
The tests render at 160×90 without shadows, with the grass and the scattered models hidden, and with a 60 s timeout. All 23 tests pass with
node scripts/run-gameplay-tests.js(GDevelop 5.6.284).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

The lake of the flight, from the airstrip (behind a hill), the east, the north and the start:
With themes applied (built from GDevelopApp/GDevelop-assets#704), first view and overview:
Not done / to check
TouchX/TouchYrather than the PinchGesture extension: its conversion to the scene crashes on 3D layers (Layer.convertCoordsuses theresultargument it doesn't get, in the 3D branch).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