✦ SPIELWELTENSpace Hero ↗

Bauen und prüfen

Editor: Unity 6000.0.45f1 mit Windows Build Support; maßgeblich ist ProjectSettings/ProjectVersion.txt. Die in Packages/manifest.json und packages-lock.json festgelegten Pakete verwenden. Editor vor Batch-Aufrufen schließen. Tools/Unity.ps1 verhindert konkurrierende Editorstarts für dieses Projekt und meldet Lizenz-, Compiler-, Build- und Testfehler mit Fehlercode. -EditorPath erlaubt einen abweichenden Installationspfad, -TimeoutSeconds begrenzt den jeweiligen Prozesslauf.

./Tools/Unity.ps1 -Action Import
./Tools/Unity.ps1 -Action BuildOriginal
./Tools/Unity.ps1 -Action Prepare
./Tools/Unity.ps1 -Action Validate
./Tools/Unity.ps1 -Action Build -BuildName Campaign-qa

BuildOriginal verwendet unabhängig von der regulären Build-Szenenliste die elf ursprünglichen Szenen. Der Produktionsbuild verwendet Assets/SpaceHero/Scenes/SpaceHero.unity. Prepare richtet die verwaltete Asset-Sammlung und diese Szene ein; vor dem ersten Produktionsbuild und nach neuen Asset-Zuordnungen ausführen. Originale Szenen und Skripte bleiben als Referenz erhalten.

-BuildName Name schreibt nach Artifacts/Name; ohne Angabe ist das Ziel Artifacts/Windows. Zulässig sind Buchstaben, Zahlen, Bindestriche und Unterstriche. Ein eigener Name erlaubt einen neuen Build neben einer älteren geöffneten Fassung. Protokolle liegen datiert in Artifacts/Logs, der Originalbuild in Artifacts/Original. Konkrete Build- und Liefernachweise stehen in DELIVERY.md; die folgenden Befehle beschreiben den reproduzierbaren Prüfweg.

Reguläre Tests und getrennte Profile.

./Tools/Test-Core.ps1
./Tools/Unity.ps1 -Action EditModeTests
./Tools/Unity.ps1 -Action EditModeTests -TestFilter SpaceHero.Tests.FlightFlowTests.VirtualControllerSubmitsMenusAndPausesFlight

Test-Core.ps1 prüft Speicher-, Kampagnen- und Upgraderegeln mit Unitys mitgeliefertem Mono-Compiler ohne Editorstart. Ergebnisse und isolierte Speicherstände liegen in Artifacts/CoreTests/<Lauf>. Die reguläre Unity-Suite startet ohne Grafikgerät und prüft unter anderem echte Tick-/Eingabe-, Missions-, Kollisions- und Speicherabläufe. -TestFilter dient gezielter Fehlersuche; vor Auslieferung die gesamte reguläre Suite ohne Filter ausführen. Explizite GPU-Tests sind darin absichtlich ausgelassen.

Unity-Tests verlangen --spacehero-data; das Skript setzt dafür Artifacts/TestProfiles/<Zeitstempel>. XML-Ergebnisse liegen unter Artifacts, Logs unter Artifacts/Logs. Auch manuelle Windows-Prüfungen mit --spacehero-data "C:/.../frischer-testordner" von echten Spielständen trennen. Ohne diesen Parameter verwendet das Spiel Unitys regulären persistentDataPath und darin ProfilesV2.

GPU-Captures im Batch-Editor.

./Tools/Unity.ps1 -Action OffscreenCheck
./Tools/Unity.ps1 -Action OffscreenCheck -TestFilter SpaceHero.Tests.MotionPresentationTests.CaptureFlightMotion
./Tools/Unity.ps1 -Action OffscreenCheck -TestFilter SpaceHero.Tests.BossMotionPresentationTests.CaptureBossMotion

OffscreenCheck startet einen versteckten Batch-Editor mit GPU-Unterstützung und frischen isolierten Testdaten. Der Standardtest zeichnet Szene und UI über Render Requests in RenderTextures; Bilder liegen im Unterordner Offscreen. Er erfasst Menüs, Missionszustände einschließlich Kristallpassagen/Konvoi/Werft, Bossphasen, Werkstattvorschauen und mehrere Seitenverhältnisse. Die konkreten Dateinamen ergeben sich aus dem jeweiligen Testlauf, nicht aus einer festen Bildanzahl. Automatische Prüfungen erkennen unter anderem Textüberlauf, fehlende Sterne, falsche Schildsegmente, fehlende schwarze Ränder und leere Bilder. Die beiden gesonderten Bewegungstests schreiben Bildfolgen, Positionsdaten und Prüfhinweise nach MotionReview beziehungsweise BossMotionReview.

Diese Tests simulieren schneller als Echtzeit und verwenden teilweise vorbereitete Freischaltungen. Nur für die Aufnahme wird die Overlay-UI einer Kamera gleicher logischer Spielgröße zugeordnet. Untertitel zeigen den aktuellen Spielhinweis, weil Sprachclips dem beschleunigten Ablauf nicht zeitlich folgen. Das belegt Darstellung und Bewegung; eine Sichtprüfung, Windows-Fensterverhalten, Sprache, physische Eingaben und Echtzeitleistung bleiben getrennte Prüfungen.

Sichtbarer Windows-Prüflauf mit Bildern.

./Tools/Run-RenderedCheck.ps1 -BuildName Campaign-qa
./Tools/Verify-RenderedCheck.ps1 -Root "C:/.../Artifacts/RenderedQA/<Lauf>" -RequireShipyardSupplyFlow -RequireExpandedRoutes

Der Launcher startet einen sichtbaren, stummen 1920×1080-Windows-Test mit frischen Profilen unter Artifacts/RenderedQA/<Lauf>. Das Fenster im Vordergrund lassen: Bei Fokusverlust warten Testpilot und Messung. Versteckte Windows-Fenster rendern nicht zuverlässig. Vorige Freischaltungen und Modulstufen sind ausdrücklich Testdaten; die ausgewählten Einsätze laufen über normale Bewegung, Treffer, Scans und Rettung weiter. Anschließend werden Karte und Briefing in 4:3 und Ultrawide aufgenommen. PNGs und Ablaufprotokoll liegen in RenderedCheck, begleitende Messwerte in Performance, der Spielerlog im Laufordner. Der Runtime-Schalter --spacehero-render-check wird ohne frischen getrennten Profilordner zurückgewiesen.

Der Launcher ruft die Basisprüfung Verify-RenderedCheck.ps1 automatisch auf. Sie verlangt bestimmte Zustandsbilder mit passender Größe und Bildvariation sowie plausible 1080p-Messdaten der drei Bosse; sie beurteilt weder Bildqualität noch Performancegrenzen. Den zweiten Aufruf für die erweiterten Nachweise zusätzlich ausführen: -RequireShipyardSupplyFlow verlangt alle Docketappen samt Frachtwarnung und sichtbarer Frachtfahrt. -RequireExpandedRoutes verlangt alle drei Kristallabschnitte, Konvoizustände von Verbindung bis Torabflug einschließlich Warnung/sichtbarem Schrott sowie Vorschauen der drei nächsten Ausbaustufen. Die Pflichtliste steht im Verifier, nicht als feste Zahl hier im Dokument. Dieser Windows-Lauf prüft keine echte Tastatur-/Controllerhardware, keinen Kampagnenstart ohne Freischaltungen und keine Kinderabnahme.

Performance ohne PNG-Aufnahmen.

./Tools/Run-PerformanceCheck.ps1 -BuildName Campaign-qa -MissionIds '1-3','2-3','3-3'
./Tools/Run-PerformanceCheck.ps1 -BuildName Campaign-qa -MissionIds '2-1','3-1','3-2'
./Tools/Verify-PerformanceCheck.ps1 -Root "C:/.../Artifacts/PerformanceQA/<Lauf>" -MissionIds '2-1','3-1','3-2'

Dieser separate sichtbare 1080p-Lauf verwendet eigene frische Profile unter Artifacts/PerformanceQA. Ohne Missionsangabe prüft das Skript 2-3. Es setzt --spacehero-render-check --spacehero-perf --spacehero-no-captures --spacehero-check-missions <kommagetrennte-IDs>. Doppelte/ungültige Einsatznummern werden abgewiesen; die Prüfung ohne Bilder verlangt ausdrücklich aktivierte Performanceaufzeichnung. Ein bereits laufendes SpaceHero-Fenster wird nicht beendet oder verdrängt.

--spacehero-perf erfasst nach 120 Aufwärmbildern je fokussiertem Flugabschnitt monotone Stopwatch-Intervalle zwischen LateUpdate-Aufrufen, zusätzlich Unity-delta, Realtime, UTC-/Frame-/Phasenzuordnung und GC-Zähler. Menüs, Pausen und Fokusverlust beenden einen Abschnitt. JSON-Rohdaten und Kennzahlen liegen unter Performance, korrelierbare Ereignisse unter Performance/Timeline/events.json. Die Stichprobenobergrenze und ihr Erreichen werden im Bericht ausgewiesen; ein abgeschnittener Abschnitt besteht die Performanceprüfung nicht. Berichte werden erst nach dem Abschnitt geschrieben. Begleitmessungen aus PNG-Capture-Läufen ersetzen diese Prüfung nicht.

Der Verifier verlangt abgeschlossene ausgewählte Einsätze, keine PNGs oder Capture-Ereignisse, vollständige Zeitstempel und mindestens einen zusammenhängenden Abschnitt mit 300 Messframes je Einsatz nach Warmup. Die ursprünglichen Standardgrenzen bleiben Mittel mindestens 55 fps, P95 höchstens 25 ms, einzelnes Maximum höchstens 100 ms, berechnet aus den echten Stopwatch-Intervallen. -MinimumAverageFps, -MaximumP95Ms und -MaximumFrameMs machen abweichende Fragestellungen explizit; gelockerte Grenzen gelten nicht als Bestehen der Standardprüfung. -ReportOnly beim Verifier zeigt Daten trotz verfehlter Leistungsgrenzen und ist ebenfalls keine Freigabe. Ausreißer über 50 ms werden mit Phase, Zeitpunkt und GC-Zähleränderungen ausgegeben. Das misst weder GPU-Zeit noch Anzeige-/Eingabelatenz und bestätigt nur die untersuchten Abschnitte auf der getesteten Hardware.

Paket und bestehende Spielstände.

./Tools/Package-Playtest.ps1 -BuildName Name verlangt einen erfolgreichen vollständigen Build, erstellt standardmäßig einen neuen Lieferordner und ein tragbares ZIP im zentralen Ordner C:\Unity Projects\Space Hero - Galactic Reclaimers\Artifacts\Releases (-ReleaseRoot erlaubt einen ausdrücklich gewählten anderen Zielordner), ergänzt Spielanleitung/Testbogen und schreibt SHA-256. Unitys DoNotShip-Debugordner wird ausgeschlossen. Das Skript ersetzt keine ältere Lieferung und löscht keine Dateien. Den Paketinhalt, insbesondere fehlende Testprofile, sowie ZIP-Inhalte gegen den Lieferordner separat prüfen.

Migration: Vorhandene JSON-Dateien aus dem ursprünglichen Ordner Profiles werden nur gelesen. Name und Modulstufen werden übernommen; Schrott ist der größere Wert aus altem money/trash, die im Prototyp nicht konsistent getrennt waren. Die alte Missionshistorie wird archiviert; die neue Kampagne beginnt bei 1-1. Eine stabile Kennung verhindert wiederholtes Importieren. Beschädigte Originale bleiben unverändert.