champions-of-luneraria/docs/port/logs/u5/player-benchmark-stufen.json
Martin Stickelbroeck 7fa038a147 U5.2 Stufen: Zielqualität entlang der Lanes, einfachere Randzonen
Entscheidung des Projektinhabers vom 2. Oktober 2026: Weg 2 (Stufen)
statt Gleichziehen oder Drosseln. Der Lankorridor trägt die vollen
PBR-Sätze; Berge, Kluft und ferner Hintergrund behalten Farbe und
Steinschicht.

- LuneZones: Korridor von 22 m um eine Lane-Mittellinie, ein Gebäude
  oder die Grotte. NearLane entscheidet die Stufe eines Weltknotens.
- Surface-Shader _Quality: 1 bindet Albedo, Normal und ORM triplanar;
  0 lässt die neun Map-Samples weg und behält Farbe, Vertex-Tönung,
  Steinschicht und Emission — das U2-Aussehen der Berge.
- LuneMaterialFactory: Spec.Quality, TerrainEdge.mat für die umgebenden
  Berge; Randmaterialien binden keine PBR-Sätze.
- LuneWorldBuilder.ApplyTier: jeder Weltknoten jenseits des Korridors
  bekommt _Quality 0 über einen MaterialPropertyBlock. Gebäude,
  Einheiten, Wege, Wasser und der innere Boden bleiben Lane-Stufe.
- Nachweis: screenshots/u5/edge-mountains.png (Randstufe) und
  lane-and-edge.png (Übergang Lane → Rand in einem Bild).
- Leistung (macOS-Player, 116 Einheiten): 133 fps Übersicht, 180 fps
  Mid nah — auf dem Niveau des Slices, weil die Messfenster den
  Korridor sehen. Die Ersparnis liegt in Weitwinkeln und am Rand.
- Tests: EditMode 29/29, PlayMode 13/13, Kerntests 457/457. Keine
  Regeländerung.
- Dokumentation: U5-VISUAL (Entscheidung und Umsetzung), PORT-QA,
  PORT-STATUS, KNOWN-BEHAVIOR-DIFFERENCES.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 17:45:51 +02:00

14 lines
1.5 KiB
JSON

{
"build": "OSXPlayer player, 6000.3.20f1, release",
"device": "Mac17,2; Apple M5; Apple M5",
"graphics_api": "Metal",
"resolution": "1920x1080",
"vsync": 0,
"match": "seed 9 from round 21 (fixture high_wave_21), speed 1x, measured after 10 s of combat",
"windows": [
{"view": "overview (zoom 64)", "frames": 2668, "fps": 133.4, "frame_ms_avg": 7.50, "frame_ms_median": 5.05, "frame_ms_p95": 19.33, "frame_ms_p99": 22.78, "frame_ms_max": 32.58, "frames_over_16_7_ms": 195, "of_them_with_simulation_step": 18, "gc_collections": 28, "simulation_ms_per_frame": 0.119, "views_ms_per_frame": 0.249, "ui_ms_per_frame": 0.086, "units_alive_max": 116},
// timings overview (zoom 64): main thread avg 3.12 / median 3.03 / p95 4.23 ms, render thread avg 3.66 / median 3.66 / p95 4.12 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.37 / median 1.67 / p95 16.62 ms
{"view": "mid lane close (zoom 22)", "frames": 1801, "fps": 180.0, "frame_ms_avg": 5.55, "frame_ms_median": 4.21, "frame_ms_p95": 13.17, "frame_ms_p99": 17.16, "frame_ms_max": 21.57, "frames_over_16_7_ms": 31, "of_them_with_simulation_step": 1, "gc_collections": 10, "simulation_ms_per_frame": 0.055, "views_ms_per_frame": 0.353, "ui_ms_per_frame": 0.078, "units_alive_max": 63}
// timings mid lane close (zoom 22): main thread avg 2.69 / median 2.65 / p95 3.69 ms, render thread avg 3.11 / median 3.07 / p95 3.61 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 2.87 / median 1.37 / p95 10.82 ms
]
}