ROGUE LIKE RANDOM LEVEL GENERATION - INTERMEDIATE C#/UNITY TUTORIAL - #1

Blackthornprod
4 Oct 201813:16

Summary

TLDRIn diesem Tutorial wird gezeigt, wie man ein prozedurales Level-Generierungssystem in Unity und C# für ein Plattformspiel im Stil von *Spelunky* erstellt. Schritt für Schritt wird erklärt, wie man Räume mit verschiedenen Öffnungen erstellt, eine zufällige Startposition auswählt und Räume in zufällige Richtungen platziert, um einen durchgehenden Pfad von Start bis Ziel zu erzeugen. Das Tutorial richtet sich an Entwickler mit mittleren C#-Kenntnissen und vermittelt grundlegende Programmiertechniken zur Erstellung eines dynamischen Level-Generators.

Takeaways

  • 😀 Der Kurs richtet sich an Entwickler mit mittlerem Kenntnisstand in Unity und C#, die lernen möchten, ein zufälliges Plattform-Level-Generierungssystem zu erstellen.
  • 😀 Zu Beginn wird erklärt, wie man verschiedene Raumsorten mit Öffnungen auf allen vier Seiten erstellt (links, rechts, oben, unten).
  • 😀 Die Raumvorlagen werden als Prefabs erstellt, um sie in verschiedenen Leveln zufällig zu instanziieren.
  • 😀 Es wird ein System entwickelt, das zufällig Objekte an definierten Spawnpunkten generiert, wie z. B. Tiles, die der Spieler betreten kann.
  • 😀 Eine zufällige Bewegungsrichtung (links, rechts, unten) wird erstellt, um die Räume zu verbinden und eine durchgehende Spielfluss-Strecke zu gewährleisten.
  • 😀 Der Level-Generator wählt zufällige Startpositionen für das erste Raumobjekt aus, um das Level zu beginnen.
  • 😀 Das Script verwendet ein Zufallszahlensystem, um die Bewegungsrichtung des Level-Generators zu bestimmen, was für eine unvorhersehbare Levelgestaltung sorgt.
  • 😀 Bei der Erstellung des Levels wird darauf geachtet, dass ein klarer Weg von Anfang bis Ende führt, ohne dass der Spieler stecken bleibt.
  • 😀 Testen und Fehlerbehebung werden behandelt, um sicherzustellen, dass Räume nicht übereinander gespawnt werden und der Generator nicht über den definierten Bereich hinaus geht.
  • 😀 Der Kurs fordert die Teilnehmer dazu auf, das System zu erweitern und anzupassen, um eigene Spiele zu erstellen und zu verbessern.
  • 😀 Der Inhalt wird durch den Community-Support auf Discord und das Patreon-Angebot ergänzt, um die Lernreise zu unterstützen.

Q & A

  • Was ist das Ziel des Tutorials?

    -Das Ziel des Tutorials ist es, ein zufälliges Plattform-Level-Generierungssystem in Unity zu erstellen, das dem Level-Generierungssystem von *Spelunky* ähnelt.

  • Welche Arten von Räumen werden im Tutorial erstellt?

    -Im Tutorial werden verschiedene Raumvorlagen erstellt, darunter Räume mit offenen Seiten (links, rechts, oben, unten), um die Grundlage für das zufällige Level-Design zu bilden.

  • Warum ist die Definition eines klaren 'kritischen Pfades' wichtig?

    -Ein kritischer Pfad ist wichtig, um sicherzustellen, dass der Spieler das Ziel des Levels erreichen kann, ohne an blockierten Stellen hängen zu bleiben. Der Pfad muss immer zugänglich sein, auch wenn andere Räume zufällig hinzugefügt werden.

  • Was wird in der ersten C#-Skriptdatei erstellt?

    -In der ersten C#-Datei wird ein Skript namens 'SpawnObject' erstellt, das zufällig Objekte an vordefinierten Spawnpunkten im Level instanziiert, um die Räume mit Tiles zu füllen.

  • Welche Variablen werden verwendet, um die Bewegungsrichtung der Level-Generator-Instanz festzulegen?

    -Eine `direction`-Variable wird mit einer zufälligen Zahl zwischen 1 und 5 festgelegt, die die Bewegungsrichtung bestimmt: 1 und 2 für rechts, 3 und 4 für links und 5 für unten.

  • Was passiert, wenn die generierten Räume sich überschneiden?

    -Wenn die generierten Räume sich überschneiden, kann das zu Problemen führen, da die Räume aufeinander gestapelt werden und die Level-Struktur fehlerhaft wird. Dies muss im weiteren Verlauf des Tutorials behoben werden.

  • Wie wird sichergestellt, dass die Räume in einer zufälligen Reihenfolge erscheinen?

    -Das Skript verwendet eine zufällige Auswahl der Räume aus einem Array, sodass jedes Mal ein anderes Raum-Layout erscheint, wenn das Spiel gestartet wird.

  • Warum wird eine Zeitverzögerung (`timeBetweenRoom`) verwendet?

    -Die Zeitverzögerung stellt sicher, dass zwischen dem Spawnen der Räume eine kurze Pause erfolgt, sodass das Level nicht zu schnell aufgebaut wird, was zu visuellen oder spielerischen Problemen führen könnte.

  • Wie wird das Problem gelöst, dass der Level-Generator die vorgegebenen Grenzen überschreitet?

    -Das Problem wird im nächsten Teil des Tutorials behandelt, wo der Level-Generator so angepasst wird, dass er innerhalb der festgelegten Levelgrenzen bleibt und sich nicht unendlich fortsetzt.

  • Was ist der Unterschied zwischen den verschiedenen Raumvorlagen?

    -Die verschiedenen Raumvorlagen unterscheiden sich durch die Anzahl und Position der offenen Seiten (links, rechts, oben, unten), was unterschiedliche Layouts für die Level-Generierung ermöglicht.

Outlines

plate

هذا القسم متوفر فقط للمشتركين. يرجى الترقية للوصول إلى هذه الميزة.

قم بالترقية الآن

Mindmap

plate

هذا القسم متوفر فقط للمشتركين. يرجى الترقية للوصول إلى هذه الميزة.

قم بالترقية الآن

Keywords

plate

هذا القسم متوفر فقط للمشتركين. يرجى الترقية للوصول إلى هذه الميزة.

قم بالترقية الآن

Highlights

plate

هذا القسم متوفر فقط للمشتركين. يرجى الترقية للوصول إلى هذه الميزة.

قم بالترقية الآن

Transcripts

plate

هذا القسم متوفر فقط للمشتركين. يرجى الترقية للوصول إلى هذه الميزة.

قم بالترقية الآن
Rate This

5.0 / 5 (0 votes)

الوسوم ذات الصلة
UnitySpielentwicklungC#Prozedurale GenerierungSpelunkyLevel-DesignProgrammiertutorialZufallsgenerierungRaumvorlagenIndie-SpieleGame-Design
هل تحتاج إلى تلخيص باللغة الإنجليزية؟