Adventure Game Studio (AGS) – Handbuch (DE)

Minimalistisches 8-Bit-Retro-Cover für das deutsche Adventure-Game-Studio-Handbuch mit abstrakter Pixel-Grafik und klassischem Point-and-Click-Feeling.

Inhaltsverzeichnis

  1. Grundlagen & Konzepte
  2. Installation & erster Start
  3. Der AGS-Editor: Bereiche & Workflow
  4. Projekt-Setup: Auflösung, Spieloptionen, Templates
  5. Assets: Sprites, Views, Audio, Fonts
  6. Räume (Rooms): Hintergründe, Walkable Areas, Hotspots, Regions
  7. Charaktere: Eigenschaften, Animation, Laufverhalten
  8. Objekte: Platzierung, Interaktionen, Kollision
  9. Inventar: Items, Aufheben, Verwenden, Kombinieren
  10. Dialogsystem: Dialog-Editor, Start, Logik
  11. GUI/Interface: Buttons, Labels, Inventarfenster, Mauszeiger
  12. Skripting: Grundlagen, Events, globale Logik
  13. Cutscenes, Kamera, Übergänge, Effekte
  14. Audio: Musik, Soundeffekte, Sprachausgabe
  15. Speichern/Laden & Spielzustände
  16. Lokalisierung/Übersetzung
  17. Debugging, Logs & typische Fehler
  18. Build & Release: Kompilieren, Paketieren, Testen
  19. Best Practices & Struktur
  20. FAQ & Troubleshooting

↑ Nach oben


1) Grundlagen & Konzepte

1.1 Was ist AGS?

Adventure Game Studio (AGS) ist eine Entwicklungsumgebung für klassische 2D-Point-and-Click-Adventures. Du baust dein Spiel aus Räumen, Charakteren, Objekten, Hotspots, Inventar-Items und GUIs zusammen und steuerst Logik über Scripts.

1.2 Kernbausteine eines AGS-Spiels

Baustein Wofür? Typische Beispiele
Room Szene/Hintergrund + Interaktionszonen Waldlichtung, Küche, Labor
Character Spielerfigur & NPCs player, Wächter, Händler
Object Interaktive Objekte im Raum Tür, Kiste, Hebel
Hotspot Unsichtbare Klickflächen „Baum“, „Boden“, „Fenster“
Inventory Item Gegenstände, die der Spieler trägt Schlüssel, Karte, Seil
GUI Interface-Elemente Inventarleiste, Buttons, Textbox
Script Logik & Ablaufsteuerung Rätsel, Dialogregeln, Cutscenes

Merksatz: In AGS ist fast alles ein „Asset“, aber die Spiel-Logik entsteht aus dem Zusammenspiel von Editor-Einstellungen (Properties/Events) und Skripten.

← Inhaltsverzeichnis


2) Installation & erster Start

2.1 Installation

  1. AGS von der offiziellen Create-Seite herunterladen.
  2. Installer ausführen, Standardpfad ist ok.
  3. Nach der Installation den AGS-Editor starten.

2.2 Erstes Projekt

  1. „Start a new game“ wählen.
  2. Template auswählen (z. B. klassisches Point&Click-Interface).
  3. Spielname und Speicherort setzen.
  4. Projekt öffnet sich automatisch.

← Inhaltsverzeichnis


3) Der AGS-Editor: Bereiche & Workflow

3.1 Projektbaum

Links findest du die Kategorien wie Rooms, Characters, Inventory Items, GUIs, Scripts, Audio. Du öffnest und erstellst Inhalte per Doppelklick bzw. Rechtsklick.

3.2 Properties & Events

Viele Dinge lassen sich rein über Eigenschaften einstellen (z. B. Sichtbarkeit, Basissprite, Skalierung). Interaktionen werden oft über Events gelöst (z. B. Interact, Look at, Use inventory on).

3.3 Typischer Arbeitsablauf

  1. Assets importieren (Sprites, Audio)
  2. Room erstellen + Hintergrund setzen
  3. Walkable Areas/Hotspots/Objekte definieren
  4. Character einrichten + Animation (Views)
  5. GUI/Interface anpassen
  6. Events skripten (Room Script, Global Script)
  7. Testen (F5), Debugging, Iteration

← Inhaltsverzeichnis


4) Projekt-Setup: Auflösung, Spieloptionen, Templates

4.1 Auflösung & Skalierung

Lege früh fest, ob du Pixel-Art (niedrige Auflösung, scharfe Kanten) oder hochauflösende Hintergründe (HD) nutzt. Häufige Setups:

  • 320×200 / 320×240 (retro)
  • 640×360 / 640×480 (modern-retro)
  • 1280×720 (HD)

Tipp: Eine klare Zielauflösung vermeidet spätere Umbauschmerzen bei GUI, Sprites und Walkable Areas.

4.2 Spieloptionen (Game Settings)

  • Spielname, Savegame-Name
  • Textgeschwindigkeit, Untertitel, Speech
  • Maussteuerung (Verb-Cursor vs. Icon-Cursor)
  • Inventory-Layout

4.3 Template-Auswahl

Templates liefern vordefinierte GUIs und Interaktionsstile. Für Anfänger sinnvoll, weil Menü, Inventar und Cursor bereits funktionieren.

← Inhaltsverzeichnis


5) Assets: Sprites, Views, Audio, Fonts

5.1 Sprites importieren

  1. Sprite Manager öffnen
  2. Sprites hinzufügen (PNG empfohlen für Transparenz)
  3. Saubere Benennung/Ordnung: z. B. Ordner nach Kategorie

5.2 Views (Animationen)

Eine View enthält Loops (z. B. Richtungen) und Frames (Einzelbilder). Typisch:

  • Loop 0: nach unten laufen
  • Loop 1: nach links laufen
  • Loop 2: nach rechts laufen
  • Loop 3: nach oben laufen

5.3 Fonts

Für Dialogtexte und GUI-Beschriftungen brauchst du Fonts. Achte darauf, dass Umlaute unterstützt werden. Teste Texte wie „ÄÖÜ äöü ß“ im Spiel.

5.4 Audio importieren

Lege Kategorien an (Music, SFX, Speech) und importiere passende Formate. Für Musik sind komprimierte Formate üblich; SFX können kurz und in hoher Qualität sein.

← Inhaltsverzeichnis


6) Räume (Rooms): Hintergründe, Walkable Areas, Hotspots, Regions

6.1 Room erstellen & Hintergrund setzen

  1. Rooms → Rechtsklick → New Room
  2. Room öffnen → Room Editor
  3. Hintergrundbild importieren

6.2 Walkable Areas (Laufzonen)

Walkable Areas definieren, wo der Spieler laufen darf. Pro Raum kannst du mehrere Areas nutzen (z. B. „Weg“ und „Wiese“).

  • Im Room Editor „Walkable areas“ wählen
  • Fläche zeichnen
  • Optional: Scaling (Figur wird nach hinten kleiner)

6.3 Walk-behind Areas (Hinter-Objekte laufen)

Damit der Spieler z. B. hinter einem Baum verschwindet:

  1. „Walk-behinds“ wählen
  2. Maske über den Baumstamm/Zaun/etc. malen
  3. Baseline prüfen (wo die Figur „dahinter“ sein soll)

6.4 Hotspots (Klickzonen)

Hotspots sind unsichtbare Bereiche mit Namen („Baum“, „Tür“, „Boden“), die du per Maus anklicken kannst.

6.5 Regions (Script-Trigger)

Regions lösen Skriptereignisse aus, z. B. beim Betreten oder für Umgebungslogik (Nebel, Licht, Soundzone).

6.6 Room Script: Die Logik des Raumes

Jeder Raum hat ein eigenes Script, z. B. für Türlogik, Betreten/Verlassen, lokale Variablen.

Beispiel: Beim Betreten eines Raumes Text anzeigen
function room_AfterFadeIn()
{
  Display("Du betrittst den Raum. Es riecht nach feuchtem Moos.");
}

← Inhaltsverzeichnis


7) Charaktere: Eigenschaften, Animation, Laufverhalten

7.1 Character erstellen

  1. CharactersNew Character
  2. Script-Name vergeben (z. B. cBob)
  3. View zuweisen (Animation)

7.2 Wichtige Eigenschaften

Property Beschreibung Tipp
View Animation (Walk/Idle) Sauber strukturierte Loops sparen Zeit
Speed Laufgeschwindigkeit Je nach Raumgröße anpassen
Solid Blockiert andere Für NPCs oft sinnvoll
Clickable Anklickbar NPCs: ja, Deko: nein

7.3 Charakter sprechen lassen

cBob.Say("Hallo! Hast du dich im Wald verirrt?");
player.Say("Vielleicht...");

7.4 Walk & Positionierung

player.Walk(120, 150, eBlock, eWalkableAreas);

Hinweis: Die Parameter variieren je nach AGS-Version/Setup. Im Zweifel nutzt du Autovervollständigung im Script-Editor und die integrierte Hilfe.

← Inhaltsverzeichnis


8) Objekte: Platzierung, Interaktionen, Kollision

8.1 Objekt im Raum platzieren

  1. Room Editor → „Objects“
  2. „Place new object“
  3. Sprite auswählen, Position setzen

8.2 Typische Objekt-Events

  • Interact: Standard-Aktion (z. B. „Benutzen“)
  • Look at: Untersuchen
  • Use inventory on: Item anwenden
Beispiel: Objekt untersuchen
function oKiste_Look()
{
  Display("Eine alte Holzkiste. Sie sieht stabil aus.");
}
Beispiel: Objekt öffnen, wenn Schlüssel im Inventar
function oKiste_Interact()
{
  if (player.HasInventory(iSchluessel))
  {
    Display("Du schließt die Kiste auf.");
    // Beispiel: Item geben
    player.AddInventory(iNotiz);
  }
  else
  {
    Display("Die Kiste ist verschlossen.");
  }
}

← Inhaltsverzeichnis


9) Inventar: Items, Aufheben, Verwenden, Kombinieren

9.1 Inventory Item erstellen

  1. Inventory ItemsNew Item
  2. Sprite setzen, Beschreibung definieren

9.2 Aufheben (Pickup)

function oSchluessel_Interact()
{
  player.AddInventory(iSchluessel);
  oSchluessel.Visible = false;
  Display("Schlüssel erhalten.");
}

9.3 Item verwenden: ActiveInventory

function oTuer_UseInventory()
{
  if (player.ActiveInventory == iSchluessel)
  {
    Display("Der Schlüssel passt!");
    player.ChangeRoom(2, 120, 150);
  }
  else
  {
    Display("Das bringt hier nichts.");
  }
}

9.4 Items kombinieren (Beispielkonzept)

Items kombinierst du oft über „Use item A on item B“ oder über GUI/Custom-Logik. Beispiel: Seil + Haken → Kletterseil.

function iSeil_UseInventory()
{
  if (player.ActiveInventory == iHaken)
  {
    player.LoseInventory(iSeil);
    player.LoseInventory(iHaken);
    player.AddInventory(iKletterseil);
    Display("Du kombinierst Seil und Haken.");
  }
}

← Inhaltsverzeichnis


10) Dialogsystem: Dialog-Editor, Start, Logik

10.1 Dialog erstellen

  1. DialogsNew Dialog
  2. Optionen für den Spieler anlegen
  3. NPC-Antworten und Aktionen definieren

10.2 Dialog starten

function cBob_Talk()
{
  dBobDialog.Start();
}

10.3 Dialogoptionen „sperren“/freischalten

Häufig nutzt man Variablen/Flags: Nach einem Ereignis werden neue Dialogoptionen sichtbar.

bool bobVertraut = false;

function cBob_Talk()
{
  if (bobVertraut) dBobFortgeschritten.Start();
  else dBobStart.Start();
}

← Inhaltsverzeichnis


11) GUI/Interface: Buttons, Labels, Inventarfenster, Mauszeiger

11.1 GUIs verstehen

Eine GUI ist ein Container aus Controls (Button, Label, InventoryWindow …). Typisch sind:

  • Hauptinterface (Unterleiste)
  • Inventarfenster
  • Pause/Options-Menü

11.2 Buttons & Click-Events

function btnInventar_Click(GUIControl *control, MouseButton button)
{
  gInventar.Visible = !gInventar.Visible;
}

11.3 Labels (Textanzeige)

Labels eignen sich für UI-Texte: „Punkte“, „Kapitel“, „Name des aktiven Items“.

11.4 Maus-Modi (Look/Use/Talk)

Je nach Template gibt es Cursor-Modi. In Scripts kannst du den Modus setzen, z. B. beim Klick auf UI-Buttons.

Mouse.Mode = eModeLookat;   // untersuchen
// Mouse.Mode = eModeInteract; // benutzen (je nach Template)

← Inhaltsverzeichnis


12) Skripting: Grundlagen, Events, globale Logik

12.1 Wo schreibe ich Code?

  • Global Script: globale Regeln, Utility-Funktionen, zentrale Events
  • Room Script: raumspezifische Logik (Tür in Raum 1 etc.)
  • Dialog Scripts: Aktionen innerhalb von Dialogoptionen

12.2 Grundsyntax (AGS Script)

  • Funktionen mit function Name()
  • If/Else, Variablen, Rückgabewerte
  • Objekteigenschaften per Punkt: oKiste.Visible

12.3 Wichtige Events (häufig genutzt)

Event Wo? Wann?
game_start Global Script Beim Start eines neuen Spiels
room_Load / room_AfterFadeIn Room Script Beim Betreten des Raums / nach Fade
on_mouse_click Global Script Bei Maus-Klick
on_key_press Global Script Bei Tastendruck

12.4 Beispiel: Spielstart initialisieren

function game_start()
{
  // Spielerstartposition ggf. setzen
  player.ChangeRoom(1, 160, 180);
  Display("Willkommen!");
}

12.5 Beispiel: Ein „Quest-Flag“

bool questBaumUntersucht = false;

function hBaum_Look()
{
  questBaumUntersucht = true;
  Display("Der Baum ist hohl. Du hörst ein leises Kratzen von innen.");
}

12.6 Utility-Funktionen (Ordnung schaffen)

function ShowHintIf(bool condition, String message)
{
  if (condition) Display(message);
}

← Inhaltsverzeichnis


13) Cutscenes, Kamera, Übergänge, Effekte

13.1 Cutscenes (Grundprinzip)

Eine Cutscene sperrt oft Eingaben, spielt Ablauf ab, gibt am Ende Kontrolle zurück. Viele Templates liefern Helferfunktionen, sonst machst du es manuell:

// Pseudokonzept – genaue Funktionen können je nach Setup variieren
player.LockView(...);     // optional
player.Lock();            // Eingaben sperren (je nach AGS-Version/Template)
Display("...");
// Aktionen, Walks, Dialoge
player.Unlock();

13.2 Kamera / Scrolling Rooms

Bei breiteren Räumen kann die Kamera dem Spieler folgen. Achte darauf, dass UI nicht den Spielbereich verdeckt und dass Walkable Areas über die gesamte Breite korrekt sind.

13.3 Fade/Transitions

Übergänge erhöhen die Qualität: Fade-in/out beim Raumwechsel, Sound-Fades, kurze Pausen.

← Inhaltsverzeichnis


14) Audio: Musik, Soundeffekte, Sprachausgabe

14.1 Musik abspielen

aMusicForest.Play();

14.2 Soundeffekte

aSfxPickup.Play();

14.3 Sprachausgabe & Untertitel

Optionen:

  • Nur Text (klassisch)
  • Text + Speech (modern)
  • Speech-only (selten, aber möglich)

Praxis-Tipp: Selbst bei Speech ist Untertitel-Option wichtig (Barrierefreiheit, Komfort).

← Inhaltsverzeichnis


15) Speichern/Laden & Spielzustände

15.1 Savegames

Viele Templates enthalten Save/Load-Menüs. Speichern/Laden ist in Adventures zentral, daher: Teste Savegames regelmäßig (besonders nach Änderungen an Inventar/Variablen/Room-Wechseln).

15.2 Zustände stabil halten

  • Für Rätsel-Status: bool oder int Flags
  • Für Inventar: player.HasInventory(iItem)
  • Für Raumobjekte: Sichtbarkeit, Interaktionsfähigkeit

← Inhaltsverzeichnis


16) Lokalisierung/Übersetzung

16.1 Mehrsprachigkeit

Wenn du mehrere Sprachen planst:

  • Texte zentralisieren (weniger „hart“ im Code)
  • Einheitliche Terminologie (Look/Use/Talk etc.)
  • Umlaute testen, Fonts prüfen

16.2 Textpflege

Schreibe Texte so, dass sie leicht übersetzbar sind: kurze Sätze, wenig Wortspiele in UI-Buttons, klare Variablenbezeichner.

← Inhaltsverzeichnis


17) Debugging, Logs & typische Fehler

17.1 Testen (F5)

Starte häufig, teste nach jeder Logikänderung. Kleine Schritte sparen Zeit.

17.2 Logging

System.Log("Debug: Spieler hat die Kiste angeklickt.");

17.3 Häufige Fehlerquellen

  • Unsichtbare Objekte: Visible=false vergessen zurückzusetzen
  • Walkable Areas: Lücken → Spieler „bleibt hängen“
  • Hotspot/Objekt verwechselt: Event im falschen Element gescriptet
  • ActiveInventory: Logik greift nicht, weil Item nicht aktiv ist
  • Room-Wechsel: falsche Koordinaten → Spieler spawnt außerhalb der Laufzone

← Inhaltsverzeichnis


18) Build & Release: Kompilieren, Paketieren, Testen

18.1 Kompilieren

  1. Build/Compile im Editor ausführen
  2. Ausgabeordner prüfen
  3. Test auf anderem Rechner (wichtig!)

18.2 Release-Checkliste

  • Intro/Outro, Credits
  • Optionen: Lautstärke, Untertitel, Fullscreen/Window
  • Save/Load geprüft
  • Keine Debug-Texte/Logs sichtbar
  • Alle Räume erreichbar? Softlocks?
  • Audio-Lautstärken balanciert

← Inhaltsverzeichnis


19) Best Practices & Struktur

19.1 Namenskonventionen

  • cName für Characters (z. B. cBob)
  • oName für Objects (z. B. oKiste)
  • hName für Hotspots (z. B. hBaum)
  • iName für Inventory (z. B. iSchluessel)
  • gName für GUI (z. B. gInventar)

19.2 Code-Organisation

  • Wiederverwendbare Funktionen in Global Script
  • Raum-spezifische Logik im Room Script
  • „Quest Flags“ zentral sammeln und kommentieren

19.3 Design-Praxis

  • Hotspots großzügig anklickbar machen
  • Feedback geben: „Das geht nicht“ ist ok, aber besser ist „Warum“
  • Rätsel fair: Hinweise, Rückfragen, alternative Wege

← Inhaltsverzeichnis


20) FAQ & Troubleshooting

Warum läuft der Spieler nicht dorthin?
  • Liegt das Ziel außerhalb der Walkable Area?
  • Gibt es „Löcher“ in der Walkable Area?
  • Blockiert ein Solid-Objekt oder Character den Weg?
Warum reagiert ein Objekt/Hotspot nicht?
  • Ist es sichtbar/anklickbar?
  • Ist das Event im richtigen Element (Objekt vs. Hotspot)?
  • Ist der Mausmodus passend (z. B. Look statt Use)?
Warum wird ein Inventar-Item nicht erkannt?
  • Hat der Spieler es wirklich (player.HasInventory(iX))?
  • Ist es das aktive Item (player.ActiveInventory)?
  • Wird es im richtigen Event geprüft (UseInventory vs. Interact)?
Warum sieht die Skalierung komisch aus?
  • Walkable Area Scaling korrekt gesetzt?
  • Sprites haben passende Baseline (Fußpunkt)?
  • Unterschiedliche Sprite-Größen in Animationen vermeiden

↑ Nach oben

Comments

No comments yet. Why don’t you start the discussion?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert