2.1.23 – 8.1.23 (Mo-So) // freier Tag: So // Gesamtzeit: 5 Stunden // Ø pro Tag: 43 Minuten
Die erste Woche meines GDScript Kurses „Learn to Code From Zero With Godot“ ist vorbei. Wie im Kurs empfohlen, habe ich – bis auf einen freien Tag – jeden Tag etwas gemacht und sei es auch nur kurz. An einem Abend habe ich z.B. nur 10 Minuten damit verbracht, was laut Kurs wohl immer noch besser sein soll, als an diesem Tag gar nichts und stattdessen an einem anderen Tag 10 Minuten dranzuhängen. Ich glaube, dass das stimmt. So bleibe ich im Flow bzw. die Lerninhalte präsent, weil keine großen Pausen zwischen den Lektionen entstehen.
Ein weiterer Tipp war, mir ein Lerntagebuch anzulegen, was ich natürlich auch gemacht habe. Inklusive eines nicht ganz so billigen LAMY-Kugelschreibers (der Nostalgie wegen). Dieses Tagebuch hilft mir nun auch ganz enorm beim Schreiben dieses Beitrages. Denn zum einen habe ich darin die Zeiten vermerkt, wann und wie lange ich gelernt habe. Das würde ich hier auf der Website nämlich gerne sammeln, um am Ende eine Übersicht darüber zu haben, wie lange es ganz konkret für mich gedauert hat, bis ich bestimmte Sachen kann, die ich vorher nicht konnte. Und zum anderen hilft es mir jetzt natürlich auch dabei, mich daran zu erinnern, was ich diese Woche gelernt habe und folglich, was ich überhaupt schreiben soll.
Insofern ist dieser Blog also nicht nur ein Nach-Draußen-Tragen meines Projekts, sondern auch eine weitere Lernhilfe. Unmittelbar nach den Übungseinheiten schreibe ich handschriftlich in mein Lerntagebuch, was ich getan habe. Und nach einer Woche – so wie jetzt – fasse ich das alles ein weiteres mal zusammen und vergegenwärtige mir die Inhalte erneut. Klingt doch gar nicht schlecht!?
Ihr merkt: ich bin schon ganz zufrieden mit dem Start. 🙂 Nun aber Butter bei die Fische: was habe ich diese Woche gemacht?
Was habe ich gelernt?
Neben allgemeinen Lerntipps (siehe oben) und eine Übersicht davon, was mich im Kurs erwartet, wie ich Dateien importiere, wie Hotkeys belegt sind etc. ging es ganz konkret an die Basics von GDScript.
Der Start war ein Traum. Dort durfte ich nämlich aus vorgefertigten Assets das Spiel zusammen stellen, was ich am Ende des Kurses mit den erlangten Skills selbst erstellen könnte. Ein 2D-Spiel, in dem ein Roboter Gegner wegballert, Items aufsammelt, sich heilen kann und derlei klassische Geschichten. Das alles geschah mehr oder weniger per Drag & Drop. Also ultra easy, kein Lernwert, aber – ganz entscheidend! – Motivation für das, was noch kommt. Wenn man erstmal sieht, was mit ein „paar Zeilen Code“ erstellt werden kann – also was ICH erstellen KÖNNTE – macht das schon was mit einem. Mit mir zumindest.
Weiter ging es mit der Einführung der Godot-Lern-App von GDQuest. Ein Programm, in dem die Theorie erklärt wird und für die Übungen direkt in der Appt Code geschrieben kann. Der Code wird dann gleich daraufhin geprüft, ob die Aufgaben wie gefordert erfüllt sind oder nicht. Das Tolle dabei: viel davon passiert im Hintergrund. Das heißt ich kann mich wirklich voll auf die für die Übung relevanten Code-Schnipsel fokussieren und alles was noch zu viel für mein Skill-Level ist (also quasi alles!), wird erstmal ausgeblendet.
Die ersten Übungen bestanden darin, was Funktionen sind, wie deren Syntax aussieht und wie man sie verschachtelt. Danach wurden Funktionen mit Parametern versehen, denen wiederum Werte zugewiesen wurden. Das war für mich direkt verwirrend, weil mich nicht klar war, wo die Werte her kamen. Das hat offenbar das Programm für mich erledigt. Für jemanden wie mich, der in der Schule schon mal programmiert hat, war die Reduktion, die ich im vorherigen Absatz erwähnt habe, hier also etwas zu viel des Guten, da es auch nicht erklärt wurde – oder ich überlesen habe.
Dann standen Variablen auf dem Programm. Also Einsatz, Defintion usw. Da ich auch damit in der Vergangenheit bereits zu tun hatte, gingen diese Übungen gut von der Hand.
Neu, aber offenbar für ein Spiel EXTREM wichtig, war hingegen die Funktion „_process“ mit dem Parameter „delta“. Die Funktion führt dazu, dass sie einmal pro Frame ausgeführt wird. Mit dem Parameter „delta“ kann man diese Funktion zeitabhängig, statt frameabhängig machen. Das ist wichtig, damit das Spiel auf jedem PC gleich läuft und sich die Spielfigur auf schnellen Rechnern (= mehr Frames) nichts anders bewegt also auf langsamen Rechnern (= wenig Frames). Fand ich insofern spannend, als dass es sich hierbei anscheinend um ein spezifisches Problem in der Spielentwicklung handelt, über das ich ansonsten nie nachgedacht hätte.
Weitere Lerninhalte waren IF-Bedingungen, die für mich inhaltlich nicht schwer waren, weil ich sie bereits kannte. Trotzdem waren und sind sie ein Problem für mich, weil ich auf meiner 70%-Layout-Tastatur keine Größer- und Kleiner-Zeichen hinbekomme … Zu schreiben: WENN x größer als y, ist also schwierig und nur mit Copy-Paste des Zeichens möglich. Nervig, muss ich dringend lösen!
Etwas angestanden bin ich beim nächsten Kapitel. Dort wurde mir der Operator „Modulo (%)“ beigebracht, der mir den Rest einer Division angibt. Habe mich schwer damit getan, einen Würfel zu programmieren. Das war bisher die einzige Übung, bei der ich auf die Lösung zurückgreifen musste. Ich habe erst nicht ganz verstanden, wieso welcher Rest bleibt. Zum Beispiel, dass ich bei einer zufälligen, irrsinnig großen Zahl, geteilt durch „Modulo 6“, hinten noch „+ 1“ dranhängen muss, um wirklich einen sechsseitigen Würfel zu haben. Ergibt aber insofern Sinn, als dass ja auch „Rest = 0“ sein kann und diese Würfelseite gibt es nun mal nicht.
Die Woche abgeschlossen habe ich mit einer sehr kurzen Einheit, die nur zehn Minuten gedauert hat. Ich war schon zu müde, um mehr zu schaffen und musste komplizierte Sachen bereits dreimal lesen. Deshalb war mehr einfach nicht mehr drin. Zumal es auch ein wichtiger Inhalt war: Vektoren. Die werden für offenbar so ziemlich alles verwendet, was in einem 2D-Raum geschieht. Also Movement, Scale, Position usw. Ebenfalls eine Lektion, die für ein Spiel also SEHR wichtig ist.
Fazit nach der ersten Woche
Und dann war die Woche auch schon um. Hat Spaß gemacht und ich habe viel gelernt. Bin gespannt, wie viel von dem Gelernten am Ende wirklich hängen bleibt und wie oft ich Sachen nachschlagen muss. Wobei das Nachschlagen laut Kurs nicht nur kein Problem, sondern den Alltag beim Programmieren darstellt. Wichtig sei vor allem, dass man die Sachen grundsätzlich verstanden hat. Und ich denke das habe ich. Meistens. Und die Stolpersteine schaue ich mir nochmal genauer an.
Bin gespannt was mich nächste Woche erwartet. 🙂