Wie kann ich am besten C# lernen (Game Engineering)?
Hallo an alle, ich habe mich fest dazu entschlossen programmieren zu lernen und das ganze soll sich auf die Videospielprogrammierung beziehen. Ich habe mir ein großes Projekt vorgenommen für ein 2D Spiel (vom Spiel her wie Pokemon, wie man in der Welt rum läuft). Es geht rein um die Programmierung. Wo fang ich am besten mit an? Wie lerne ich die Programmiersprache und verstehe sie dabei?
(ich hatte vor "Godot" als Game Engine zu benutzen, da sie sehr Anfänger freundlich ist)
5 Antworten
Ich würde dir empfehlen, dich erst später Godot oder Unity zu widmen (egal, als wie einstiegsfreundlich diese auch beworben werden).
Zunächst empfiehlt es sich, sich mit C# auseinanderzusetzen. Quellen, mit denen du C# lernen kannst, habe ich hier schon einmal aufgelistet: Wie kann man C# programmieren lernen?.
Fange auf einfachem Level an, konzentriere dich auf das Erlernen der Grundlagen und versuche nicht gleich, große Spielprojekte aufzubauen. Programmieren lernen erfordert Geduld, Zeit und Motivation. Einige Wochen/Monate wirst du ganz bestimmt damit beschäftigt sein, zumal zum Programmieren mehr gehört, als nur die Bestandteile einer Sprache zu kennen, sondern auch zu lernen, wie man zu einem gestellten Problem einen Lösungsweg finden kann, der auf einfache Anweisungen heruntergebrochen wurde. Minispiele wie Pong, Snake oder Space Invaders sind da gute Anfangsübungen, zumal sie nur wenig Grundlagenwissen verlangen.
Zum Lernen von Godot oder Unity wirst du jeweils auf deren Lernplattformen / in deren Dokumentationen
umfangreiches Material finden. Auch andere Plattformen wie YouTube beinhalten Tutorials (für Unity wäre bspw. Brackeys empfehlbar). Achte bei solchen Lernvideos aber darauf, es nicht auf Abtipperei zu beschränken.
Bezüglich der Planung eines Spiels (und das sollte wirklich der erste Schritt für deine Spielprojekte sein) kann dir meine Antwort von hier ganz bestimmt auch weiterhelfen.
Nachdem ich diese Sachen gelernt habe, wäre ich dann in der Lage etwas zu programmieren?
Ja, das sollte zumindest die Erwartungshaltung sein. Etwas Übung wird es natürlich brauchen und bestimmte komplexe Aufgaben werden immer wieder weitere Recherchen o.ä. erfordern. Für die Terraingeneration bspw. stehen dir hinsichtlich der Programmierung dann ganz sicher schon die notwendigen Werkzeuge zur Verfügung, doch ohne ein Verständnis über die Problematik (z.B. notwendige Mathematik) wird dir ein Lösungsweg immer noch verwehrt bleiben.
(...) reichen dafür 1-2 Stunden pro Tag?
Das klingt schon gut.
Am besten fängst du damit an erstmal nur die Sprache an sich zu lernen, und dich mit der eigentlichen Spieleprogrammierung erst auseinanderzusetzen, wenn du C# gut genug kannst. Alles andere wird nicht gut funktionieren und führt schnell zu Frustration. Es gibt zwar Tutorials die den Einstieg in Game-Engins bieten und versprechen dass man C# nicht vorher können muss, das ist dann aber meistens mehr ein vorprogrammieren als ein Tutorial, und selbst kannst du danach gar nichts machen...
C# kannst du am Anfang mit YouTube oder Webseiten lernen, später würde ich dir irgendein Buch oder so empfehlen um tiefer einzusteigen.
Extrem wichtig sind auch kleinere Projekte zwischendurch. Du wirst dir nicht nach und nach alles aneignen können ohne es jemals wirklich angewendet zu haben. Die Projekte müssen nicht sinnvoll sein, es muss nichts sein was du brauchst, sondern einfach nur um dich in die spezielle Denkweise einzufinden. Denn dass man die Syntax von bestimmten Kontrollstrukturen kennt nützt dir nichts wenn du nicht weißt wann du sie einsetzen musst.
Wie schön erwähnt wurde:
Vergiss Game Engines für den Anfang. Damit kann man vielleicht arbeiten, wenn man mind. 1-2 Jahre Erfahrung gesammelt hat mit Console- und Desktopanwendungen. Habe auch C# gelernt als erste Programmiersprache und würde sagen, hat ungefähr 3 Jahr gedauert bis ich richtig gut war.
Wie lange du brauchst, ist natürlich individuell, kann sein dass du es eventuell auch schon in 2.5 Jahren gut beherrschst. Kann aber auch gut sein, dass du es nie richtig lernst. Es kann auch nicht jeder programmieren, gibt Viele die immer nur so kleine Befehlsketten schreiben können, aber nie den roten Faden finden und nicht das notwendige abstrakte Denken haben um in größeren Projekten den Überblick zu behalten.
Meiner Meinung nach ist Godot "zu Anfängerfreundlich". Ich würde ehrlich gesagt Unity empfehlen.
Ich selber habe nicht so viel Ahnung von den Game Engines, ich hatte unity 1 mal getestet und Godot ebenfalls, als ich in einem Schnupper Kurs war. Sie waren dort der Meinung, dass Godot für Einsteiger gut ist und man danach umso leichter mit unity arbeiten kann.
Am besten mit YouTube tutorials zu C# und Unity, versuch aber erst mal irgendetwas hinzukriegen, bevor du das programmierst, was du willst.
Am Anfang bist du vor allem durch deine Fähigkeiten eingeschränkt, nicht durch deine Vorstellung.
Ich habe häufig gehört, dass diese Tutorials nicht so empfehlenswert sind. Sie beinhalten oftmals "Fehler" auch wenn alles funktioniert und ich selber lerne nichts dabei, wenn ich einfach nur die Sachen abtippe. Natürlich kann ich mir durch bestimme Befehle erschließen was sie bedeuten und was dadurch im Endeffekt passiert.
Die Seriösität von YouTube-Tutorials lässt sich einfacher bewerten, wenn du schon etwas Erfahrung mit der Programmierung gesammelt hast (dazu gehören auch OOP-Konzepte, denn in dem Bereich machen Hobbytutoren erfahrungsgemäß mehr Fehler, als bei Grundlagen). Wenn du also keine vertrauenswürdigen Quellen auf YouTube findest (ein Beispiel wäre ein Lernkurs von Microsoft oder eine Tutorialreihe XY, die von mehreren Programmierern fernab YouTube empfohlen wird), suche erst einmal woanders. Video-Tutorials findet man auch auf Seiten wie Udemy oder PluralSight (dann allerdings nicht kostenlos).
Auf das bloße Abtippen sollte man sich m.E. nie beschränken. Weder bei Videos, noch bei Büchern / Internetartikeln, o.ä.. Wenn ein Tutor seine Tutorials so gestaltet, dass sie sich auf das Abtippen fokussieren (und nur wenige/keine verständlichen, ordentlichen Erklärungen geliefert werden), würde ich die Quelle direkt aussortieren.
Die erste nützliche Antwort. Nachdem ich diese Sachen gelernt habe, wäre ich dann in der Lage etwas zu programmieren? Ich werde wenn ich Zeit habe, mich damit auseinandersetzen, so dass ich jeden Tag ein bisschen lerne! reichen dafür 1-2 Stunden pro Tag? Oder sollte ich mehr Zeit opfern? Gehe leider noch zur Schule.