Wenn Klassiker Klasse haben

Seit letztem Sommer ist die Unreal Engine 5 als Beta-Version verfügbar. Bereits so verspricht diese Game Engine wieder einmal einen riesigen Schritt in Richtung visueller Programmierung und ressourcenschonendes Gaming zu machen.

Was daraus wurde, seht ihr weiter unten.

Atome spalten ist ein Kinderspiel, verglichen mit einem Kinderspiel.

Albert Einstein, Physiker, 1879 – 1955

Schon lange ist das Umsetzen eines Games, bei dem man einen unbewussten Lerneffekt hat, ein Traum von mir.

Da noch niemand als Meister geboren wurde, habe ich mich dazu entschlossen, zusammen mit der neuen Unreal Engine 5 zu starten und mit ihr gross zu werden. Als erstes Übungsprojekt wählte ich dazu Pong, ein Spiel, das meines Erachtens jeder irgendwann mal gesehen haben muss.

Um mich auf das spätere Projekt vorzubereiten, startete ich also das Projekt Pong3D. Das Ziel von Pong3D war es, das ursprüngliche Spiel in moderner Technologie zu rekonstruieren und darüber hinaus zu erweitern.

Das Spiel kann hier heruntergeladen werden

(dbo)

Idee

Um zu lernen, wie man in der Unreal Engine arbeitet, startete ich das Projekt Pong3D. Ich wählte Pong (ausser weil es mir vorgeschlagen wurde), weil es ein Spiel ohne Schnickschnack ist. Das macht es prädestiniert für einen Anfänger wie mich. Die nötige Logik ist einfach und trotzdem leicht erweiterbar. Die Möglichkeiten wären unbegrenzt, Farben statt schwarz weiss, Farbverläufe statt Flächen, Icons statt Quadrate, Schüsse (à la space invaders), und noch viel mehr hätte man in das Spiel integrieren können. Hätte man.

Als Vorbild dient das Spiel Pong von Atari.

Als Lernunterlagen dienten verschiedene YouTube Tutorials und gegen Ende verstärkt die Unreal Dokumentation.

Prozess

Als Erstes habe ich mir Tutorials zum Erstellen von 2D Games in Unreal angeschaut. Mein Spiel soll zwar in einem dreidimensionalen Raum stattfinden, ist aber durch sein Erscheinungsbild 2D.

Danach habe ich das Spielfeld mit «Torhütern» und Ball erstellt.

Für die Logik musste ich mehrere Tutorials zur Hilfe nehmen, da man ohne ein Grundverständnis für die Namen der «Nodes» keine Chance hat.

Als Letztes habe ich dann über die ursprüngliche Spielmechanik hinaus versucht, Regeln und Optionen in das Spiel einzubinden.

Kritik

Ich bin froh, habe ich schon früher immer wieder einen Blick auf C, C++, C# oder Python geworfen. Dies hat mir extrem geholfen, die Logik beim Programmieren zu verstehen.

Was mich in der ganzen Arbeit stark gehindert hat, war die fehlende Dokumentation und Tutorial dichte für UE5. Die firmeneigene Dokumentation ist zwar mit UE5 betitelt, fast alle Artikel sind aber noch gar nicht umgeschrieben für die neue Version. Wenn etwa nicht funktioniert, steht man alleine vor einem unverständlichen Problem.

Das Programmieren verlief gut, Fehler habe ich nach genauer Betrachtung des Codes und der Dokumentation meistens in einem moderaten Zeitrahmen gefunden.

Einige Funktionen konnte ich trotz sehr langem versuchen nicht zum Laufen bringen, so zum Beispiel der Austausch von Variablen zwischen verschiedenen Blueprints. Gerade dies hat mir schlussendlich viel Zeit geraubt und die Möglichkeit auf «Optionen» erschwert, da ich nicht im Hauptmenü eine Variabel schreiben und im Spiel lesen konnte.

 

Erkenntnisse

Das Programmieren von Spielen ist etwas, mit dem ich mich intensiver auseinandersetzen möchte.

Bis die Dokumentation für UE5 halbwegs vollständig ist, hat es keinen Sinn sich auf das neue Programm einzustimmen.

Das Basic Spiel hat deutlich mehr Zeit in Anspruch genommen als ich dachte. Die Logik ist extrem simpel, aber der Umgang mit der Engine schränkt mich ein.