Einheit 7 / 11

Codegenerierung und Engine-Integration: Unity (C#) und Unreal (Blueprint/C++)

Gewinne:

  • Fähigkeit, zuverlässigen, kompilierbaren Spielcode aus künstlicher Intelligenz zu erstellen, indem Engine, Version, Sprache und Architekturkontext angegeben werden, und ihn durch Lesen und Verstehen des Codes zu integrieren
  • Möglichkeit, spielcodespezifische Leistung (Zuweisung pro Frame), Engine-Lebenszyklus und Halluzinationsrisiken durch Kompilierung, Tests und Profilerstellung zu verwalten
  • Fähigkeit, das Prinzip der Host-Autorität in Multiplayer-Spielen anzuwenden und Sicherheitsinformationen verantwortungsvoll nur zur Verteidigung und Überprüfung des eigenen Spiels zu nutzen.

Das Spiel ist Software; Egal wie gut es entworfen ist, es wird mit Code implementiert. Die Spiel-Engine ist die Infrastruktur, die das Spiel zum Laufen bringt: Unity (weit verbreitete Engine mit Skripten in C#) und Unreal Engine (Engine mit C++ und der visuellen Skriptsprache Blueprint) sind die beiden am häufigsten verwendeten Engines. KI ist eines der ausgereiftesten Hilfsmittel bei der Codegenerierung: Player-Controller, Inventarsystem, Zustandsmaschinen, Speichern/Laden, Schnittstellenlogik, Debugging und Refactoring (Refactoring von Code, ohne sein Verhalten zu beeinträchtigen). Aber Spielcode hat seine eigenen Fallstricke: Leistung (Bildrate), Engine-Lebenszyklus, Multiplayer-Sicherheit. In dieser Einheit erfahren Sie, wie Sie KI sicher und effizient im Spielcode einsetzen.

Kritisches Prinzip: Engine- und Versionskontext

Wenn die KI nicht weiß, für welche Engine und Version sie schreibt, erzeugt sie eine verwirrte, veraltete oder nicht vorhandene API. Geben Sie also in jeder Code-Eingabeaufforderung Engine-, Versions-, Sprach- und Architekturkontext an. „Spielerbewegung für Unity schreiben“ ist schwach; „Unity 2022.3, C#, neues Eingabesystem, Rigidbody-basierte Physikbewegung“ ist leistungsstark. Geben Sie an, ob Sie Blueprint oder C++ in Unreal möchten und welche Version Sie verwenden.

Sicherer Codefluss Schritt für Schritt:

  1. Geben Sie den Kontext an (Engine, Version, Sprache, aktuelle Architektur, Einschränkungen).
  2. Sie möchten, dass es klein und definiert ist (einzelne Komponente, nicht das gesamte System).
  3. Lesen und verstehen Sie den Code (verstehen Sie Zeile für Zeile, was er tut; fügen Sie keinen Code ein, den Sie nicht verstehen).
  4. Erstellen und testen (auf Engine ausführen; Profil – Leistung messen).
  5. Refaktorieren und integrieren (entsprechend dem Projektstandard).
Tipp: Wenn Sie die KI nach Code fragen, sagen Sie „Erklären Sie mit Kommentaren“. Ihr Ziel ist es, den Code zu verstehen; Das Einfügen von KI-Code, den Sie nicht verstehen, in ein Projekt führt zu einer Anhäufung untragbarer Schulden. Fragen Sie auch nach Code in kleinen, testbaren Blöcken: Anstelle eines 500-Zeilen-Systems ist eine 30-50-Zeilen-Komponente, die eine einzelne definierte Aufgabe erledigt, sowohl einfach zu überprüfen als auch zu integrieren.

Spezifische Fallen für den Spielcode

Leistung. Spielcode wird 30–60+ Mal pro Sekunde ausgeführt. KI kann teure Vorgänge (Speicherzuweisung, Suche, String-Manipulation) in die Update-Schleife einbauen, die bei jedem Frame ausgeführt wird; Dadurch verringert sich die Bildrate. Profilieren Sie leistungskritische Codes und geben Sie KI-Einschränkungen vor, z. B. „Auf jedem Frame ausführen, keine Zuweisung“.

Motorlebenszyklus. KI verwirrt manchmal, wenn spezielle Methoden aufgerufen werden, wie z. B. Awake/Start/Update in Unity, BeginPlay/Tick in Unreal. Erkennen Sie Lebenszyklusfehler durch Tests.

Multiplayer-Sicherheit. Dies ist das kritischste Thema im Hinblick auf IT/Sicherheit. Vertrauen Sie niemals dem Client im Mehrspielermodus: Der Client auf dem Computer des Spielers kann zum Betrügen manipuliert werden. Überprüfen Sie kritische Status wie Punkte, Schaden, Geld auf dem Server (serverautorisierend). Kontrollieren Sie den von der KI generierten Netzwerkcode nach diesem Prinzip. Wenn die KI eine Schwachstelle geschaffen hat, die den Client vertrauenswürdig macht, beheben Sie diese. Verwenden Sie diese Informationen nur, um Ihr eigenes Spiel zu verteidigen und zu überprüfen; Der unbefugte Zugriff auf den Server eines anderen oder das Betrügen desselben ist illegal und unethisch.

Achtung: KI-generierter Code kann Schwachstellen enthalten (fehlende Eingabevalidierung, fehlende Client-Vertrauenswürdigkeit, Manipulation von Speicherdateien). Akzeptieren Sie den Code nicht blind; Führen Sie eine Sicherheitsüberprüfung durch, insbesondere des Netzwerks, der Wirtschaftlichkeit und des Speichercodes.

Architektur- und Instandhaltungsschulden

KI stellt einzelne Funktionen schnell her; Aber die Architektur eines Spiels – wie Systeme aufgeteilt sind, wie sie miteinander kommunizieren, wo Daten gespeichert werden – ist eine langfristige Entscheidung und liegt beim Menschen. Wenn man der KI sagt, sie solle „das gesamte Inventar-, Kampf- und Speichersystem zusammenschreiben“, erhält man ein funktionierendes, aber eng gekoppeltes, schwer zu wartendes und nicht erweiterbares Wollknäuel. Stattdessen entwerfen Sie die Architektur und bestücken mithilfe von KI kleine Komponenten mit definierten Schnittstellen. Eine gute Architektur macht einen Unterschied, wenn das Spiel wächst: Schlechte Entscheidungen kommen ein Jahr später als technische Schulden zurück, die jedes neue Feature verzögern.

Eine weitere Quelle für Wartungsschulden ist Code, der unverständlich in das Projekt gelangt. Ein von KI geschriebenes System könnte heute funktionieren; Aber wenn Sie es sechs Monate später ersetzen müssen und sich niemand mehr daran erinnert, was er getan hat, verwandeln sich die Schulden in Zinsen. Deshalb sind zwei Disziplinen unerlässlich: das Lesen und Verstehen des Codes zur Produktionszeit und das Einholen klärender Kommentare von der KI. Als Faustregel gilt: Fügen Sie keinen KI-Code in Ihr Projekt ein, den Sie nicht selbst umschreiben oder zumindest Zeile für Zeile erklären können. KI gibt Geschwindigkeit; Deine Disziplin gibt Nachhaltigkeit.

drei Mini-Koffer

Fall 1 – Der Release-Kontext hat den Fehler verhindert. Ein Programmierer sagte zunächst: „Inventar für Unity schreiben“; Der Code verwendete eine alte API und konnte nicht kompiliert werden. Dann gab es den Kontext „Unity 2022.3, C#, basierend auf ScriptableObject“; Der Code wurde beim ersten Mal kompiliert und passte zum Projekt. Der Kontext hat eine Stunde Debugging eingespart.

Fall 2 – Leistungsfalle. In einem Spiel war die Bildrate niedrig. Bei der Profilerstellung fiel auf, dass eine von der KI erzeugte Update-Methode in jedem Frame eine neue Liste zuordnete und nach Feinden suchte. Der Code mit zwischengespeicherter Referenz und nichtquadratischer Aktualisierung wurde korrigiert und die Bildrate von 42 auf 60 erhöht.

Fall 3 – Sicherheitslücke erkannt. In einem Multiplayer-Spiel berechnete der von der KI generierte Code den Schaden auf dem Client und meldete ihn an den Server; Dies war offen für Betrug (der Kunde konnte unendlich viel Schaden anrichten). Der Code wurde serverautoritär gemacht (der Server berechnet den Schaden). Die Prüfung verhinderte einen Betrugsskandal nach der Veröffentlichung.

Vier kopierbare Vorlagen

1) Codeanforderung mit Kontext:

Motor: Unity 2022.3. Sprache: C#. Architektur: [z.B. komponentenbasiert].Einschränkung: Zuweisung im Update; lesbar und kommentiert sein.Aufgabe: [einzelne, definierte Komponente, z.B. „Doppelsprung-Charakter-Controller“]. Stellen Sie sicher, dass jede von Ihnen verwendete API in dieser Version vorliegt. Wenn Sie sich nicht sicher sind, lassen Sie es mich wissen.

2) Erklärung/Überprüfung des Codes:

Erklären Sie den folgenden Code Zeile für Zeile und schreiben Sie (1) was er tut, (2) mögliche Leistungsprobleme (Zuweisung pro Frame, teure Suche), (3) mögliche Fehler, (4) Verbesserungsvorschläge.Code: [Einfügen]

3) Multiplayer-Sicherheitsaudit:

Überprüfen Sie den folgenden Multiplayer-Code auf Sicherheit. Konkret: Orte, an denen der Client vertrauenswürdig ist, kritischer Zustand, der auf dem Server überprüft werden muss (Schaden, Punkte, Geld), fehlende Eingabevalidierung. Schlagen Sie eine Lösung vor, um den Server autoritär zu machen. Dies dient nur der Verteidigung meines eigenen Spiels. Code: [einfügen]

4) Leistungsprofil-fokussierter Refaktor:

Dieser Code wird in jedem Frame ausgeführt und reduziert die Framerate: [Code]. Finden Sie Zuordnungen, teure Suchvorgänge und unnötige Frame-für-Frame-Vorgänge. Optimieren Sie, ohne das Verhalten zu beeinträchtigen, mit Caching und weniger häufigen Updates. Erklären Sie die Änderungen.

Schwache Eingabeaufforderung / Starke Eingabeaufforderung

Schwache Eingabeaufforderung:

Schreiben Sie ein Speichersystem in Unity.

Keine Version, kein Format, kein Datenumfang, keine Sicherheit; Das Ergebnis ist allgemein und riskant.

Kraftvolle Aufforderung:

Engine: Unity 2022.3, C#. Aufgabe: JSON-basiertes Speicher-/Ladesystem. Zu speichern: Spielerstandort, Inventar, Fortschritt. Einschränkung: Fehlerverwaltung gegen Dateibeschädigung erhalten; Fügen Sie der gespeicherten Datei eine Integritätsprüfung (Hash) hinzu, um Betrug zu verhindern, indem Sie sie einfach durch den Spieler ändern. Kommentieren Sie den Code aus und überprüfen Sie, ob jede API diese Version aufweist.

Versionierung, Umfang, Fehlerbehandlung und Integritätsprüfung sichern die Ausgabe.

Engine-/Sprachkontexttabelle

Motor

Sprache

Was Sie der KI geben müssen

besondere Aufmerksamkeit

Einheit

C#

Version, Eingabe-/Physiksystem

Update-Zuordnung, Lebenszyklus

unwirklich

Blaupause

Version, Knotenkontext

Grenzen der visuellen Logik

unwirklich

C++

Version, Modulstruktur

Speicher, GC, Makros

Mehrspieler

beides

Netzwerkmodell

Präsentator-Autoritarismus

Häufige Fehler

  • Engine/Version wird nicht angegeben. Es kommt von einer veralteten oder erfundenen API.
  • Dem Code vertrauen, ohne ihn zu verstehen. Es häufen sich unhaltbare Schulden.
  • Die Leistung wird nicht gemessen. Durch die Frame-für-Frame-Zuweisung wird die Bildrate stillschweigend reduziert.
  • Dem Kunden vertrauen. Im Mehrspielermodus besteht eine Cheating-Sicherheitslücke.
  • Ich möchte das gesamte System auf einmal haben. Ein kleines, testbares Stück ist sicherer.

Zusammenfassend

KI ist ein leistungsstarker Helfer im Spielcode, erfordert jedoch Engine, Version und Architekturkontext. Fügen Sie es nicht in ein Projekt ein, ohne den Code zu lesen und zu verstehen, ihn zu kompilieren und zu testen sowie Leistung und Sicherheit zu überprüfen. Behalten Sie den Server-Autoritarismus im Mehrspielermodus bei und verwenden Sie Sicherheitsinformationen nur zu Verteidigungs- und Überprüfungszwecken.

Anwendungsaufgabe

Wählen Sie eine kleine Komponente (z. B. Doppelsprung oder einfaches Inventar). Generieren Sie Code, indem Sie Engine und Version mit der Vorlage „Codeanforderung mit Kontext“ bereitstellen. Beseitigen Sie dann Leistungs- und Fehlerrisiken, indem Sie denselben Code mit der Vorlage „Codebeschreibung/-überprüfung“ überprüfen lassen. Kompilieren und testen Sie den Code in der Engine.

Checkliste

  • [ ] Ich habe die Engine, die Version, die Sprache und den Architekturkontext angegeben.
  • [ ] Ich habe den Code gelesen und verstanden; Ich wollte es mit Kommentar.
  • [ ] Ich habe es kompiliert und in der Engine getestet und die Leistung gemessen.
  • [ ] Ich habe eine Sicherheitsüberprüfung im Netzwerk-/Wirtschafts-/Speichercode durchgeführt.
  • [ ] Ich habe Sicherheitsinformationen nur zur Verteidigung meines eigenen Spiels verwendet.