Nun… als aller erstes musst du dir überlegen: 2D oder 3D?
Heutzutage wird alles, selbst Strategie- und Aufbauspiele in 3D programmiert. Dafür brauchst du natürlich auch eine Engine. Da gibt es einige, zum einen das von dir bereits erwähnte UDK, aber auch viele andere. Wenn du mit Java programmieren willst, empfehle ich dir die jMonkeyEngine. Habe selber damit schon gearbeitet und auch wenn die Engine noch in der Beta ist, ist sie nicht groß verbuggt und die Dokumentation ist auch nicht schlecht. Bei VB weiß ich nicht, ob es da was an Engine gibt und welche. Ich weiß nur, dass es dieses XNA von Microsoft gibt, welches glaube ich mit C# zu programmieren ist (wenn du VB und Java kannst, kannst du auch C# - die API usw. ist die gleiche wie in VB, die Syntax ist wie Java).
Die Überlegung, ob du ein 3D- oder 2D-Spiel programmierst kannst du aber auch erstmal zurück stellen. Die ganze Spiellogik kannst du ja unabhängig davon programmieren.
Trotzdem würde ich eher zu 3D tendieren… 2D-Spiele sind heutzutage… naja - alt. Und selbst bei einem Aufbauspiel ist ne Schrägansicht eine schöne Sache. Zumal 2D denke ich manchmal auch ganz schln „kompliziert“ werden kann und man auf nur zwei Dimensionen beschränkt ist. Wenn du künstlerisch ganz gut begabt bist, bekommst du es auch sicher einfacher hin, einem 2D-Spiel einen lebendigen Eindruck zu verpassen - bei 3D ist das kein Problem, da es dreidimensional *ist*.
Java hat zwar den Ruf, viel zu unperformant und daher nicht für Spiele geeignet zu sein, aber das hat sich auch verbessert im Gegensatz zu früher. Und wenn man sich mal bspw. Minecraft anguckt: Laufen tut’s. Und ob ein in C geschriebenes Minecraft besser liefe, hat noch niemand beweisen können. Dennoch: C/C++ ist die typische Spiele-Sprache. Wie weit VB davon entfernt ist, weiß ich nicht… ich habe aber den Eindruck, dass VB nicht unbedingt gut für Spiele geeignet ist. Aber das ist nur ein Eindruck.
Man kann definitiv mit Java Spiele programmieren, auch wenn es wohl bessere Alternativen gibt. Aber wenn man Java kann, und C nicht, dann ist es eigentlich keine Frage: Programmier in Java. Aber informier dich auch, inwieweit VB geeignet ist.
Die jMonkeyEngine bspw. hat eine recht gute Dokumentation mit Tutorials, die beständig weiter ausgebaut werden. das UDK hat sicher auch nen Haufen Tutorials, aber wie viel davon nicht speziell aufs UDK zugeschnitten sonderna llgemein gehalten ist, weiß ich nicht. Aber wenn du schon mal was programmiert hast, versuch es einfach mal. Ich habe auch angefangen, ohne tausende Tutorial nachzumachen und es hat geklappt.
Geh einfach an die Sache ran, indem du anfängst zu abstrahieren: Stelle alle Sachen, die am Ende im Spiel sein sollen, durch Klassen und Attribute dar, schreibe passende Methoden, um das ganze zu verzahnen. Das Weitere ergibt sich dann schon irgendwie, ist zumindest meine Erfahrung.
Noch zu den Engines: Die jMonkeyEngine hat sowohl ne Render-Engine, als auch eine Physik- und Sound-Engine mit an Bord, hat ein fertiges Asset-Management-System und so weiter. Damit anzufangen halte ich für sehr sinnvoll, da ziemlich vieles schon fertig und das ganze damit sehr übersichtlich ist. Wie das UDK da im Vergleich ist - keine Ahhnung. Aber das geht ja eh nur mit C/C++ (oder?).
Such dir also eine Engine, die nicht nur ne einfache Render-Engine ist, sondern auch gleich ne Physik-Engine mitliefert. Im Falle der jME hat man auch noch mehr an Bord und viele Klassen, die dir viele Funktionen schön gekapselt präsentieren.
Trotzdem kannst du auch erstmal anfangen, ohne dir über Engines Gedanken zu machen und deine Arbeit dann später auf das System der Engine portieren.
Wenn du noch weitere Fragen hast, frage
Viel Spaß beim proggen,
Rimanari