Welche Programmsprache für Open world 3d games?

3 Antworten

Ihr solltet lieber klein anfangen und es euch ordentlich beibringen. Es gibt gute Literatur, damit kann man starten. Von YouTube Videos rate ich immer ab, sie behandeln das Ganze zu oberflächlich.

Bis man an dem Punkt ist, Spiele sauber zu entwickeln vergehen Jahre, wenn man es nur als Hobby macht.

Es ist schön, dass ihr euch dafür interessiert. Abe erlernt ihr es einmal falsch, ist es schwer, sich wieder zu ändern.

Naja große Game Engines benutzen C# oder C++, z.B. Unity oder die Unreal Engine.

Aber ein 3D Open-World Spiel ist schon ein großer Brocken für den Anfang, fangt lieber eine Dimension kleiner an, also mit 2D Spielen.

Einen Spieleentwicklerkurs zu besuchen (ob virtuell oder analog eigentlich egal), wäre auch eine gute Möglichkeit, die Programmiersprache und -umgebung kennenzulernen.

Unity und die Unreal Engine sind vollkommen kostenlos. (Gibt noch mehr kostenlose gute Optionen.)

Woher ich das weiß:Hobby
(...) welche Sprache nutzen wir am besten (...),

Grundsätzlich würde ich zu einer Sprache raten, die eine möglichst geringe Einstiegshürde hat und (verhältnismäßig) leicht bedienbar ist (Beispiele: Lua, C#, GDScript, Angelscript).

Allerdings hängt es letzten Endes auch etwas davon ab, mit welchen Entwicklungstools ihr arbeiten wollt, denn nicht jedes Tool unterstützt jede Sprache.

(...) wie liegt der KostenFaktor bei einem solchen Plan (...)

Tragt erst einmal zusammen, was ihr für euer Spiel braucht. Mir fallen spontan diese Punkte ein, die Kosten verursachen könnten:

  • Zugriff auf Lernmaterial
  • Spielkomponenten (Audio, Texturen/Materials, 3D-Modelle)
  • Weitere externe Ressourcen (Programmbibliotheken o.ä.)
  • Entwicklungssoftware (Programmierung/Audio-, Video- und Grafikbearbeitung/Modellierung)
  • Hardware (darunter zähle ich auch Testgeräte, Aufnahmegeräte)
  • Stromkosten (dazu sei gesagt, dass einige Prozesse wie das Rendern von Videosequenzen ziemlich zeit- und rechenintensiv sein kann)
  • etwaige Lizenzkosten/Publikationskosten auf bestimmten Plattformen (Apple Store, Steam, o.ä.)
(...), was müssen wir unbedingt beachten und habt ihr noch Tipps? (...)

Startet erst mit einer Planungsphase, bevor ihr mit irgendetwas anderem anfangt. Der erste Schritt in dieser Phase wäre eine möglichst genaue Beschreibung eurer Spielidee und auch der Spielwelt (Aufbau / notwendige Assets, Story, Mechaniken). Zieht dabei auch Grenzen und legt klare Key Features fest. Überlegt euch dabei, ob eure Ideen tatsächlich Spielspaß erzeugen können oder mehr nice-to-have sind.

Im besten Fall reduziert ihr euch in allen Punkten (Größe der Spielwelt, Storyumfang, Anzahl der Zielplattformen, Detailgrad, usw.) und priorisiert eure Ideen, um euer Kernziel nicht zu schnell aus den Augen zu verlieren oder euch zu sehr zu überfordern. Bedenkt dabei auch, dass (zumindest bei einer späteren Veröffentlichung) eine halbwegs ordentliche Testphase mit zur Entwicklung gehört. Ich habe in den letzten Jahren genügend Spiele von Hobbyentwicklern gesehen, die in der Hinsicht eine absolute Zumutung waren (heißt: Sackgassen nach bereits wenigen Minuten Spielzeit; unlogische Rätsel; extreme Performanceprobleme und Glitches; unüberlegte Spielmechaniken, die Spielspaß rauben statt geben).

Aufbauend auf eurer Beschreibung könnt ihr recherchieren, was ihr konkret braucht und von wo ihr es herbekommt. So einige Materialien (Texturen, Sounds, 3D-Modelle) kann man beispielsweise erwerben (z.T. auch kostenlos). Eine Alternative dazu wäre das Kreieren eigener Assets.

In der Hinsicht wäre eine Rollenaufteilung im Team sinnvoll, wer sich mehr auf welches Thema fokussiert. Hinsichtlich der Programmierung sollte keiner von euch, der in irgendeiner Weise Code schreiben möchte, ohne Grundlagenkenntnisse zu der von euch gewählten Programmiersprache starten. Generell werdet ihr bei jedem Themenbereich - sei es Programmierung, Modellierung oder Audioschnitt, einige Einarbeitungszeit benötigen. Ein paar Tage/Wochen reichen dafür in der Regel nicht aus.

Für den Projektaufbau und den Entwicklungsablauf würde ich empfehlen, dass ihr mit einem Remote Repository (Bsp. BitBucket/GitHub/GitLab/...) arbeitet (d.h. ihr solltet euch alle im Vorfeld mit einem Versionsverwaltungstool wie Git auseinandersetzen: Wozu ist es da / Was ist dessen Konzept? Wie kann man praktisch Commits/Merges/Branching vornehmen?) und im Vorhinein allgemeine Konventionen festlegt (Projektstrukturierung, Code-Konventionen, möglichst gleiche Entwicklungstools). Auch eine zentrale Dokumentationsplattform ist nützlich.

Das mag soweit zwar ziemlich formal und unspaßig klingen, auf der anderen Seite wird ein Kraut- und Rübenprojekt noch viel schneller zum Spaßkiller.

Die zeitliche Koordination würde ich ebenfalls überdenken (feste Termine in bestimmten Intervallen oder nicht?), da euch dieses Projekt viel Aufwand kosten wird.

Damit ihr funktional nicht von Null an starten müsst, empfiehlt es sich, eine Game Engine (oder zumindest ein passendes Framework) zu wählen, auf dem ihr euer Spiel aufbaut. Ein paar denkbare Optionen wären:

  • CryEngine (Flow Graph/Lua/C#)
  • Godot (GDScript/C#/C++)
  • O3DE (Script Canvas/Lua)
  • PlayCanvas (JavaScript)
  • Stride (C#)
  • Unity (Visual Scripting/C#)
  • Unreal Engine (Visual Blueprints/C++/Angelscript via Extension)

In Klammern habe ich die Scripting-Optionen aufgeführt, die diese Engines bieten. In einigen Engines sind zusätzlich Systeme zur visuellen Programmierung implementiert (Bsp. Flow Graph, Blueprints, Script Canvas). Das ist für die Umsetzung einfacher Operationen (z.B. Sprung-/Lauf-/Kampfbewegung) nützlich, für komplexere Aufgaben sollte man allerdings auf die textuelle Programmiersprache zurückgreifen.

In diesem Kontext böte sich vielleicht noch eine andere Option an. Ihr könntet euch ein bestehendes Sandboxsystem nehmen und dieses mit eigenen Modifikationen ausstatten. Ich denke dabei an:

  • Garry's Mod (Lua)
  • Manic Digger (C#/JavaScript)
  • Minecraft (Java/JavaScript)
  • nanos world (Lua)
  • Roblox (Lua)

Mehrere Grundlagen (wie eine Open World) sind in so einem System meist schon gegeben. Ihr könntet euch direkt mit konkreten Spielregeln oder neuen Spielmechaniken zur Neugestaltung der Welt befassen.

Ein weiterer Tipp, der sich bei der Spielumsetzung oft bewährt hat, ist ein Start in Grobform, welche erst nach und nach detaillierter ausgearbeitet wird. Das heißt, es reicht aus, wenn euer Hauptcharakter anfangs nur ein Klotz ist, der mit anderen Klötzen interagiert. Die Kernmechaniken bleiben im Fokus, alles was ins Detail geht (Texturen, exakte Animationen, usw.) kann man später noch einfügen. Irgendwelche nachträglichen Ideen / neuen Features schreibt ihr am besten auf eine Liste, die ihr frühestens nach Implementation der wichtigen Punkte wieder herausholt und neu bewertet.

Zuletzt kann ich noch auf ein paar ältere Beiträge von mir verweisen, in denen ich schon einmal Tipps und Quellen rund um die Programmierung und Spieleentwicklung geteilt habe: