Skip to content

Add the expanded 3D driving, racing, platformer and tank starters - #1086

Open
4ian wants to merge 10 commits into
mainfrom
claude/awesome-knuth-vaoj1s-car-maps
Open

4ian wants to merge 10 commits into
mainfrom
claude/awesome-knuth-vaoj1s-car-maps

Conversation

@4ian

@4ian 4ian commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Adds expanded versions of four 3D starters: the same game, on a map made with the 3D terrain extension, modeled on the 3D GTA Expanded (#1081). The original starters are unchanged.

The expanded starters are named starting-expanded-<starter> and " Expanded": they are more than starters (a map for now, maybe more later), and their slug tells them apart from the starters. The 3D GTA with a map, already on main as starting-3d-grand-theft-auto-with-a-map, is renamed starting-expanded-3d-grand-theft-auto ("3D GTA Expanded"): links to its old slug won't work anymore.

Uses the theme support for custom objects, the terrain.* slots and the model slots for scattered models of #1082 (merged). Based on the latest main.

The starters

Starter Map
starting-expanded-3d-driving — "3D Driving Expanded" 8192 px: a road circuit through fields and a village of houses, climbing a hill, with a shortcut over ramps.
starting-expanded-3d-car-racing — "3D Racing Expanded" 8192 px: a race track with a start straight (grandstands, pits), a climb, hairpins and a descent. The checkpoints follow the track, and laps are counted as before. The checkpoints are flat 3D boxes with the arrow on top, on the track, so they are seen in the scene editor (the sprites of the starter are drawn at z=0, under the terrain); they are still hidden in the game.
starting-expanded-3D-platformer — "3D Platformer Expanded" 6144 px: dirt paths winding up hills, platforms on their tops, coins along the paths, a pond (Water3D).
starting-expanded-3d-tank — "3D Tank Expanded" 6144 px: hills, trenches, craters, ruined walls and dirt tracks. Shells explode on the terrain too.

Each one:

  • is built from the starter as it is on main (so it has the latest fixes and textures of the starter), and keeps its events and gameplay. What changed is only what the map needs: the ground box is replaced by the terrain (with the 3D physics behavior, friction 7 for the cars and the tank like the roads of the starters), the terrain is added to the groups the starter uses for its obstacles (bullet obstacles of the tank), and the racing checkpoints are placed along the track.
  • has its forests, rocks, stones, flowers and mushrooms as scattered models (Terrain3D::ScatteredModels): each object paints copies of a 3D model on the terrain, drawn with GPU instancing in a few draw calls, with its strokes in its Edits property. Trees and rocks the vehicles or the player can hit have trunk collisions (3D physics). Their Model is mapped to the nature.* model slots, so themes change them too. They are in a Nature folder.
  • has mountains around the playable area, and invisible walls at the limits.
  • has its shape in the Edits property of the terrain: raise/flatten/smooth/paint strokes, generated by a script running the terrain code of the extension (and its scatter code, to keep the copies away from the roads, buildings and spawn points).
  • has grass on the whole terrain: one Grass instance covers it. The grass only grows where its layer is painted and on gentle slopes, and it is drawn in chunks of 500 px, the far ones hidden, so covering the whole terrain costs about the same as covering the start.
  • uses ambientCG ground textures with normal maps and CC0 asset-store models credited in its README, with a new project UUID and a preview.png from a 1280×720 screenshot.
  • has the latest version of every extension it uses, from the main branch of the extensions repository (including the empty collision surface of scattered models without trunk collisions, Give scattered models without trunk collisions an empty collision surface GDevelop-extensions#2310).
  • maps its objects to theme slots (theme-slots.json): the terrain layers, the grass colors and the scattered models included.

The pond of the platformer is a Water3D with an opacity of 120, wave crests 231;248;255, foam 0.05, ripples from assets/WaterNormalMap with a size of 600, wave height 2, wave length 150 and wave speed 1.8 (the same settings as the water of #1087 and #1088).

In the platformer, PushableBox and Obstacle are in the Decoration folder; in the tank, the trees are in a Nature folder.

A second commit updates the extensions of two examples already on main to their latest versions: the 3D terrain of the 3D island and of the 3D GTA Expanded (filling holes with a brush, selecting scattered models by clicking them), and ThirdPersonCamera 1.9.0, Collision3D 0.2.1, SpriteMultitouchJoystick 1.9.2 and MousePointerLock 0.3.1 for the island.

A later commit also changes the 3D GTA Expanded: its grass covers the whole terrain (one Grass instance instead of patches), its forests and bushes are in the Nature folder, PushableBox is in the Street folder, and only its tests of the gameplay are kept (see below).

The events of the starters of this pull request, the 3D GTA Expanded included, are unfolded, except the groups (which can stay folded).

Tests

The tests of each starter are kept and run on the map, with tests added for the gameplay the map changes (in bold):

  • Driving: accelerating drives the car forward; running a traffic cone over knocks it away.
  • Racing: accelerating drives the car forward; driving over the finish line counts a lap; passing the 5 checkpoints in order counts a lap.
  • Platformer: jumping with Space; collecting a coin by walking into it.
  • Tank: firing a shell with F; blowing a target away with a shell; a shell explodes on the ground.
  • GTA: the player walks and jumps; the player enters a car and drives it forward.

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):

  • Driving: "The car starts on the road", "The car climbs the road of the hill", "The scattered trees and plants grow on the ground".
  • Racing: "The car starts on the track", "The car climbs the hill of the track", "The scattered trees and plants grow on the ground".
  • Platformer: "The player and the coins start above the ground", "The player walks up a path of a hill", "The scattered trees and plants grow on the ground".
  • Tank: "The tank and the targets start on the ground", "The tank climbs a hill", "The scattered trees and plants grow on the ground".
  • GTA: "The player and the cars start on the ground of the town", "A car climbs the road of the hill", "The forests grow on the ground, away from roads and cliffs", "Trees stop boxes pushed against them, and can be cut", "Trees are added and erased with the brushes of the scene editor", "Holes in the ground are seen through, and let objects fall until they are filled", "A car drives through the tunnel and comes out on the other side, on its wheels", "Clicking a tree in the scene editor selects its forest" (these test the terrain extension, not the game).

The tests render at 160×90 without shadows, with the grass and the scattered models hidden (the software renderer of the tests is slow with instanced models: they still collide), and with a 60 s timeout, since the first frames compile the shaders. All 12 tests pass with node scripts/run-gameplay-tests.js and the latest build of GDevelop's master (the one the CI uses).

Events compared to the starters

What changed in the events of each starter, compared to the starter it expands:

Starter Instructions (starter → expanded) Changes in the events
Driving 0 → 0 None (the starter has no events: the car is moved by its behaviors). The terrain (3D physics) replaces the ground box and the walls; the houses, trees and rocks have static bodies.
Racing 14 → 14 (2 changed) The direction of a checkpoint is its angle (CheckpointArrow.Angle()), instead of a point of the sprite: the checkpoints are 3D boxes.
Platformer 65 → 65 None.
Tank 42 → 42 None. The terrain and the props are in the BulletObstacles group instead of the ground and walls.
GTA (already on main) 114 → 117 A "Tunnel camera" group: in the tunnel, the camera comes closer to the car.

Screenshots

Views of the maps (1280×720, scaled down):

3D Driving Expanded
driving

3D Racing Expanded
racing

3D Platformer Expanded
platformer

3D Tank Expanded
tank

3D GTA Expanded
gta

The checkpoints of the racing, seen from above (shown for the screenshot: they are hidden in the game):
checkpoints

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:

Driving: winter, halloween Racing: city, space
Platformer: pirate, forest Tank: military, winter

Not done / to check

  • The starters are not added to the AI prompts (GDevelop-ai-prompts).
  • npm run build (database) loads every project, then stops in this sandbox when fetching the deployed themes (its axios version can't go through the proxy). The theme slots were checked with checkStarterThemeSlots, and every theme was applied to every new starter, and to the GTA, with applyThemeToStarter.
  • Performance was not measured on a phone.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

@4ian
4ian force-pushed the claude/awesome-knuth-vaoj1s branch from b8b5ef0 to 49a896c Compare October 14, 2026 09:43
@4ian
4ian force-pushed the claude/awesome-knuth-vaoj1s-car-maps branch from 273feba to f01dde5 Compare October 14, 2026 12:16
@4ian
4ian force-pushed the claude/awesome-knuth-vaoj1s branch from 49a896c to 6541de0 Compare October 14, 2026 12:17
@4ian
4ian force-pushed the claude/awesome-knuth-vaoj1s-car-maps branch from f01dde5 to 8391df6 Compare October 14, 2026 13:25
@4ian
4ian changed the base branch from claude/awesome-knuth-vaoj1s to main October 14, 2026 13:47
@4ian
4ian force-pushed the claude/awesome-knuth-vaoj1s-car-maps branch from 8391df6 to 05b6575 Compare October 14, 2026 13:48
Variants of the four 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 (painted copies drawn with GPU instancing). Themeable: the objects,
the terrain layers, the grass colors and the scattered models are mapped
to theme slots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
To the latest versions of the extensions repository: the 3D terrain
(filling holes with a brush, selecting scattered models by clicking them),
and for the island ThirdPersonCamera 1.9.0, Collision3D 0.2.1,
SpriteMultitouchJoystick 1.9.2 and MousePointerLock 0.3.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
@4ian
4ian force-pushed the claude/awesome-knuth-vaoj1s-car-maps branch from 05b6575 to 69477c6 Compare October 14, 2026 17:06
…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 covers the whole terrain (one Grass instance): it only grows
  on its layer and on gentle slopes, and the far chunks are hidden. Also
  in the 3D GTA with a map.
- The pond of the platformer uses the water settings of the other maps:
  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.
- Folders: the trees of the tank are in "Nature"; in the platformer,
  PushableBox and Obstacle are in "Decoration"; in the GTA, the forests
  and bushes are in "Nature" and PushableBox in "Street".
- The tests checking how the map is made (objects starting on the ground,
  climbing a given hill, the copies of the scattered models, the terrain
  extension in the GTA) 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 checkpoint arrows were sprites, drawn at z=0, under the terrain: they
couldn't be seen in the scene editor. They are now flat 3D boxes with the
arrow on their front face (seen from above), on the track. They are still
hidden in the game. Their direction is their angle, instead of a point of
the sprite.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
In the 3D GTA with a map and the starters with folded events on main
(FNaF, GTA, first-person farming, horror, FPS horror, survival crafting,
top-down farming), the events are unfolded: only the groups can stay
folded. Only the "folded" values change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
The events of the starters this pull request doesn't change otherwise
(FNaF, GTA, first-person farming, horror, FPS horror, survival crafting,
top-down farming) are back as they are on main. The 3D GTA with a map,
changed by this pull request, keeps its unfolded events.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
The starters with a map are more than starters (a map for now, maybe
more later): their slug is "starting-expanded-<starter>" instead of
"starting-<starter>-with-a-map", which tells them apart from the
starters, and their name is "<starter name> Expanded" instead of
"<starter name> with a map". The project UUIDs are kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wa8uKpYuQrYqGYnqGCsquj
@4ian 4ian changed the title Add the 3D driving, racing, platformer and tank starters with a map Add the expanded 3D driving, racing, platformer and tank starters Oct 23, 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