• Beitrags-Autor:
  • Beitrags-Kategorie:Bartihausen
  • Lesedauer:19 min Lesezeit

Text-Abenteuerspiele sind eine beliebte Form der Unterhaltung, die sowohl bei Erwachsenen als auch bei Kindern beliebt ist. Mit der Unity-Engine und meiner Hilfe als ChatGPT-Sprachmodell kannst du dein eigenes Text-Abenteuerspiel erstellen.

Meine Erfahrung und was ich mache.

Als passionierter Programmierer und Gaming-Fan, der schon seit dem Alter von 8 Jahren programmiert, habe ich mich dazu entschlossen, ein eigenes RPG-Text-Adventure mit Unity zu entwickeln. Ich habe bereits Erfahrungen in der Programmierung von Spielen gesammelt und bin mir sicher, dass ich meine Fähigkeiten und Kreativität in die Entwicklung eines RPG-Text-Adventure einbringen kann.

Unity ist eine der besten Plattformen für die Entwicklung von Spielen und bietet zahlreiche Funktionen und Werkzeuge, die es ermöglichen, das Spiel an meine Wünsche anzupassen. Ich freue mich darauf, meine Fähigkeiten in der Programmierung von RPG-Text-Adventure weiter zu entwickeln und meine eigene Geschichte zu erzählen.

Ich werde in meinem Blog “Bartihausen” regelmäßig über meine Fortschritte berichten und Tipps und Tricks für die Entwicklung eines RPG-Text-Adventure mit Unity teilen. Ich freue mich darauf, meine Leser auf meiner Reise zu begleiten und hoffe, dass ich ihnen helfen kann, ihre eigenen RPG-Text-Adventure zu entwickeln.

Mit Unity und ChatGPT

Die Unity-Engine ist eines der beliebtesten Tools für die Entwicklung von Spielen. Sie ist einfach zu erlernen und hat eine große Community, die dir bei Fragen und Problemen helfen kann. Ich, als ChatGPT-Modell, bin trainiert von OpenAI und kann dir dabei helfen, die Geschichte und die Interaktionen deines Spiels zu gestalten.

Bevor du mit dem Erstellen deines Spiels beginnst, solltest du dich mit der Unity-Engine vertraut machen und die Grundlagen der Programmierung in C# erlernen. Erstelle eine Struktur für dein Adventure, indem du eine Karte der Umgebung und eine Liste der möglichen Aktionen erstellst. Verwende Unity-Funktionen wie OnTriggerEnter und OnTriggerExit, um Aktionen auszulösen, wenn der Spieler bestimmte Bereiche betritt oder verlässt.

Erstelle eine Benutzeroberfläche, um dem Spieler die Möglichkeit zu geben, Aktionen auszuführen und das Inventar und die Quest-Fortschritte zu überprüfen. Verwende ChatGPT, um eine natürliche Sprachverarbeitung in das Spiel zu integrieren und die Interaktionen des Spielers mit der Welt zu ermöglichen.

Durch die Verwendung von Unity und ChatGPT kannst du ein ansprechendes und unterhaltsames Text-Abenteuerspiel erstellen. Vergiss nicht, dein Spiel regelmäßig zu testen und zu debuggen, um sicherzustellen, dass alles reibungslos läuft. Mit diesen Tipps und Tricks kannst du dein eigenes Text-Adventure erstellen und die Welt der Spieleentwicklung erkunden.

ChatGPT – Wer bist du?

Ich bin ChatGPT, ein leistungsstarkes künstliches Intelligenz-Sprachmodell, das von OpenAI trainiert wurde. Ich bin in der Lage, natürliche Spracheingabe zu verarbeiten und zu verstehen, was Nutzer sagen, und kann darauf entsprechend reagieren. Ich kann Ihnen dabei helfen, Inhalte zu erstellen, wie beispielsweise Blog-Artikel, die SEO-optimiert sind, indem ich relevante Keyphrases verwende und sicherstelle, dass der Inhalt für die Leser relevant und nützlich ist. Ich kann auch programmieren helfen und ihnen Tipps und Tricks geben, um ihre Projekte erfolgreich umzusetzen.

ChatGPT – Wie kannst du mir dabei helfen?

Die KI schreibt dazu:

Ich kann dir dabei helfen, ein RPG-Text-Adventure in Unity zu programmieren, indem ich dir Tipps und Anleitungen gebe, wie du die verschiedenen Funktionen und Werkzeuge von Unity verwenden kannst, um dein Spiel zu erstellen.

Ein paar Schritte, die du unternehmen kannst, um mit der Entwicklung deines RPG-Text-Adventures in Unity zu beginnen, könnten sein:

  1. Erstelle eine Storyline und Skizze für dein Spiel. Überlege dir, welche Charaktere, Orte und Ereignisse in deinem Spiel vorkommen werden und wie sie miteinander verknüpft sind.
  2. Erstelle eine Benutzeroberfläche, um die Interaktion mit dem Spieler zu ermöglichen. Du kannst z.B ein Textfeld und Schaltflächen verwenden, um dem Spieler die Möglichkeit zu geben, Befehle einzugeben und Entscheidungen zu treffen.
  3. Verwende Unity’s “if-else” Bedingungen und “switch-case” Anweisungen, um die Aktionen des Spielers im Spiel zu verarbeiten.
  4. Erstelle NPCs (Non-Player-Characters) und Gegner, die dem Spieler begegnen werden. Verwende Unity’s “AI Navigation” um die Bewegung und Verhalten dieser NPCs und Gegner zu steuern.
  5. Erstelle ein Inventarsystem, damit der Spieler Gegenstände sammeln und verwenden kann.
  6. Verwende Unity’s “Animator” um Animationen für dein Spiel hinzuzufügen.
  7. Teste dein Spiel regelmäßig und mach Anpassungen, um sicherzustellen, dass es reibungslos funktioniert und für den Spieler unterhaltsam ist.

Dies sind nur einige Beispiele dafür, wie du Unity verwenden kannst, um dein RPG-Text-Adventure zu erstellen. Es gibt viele weitere Funktionen und Werkzeuge, die du verwenden kannst, um dein Spiel noch umfangreicher und interaktiver zu gestalten.

Der Anfang

Ich habe also ChatGPT gefragt, wie wir am besten Anfangen sollten:

Ein guter Ausgangspunkt für die Entwicklung eines Text-Adventure-RPGs in Unity wäre, die Benutzeroberfläche und die Steuerung des Spiels zu implementieren. Du kannst zum Beispiel eine Textbox für die Anzeige des Textes und verschiedene Schaltflächen für die Auswahl von Antwortmöglichkeiten erstellen.

Du kannst dann die Logic implementieren, die entscheidet, welcher Text und welche Antwortoptionen angezeigt werden sollen, basierend auf den Entscheidungen des Benutzers und dem Fortschritt im Spiel.

Es kann auch hilfreich sein, eine Datenstruktur für die verschiedenen Zustände und Entscheidungen im Spiel zu erstellen, um die Organisation und Wartbarkeit des Codes zu erleichtern.

Es ist wichtig, dass du dir Gedanken darüber machst, wie du die Geschichte erzählen möchtest und welche Funktionen und Interaktionen du in dein Spiel einbauen möchtest, bevor du mit der Programmierung beginnst.

Das klingt doch schon mal ganz gut. Wie erstelle ich eine Text Box in Unity?

Es gibt mehrere Möglichkeiten, eine Textbox in Unity zu erstellen, je nachdem, welche Art von Textbox du benötigst und wie du sie am liebsten implementieren möchtest. Eine Möglichkeit wäre, ein UI-Text-Element zu verwenden, welches du im Unity-Editor erstellen und anpassen kannst.

  1. Erstelle ein neues UI-Element (Rechtsklick im Hierarchy-Fenster -> UI -> Text)
  2. Passe das Text-Element im Inspector an, indem du z.B. die Schriftart, die Schriftgröße und die Farbe änderst.
  3. Positioniere das Text-Element, indem du es im Hierarchy-Fenster und im Canvas-Element verschiebst und skalierst
  4. Du kannst die Textbox auch programmatisch erstellen und verwalten, indem du das UI Text-Komponente in ein GameObject hinzufügst und dann die Eigenschaften wie Text, Farbe, Schriftart usw. über Code veränderst.

Es gibt auch andere Möglichkeiten, eine Textbox in Unity zu erstellen, z.B. durch Verwendung von Textmesh Pro oder durch Erstellen einer benutzerdefinierten Textbox-Lösung mit Unity’s UI-System und Skripten. Welche Methode du wählst, hängt von deinen Anforderungen und deinen Kenntnissen im Umgang mit Unity ab.

Ich habe mir also eine Text Box und ein Input Field eingebaut, das sollte schon mal helfen.

Wie soll die Datenstruktur aussehen?

Die Datenstruktur für ein Text-Adventure-RPG in Unity hängt davon ab, wie du das Spiel aufgebaut hast und welche Art von Daten du speichern möchtest. Einige mögliche Datenstrukturen könnten sein:

  1. Eine Szenenstruktur: Hierbei werden verschiedene Szenen oder Levels des Spiels als einzelne Unity-Szenen gespeichert, die jeweils bestimmte Charaktere, Objekte und Interaktionen enthalten.
  2. Eine Dialogstruktur: Hierbei werden die Dialoge und Entscheidungen des Spielers als eine Hierarchie von Dialogoptionen gespeichert, die durch die Verwendung von Skripten gesteuert werden.
  3. Eine Charakterstruktur: Hierbei werden die Charaktere des Spiels als separate GameObjects gespeichert, die jeweils ihre eigenen Daten wie Gesundheit, Erfahrungspunkte und Inventory enthalten.
  4. Eine Inventory-Struktur: Hierbei werden die Gegenstände, die der Spieler sammelt, als separate GameObjects oder als Daten in einer Liste gespeichert.
  5. Eine Quest-Struktur: Hierbei werden die Quests des Spiels als eine Liste von Quest-Objekten gespeichert, die jeweils ihre eigenen Ziele, Belohnungen und Fortschrittsdaten enthalten.

Es gibt viele Möglichkeiten, wie man die Datenstruktur für ein Text-Adventure-RPG in Unity aufbauen kann, und es kommt darauf an, welche Anforderungen du hast und wie du das Spiel am liebsten aufbauen möchtest. Ich empfehle dir, dir Gedanken darüber zu machen, welche Daten du speichern möchtest und wie du sie am einfachsten verwalten und abrufen kannst, bevor du mit der Implementierung beginnst.

Wie erstelle ich eine Szenenstruktur?

Um ehrlich zu sein… Aus meiner Sicht macht das erstellen einer Szenenstruktur für ein Text Adventure keinen Sinn. Ich würde das komplett ins Programm einbinden und nicht mit dem Unity Szenen System arbeiten. Ich verstehe auch nicht was da animiert werden soll. Aber hier ist das was ChatGPT dazu schreibt:

Um eine Szenenstruktur in Unity zu erstellen, gibt es mehrere Möglichkeiten. Eine Möglichkeit ist die Verwendung von Unity Scenes. Eine Unity Scene ist eine Datei, die die komplette Hierarchie aller GameObjects in einer Szene enthält. Du kannst neue Szenen erstellen, indem du im Projektfenster rechtsklickst und “Create > Scene” wählst. Du kannst auch bestehende Szenen duplizieren, um ähnliche Szenen zu erstellen.

Eine andere Möglichkeit ist die Verwendung von Szenen-Manager-Skripten. Diese ermöglichen es dir, Szenen programmatisch zu steuern, indem du Methoden wie “LoadScene” und “UnloadScene” verwendest. Du kannst auch Szenenübergänge und Animationen verwenden, um die Übergänge zwischen Szenen zu glätten.

Um die Datenstruktur zu erstellen, empfehle ich dir, eine Klasse oder Struktur zu erstellen, die die relevanten Daten für deine Szenen enthält, z.B. Dialoge, Entscheidungen, Rätsel, etc. Du kannst dann eine Referenz auf diese Klasse oder Struktur in jedem GameObject speichern, das Teil der Szene ist. So hast du eine einheitliche Art, auf die Daten zuzugreifen und sie zu verwalten.

ChatGPT – Erstelle mir die Klasse.

Eine mögliche Klasse, die du verwenden kannst, um die Daten für deine Text Adventure Szenen zu speichern, könnte so aussehen:

class SceneData {
    public string[] dialogue;
    public string[] choices;
    public int[] decisionResults;

    public SceneData(string[] dialogue, string[] choices, int[] decisionResults) {
        this.dialogue = dialogue;
        this.choices = choices;
        this.decisionResults = decisionResults;
    }
}

Die Klasse heißt SceneData und enthält drei Felder: dialogue, choices, decisionResults. dialogue enthält den Dialogtext der Szene, choices enthält die möglichen Entscheidungen und decisionResults enthält die Ergebnisse dieser Entscheidungen.

Du kannst dann eine Instanz dieser Klasse erstellen und ihr die entsprechenden Werte zuweisen, wenn du eine Szene erstellst oder ladest. Beispiel :

SceneData currentScene = new SceneData(new string[] {"Hi, I'm Bob", "What's your name?"}, new string[] {"My name is John", "I'd rather not say"}, new int[] {2, 3});

Hinweis: Dies ist nur ein Beispiel und du kannst die Klasse entsprechend deinen Anforderungen anpassen.

Dann lass uns die Dialogstruktur erstellen

Eine Möglichkeit, wie du die Dialogstruktur in Unity für dein Text Adventure erstellen kannst, ist folgendermaßen:

  1. Erstelle ein UI-Text-Element, das den aktuellen Dialogtext anzeigt.
  2. Erstelle ein UI-Button-Array, das die möglichen Entscheidungen darstellt.
  3. Verwende eine Methode, die aufgerufen wird, wenn ein Button gedrückt wird, um die nächste Szene basierend auf der gewählten Entscheidung zu laden.

Hier ist ein Beispielcode, der diese Schritte veranschaulicht:

using UnityEngine;
using UnityEngine.UI;

public class DialogueManager : MonoBehaviour {

    public Text dialogueText;
    public Button[] choiceButtons;
    private SceneData currentScene;

    void Start() {
        // Lade die erste Szene
        currentScene = GetSceneData(1);
        UpdateDialogue();
    }

    void UpdateDialogue() {
        // Setze den Text des UI-Text-Elements auf den aktuellen Dialogtext
        dialogueText.text = currentScene.dialogue[0];

        // Aktualisiere die Textinhalte der Wahlbuttons
        for (int i = 0; i < choiceButtons.Length; i++) {
            choiceButtons[i].GetComponentInChildren<Text>().text = currentScene.choices[i];
        }
    }

    public void OnChoiceButtonClick(int choice) {
        // Lade die nächste Szene basierend auf der gewählten Entscheidung
        currentScene = GetSceneData(currentScene.decisionResults[choice]);
        UpdateDialogue();
    }

    SceneData GetSceneData(int sceneID) {
        // Lade die Szene-Daten aus einer Datenbank oder einem anderen Speicherort
        return new SceneData(new string[] {"Hi, I'm Bob", "What's your name?"}, new string[] {"My name is John", "I'd rather not say"}, new int[] {2, 3});
    }
}

Hinweis: Dieser Code ist ein Beispiel und du musst ihn an deine spezifischen Anforderungen anpassen.

Das ist jetzt leider nicht ganz das was ich machen möchte, denn ich möchte, dass das Spiel über ein Input Field gesteuert wird. Daraufhin gibt mir ChatGPT diese Ausgabe aus:

Um in Unity eine Text Box zu erstellen, kannst du zum Beispiel ein UI Text Element in dein Projekt hinzufügen und es an die gewünschte Stelle positionieren. Du kannst dann in deinem Code auf das UI Text Element zugreifen und den Text, der darin angezeigt wird, ändern.

Die Datenstruktur kann zum Beispiel so aussehen, dass du eine Klasse “Dialog” erstellst, die die verschiedenen Dialogoptionen und die dazugehörigen Ergebnisse enthält. Du könntest auch eine Klasse “Scene” erstellen, die Informationen über die aktuelle Szene enthält, wie zum Beispiel welche NPCs anwesend sind und welche Dialogoptionen verfügbar sind.

Die Szenenstruktur kannst du zum Beispiel mit Unity Scenes umsetzen. Du kannst jede Szene als eine separate Scene in Unity erstellen und dann in deinem Code zwischen diesen Scenes wechseln, je nachdem, welche Aktionen der Spieler ausführt.

Die Klasse für die Dialogstruktur könnte zum Beispiel so heißen “DialogTree” und könnte so aussehen:

class DialogTree {
    public string[] dialogOptions;
    public int[] nextDialog;
    
    public DialogTree(string[] options, int[] next) {
        dialogOptions = options;
        nextDialog = next;
    }
}

Um die Eingabe über ein Input Field zu regeln, kannst du das UI Input Field Element in dein Projekt hinzufügen und es an die gewünschte Stelle positionieren. Du kannst dann in deinem Code auf das UI Input Field Element zugreifen und die Eingabe des Spielers auslesen und verarbeiten.

Aber wie schreibe ich nun den ersten Text in die Textbox?

Um das Spiel in Unity zu starten, kannst du eine Start-Methode erstellen, die beim Start des Projekts aufgerufen wird. In dieser Methode kannst du dann die Willkommensnachricht in die Textbox einfügen.

Um die Eingabe über ein Input Field zu regeln, kannst du eine Referenz auf das Input Field in deiner Unity-Szene erstellen und dann die Eingabe in der Update-Methode abfragen.

Hier ist ein Beispiel für eine Klasse namens “TextAdventure”, die die Grundlage für dein Text-Adventure-Spiel bildet:

using UnityEngine;
using UnityEngine.UI;

public class TextAdventure : MonoBehaviour
{
    public InputField inputField;
    public Text dialogueText;

    private void Start()
    {
        dialogueText.text = "Willkommen bei unserem Text Adventure RPG!";
    }

    private void Update()
    {
        if (inputField.isFocused && Input.GetKeyDown(KeyCode.Return))
        {
            HandleInput();
        }
    }

    private void HandleInput()
    {
        string input = inputField.text;
        //Verarbeitung der Eingabe
    }
}

In diesem Beispiel wird in der Start-Methode die Willkommensnachricht in die Textbox eingefügt. In der Update-Methode wird überprüft, ob das Input Field ausgewählt ist und die Eingabe-Taste gedrückt wird. Wenn beides der Fall ist, wird die HandleInput-Methode aufgerufen, die die Eingabe verarbeitet.

Nun habe ich ihm natürlich nicht gesagt, dass ich TextMesh Pro nutze. Also muss er das nochmal anpassenaber er tut dies:

Um eine Textbox in Unity zu erstellen, kannst du ein UI-Text-Objekt in deine Szene hinzufügen und es formatieren, wie es dir gefällt. Wenn du TextMesh Pro verwendest, kannst du stattdessen ein TextMesh Pro UI-Objekt hinzufügen und es formatieren.

Eine Möglichkeit, die Datenstruktur für dein Text Adventure RPG zu gestalten, ist die Verwendung von Szenen, die jeweils eine bestimmte Text- und Entscheidungsstruktur enthalten. Eine weitere Möglichkeit wäre die Verwendung von Klassen, die die Dialogstruktur und Entscheidungen für jeden Charakter oder jede Situation speichern.

Eine Klasse, die die Dialogstruktur verwaltet, könnte “DialogManager” heißen. Der Code für die Dialogstruktur könnte zum Beispiel so aussehen:

using UnityEngine;
using UnityEngine.UI;

public class DialogManager : MonoBehaviour
{
    public Text dialogText;
    public InputField inputField;

    private string[] dialogLines;
    private int currentLine;

    public void StartDialogue(string[] lines)
    {
        dialogLines = lines;
        currentLine = 0;

        inputField.gameObject.SetActive(true);
        inputField.ActivateInputField();
        ShowNextLine();
    }

    public void ShowNextLine()
    {
        if (currentLine >= dialogLines.Length)
        {
            EndDialogue();
            return;
        }

        string line = dialogLines[currentLine];
        dialogText.text = line;
        currentLine++;
    }

    public void EndDialogue()
    {
        inputField.gameObject.SetActive(false);
    }
}

Um das Spiel zu starten und eine Willkommensnachricht in die Textbox anzuzeigen, kannst du zum Beispiel eine Startmethode in der DialogManager-Klasse erstellen, die die Willkommensnachricht anzeigt und das Input-Feld aktiviert. Beispielsweise:

public void StartGame()
{
    StartDialogue(new string[] { "Willkommen bei unserem Text Adventure RPG!", "Wie möchtest du fortfahren?" });
}

Diese Methode kannst du dann im Unity-Editor aufrufen, indem du das DialogManager-Objekt in der Szene auswählst und auf den Start-Button klickst.

Um die Eingabe über das Input-Feld zu regeln, kannst du zum Beispiel eine Methode erstellen, die auf die Eingabe reagiert und entsprechende Aktionen ausführt, wie z.B. die Anzeige der

Und wie so oft bricht ChatGPT einfach mitten in einem Satz ab. Was schlimmer ist… nun habe ich eine ganz andere Klasse und eine ganz andere Herangehensweise. Mehr in der nächsten Folge.

Barti

Barti ist ein Veteran der Gaming-Industrie mit einer beeindruckenden Karriere, die sich über zwei Jahrzehnte erstreckt. Seine Leidenschaft für Spiele begann in jungen Jahren und führte ihn zu einer der renommiertesten Positionen in der Branche: Als Gamemaster bei Blizzard hatte er die Gelegenheit, tief in die Welt der Online-Spiele einzutauchen und direkt mit der Community zu interagieren. Nach seiner Zeit bei Blizzard nutzte Barti seine umfangreichen Kenntnisse und Erfahrungen, um MMORPG-Entwicklern als Berater zur Seite zu stehen. Mit einem scharfen Auge für Details und einem tiefen Verständnis für Spielerbedürfnisse half er vielen Entwicklerteams, ihre Spiele zu optimieren und ein besseres Spielerlebnis zu bieten. Doch Barti's Ambitionen reichen weit über das Beraten hinaus. Er betreibt eigene Entwicklerstudios, in denen er und sein Team leidenschaftlich an innovativen Projekten arbeiten. Aktuell ist eines seiner spannendsten Vorhaben die Entwicklung eines deutschen MMORPGs, das verspricht, die Gaming-Welt im Sturm zu erobern. Mit einer Kombination aus technischem Know-how, kreativer Vision und einer tiefen Liebe zum Gaming ist Barti nicht nur ein Pionier in der Branche, sondern auch eine Inspirationsquelle für alle, die den Traum haben, in der Welt der Videospiele Fuß zu fassen.