Vom Hobby-Gamer zum Hobby-Programmierer, Teil 2

Vom Hobby-Gamer zum Hobby-Programmierer, Teil 2 User-Artikel

Unity und C#

LRod / 24. Juli 2017 - 15:32 — vor 3 Jahren aktualisiert

Teaser

In Teil 1 dieser Serie hat LRod begonnen, sich selbst das Programmieren beizubringen. Nach ersten Versuchen mit Python und PyGame wagt er sich nun an Unity und C#.
Dieser Inhalt wäre ohne die Premium-User nicht finanzierbar. Doch wir brauchen dringend mehr Unterstützer: Hilf auch du mit!
Nach einigen Monaten mit Python und PyGame (mehr dazu im ersten Teil) lief das Programmieren zwar langsam runder, aber schließlich wollte ich doch gerne auf eine moderne Plattform wechseln. In Frage kamen im Wesentlichen Unity und die Unreal Engine. Wie schon so vieles zuvor war auch hier die Entscheidung als Einsteiger im Selbststudium nicht ganz einfach. Für beide müsste ich mich in eine weitere Programmiersprache einarbeiten, beide haben eine praktische Oberfläche und sind kostenlos. Nach einigem Überlegen sowie mehreren Artikeln und Videos habe ich mich dann schließlich für Unity entschieden, weil es ein wenig einsteigerfreundlicher sein sollte.
 
Zunächst wird fleißig C# gelernt.
„Ein wenig einsteigerfreundlicher“ ist bei einer Game Engine natürlich dennoch so eine Sache und so habe ich etwa 2 Minuten nach dem ersten Start der Unity-Oberfläche das Programm wieder geschlossen und mich erst einmal auf die Suche nach gutem Material dazu gemacht. An Tutorials mangelt es im Internet zwar nicht, aber darunter waren leider keine, die der doppelten Herausforderung, nämlich den Umgang Unity und die zugrundeliegende Programmiersprache C# zu vermitteln, gewachsen waren. Nach meinen guten Erfahrungen mit Büchern habe ich dann „Spiele entwickeln mit Unity 5: 2D- und 3D-Games mit Unity und C# für Desktop, Web & Mobile“ von Carsten Seifert bestellt. Als das Buch wenige Tage später endlich ankam folgte aber eine Ernüchterung: Entgegen der Amazon-Werbung („Vorkenntnisse sind nicht erforderlich“) ist es aus meiner Sicht zwar ein sehr schönes Nachschlagewerk, aber kein Buch, das Anfängern systematisch Unity näherbringt. Dafür fehlt mir leider der rote Faden. Stattdessen werden alle Themen, von Beleuchtung über Physik in Unity bis zu den Shadern in einzelnen, völlig unabhängigen Kapiteln behandelt. Erst ganz zum Schluss gibt es zwei konkrete Projekte. So habe ich die 631 Seiten zwar quergelesen und mich auch länger mit dem C#-Kapitel befasst, aber so richtig schlau wurde ich aus dem Buch leider nicht.
 

Erfolge mit C#, Probleme mit Unity

Also noch einmal recherchiert. Da mir die Arbeit mit Python so viel Spaß gemacht hatte, ließ ich mir aus Interesse Probematerial von einem großen Anbieter für Fernkurse zuschicken. Da es eine kostenlose Kündigungsmöglichkeit nach dem ersten Monat gab, war das Risiko gering. Daneben konnte ich nach einiger Suche endlich einen guten C#-Kurs auftun – und zwar als App: Der kostenlose Kurs von SoloLearn (den es auch für zahlreiche andere Sprachen wie Python gibt) war für einige Wochen ein ständiger Begleiter und erfreulicherweise gab es doch sehr viele Parallelen zu Python, so dass mir der Umstieg jedenfalls hinsichtlich der Grundlagen erfreulich leicht fiel. Nur was ich damit in Unity machen sollte war mir noch immer nicht klar.
 
Zum Glück kam bald darauf das Kursmaterial an. Schon bei dem vierstelligen Preis musste ich gehörig schlucken, aber auch inhaltlich war ich schon nach wenigen Seiten sehr froh über die kostenlose Kündigungsmöglichkeit, denn hier folgte die nächste Enttäuschung. Für den geforderten Preis darf man eigentlich ein stets aktuelles Unterrichtsmaterial erwarten, doch leider basierte der gesamte Kurs noch auf Unity 4 (Unity 5 war schon über ein Jahr auf dem Markt). Der nächste Dämpfer: Statt auf C#, in das ich zu diesem Zeitpunkt schon viele Stunden investiert hatte, das auch im Buch von Carsten Seifert ausdrücklich empfohlen wurde und das auch fast alle Tutorials im Internet nutzen, setzte das Material auf JavaScript. Und dann war auch noch ein nicht unerheblicher Teil des Kurses aus meiner Sicht „Füllmaterial“, etwa theoretisches Wissen zum Aufbau von professionellen Entwicklerteams – was für mich aber absolut nicht relevant war. All das konnte die positiven Seiten, wegen denen ich überhaupt über den Fernkurs nachgedacht hatte, nämlich den Support bei inhaltlichen Fragen und den Klausurservice, die beide eine nette Abwechslung zum Selbststudium gewesen wären, nicht aufwiegen. Halbherzig fing ich zwar noch an, die ersten Aufgaben zu bearbeiten und konnte so immerhin schon einmal eine kleine Landschaft mit dem für Anfänger großartigen Terrain-Editor erstellen. Aber so richtig begeistert war ich nicht bei der Sache und die Kündigung war schnell in der Post.
 
Eine erste Landschaft aus dem Terrain-Editor.

Programmieren für Kinder

Ihr merkt: Die Erfolgserlebnisse waren zuletzt rar geworden. Zum Glück gab ich dem Projekt Unity aber noch eine weitere Chance und stieß schließlich auf ein Buch, das meinem Niveau entsprach: „Spiele programmieren mit Unity (für Kids)“ von Hans-Georg Schumann. Von der kindgerechten Aufmachung (die jederzeit sympathisch wirkt) ließ ich mich nicht abschrecken und wurde dafür belohnt, und zwar mit einem Buch, das sämtliche Kritikpunkte an den anderen Materialien vermeidet: Es basiert auf Unity 5 und C# und vom ersten bis zum letzten Kapitel bastelt man immer weiter an einem kleinen Spieleprojekt. Dabei wird didaktisch sinnvoll viel Wissen vermittelt und am Ende des 413 Seiten langen Buchs hat man tatsächlich ein Script für die Bewegung des Spielers  – einschließlich springen und schwimmen  – geschrieben, einen Gegner animiert und per Navigator auf den Spieler losgehetzt und das Ganze mit Sound, Effekten und Benutzeroberfläche verfeinert! Damit hat es dieses kleine 25-Euro-Buch geschafft, einen Kurs für den knapp 100-fachen Preis zu schlagen – und mir nebenbei die zuletzt nachlassende Begeisterung für Unity zurückzubringen. Der Einstieg war gemacht!
Das erste fertige Spiel (für Kids)...
 

Die ersten Projekte

So richtig wusste ich aber noch nicht, wie ich damit jetzt ein eigenes Spiel umsetzen sollte. Mit einem kurzen Internet-Tutorial bastelte ich mir erst einmal einen simplen, aber spielbaren Breakout/Arkanoid-Klon. Aber eigentlich wollte ich doch etwas „Richtiges“ und vor allem auch Eigenes machen und meinen zu diesem Zeitpunkt schon gut spielbaren PyGame-HeroQuest-Klon in 3D umsetzen – regeltechnisch zur Abwechslung aber an das Schwesterspiel StarQuest angelehnt. Nur wie? Hier stand ich gleich vor zwei Herausforderungen: 2D-Sprites für ein Fantasy-Strategiespiel zu erstellen beziehungsweise zu finden war kein Problem (zumal ich es ja nicht veröffentlichen möchte). Doch ein 3D-Spiel braucht auch 3D-Modelle. Diese Frage überging ich zunächst (eigentlich überging ich sie schon seit dem Umstieg von Python), denn das zweite Problem war zunächst wichtiger:
 
Wie könnte ein rundenbasiertes Spiel eigentlich technisch ablaufen? Bei Python war es kein Problem, das Programm per Schleife auf eine Eingabe warten zu lassen, effektvolle Pausen einzubauen und alles schön geordnet nacheinander ablaufen zu lassen. Unity setzt dagegen konsequent auf Echtzeit, will mit jedem Frame Funktionen aufrufen und mag es – wie ich bei meinen ersten Versuchen, die wiederholt im Windows-Task-Manager endeten, feststellen musste – gar nicht, wenn es bis zu einer Eingabe pausiert werden soll. Die Bücher konnten mir nicht weiterhelfen, da so etwas wie rundenbasiert dort nicht vorkam und für eigene Lösungen fehlte mir die Erfahrung.
 
Doch hier zeigte sich einer der Vorteile von Unity: Es gibt zahlreiche Tutorials auf YouTube und nach längerer Suche wurde ich endlich bei einer Tutorial-Reihe zum Erstellen eines Schachspiels (ohne KI ;-) ) fündig: Durch dieses Tutorial bekam ich nicht nur einen Hinweis auf ein mögliches Grundgerüst, sondern konnte sogar einen großen Erkenntnisgewinn im Hinblick auf die generelle Struktur von Spielen in Unity verbuchen: Die dem Programm zugrunde liegende Schleife aus Python wurde ersetzt durch ein leeres 3D-Objekt mit einem Script, das nun je nach Spielsituation etwa die Bewegungsfunktion meiner Spielfiguren aufrufen sollte. Endlich konnte ich mit meinem Spiel starten und dank der Vorarbeit in PyGame dauert es nicht lange, bis sich auch in Unity rote Objekte rundenbasiert auf meine grüne Spielfigur zubewegten!
Ein Urvater der Rundenstrategie.

Ein paar Stunden später, einige davon den Syntax-Unterschieden zwischen Python und C# geschuldet, die meisten aber der Einarbeitung in die besonderen C#-Erweiterungen von Unity, konnten meine Figuren die roten Objekte auch schon mit unsichtbaren Waffen bekämpfen. Nach und nach folgten auch Quader als Wände, versehen mit kostenlosen Texturen aus dem Unity Asset Store.
 

Es wird anspruchsvoller...

Dieses Mal beschäftigte ich mich auch mit etwas fortgeschritteneren Themen, etwa der Wegfindung. Denn während es schon seit meinen Terminal-Versuchen ganz gut klappte, einfach alle erreichbaren Felder zu prüfen und eines auszuwählen, das dem Gegner einen Angriff erlaubte, haperte es noch an der Darstellung der Bewegung dorthin. Diese erfolgt bisher entweder per Teleport oder quer durch alle Wände, was aber entsprechend schwach aussah. Nach etwas längerer Online-Suche stieß ich auf den A*-Algorithmus und konnte diesen mit einigem Rumprobieren nachbauen. Plötzlich bewegten sich meine Gegner (ok, schwebten meine roten Zylinder) ganz korrekt um Wände herum statt hindurch! Ein großartiges Erfolgsgefühl, denn immerhin hatte ich dieses Script auf der Grundlage der theoretischen Erklärung komplett selbst geschrieben.

Ebenso stolz war ich auf meine Fernkampfwaffen. Diese fehlten in meinem Python-Projekt (bzw. kannten in den Terminal-Vorgängern keine Wände oder Hindernisse). Das sollte sich nun ändern. Doch während Nahkampfangriffe ja nur einen Gegner auf dem benachbarten Feld brauchten, musste ich mir nun über Sichtlinien Gedanken machen. Unity bietet zwar die Möglichkeit, virtuelle Pixel loszuschicken und zu schauen, wo sie ankommen. Ich wünschte mir aber ein System, das es mir auch erlaubt, auf dem Weg zu prüfen, ob Deckung gegeben ist und das beim Verdecken von Gegnern näher an der Brettspielvorlage ist. Wieder begann ich im Internet zu suchen und stieß auf den Bresenham-Algorithmus sowie eine Postreihe zum Schattenwurf, die auf mein rasterbasiertes Spielfeld perfekt passten, denn wo das „Licht“ hinfiel war der Schussbereich. Auch diese Scripte wurden angepasst und eingebaut und nach einigen Stunden des Rumprobierens und Fehlersuchens funktionierte auch der Beschuss einschließlich eines Deckungssystems tatsächlich wie ich es erhofft hatte!
 
Anzeige
Die erste 3D-SciFi-Landschaft, leider ohne 3D-Gegner...

Die 3D-Objekte wieder...

Ich hätte an dieser Stelle auch weitermachen und beliebig viele weitere Spielmechaniken ergänzen können, aber irgendwie war langsam der Punkt erreicht, an dem ich mich dann doch ein wenig der Optik widmen und nicht mehr mit grünen auf rote Zylinder schießen wollte. Es mussten also 3D-Modelle her. Will man im Asset Store nicht viel Geld lassen, dann kommt man dort leider nicht weit. Also hatte ich zwei Möglichkeiten: Kostenlose Modelle im Internet finden. Oder irgendwie eigene Modelle erstellen.

In jedem Fall würde der Weg ein steiniger werden – mehr dazu in Teil 3 dieser Reihe.
LRod 24. Juli 2017 - 15:32 — vor 3 Jahren aktualisiert
Green Yoshi 22 Motivator - P - 36177 - 24. Juli 2017 - 15:32 #

Hab mir aufgrund des ersten Teils mal das eBook "Teach your kids to code" im Humble Bundle gekauft und mir die YouTube-Videos des MIT-Kurses "Introduction to Computer Science and Programming in Python" angeschaut.

https://www.youtube.com/playlist?list=PLUl4u3cNGP63WbdFxL8giv4yhgdMGaZNA

LRod 19 Megatalent - - 18439 - 24. Juli 2017 - 21:40 #

Freut mich, das war genau die Intention dieser Serie!

Danke auch für die Links, die Playlists dort sehen generell sehr spannend aus!

Toxe (unregistriert) 24. Juli 2017 - 15:38 #

Daumen hoch für den A*-Wegfindungsalgorithmus. :-)

Der wird auch professionell eingesetzt und auf einmal überkommt einen dieses "huh, die anderen kochen irgendwie auch nur mit Wasser" Gefühl. ;-)

LRod 19 Megatalent - - 18439 - 24. Juli 2017 - 21:41 #

Irgendwie fragt mich sich in der Tat, wieso Gegner früher so oft an Wänden hängengeblieben sind :-)

Faerwynn 20 Gold-Gamer - P - 20222 - 25. Juli 2017 - 8:47 #

Weil die Komplexitätsklasse des A* Algorithmus von der Qualität der Heuristik abhängt. Ohne Begrenzung ist die Laufzeit exponentiell, abhängig von den Knoten und der Suchtiefe. Um die Laufzeit handhabbar zu kriegen wird die Heuristik eingeschränkt, da oft nur ein kleiner Teil der Knoten für die Lösungsfindung relevant ist. Je nach Spiel, Kartenmodellierung, Auflösung, benötigter Qualität etc. passt die gewählte Heuristik dann besser oder schlechter. Manchmal hatte man auch nur eine bestimmte Rechenleistung/Laufzeit dafür und nahm dann die dabei bestmögliche (aber eben nicht optimale) Heuristik.

LRod 19 Megatalent - - 18439 - 25. Juli 2017 - 9:31 #

Da hast du wohl recht, auf einem modernen Rechner kann man ja relativ beschränkungsfrei arbeiten, bevor man erste Verzögerungen spürt. Spannend wäre es, den alten 286er anzuschmeissen und darauf irgendwas zu machen, aber den gibt es leider nicht mehr.

Toxe (unregistriert) 25. Juli 2017 - 13:11 #

Wobei die Wegfindung in 3D Spielen generell etwas komplexer ist als auf einer 2D Schachbrett-artigen Karte. ;-)

euph 30 Pro-Gamer - P - 129973 - 24. Juli 2017 - 15:47 #

Schöner Artikel. Ich hab ja auch oft den Gedanken, mal wieder was zu programmieren (so wie damals auf dem 800XL). Wenn ich das aber so lese, muss ich wohl noch ein bisschen warten, da ich nicht mehr die Zeit von früher für sowas habe.

Jamison Wolf 19 Megatalent - P - 14073 - 24. Juli 2017 - 15:57 #

Liest sich wirklich gut, Kudos von mir!

Programmieren ist schon eine feine Sache, ich mach ja "nur" Webentwicklung und würde da auch gerne reinschnuppern, alleine ... ich hab keine Zeit dafür. Das lesen deines Erfahrungsberichts macht aber genauso laune!

Way2Go!

firstdeathmaker 18 Doppel-Voter - 9333 - 25. Juli 2017 - 10:57 #

Mach doch ein ordentliches Browserspiel ;)

Jamison Wolf 19 Megatalent - P - 14073 - 25. Juli 2017 - 14:15 #

"ordentlich" und "Browserspiel" in einem Satz, darf man das? :)

Ich hatte mal nen Fussball Manager programmiert fürs "Web" aka Mailboxen .. funktionierte sogar ganz ordentlich. Irgendwie 1000 Jahre her.

Mach ich bestimmte bald wieder.
.
.
.
Wenn ich auf Rente bin. :)

Aladan 25 Platin-Gamer - P - 57121 - 24. Juli 2017 - 16:08 #

C# ist immer eine gute Wahl. Wenn du da richtig drin bist, kannst du verdammt viel anstellen. Immer weiter so! :-)

Faerwynn 20 Gold-Gamer - P - 20222 - 25. Juli 2017 - 8:56 #

Würde ich so nicht unterschreiben. Wenn man das Spiel portabel haben möchte hat man da wohl doch so seine Probleme. Bin aber mehr der C++ User, kann jemand das bestätigen oder widerlegen?

Eine C++ Basis ist recht problemlos (mit der richtigen Engine) auf Mac und Linux portierbar.

Aladan 25 Platin-Gamer - P - 57121 - 25. Juli 2017 - 8:57 #

Mir geht es da eher um das allgemeine Programmieren. Ist nicht speziell auf Spiele bezogen, denn damit habe ich im Beruf keine Berührungspunkte. ;-)

LRod 19 Megatalent - - 18439 - 25. Juli 2017 - 9:34 #

Der Port auf Mac und Linux ist mit Unity kein Problem, das ist fest eingebaut. Man braucht nur einen entsprechenden Rechner.

Sogar das neue Visual Studio soll es jetzt für Mac geben, aber abseits von Unity habe ich mit C# noch nichts gemacht, darum kann ich da nicht mehr sagen.

Faerwynn 20 Gold-Gamer - P - 20222 - 25. Juli 2017 - 13:04 #

Unity ist kein Problem klar, das bezog sich von mir nur auf C# selbst. Ich hatte mir vor Jahren mal die Mono Implementierung für Linux angesehen und das sah noch sehr sehr mau aus.

Sgt. Nukem 17 Shapeshifter - - 6292 - 27. Juli 2017 - 22:26 #

Dank Xamarin ist C# auch auf iOS und Android kein Problem mehr.

Toxe (unregistriert) 25. Juli 2017 - 13:16 #

"Sogar das neue Visual Studio soll es jetzt für Mac geben"

Wobei das aber wohl ziemlicher Schund sein und nur wenig mit der Windows Version zu tun haben soll.

Toxe (unregistriert) 25. Juli 2017 - 13:15 #

C# scheint mir auch weiterhin eine Insellösung für Windows zu sein, wenn man es nicht gerade in Unity verwendet sondern eher allgemein plattformübergreifende Anwendungen schreiben möchte. In Unity läuft es aber in der Tat problemlos.

Für alles, was nicht dringend ein UI benötigt, würde ich heute eindeutig Python nehmen.

Harry67 20 Gold-Gamer - - 24208 - 25. Juli 2017 - 16:39 #

Wenn es prozedural sein darf ist C# doch schnell und perfekt. Hat sich Python da mittlerweile so durchgesetzt?

Aladan 25 Platin-Gamer - P - 57121 - 25. Juli 2017 - 17:04 #

Meiner Meinung nach eher eine Ergänzung, als ein Ersatz.

Harry67 20 Gold-Gamer - - 24208 - 25. Juli 2017 - 18:11 #

So wirds plausibel.

Toxe (unregistriert) 25. Juli 2017 - 18:14 #

Ja, es kommt halt darauf an, was man machen möchte. Die eine super Sprache, die toll für jeden Einsatzzweck ist, gibt es halt nicht. Aber ganz allgemein gesagt ist Python eine ganz hervorragende Sprache bzw. Umgebung, in meinen Augen.

Harry67 20 Gold-Gamer - - 24208 - 25. Juli 2017 - 18:22 #

Kein Zweifel. Mir ging es eigentlich eher um die Verbreitung

Toxe (unregistriert) 25. Juli 2017 - 17:28 #

Python ist einfach nett in der Shell, wenn man dort arbeiten möchte.

Harry67 20 Gold-Gamer - - 24208 - 25. Juli 2017 - 18:18 #

Ich wollte auch nichts grundsätzlich gegen Python sagen. Alles an seinem Platz. Auch Cobol kann sehr geil sein ;)

Q-Bert 25 Platin-Gamer - P - 56324 - 25. Juli 2017 - 18:48 #

Wenn Du mit dem Mono-Framework arbeitest (das ist quasi ein plattformübergreifendes .NET-Framework), dann kannst du deinen C#-Quellcode fast 1:1 auf folgende Plattformen übertragen:

- Linux
- Mac OS X, inklusive iOS, tvOS, watchOS
- Sun Solaris
- BSD - OpenBSD, FreeBSD, NetBSD
- Nintendo Wii
- Sony PlayStation 3
- Sony PlayStation 4
- XBox360 (leider noch keine XBone)
- in begrenzem Maß Android (nur ARM)

http://www.mono-project.com/

PraetorCreech 18 Doppel-Voter - P - 12880 - 24. Juli 2017 - 16:12 #

Wenn Ende 2018 mein Studium-neben-dem-Job rum ist, möchte ich auch nochmal etwas lernen, was nix direkt mit der Arbeit zu tun hat. Anders als in der Schule macht mir das mittlerweile nämlich richtig Spaß. Ich hatte an eine Programmiersprache (C# in der engeren Auswahl) oder ein Musikinstrument gedacht. Meine Tochter müsste dann fast 4 Jahre alt sein, vielleicht üben wir dann zusammen Blockflöte :)
Jedenfalls macht mir das Mitlesen Deiner Erlebnisse große Freude und läd zum Nachahmen ein. Danke LRod, dass Du uns Teil haben lässt.

LRod 19 Megatalent - - 18439 - 24. Juli 2017 - 21:47 #

Danke für den netten Kommentar!

Natürlich gab es auch einige Frusterlebnisse, aber wenn man dann das Problem überwunden hat ist das Erfolgserlebnis umso größer. Insofern kann ich es wirklich empfehlen, sich damit zu beschäftigen.

Gurumeditation 13 Koop-Gamer - 1280 - 24. Juli 2017 - 16:30 #

Bei dem Artikel musste ich schmunzeln. Auch ich fing mit Buch "Spieleprogrammierung mit Unity for Kidz" an.
Ich empfehle als Zusatz noch das Buch "Einstieg in Unity" vom Rheinwerk Verlag.

Viel Nerven und Spucke wird definitiv benötigt, aber sich als kleiner Gott zu fühlen ist schon eine feine Angelegenheit. Trotzdem neben dem eigentlichen Beruf wie bei mir ist es nicht einfach. Kind und Frau möchten ja auch etwas von einem haben. Nicht aufgeben heißt die Devise und selbst nach mehrwöchiger Pause kommt man gut wieder rein und hat jeweils einen neuen Blickwinkel auf die zuvor gelernten Fähigkeiten.

Was ich persönlich immer gern hätte einen Lernpartner der einem Mitzieht und umgekehrt. Gegenseitige Impulse sind immer fördernd.

NACHTRAG:
Bezüglich 3D-Modelle empfehle ich es immer wirklich nur Platzhalter-Objekte selbst zu generieren. Das reicht erstmal völlig aus. Zwei Lern-Themen sind doch relativ schwer zu meistern. Künstlerische Fähigkeiten scheinen mir persönlich oft schwerer als das Programmieren und logische Denken :)

Daher reichen mir z.B. bei 2D-Projekten kleine ausgefeilte Skizzen, die ich so mit Leben füllen kann. Aber ja da ging auch erstmal viel Zeit für Recherchen drauf und dann das Anwenden. :P

LRod 19 Megatalent - - 18439 - 24. Juli 2017 - 21:51 #

Lohnt "Einstieg in Unity" auch noch, wenn man den Einstieg quasi schon gemacht hat?

Kannst mir gerne mal schreiben, wenn du Feedback oder motivierende Worte brauchst. Hätte ich zwischenzeitlich auch immer mal gebrauchen können.

Ohne jetzt zu viel auf Teil 3 vorgreifen zu wollen, hast du mit den 3D-Modellen grundsätzlich recht. Aber es sieht einfach viel besser aus, wenn die Platzhalter weg sind...

Gurumeditation 13 Koop-Gamer - 1280 - 25. Juli 2017 - 9:39 #

Danke für dein Feedback zunächst.

Ich persönlich finde schon, dass dieses Buch einen zusätzliche Hilfestellung geben kann. Hier sind verschiedene Spiele-Typen aufgelistet, erklärt und werden direkt mit Code erklärt.

Was ich ausgezeichnet finde sind am Rande die platzierten KeyWords die einem genau vermitteln, was in dem entsprechenden Text-Block behandelt wird.

https://www.rheinwerk-verlag.de/einstieg-in-unity_4211/ hier kannst du dir ein paar Seiten direkt anschauen.

Ich besitze hier viele Unity Bücher, auch das von Carsten Seifert. Jedes Buch hat dabei Vor- und Nachteile

Unity für Kids und Einstieg in Unity finde ich dabei als beste Anfänger-Kombi.

Du wirkst aber dennoch schon recht weit, z.B. hast du dir ja bereits Code aus dem Netz gesucht und diesen verstanden, angepasst und eingebunden. Da fehlt mir noch die Herangehensweise.
Auch hast du bereits mit Shadern gearbeitet. Das Kids buch behandelt dies ja aber es war für mich noch nicht relevant.
Strategisch gehe ich so vor, dass ich nur für mich relevanten Punkte durchgehe.

Wichtig ist es im übrigen den Lesern noch zu vermitteln, wie ich als Programmieranfänger in UNITY denken muss.(was dann auf die Spiele allgemein angewandt wird). z.B. wie funktionieren die internen Timings. Wie muss ich mir vorstellen, wie der Code funktioniert und durchläuft. Das könnte auch ein spannendes Thema sein für deine Reihe. Einfach als Einblick und AHA Erlebnis.

Amüsant ist, dass ich selbst schon überlegte hier solch eine Reihe zu veröffentlichen, doch fühlt man sich oft reichlich dämlich bei der Lösung von simplen Problemen und denkt sich "bevor ich mit soetwas Beginne benötige ich noch ein festeres Wissensstandbein"

Ansonsten möchte ich zunächst noch lernen wie das mit den Speichern von Daten funktioniert, wie gehe ich mit Arrays um und wie kann ich das alles besser verstehen oder auch, dass nutzen von Interfaces (da sind nicht GUIs gemeint sondern Quasi-Schnittstellen)

---

Zu mir und meinem Projekt. (PS: Keine Werbung ^_^")

- wir sind drei Personen (2 Programmierer und ich als Projekt-"Treiber")

- wir entwickeln eine Kopie eines bekannten 2D Knobel-Spiels von Nintendo, dass wir gerne auf allen Plattformen sehen wollen (es war einfach das was ich als Machbar angesehen habe und auch ist und zudem viel Spielraum für weitere Variationen und Abwandlungen bietet)

- einen talentierten Grafiker besaßen wir auch, leider weiht er völlig unerwartet nicht mehr unter uns, sodass wir an der Stelle noch in Sondierungsmaßnahmen stecken und auch schon für ihn das Werk vollenden möchten. Zur Not muss an der Stelle eine Geschickte Notlösung aus meinen Händen her. Jedenfalls suchen wir an der Stelle keinen Illustratoren-Guru sondern nur jemanden der eine gute Portion Kreativität besitzt und über Stilsicherheit verfügt und gerne ein paar Stunden in der Woche seiner Freizeit opfert um später mit ein paar Euro mehr nach Hause geht =)

- ich persönlich versuche mich selbst an die Programmierung der Game-Logik und teste meine eigene Variation aus. Erstens möchte ich den Aufwand dahinter selbst sehen und verstehen können um auch entsprechend gute Arbeit mit dem Team zu ermöglichen. Zum anderen ist die Sehnsucht, da selbst Prototypen entwickeln zu können. Mir fällt es natürlich schwer, da ich früher nicht der Logiker war. Doch es geht im Alter bergauf mit den Skills :)

LRod 19 Megatalent - - 18439 - 28. Juli 2017 - 6:24 #

Mit den internen Abläufen von Unity hast du Recht, interessant ist es auf jeden Fall. Ich werde mal schauen, wie ich es unterbekomme.

Das Speichern von Daten ist auch etwas, womit ich mich noch mehr beschäftigen muss. Bei Python war das einfacher. Hier mache ich es über die PlayerPrefs (was auch von Seifert so gemacht wird). Da die Daten aber nach meinem Verständnis in der Registry abgelegt werden, ist daa keine Dauerlösung. Serialize scheint die Alternative zu sein. Das muss ich mir aber in Ruhe einmal anschauen.

Im Team zu arbeiten ist natürlich ein ganz anderes Arbeiten, auch weil man sich über Probleme austauschen und motivieren kann. Danach habe ich noch gar nicht gesucht, weil ich als Anfänger kein Klotz am Bein sein wollte :-)

Wenn ihr etwas vorzeigbares habt poste es gerne!

Jac 19 Megatalent - P - 15595 - 24. Juli 2017 - 16:49 #

Ein sehr interessanter und gut zu lesender User-Artikel, ich freue mich schon auf Teil 3!

xan 18 Doppel-Voter - P - 11648 - 24. Juli 2017 - 16:54 #

Schöner Artikel, finde es faszinierend wie du dich da durchbeißt, bei all den Hindernissen. Gerne weiter so, auch mit den Artikeln!

Harry67 20 Gold-Gamer - - 24208 - 24. Juli 2017 - 17:47 #

Sehr schön, danke sehr!

conny127 13 Koop-Gamer - P - 1237 - 24. Juli 2017 - 17:49 #

Super interessanter Artikel, bin gespannt auf den dritten Teil.

Loco 17 Shapeshifter - 8999 - 24. Juli 2017 - 18:49 #

Schöne Idee. Würde mir zwar mehr Praxis und Beispiele wünschen, statt nur einem "Tagebuch" aber nett ist es allemal, vor allem aus der Perspektive.

Harry67 20 Gold-Gamer - - 24208 - 24. Juli 2017 - 19:37 #

Kauf dir doch das Buch, da steht alles drin.

LRod 19 Megatalent - - 18439 - 24. Juli 2017 - 21:59 #

Ich hatte auch überlegt, ob ich ein paar konkretere Beispiele einbaue. Aber technisch bin ich weit unter dem Niveau der genannten Bücher und Tutorials und Code-Beispiele u.Ä. bringen auch nur etwas, wenn ich zuvor die genutzten Befehle erklären würde (was wiederum den Rahmen hier sprngen und mein Wissen übersteigen würde).

Von daher verstehe ich diese Reihe in der Tat eher als "Tagebuch", um zu zeigen, dass man sich das Programmieren mit etwas Geduld durchaus selbst aneignen kann.

mrkhfloppy 22 Motivator - 35681 - 24. Juli 2017 - 19:41 #

Es macht Spaß, dir auf deiner Reise zu folgen. Der Blick von außen ist sehr interessant und die Mühen, sich das alles auto-didaktisch mit Hilfe des Internets anzueignen, gut nachzuvollziehen.

Labrador Nelson 31 Gamer-Veteran - P - 265167 - 24. Juli 2017 - 19:57 #

Ganz toller Artikel! Hat mich an meine erfolglosen Versuche von damals erinnert. ;)

timeagent 19 Megatalent - - 18391 - 24. Juli 2017 - 20:04 #

Programmieren ist ein schönes Hobby, also bleib am Ball LRod. Ich freu mich schon auf Teil 3 - denn mit solchen Angelegenheiten (Grafik, Design, "soll nach etwas aussehen) tue ich mir immer schwer, obs jetzt GTK oder etwas aus dem Web-Umfeld ist - von 3D rede ich noch nicht mal.

*Daumen nach oben*

misc 18 Doppel-Voter - 11080 - 24. Juli 2017 - 21:52 #

Als jemand der täglich Bits und Bytes massiert: gut und anschaulich geschrieben und für Anfänger sicherlich motivierend.

Willst Du irgendwann auch mal noch in die "Königsklasse" aufsteigen und funktionale Programmierung erlernen?

LRod 19 Megatalent - - 18439 - 24. Juli 2017 - 22:06 #

Das ist eine gute Frage. Mit Python habe ich auch ohne Spielebezug ein wenig experimentiert (z.B. mit dem Raspberry Pi).

Generell habe ich vor, mich auch abseits von Unity weiter mit Python und C# zu beschäftigen. Mangels Lehrplan hängt die konkrete Richtung aber letztlich davon ab, dass ich ein Nachfolgeprojekt finde, dass mich motiviert, auch bei Schwierigkeiten dranzubleiben.

Q-Bert 25 Platin-Gamer - P - 56324 - 24. Juli 2017 - 22:09 #

Super, dass du am Thema dran bleibst, LRod!

C# mag ich in Verbindung mit dem Mono-Framework sehr, vor allem kommt man zu schnellen Ergebnissen. Unity mag ich persönlich nicht so sehr, aber ich kann schon verstehen, warum es bei Entwicklern so beliebt ist.

Hier noch ein paar Links zu Free-3D-Assets:
https://opengameart.org/
https://www.turbosquid.com/Search/3D-Models/free
https://www.cgtrader.com/3d-models

Solltest Du den Weg weiter gehen, dann schau einfach mal in DEV-Foren und frag nach Grafikern/Musikern, die was im Team machen wollen. Alles selbst zu machen, Proggen, Graffix, Muzak 'n Sound, führt schnell dazu, dass man sich endlos verzettelt. Vielleicht gibt's aber ja bei dir in der Nähe Leute, die einen Programmierer suchen?? So haben viele Erfolgsstories angefangen :)

LRod 19 Megatalent - - 18439 - 25. Juli 2017 - 21:00 #

Danke für die Links. Ich bin ja diesem Text noch ein paar Monate voraus, erst mit Teil 4 werde ich mich selbst eingeholt haben. Nach 3D-Assets habe ich also tatsächlich schon gesucht, meine Erfahrungen dazu kommen in Teil 3. Mit dem Verzetteln hast du definitv Recht ;-)

Olipool 19 Megatalent - P - 13527 - 24. Juli 2017 - 22:48 #

Schön geschrieben, du könntest noch die Links zu den ganzen Tutorials ergänzen, die du erwähnst, falls jemand deinen Weg nachgehen möchte.

Von mir noch als Tipps:
-freie Sounds gibts z.B. auf https://freesound.org/
-schöne Einsteigertutorials gibts hier, kannst du natürlich auch welche überspringen: https://www.youtube.com/watch?v=_cCGBMmMOFw&list=PLFt_AvWsXl0fnA91TcmkRyhhixX9CO3Lw

Viele Spaß und Erfolg weiterhin!

LRod 19 Megatalent - - 18439 - 25. Juli 2017 - 20:57 #

Mit den Tutorials hast du recht, ich habe leider nicht mehr alle Bookmarks, aber ich werde versuchen, die noch zu ergänzen.

Auf Freesound bin ich auch schon gestoßen, sehr gute Seite!

Die Einsteigertutorials waren dagegen neu für mich und ein paar Themen, die ich noch einmal anhören sollte, habe ich da ausmachen können, vielen Dank!

flying-horst 11 Forenversteher - P - 671 - 25. Juli 2017 - 6:59 #

An das Buch von dem Seifert hatte ich auch deutlich höhere Erwartungen. Nach einigem Durchblättern war das direkt wieder bei Amazon drin, da hier wirklich völlig der rote Faden fehlte.

worobl 17 Shapeshifter - P - 6850 - 25. Juli 2017 - 8:09 #

Ein sehr schöner Artikel, da juckt es einen doch stark in den Fingern, mal wieder selbst was zu programmieren.

Faerwynn 20 Gold-Gamer - P - 20222 - 25. Juli 2017 - 8:58 #

Danke für den Artikel, das ist für mich sehr spannend mal zu sehen, wie jemand da rein als Hobby rangeht. Ich selbst habe durch mein Studium an einer Technischen Uni sehr viele informatische Grundlagen beigebracht bekommen, und war dadurch auch geübt ein Paper aus dem Netz zu nehmen und die Inhalte zu implementieren. Respekt davor das ganze ohne einen solchen Background zu lernen und sich durchzubeißen!

stylopath 17 Shapeshifter - 6257 - 25. Juli 2017 - 12:49 #

Wirklich super Artikel! Freue mich schon hart auf den dritten Teil! Ich versteh es auch eher als Tagebuch, großartig Beispiele brauch ich Garnicht, es ist auf jeden Fall eine Inspiration! Mach weiter so (bis jetzt, für mich, der beste Userartikel auf gg), ich hoffe mit Teil 3 bist du noch nicht am Ende, das wir noch viel von deiner Reise mitbekommen!

LRod 19 Megatalent - - 18439 - 25. Juli 2017 - 20:42 #

Zunächst einmal - natürlich auch an die anderen User - vielen Dank für die zahlreichen Komplimente!

Zwei weitere Teile sind noch fest geplant. Teil 3 sollte auch schneller kommen als dieser hier. Teil 4 holt mich dann aber bei einem spannenden Thema im hier und jetzt ein. Wie es danach weitergeht hängt also davon ab, wie es danach weitergeht.

vermeer 14 Komm-Experte - 2494 - 25. Juli 2017 - 13:39 #

Her mit Teil 3, aber fix! :)

TheRaffer 23 Langzeituser - P - 40202 - 25. Juli 2017 - 17:37 #

Cooler Artikel. Echt interessant das so mitzuverfolgen. Ich bewundere deinen Elan bei der Sache :)

Matze 10 Kommunikator - 470 - 26. Juli 2017 - 14:51 #

Kann mich den Leuten nur anschließen, wirklich schön zu lesen. Du wirst aber wahrscheinlich mehrere Frustmomente gehabt haben als du zählen kannst oder? Ich wollte in jüngeren Jahren mir ebenso solch ein Wissen aneignen. Bin dann aber zur elektronischen Musik gekommen. Tja und der Tag hat leider zu wenig Stunden :)

Wenn du dich aber bei Teil 4 eingeholt hast, müssen wir wahrscheinlich länger auf eine Fortsetzung warten?

LRod 19 Megatalent - - 18439 - 26. Juli 2017 - 18:13 #

Ja, da waren einige dabei. Aber umso schöner ist es dann, wenn es am Ende doch irgendwie geht. Wie bei einem guten Spiel halt :-)

Ich denke Teil 3 folgt in 1-2 Monaten, Teil 4 kann ich noch nicht sicher sagen, aber das Thema steht. Damit ärgere ich mich aktuell aber noch rum, ist aber ja auch noch Zeit. Ein eventueller Teil 5 hängt dann von weiteren Ideen ab - eine konkrete sehr spannende habe ich, aber mal schauen, ob ich die auch umsetzen kann :-)

Matze 10 Kommunikator - 470 - 27. Juli 2017 - 13:20 #

Du hast also schon ein richtigen Plan, super. Dann kann ich mich, wie die anderen wahrscheinlich auch, schon mal freuen. Dann wünsche ich dir frohes Schaffen und hoffentlich nicht allzu viele Frustmomente ;)

Der Marian 21 AAA-Gamer - P - 29626 - 26. Juli 2017 - 15:32 #

Toller Artikel. Ich bin schon auf die nächsten gespannt. Macht mir Lust auch mal wieder ein Projekt zu starten.
Sehe gerade, dass nächstes Wochenende auch Ludum Dare ist. Für alle Game-Jam-interessierten: https://ldjam.com/

LRod 19 Megatalent - - 18439 - 27. Juli 2017 - 16:56 #

Spannend, da sind ja gleiche mehrere bekannte Titel wie Evoland draus entstanden!

Slaytanic 25 Platin-Gamer - - 62028 - 29. Juli 2017 - 20:16 #

Ich kann mich dem Lob der Vorposter nur anschliessen. Das war ohne längen flott zu lesen. Ich freue mich auch auf die Fortsetzungen deiner Programmiererfahrungen.

blobblond 20 Gold-Gamer - P - 24478 - 1. August 2017 - 18:43 #

Auf Humble gibt es ein Book/Video Bundle zu Unreal Engine & Unity 5
zum Beispiel:
Unity 5.x Game AI Programming Cookbook
Unity 5 for Beginners
Learning C# by Developing Games with Unity 5.x
https://www.humblebundle.com/books/unreal-unity5-book-bundle