Tieferes

Spieleprogrammierung und Bugs

Wo Cheat-Möglichkeiten entstehen: in der Spieleprogrammierung selbst. Engine-Architektur, häufige Bugs.

Warum Spiele cheatbar sind

Spiele sind komplexe Softwareprojekte. Die meisten Cheats und Glitches sind nicht durch böse Absicht möglich, sondern durch:

  • Time-to-Market-Druck
  • Komplexe Spielmechaniken
  • Trust-Annahmen zwischen Komponenten
  • Performance-Optimierungen statt Sicherheit
  • Veraltete Codebasen

Game Engine Architektur

Hauptkomponenten

  • Renderer: Grafik-Pipeline (DirectX, Vulkan, OpenGL)
  • Physics Engine: Bewegung, Kollision (Bullet, PhysX)
  • Audio Engine: Sound-Mixing und 3D-Audio
  • Input System: Tastatur, Maus, Controller
  • AI System: NPC-Verhalten
  • Networking: Multiplayer-Kommunikation
  • Scripting: Lua, Python, eigene Sprachen
  • Save System: Spielstand-Speicherung

Game Loop

Zentrales Pattern der Spielentwicklung:

  1. Input lesen
  2. Spielzustand aktualisieren
  3. Physik berechnen
  4. AI updaten
  5. Sound mischen
  6. Frame rendern
  7. Wiederholen (idealerweise 60+ mal pro Sekunde)

Wo Cheat-Möglichkeiten entstehen

Client-Side-Logik

Vieles wird auf dem Client berechnet:

  • Position des Spielers (Manipulationsmöglichkeit: Teleport)
  • Schaden-Berechnungen (Möglichkeit: One-Hit-Kills)
  • Sichtbarkeit (Möglichkeit: Wallhack)
  • Geschwindigkeit (Möglichkeit: Speed-Hack)

Server-Side Validation ist die Lösung, aber rechen-intensiv.

Trust-Annahmen

Code geht davon aus, dass Werte plausibel sind:

  • „Health zwischen 0 und 100“ — aber Memory-Editor setzt auf 9999
  • „Geschwindigkeit unter 10 m/s“ — Cheat setzt auf 1000
  • Keine Plausibilitäts-Checks

Race Conditions

  • Multiple Threads bearbeiten gleichzeitig Daten
  • Bei Glück: Doppel-Items, Geld-Duplication
  • Speedrunner finden das oft

Integer Overflows

  • Werte werden zu groß → wickeln sich um
  • Civilization Gandhi-Bug: Aggressivität auf negativen Wert
  • Items mit negativer Anzahl

Beruehmte Bugs durch Programmierung

Civilization Gandhi-Aggression (Mythos und Realität)

Beliebt erzählt: Gandhi wird in Civ I durch Integer Underflow super aggressiv. Tatsächlich ist die Story komplizierter:

  • Der Bug existierte vermutlich nicht im Original
  • Sid Meier hat das später für Civ V als bewussten Witz eingebaut
  • Wurde zur Internet-Legende

Skyrim Glitches

  • Whirlwind Sprint durch Türen: Sequence Break
  • Bucket auf NPC-Kopf: NPCs sehen nichts mehr, du kannst klauen
  • Smithing-Enchanting-Loop: unendlicher Skill-Boost

WoW Corrupted Blood (2005)

  • Bug bei Boss-Mechanik infizierte Spieler dauerhaft
  • Verbreitete sich wie Pandemie in Hauptstädten
  • Wurde später für epidemiologische Forschung genutzt

Minecraft Far Lands

  • Bei extrem hohen X-Koordinaten: Welt wird kaputt
  • Float-Precision-Problem
  • Eigene „Far Lands“-Mythologie entstanden

Stardew Valley Geist-NPC

  • Bestimmte Aktionen erzeugen unsichtbare NPCs
  • Spieler-Dialoge mit Geistern
  • Speedrunner nutzen das

Memory-Layout und Cheating

Heap-Allokation

Spielobjekte werden im Heap dynamisch angelegt:

  • Pointer auf Player-Object
  • Player-Object hat Health, Position, etc.
  • Cheat-Engine findet diese Adressen
  • Pointer-Chains stabil über Spielstarts

Globale Variablen

  • Bei festen Adressen im Code-Segment
  • Sehr stabil für Cheats
  • Spielzustand-Pointer, Welt-Pointer oft global

VTables

  • C++-Objekte haben Funktionspointer-Tabellen
  • Cheats hooken Funktionen über VTable-Manipulation
  • Beispiel: D3D11-Present-Funktion für Render-Hooks

Multiplayer-Code

Client-Server-Modell

  • Server hat autoritative Wahrheit
  • Clients senden Eingaben
  • Server validiert und sendet Updates zurück
  • Cheats am Client wirkungslos für Server-State

Peer-to-Peer

  • Spieler haben gleiche Rechte
  • Anfällig für Cheats (jeder kann lügen)
  • Oft in alten Spielen, manchen Co-op-Spielen

Hybrid-Modelle

  • Manche Berechnungen Client, andere Server
  • Latency-Kompensation kompliziert
  • Performance vs. Security trade-off

Netcode-Probleme

  • Lag-Compensation: erlaubt „Peeker's Advantage“
  • Tick-Rate: niedrigere Rate → mehr Unfairness
  • Rollback Netcode: in Fighting Games (Guilty Gear)

Scripting-Sprachen in Spielen

Lua

  • WoW Add-ons, viele Indie-Spiele
  • Einfach zu mod-en
  • Schnell, kleine Binary

Papyrus (Bethesda)

  • Skyrim, Fallout 4
  • Eigene Sprache für Quest-Logik
  • Modder können tief eingreifen

UScript / Blueprint (Unreal)

  • Visual Scripting
  • Modding über offizielle Tools
  • Blueprint reverse-engineerbar

Eigene Sprachen

  • Manche Spiele rollen ihre eigene Skript-Sprache
  • Bekannte: Cyberpunk 2077 (REDscript), Witcher 3 (auch RED-Engine)

Save-File-Formate

Text-basiert

  • XML (Stardew Valley)
  • JSON (moderne Indie-Spiele)
  • Lesbar und manipulierbar
  • Einfaches Save-Editing

Binär

  • Custom-Formate
  • Effizienter
  • Schwerer zu editieren, aber mit Tools möglich
  • Bethesda-Format, Sims-Format

Komprimiert/Verschlüsselt

  • ZIP-Pack + interne Dateien
  • Verschlüsselung (XOR oder echte Crypto)
  • Pruefsummen verhindern Manipulation

Game Engines im Vergleich

Unreal Engine

  • C++-basiert
  • Blueprint Visual Scripting
  • Hohe Modding-Möglichkeit
  • Standard für AAA-Studios

Unity

  • C#-basiert
  • .NET-basiert, leicht zu reversieren mit dnSpy
  • Sehr verbreitet bei Indies
  • Anfällig für Mod-Tools

Source Engine

  • Valve-Spiele (Half-Life, CS, Portal)
  • Hochmodifizierbar
  • Mod-Geschichte: Counter-Strike entstand als Mod

Custom Engines

  • Creation Engine: Bethesda
  • RED Engine: CD Projekt
  • Frostbite: EA/DICE
  • id Tech: id Software

Bugs vermeiden in Spielen

QA und Testing

  • Automatisierte Tests
  • Stresstests
  • Closed/Open Beta
  • Player Reports

Sichere Programmierung

  • Input Validation
  • Boundary Checks
  • Server-Side Authority
  • Plausibilitäts-Checks

Bugs in Patches behoben

Spieleentwickler reagieren auf bekannte Bugs:

  • Patches und Hotfixes
  • Day-One-Patch oft schon vorhanden
  • Live-Service-Spiele: kontinuierliche Updates
  • Manche Bugs werden absichtlich gelassen („Feature“)

Cheat-Resistenz im Design

Wie Spieleentwickler Spiele schwerer cheatbar machen:

  • Server-authoritatives Spielmodell
  • Anti-Cheat von Anfang an einbauen
  • Hardware-Attestation
  • Verschlüsselte Werte im Memory
  • Verhaltens-Analyse on-server

IT-Praxis und Web-Entwicklung

Wer sich für die Technik hinter Cheats interessiert, ist oft auch an IT-Sicherheit und Web-Entwicklung interessiert. SEO NW hilft seit 2012.

SEO NW Agentur