Spiele programmieren (C# & unity)?

3 Antworten

Ich und ein Freund haben vor in Zukunft kleine Spiele zu programmieren wie idle Games oder wie das Spiel „Ravenfield“ was uns eigentlich zu dem ganzen geführt hat.

Prinzipiell fände ich es schön, wenn mehr Menschen Freude am programmieren hätten. Doch sehe ich einen großen Haken an deiner Motivation. Diese kommt vom Spielen und eigenen Ideen "für bessere Spiele". Auch lässt sich darüber streiten was "besser" ist, und ob das auch bei Anderen so ankommt.

Wenn du unabhängig vom Kontext der Spiele Spass am logischen denken hast und das Durchhaltevermögen dich in Komplexe Systeme einzuarbeiten und ein bisschen Talent, dann hätte ich gesagt: Mach! und hätte dir viel Erfolg gewünscht.

Bei der Entwicklung von Software ist auch viel Grundwissen und Erfahrung gefragt. Deshalb würde ich mit dem Programmieren einfacher Programme anfangen, ohne Engines. Da können auch einfache Spiele dabei sein. Die Spieleengine würde den Anfang nur verkomplizieren.

Woher ich das weiß:Berufserfahrung – Studium der Informatik + Softwareentwickler seit 25 Jahren.
Die Frage ist nur, wie fangen wir an..

Lies hier:

Also ich weiß nicht was ich brauch um letztendlich zu meinem gewünschten Ergebnis zu kommen, sprich ich weiß nicht wo was hingehört.

Das passiert oft, wenn man einfach nur drauflos hacken möchte. 😜 Du solltest dir angewöhnen, zuerst Probleme wirklich zu analysieren, indem du sie genau definierst/beschreibst und dann in Teilprobleme zerlegst. Diese Zerlegung wird so oft durchgenommen, bis sich die Subprobleme lösen lassen (hierbei sollte man ab und an auch in der Dokumentation nachschlagen, denn so manche Problemlösung liegt bereits implementiert vor). Daraus kann man einen Algorithmus basteln.

Einfaches Beispiel: Eine Fläche soll Pixel für Pixel mit einer Zufallsfarben gefüllt werden. Dann gäbe es zunächst zwei Probleme: Wie berechnet man eine Zufallsfarbe und wie füllt man einen Pixel mit Farbe? Wenn man einen Pixel malen kann, kann man auch eine Reihe an Pixeln malen. Wenn man eine Reihe malen kann, lassen sich auch mehrere Reihen zeichnen. Für die Zufallsfarben bräuchte man drei Werte (für den Farbanteil von Rot, Grün und Blau). Diese müssten zufällig zwischen 0 und 255 liegen. In C# gibt es hierzu bereits eine Helferklasse (Random), die dabei hilft.

Wenn man die Grundlagenelemente kennt, die ein Programmablaufplan definiert (eine Schleife kann man da ruhig noch ergänzen), reicht das (neben der oben genannten Recherche) für die Algorithmenbildung zunächst aus. Die Problemlösung wird zuletzt nur noch in C# übersetzt.

Dieses Vorgehen sollte man praktisch üben. Es ist durchaus eine Umstellung, da man Komplexes in Einfaches aufteilen muss.

Es gibt eine Menge Bücher zum Thema Algorithmen (schau bspw. hier), auch Bücher mit Übungsaufgaben. Im Internet wirst du natürlich ebenfalls fündig.

Klassische Übungsaufgaben:

  • Minispiele wie: Pong, Snake, Conway's Game Of Life
  • Suchverfahren selbst implementieren (lineare / binäre Suche)
  • Sortierverfahren selbst implementieren (s. Wikipedia)
  • Einen eigenen Stack implementieren
  • Eine eigene Liste implementieren (Methoden: add, remove, insert, size)
  • Eine eigene Baumstruktur implementieren (AVL-Tree)
  • Aufgaben zur Rekursion: Zahl n (n < 9) aus der Fibonacci-Folge ermitteln, Fakultätsberechnung, Palindrom ermitteln, Vokale in Text zählen, usw. ...
ebenfalls weiß ich nicht bzw. mein Freund auch nicht, wie wir anfangen sollen

Hinsichtlich der Programmierung: Lernt erst C#.

Bedenkt zudem die anderen Ressourcen, die ihr für euer Spiel womöglich benötigt. Das heißt, unter Umständen müsstet ihr euch auch irgendwann mit der Modellierung und Animation von 2D- oder 3D-Modellen beschäftigen oder der Audiobearbeitung. Das sind auch Themen, die viel Aufwand erfordern können.

also was für Tutorials von welcher Person oder wie wir das ganze lernen sollen.

Behaltet euch zudem im Hinterkopf, dass für die meisten Fragen und Probleme bereits Lösungen/Antworten vorliegen (auch hier auf GF). Ihr müsst nur dazu recherchieren können.

Wirklich weggehen wird das nicht, weil man die meisten Probleme auf eine Vielzahl von Wegen lösen kann. Versuch nicht zu viel Zeit damit zu verbringen, die "beste" Lösung zu finden (die es häufig nicht gibt), sondern einen Lösung zu finden, die überhaupt funktioniert. Optimieren kannst du später immer noch.

Unity bietet einige einfache Objekte an:

  • GameObjects und Prefabs mit Komponente
  • ScriptableObjects
  • Einbindung (Serialisierung, ...) von eigenen Klassen (custom classes)

Du kannst wenig falsch machen, wenn du mit offiziellem Material lernst, beispielsweise Beginner Scripting. Die Dinge, die dort gezeigt werden, sind gelegentlich etwas fragwürdig nach industriellem Standard, für dich als Hobby wird das aber kaum eine Rolle spielen und es geht immerhin um die einfachsten Grundlagen.