✦ SPIELWELTENMoto Racer - Rampage ↗

RAMPAGE world implementation

Latest change, September 14 at 23:20 Vienna time: the forest background now uses a separate alpine limestone mountain chain, with irregular crests, pale rock walls, scree gullies and lower vegetation. ALPINE-MOUNTAINS.md describes geometry and materials; ALPINE-ASSETS.json records the photographed detail source. Included in the successful Windows rebuild; no new render or game tests were requested or performed. The older forest ridge description below is historical; the desert still uses that earlier heightfield path.

The world systems are in Assets/Rampage/Runtime/World. The integration contract in Docs/INTEGRATION.md is unchanged. All geometry and the pine-branch alpha artwork were authored procedurally for this project. Imported material sources and CC0 notices are recorded in Docs/ASSET-MANIFEST.json and Docs/THIRD-PARTY-NOTICES.md.

Courses and geometry

Course Measured spline length Elevation range Maximum grade
Blackpine Run 3,400.01 m 16.00–68.21 m 10.90%
Red Mesa Rush 3,950.02 m 12.90–57.01 m 6.34%
Neon Harbor 3,100.02 m 7.70–27.75 m 6.36%

Lengths and grades above come from an independent numerical evaluation of the source control points at 120 samples per spline span. All three have zero positional closure error; a 16-segment-per-span crossing check found no planar self-crossings. They are different closed layouts, not biome reskins of one course.

TrackRuntime samples a dense closed Catmull–Rom curve into approximately 2.5 m arc-length intervals. Asphalt, collision, surface queries and banking share these samples. Width is 12 m, with signed curvature banking limited to approximately 5.16 degrees. The start/finish checker and gantry are at 40 m, matching RaceProgress.StartLineDistance; sample distance zero remains the course origin.

Banking measures the turn between horizontally projected tangents, so crests and changing grades do not create unintended bank. The full 3D tangent still determines the road gradient; a nearly vertical projection contributes zero bank. Each segment uses eight 1.5 m strips across its width, reducing the triangle-collider error on changing bank while preserving the sampled road surface and continuous texture scale.

The asphalt collider is on layer 8. Continuous graded shoulders, terrain and environment collisions are on layer 0. A shoulder mesh joins the road edge to a recessed, textured terrain surface, so the coarse terrain grid does not protrude through the carriageway. Terrain normals use shared border samples to prevent chunk lighting seams. The player can steer away from the road; guardrails are physical geometry only at exposed corners and bridges.

Sample(distance) wraps negative and oversized distances. NearestDistance(position, hint) projects onto local line segments; hints accelerate nearby bike queries without moving or constraining the player. LateralOffset(position, distance) measures the signed right-axis offset. Build the track with unit scale; translation/rotation are supported by the public sample/projection APIs.

Environment content

City lamp lenses are accompanied by an eight-light runtime pool. It places real, shadowless 9,000-lumen spotlights at the nearest authored lamp heads, using a 118° cone and 24 m range. Candidate selection runs at 4 Hz in cached arrays, follows the main camera, and fades lights between 120 and 180 m. Exactly eight Light components are created, with no per-frame allocation or streetlamp shadow maps. The application still owns sky, exposure, sunlight, and fog.

Forest ground cover now uses the original 1k photographic alpha atlases from Poly Haven fern_02 and grass_medium_01, with no model downloads. Fern leaves curve through three geometry segments, while grass clumps cross three cards. Noise-based patches vary density along both sides of the road and skip bridge decks. Plants follow the visible shoulder height, avoiding buried tufts on the recessed terrain under the apron. They remain non-colliding and share spatial batches without shadow casting. The photographic maps use alpha cutoff 0.38, matching the root importer's coverage-preserving mipmaps. Exact sources, derived-map processing and hashes are recorded in UNDERGROWTH-ASSETS.json; pine sources are in PINE-TEXTURE-ASSETS.json.

The third city facade style uses the photographed CityBrick material at real brick scale; the other two retain concrete. City asphalt remaps smoothness to 0.62–0.94 with normal strength 0.35 for wet HDRI/SSR reflections. These are material changes only.

CollisionSparks in Runtime/Effects subscribes through Initialize(BikeController) to actual environmental contact events. Hard impacts and side grinds emit 4–12 warm metallic fragments at the reported world contact point; routine rolling does not trigger the effect. Each bike has at most 48 particles, with 0.11–0.30 second lifetimes, an additional 0.08 second burst limit, and no particle collisions, lights or shadow casting. Stretched quads use the existing HDRP/Lit emissive shader combination already retained by MaterialLibrary.GetShaderReferenceMaterials; the public CollisionSparks.RepresentativeMaterial is available for an explicit build reference. Real rendered contact-effect acceptance remains part of integration QA.

Performance and rapid checks

Set these fields before calling Build:

track.Quality = WorldQuality.Medium; // Low=0, Medium=1, High=2
track.RoadsideDetails = true;
track.Landmarks = true;
track.DistantScenery = true;
track.Build(TrackCatalog.All[0], scenery: true);

Build(definition, scenery: false) retains the drivable road, markings, terrain and start gantry while skipping biome construction. Its terrain sampling is coarser for automated race/physics checks. RoadsideDetails=false also omits guideposts and the gantry. Landmarks=false and DistantScenery=false reduce individual scenery passes. Quality changes pine density/detail, building density and distant geometry counts. Apply a changed geometry quality by rebuilding the course; live lighting settings remain the application's responsibility.

Road and terrain are spatially chunked. Decorative meshes are combined by material and 150 m cell so rendering can cull sections. Distant foliage, understory, markings and skyline surfaces omit shadow casting. Near-road tree collisions use capsules; detailed scenery does not require dynamic rigidbodies. Generated meshes are released with the course root when rebuilding or leaving a track. Shared materials and one foliage texture are cached for reuse.

The revised distant mountain belt uses 320 angular × 48 radial cells (30,720 triangles) at Medium/High, with a 160 × 24 Low option. Its smooth world-space height functions blend broad ridges, warped erosion valleys and smaller surface detail. Shared finite-difference normals prevent flat polygon columns; one original landscape-sized albedo field avoids repeated per-face texture patches. The belt starts beyond the road corridor and overlaps the existing outer terrain. It has no gameplay collision. Forest terrain and shoulders share a moss-green tint and continuous world UV coordinates; their geometry remains unchanged.

The earlier generated-atlas forest tree estimate was approximately 0.84 million triangles at the maximum placement count, before clearance rejects: up to 1,184 detailed trees and 230 distant trees. The final photographic sprigs add geometry and alpha coverage; measured full-scene results and their limits are recorded below and in QA-RESULTS.md.

Materials and build references

MaterialLibrary.Get(key, tint, metallic, smoothness) loads optional maps from:

Resources/Textures/{key}_color
Resources/Textures/{key}_normal
Resources/Textures/{key}_mask

The six imported keys are Asphalt, ForestGround, Rock, Sand, Concrete, Bark. Other keys identify untextured shared materials: road paint, steel rails, reflectors, checker black, gantry panels, pine needle variants, dry scrub, architectural glass, occupied windows, shutters, containers, crane paint, rivers/harbor water and service-station finishes. Material colors and scalar properties are part of the cache key.

HDRP normal/mask keywords, double-sided alpha testing and emissive values are configured and then validated through HDMaterial.ValidateMaterial. The HDRP 17.3.0 source included with Unity 6000.3.24f1 confirms that API at Runtime/Material/MaterialExtension.cs:369.

The public MaterialLibrary.GetShaderReferenceMaterials() enumerates representative opaque/textured/metallic/emissive and alpha-cut double-sided variants for the editor build configurator. Save copies as referenced material assets. Pine artwork is created in memory; either persist that texture too, or replace the color map on the saved reference copy with an imported texture while retaining its alpha/double-sided keywords. Runtime materials generate their actual branch texture independently.

Editable scene workflow

Assets/Rampage/Editor/RampageTrackTools.cs adds RAMPAGE/Create authoring scene entries. The root build configurator can call RampageTrackTools.EnsureSceneEntries() to create the missing lightweight scenes and receive their paths:

Existing scenes are preserved. Each course scene contains TrackSceneEntry and a closed Unity SplineContainer. The initial Bezier handles reproduce the catalog's Catmull–Rom curve exactly. Select the child spline and use Unity Splines' knot/tangent tools; both edited knot positions and Bezier handles feed TrackSceneEntry.ResolveDefinition(). Its optional TrackDefinition.SampledCenterline is resampled by the same runtime road system, so the rendered road follows the authored curve. Closed curves need at least four knots; invalid/open authored curves fall back to the catalog course with an inspector warning.

The root application reads TrackIndex, StartRaceOnPlay and IncludeScenery to enter the requested test/race. For a matching scene entry it uses ResolveDefinition() when building the track. Garage and Bootstrap use the usual menu startup. Editing a scene does not mutate the static catalog used for normal menu races.

RAMPAGE/Preview track editor builds a Medium-quality disposable world in the open scene. RAMPAGE/Preview track road only is the faster layout check. The TrackSceneEntry inspector exposes both actions and a catalog-reset button with Undo support. Preview GameObjects and meshes carry DontSave; cleanup runs on clear, scene close, assembly reload and before entering Play. Saving the scene persists the spline and entry only, and Play constructs one fresh runtime world. No large mesh-asset baking is needed.

Verification status

All world runtime C# files, including the revised mountain/pine geometry, and the assigned editor tools passed separate Roslyn compilations against the installed Unity 6000.3.24f1 engine/editor assemblies plus the actual imported HDRP 17.3.0, Splines 2.9.1, Mathematics and Collections assemblies, with no stubs. The root task owns full Unity import/build and integration verification.

The root's initial 2026-09-14 DX12 standalone captures exposed sparse pine crowns and large faceted mountains. Follow-up 18:42 forest and 18:43 desert/city captures confirmed the ridge and canopy revisions, while revealing missing direct streetlamp illumination and overly angular small desert rocks. Those findings led to the bounded light pool and foreground-boulder refinements above. HDRI source and integration details are in SKY-ASSETS.md.

The final art, including photographed pine sprigs, fern/grass patches, CityBrick facades and wet city asphalt, has real standalone captures: Blackpine, 19:11, Red Mesa, 19:12, and Neon Harbor, 19:13. Each directory also contains preview.png, final.png, and its JSON run report. These paths and the curated Blackpine, Red Mesa, and Neon Harbor screenshots were verified to exist. The short capture runs are visual evidence; their screenshot pauses make their frame-time lows unsuitable for normal-play performance acceptance.

Render stability remains unresolved. A later full-forest run encountered a native DX12 GPU timeout; after disabling HDRP asynchronous compute, the first full-forest control run completed two player laps in 136.929 racing seconds at 1920 × 1080 High with eight riders, 59.958 average fps, 58.776 fps 1%-Low, 100% measured render coverage, no reported runtime errors, and no rider crashes. These are CPU frame intervals, not GPU timer measurements. Subsequent runs also failed: that successful control does not establish repeated-run stability or identify the timeout's cause. The root task owns GPU testing; QA-RESULTS.md is the authoritative consolidated status, with the investigation in GPU-DIAGNOSTICS.md.

The requested realistic AAA visual target is not met. Repeated vegetation and buildings, simple terrain forms and incomplete environmental detail remain visible in the actual captures. Successful source compilation, rendered screenshots and functional/performance checks do not constitute visual AAA acceptance.

Forest margin refinement after the 21:16 capture

The actual Blackpine capture at 21:16 showed a broad bare verge, isolated angular brown stones and repeated mature trees. The subsequent main-project changes are confined to Runtime/World/WorldGeometry.cs and Runtime/World/WorldScenery.cs. The isolated Unity 6.6 comparison project under Tools/Downloads/Unity66/Project was not edited.

Forest obstacle rocks now have smoother, asymmetric visual surfaces with continuous metre-scaled UVs and a cooler, darker tint on the existing CC0 Rock maps. Their original ten-sided/four-ring meshes are retained separately for collision, with exactly the same vertex positions and triangle indices. Later primitives sharing those batches are mirrored into the retained collider mesh. Ordinary cliff rocks also have continuous UVs and softened side normals, with unchanged geometry. A finite-difference normal calculation that could normalize a very small vector to zero was corrected for both the new forest rocks and the existing rounded desert rocks; the latter change moves no vertices.

Low grass and photographed fallen-needle cutouts fill irregular patches outside the six-metre road edge. Separate groups combine ferns, grass, small scree, occasional fallen limbs and young pines. These use the existing CC0 pine, fern, grass, bark and rock assets. An independent random stream preserves all mature tree/capsule locations, existing obstacle choices and subsequent landmark placement. The new vegetation, litter and small scree have no collision shapes. Ground anchors follow the rendered apron’s 6/8/14/27-metre linear strips; road and terrain meshes are unchanged.

High quality caps the additional habitat groups at 220 and young pines at 140. An intentionally conservative upper bound, before clearance/probability rejection, is about 150,000 additional habitat/verge triangles plus at most 196,000 triangles for smoother existing forest obstacle rocks. Real geometry will be below that roughly 350,000-triangle bound. Low and Medium use smaller placement caps. All additions join the existing 150-metre/material static batches; no per-plant GameObject, runtime mesh mutation, material property block, custom shader, or GPU buffer was introduced. New low vegetation does not cast shadows. Generated visual and separate collider meshes are both released on course unload.

An offline managed geometry audit using the installed Unity math assemblies checked 64 mixed batches containing primitives before, between and after improved rocks. Every retained collider vertex coordinate and triangle index matched the original geometry exactly. It also checked finite unit normals and finite UVs, including bounded UV offsets for a maximum integer seed. No Unity objects or graphics APIs were invoked by this audit. Full runtime source compilation against Unity 6000.3.24f1 and the imported HDRP assemblies passed with no errors or warnings. Actual rendering, draw-call cost and frame-time validation of this refinement are pending the root task’s next build. Distant hill material uniformity and repeated mature pine silhouettes remain limitations.

Desert and city foreground pass, 14 September 2026

The existing Red Mesa and Neon Harbor captures were reviewed before this pass. They showed isolated rocks on bare sand, repeated canyon columns, blank city ground floors and simple roof silhouettes. The source changes are confined to WorldScenery.cs, WorldGeometry.cs and this document in the main Unity 6.3 project. No scene, lighting, renderer settings, road, checkpoint or neighboring Unity 6.6 project was changed. No Unity editor, standalone player or GPU test was launched for this work.

Desert canyon walls, mesa shoulders and arch buttresses now use continuous eroded sandstone skins: asymmetric flutes, shallow bedding, rounded transitions and varied crowns, with continuous metre-scaled UVs. A hashed existing seed varies the visual silhouette without consuming the placement RNG. Their original rock meshes remain the exact collision shapes, including the original sides/rings, vertices and indices; the arch's overhead collision cylinders are unchanged. At High quality each new large-rock skin has 792 triangles, or 336 at Low. Smaller rounded obstacle boulders retain their geometry. Independent desert groups combine low sandstone chips, irregular gravel beds and dry-tinted grass from the existing photographed CC0 grass atlas. Broken sand ribbons connect the roadside apron to those groups. Ground anchors follow the existing rendered apron; all these new soil/plant details are non-colliding and do not cast shadows.

City buildings have ground-floor glazing, mullions, transoms, varied tenancy-width awnings and fascia, wall servicing, roof parapets, setback service rooms and selective tanks/antennas. Wall-mounted glazing and narrow trim use two-triangle front faces rather than boxes with five hidden faces. Warehouses gain loading-door surrounds, dock bumpers, gutters/downpipes, roof seams and small extraction cowls. Containers retain their existing shells and add corner castings, door hinges, seals, locking handles and original classification-panel graphics. Recessed drain grates and access covers sit on the apron outside the twelve-metre road. All added city geometry is explicitly in non-collision batches; existing building, warehouse, curb, container and infrastructure collision construction is preserved.

The additional geometry is bounded by the authored track lengths and quality settings. Before clearance and probability rejection, the conservative High-quality bounds are under 190,000 additional desert triangles (including roughly 94,100 for improved existing rock skins) and under 250,000 additional city triangles. Desert habitat groups are capped at 180/110/44 for High/Medium/Low. The additions use the existing 150-metre material/shadow/collision batches: new desert details occupy at most four shared material/shadow combinations per occupied cell; city detail uses at most thirteen, many already present in the original city batches. These are source-level batch bounds, not measured frame draw calls; HDRP can submit multiple passes. Existing CC0 maps are reused, with no asset downloads, extra texture sets, custom shaders, property blocks, GPU buffers, per-prop updates or runtime mesh mutation.

The full current runtime source compiled without errors or warnings against the installed Unity 6000.3.24f1 and imported HDRP/package assemblies. An offline managed audit checked 88 mixed collider cases, including all four retained desert rock shapes, both detail levels, negative and extreme integer seeds, small gravel pieces and primitives before/between/after replacement rocks. It validated 275,730 finite vertices, 132,816 nondegenerate triangles, finite unit normals and UVs, exact retained collider coordinates/indices, and outward two-triangle wall panels. A separate source comparison confirmed that twelve existing placement/collision-bearing routines retained every original statement after accounting for the five appended decorative calls and four collision-preserving rock substitutions. The new helper routines never consume the original placement RNG.

Actual rendering and performance validation of this pass remain pending while GPU testing is paused for the user's driver update. The older screenshots do not show these changes. The earlier forest margin refinement is also still awaiting a new accepted render. The requested realistic AAA target remains unmet; terrain material uniformity, repeated base building forms and limited prop variety remain constraints.