Platz 2 beim “Dynamischen Dungeon” geht an Manuel
Manuel ist Schüler und hat sich in das Erlernen und Anwenden von JavaScript gekniet. Seine Lösung hat überzeugt.
Manuel ist erst 16 Jahr alt und gewinnt mit seiner Lösung beim Programmierwettbewerb “Dynamischer Dungeon 2017 den zweiten Platz und damit 400€. Herzlichen Glückwunsch!
Wieso man mit der manuellen Implementierung eines Framerate-Begrenzers aufpassen sollte, erklärt er Euch im Interview 😉
IT-Talents: Hallo Manuel, herzlichen Glückwunsch zu Deinem zweiten Platz bei der Code Competition „Dynamischer Dungeon 2017“! Erzähl den anderen IT-Talenten doch kurz etwas über Dich.
Manuel: Hallo! Ich bin 16 Jahre alt und gehe in Salzburg in die 7. Klasse (in Deutschland würde man sagen 11. Schulstufe) Gymnasium. Seit einem Jahr bringe ich mir mit Hilfe des Internets JavaScript bei.
IT-Talents: Was hat Dich motiviert, an der Competition teilzunehmen und wie bist Du auf den Wettbewerb aufmerksam geworden?
Manuel: Nachdem ich schon einige Projekte selbst umgesetzt hatte, mir in meiner Umgebung aber niemand Kritik oder Tipps geben konnte, schaute ich mich online nach einem Programmierwettbewerb oder ähnlichem um. Erst fand ich nur Code Competitions, deren Abgabefristen schon unrealistisch nahe gerückt waren, doch dann stieß ich glücklicherweise auf eure Website. Da war gerade der Big-Data-Prediction-Wettbewerb am Laufen und ich beschloss: Nächsten Monat mach ich mit!
IT-Talents: Wie bist Du an die Lösung der Aufgabenstellung herangegangen? Hattest Du schon Erfahrung mit der Generierung von Dungeons und Wegfindungs-Strategien?
Manuel: Mit der Generierung von Dungeons oder generierenden Algorithmen generell hatte ich mich vor dem Programmierwettbewerb noch nie auseinandergesetzt. Zuerst überlegte ich wie ein Level in meinem Spiel aussehen sollte. Ich entschied mich für ein Kammersystem wie im nebenstehenden Bild. Ich analysierte welche Schritte mein Algorithmus durchführen müsste um so ein Level erzeugen zu können und begann diese einzelnen Schritte umzusetzen. Das gestaltete sich verschieden schwierig aber am Ende war ich überrascht wie schnell der Algorithmus konstant gute Ergebnisse lieferte und ich konnte mich auf das eigentliche Gameplay konzentrieren.
IT-Talents: Du hast Dich für eine Lösung der Aufgabenstellung in JavaScript entschieden, wieso?
Manuel: Wie erwähnt ist JavaScript bisher (leider) die einzige mir vertraute Programmiersprache. Ich denke aber mein Spiel würde sich eh gut als kleines Online-Game machen – da passt JavaScript ja ganz gut!
IT-Talents: Welche Probleme sind bei der Entwicklung der Software aufgekommen? Wie lange hat die Entwicklung gedauert?
Manuel: Oh Probleme sind unzählige aufgetaucht. Ich fing direkt am ersten Tag der Verkündigung des Wettbewerbs an zu Programmieren und wurde erst (schweiß-überströmt) wenige Minuten vor Abgabefrist fertig. In den ersten 2 Wochen des Wettbewerbs unternahm ich mit meinen Eltern eine Kreuzfahrt – Während wir in den verschiedenen Städten bummelten war ich in Gedanken ständig bei meinem Programm um mich auf dem Schiff dann wieder direkt an die Tasten zu stürzen (meine Eltern waren darüber eher mäßig erfreut). Nimmt man die Stunden die ich abseits des Bildschirms über das Projekt nachdachte und die Code-Arbeit zusammen arbeitete ich sicher über 65 Stunden an dem Programm.
Probleme sind in dieser Zeit selbsterklärend viele aufgetaucht. Ich habe noch nie so ein großes Projekt umgesetzt und man kann sich vorstellen wie oft ich dachte: “Daran hätte ich vorher denken sollen!”. Besonders in Erinnerung blieb mir aber ein Fehler:
Zu Beginn der Entwicklung konzentrierte ich mich hauptsächlich auf den Algorithmus zur Level-Generierung. Dieser Algorithmus wählt unter anderem mehrere Kammern des Levels aus, zwischen denen er Verbindungen schafft. Um besser kontrollieren zu können, ob er das wie von mir intendiert macht, stellte ich die Framerate auf 5 FPS und befahl ihm pro Frame nur eine Verbindung zu setzen. Als der Algorithmus nach einigem Optimieren diesen Arbeitsschritt einwandfrei ausübte ließ ich ihn wieder das gesamte Level auf einmal, nicht Frame für Frame generieren. Während ich mich an den nächsten Arbeitsschritt des Algorithmus setzte vergaß ich aber ganz die Code-Line, die die Framerate des Programms fix auf 5 legte, zu entfernen und als der Level-Generierende Algorithmus fertiggestellt war und ich begann, das eigentliche Gameplay zu entwickeln, hatte ich sie komplett verdrängt. Ich verbrachte Stunden und Tage damit herauszufinden zu versuchen warum das Spiel denn so langsam lief – Hatte ich JavaScript mit den verschiedenen Zombie-Arten überfordert? Lags am Browser? Was wenn ich die Level einfach kleiner mache? Ich versuchte alles um die eigentlich von mir selbst auf 5 festgelegte Framerate irgendwie in die Höhe zu treiben und wurde beinahe wahnsinnig als nichts funktionierte. Tja, 2 einhalb Wochen später, als das Spiel schon fast fertig aber immer noch so langsam wie auf einem Computer der 80er lief, schaute ich zufällig noch einmal in die Setup-function des Programms. Meine Reaktion, als ich die FrameRate(5) Zeile entdeckte, kann man sich vorstellen -.-
IT-Talents: Eine spannende Anekdote 😉 Und was hast Du durch die Entwicklung gelernt?
Manuel: Vor allem habe ich bei der Entwicklung gelernt wie ich Schritt für Schritt an einen Algorithmus herangehen kann. Seine Aufgabe in einzelne Teile zu zerlegen, diese Schrittweise zu erarbeiten und zu testen. Auch über das Organisieren im Code (aber auch zeitlich) eines größeren Projekts lernte ich viel (das ich jetzt auch bei den Code-Competitions der letzten 2 Monate anwenden konnte!).
IT-Talents: Zu guter Letzt: Was würdest Du Dir thematisch gerne einmal als Code Competition wünschen?
Manuel: Hm. Als ich noch jünger war wunderte ich mich oft wie Aufzüge berechnen in welches Stockwerk sie als nächstes fahren – wie man strategisch am meisten Menschen mit am wenigsten Wartezeit befördern kann. Ich fände ein Programm zu schreiben, das einen eigenen solchen Aufzug-Algorithmus in verschiedenen Situationen (verschieden viele Aufzüge, Stockwerke (vielleicht auch Stockwerke zu denen nicht alle Aufzüge können), verschiedene Stoßzeiten etc.) testet, als Aufgabe interessant.
IT-Talents: Vielen Dank für Deine Teilnahme, das Interview und viel Spaß mit Deinem Gewinn 😉
Rückmeldungen