Also ich programmiere jetzt schon über 1 Jahr mit C# und Unity3d...
Ich habe auch Erfahrungen mit anderen Spieleentwicklungsumgebungen (Developer Kits) und C++, PERL, JS, JAVA.
Dein Problem wird sein, dass du den Funktionsumfang der DeveloperKits kaum überschauen kannst. Auch die Anwendung der meisten Methoden ist komplex und unstrukturiert... von der Dokumentation möchte ich garnicht erst anfangen! Der Einstieg in das Spiele programmieren sollte nicht allzu kompliziert sein, denn sonst wird dich auch deine Motivation schnell verlassen.
Vorteile von C++ (und assoziierten DK's): Sehr technisch - Man kann Probleme sehr mechanisch beschreiben und Behält einen sehr guten Überblick (angenommen du weisst wie ein Rechenwerk funktioniert und bist bereits in der Materie) - Hier kannst du quasi alles realisieren was du willst und brauchst nichtmal besondere Abstraktion. Nur einen wachen Verstand, viel Zeit, eine hohe Frustrationsgrenze, ein feines Auge und vorallem eins: KNOW-HOW! Für Anfänger rate ich keine prozeduale oder maschinennahe Programmierung, da sollte man zumindest mal eine Ausbildung als Informatiker abgeschlossen haben!
Zu Unity: Nun, ich bin ein studierter Informatiker der in der Spielebranche arbeitet. Ich benutze Unity lediglich privat um mein eigenes Projekt zu realisieren.
Ihr fragt euch sicherlich "Warum, wenn er doch so gut programmieren kann und den Umgang mit professionellen und komplizierten Umgebungen kann?".
Unity ist die am besten dokumentierte, zeitsparendste und modbarste Umgebung! Natürlich kann die CryTek und Unreal viel mehr und auf einer ganz anderen Ebene (eben um diese AAA Spiele zu kreieren). Jedoch sind gewisse Implementationen sehr schwer zu realisieren und kosten extrem viel Zeit - Die man privat meistens einfach nicht hat! Die Unity Engine ist extrem einfach zu handeln... und man sieht die Ergebnisse sehr viel schneller. Man kann auch jede Funktionalität nachimplementieren wenn man sich mal genug mit C# auseinandergesetzt hat. Der Vorteil von C# ist die Abstraktion - das ist meistens eine der Fähigkeiten die bei einem Anfänger am besten ausgeprägt sind. Man hat eine Idee und will sie realisieren - und Unity bietet genau hier, durch die hervorragende Dokumentation und das einbinden von C# Scripts, in verbindung mit der in Unity integrierten Bibliothek bereitgestellten Speichermechanismen, Frameworks und Plugins sehr umfangreiche und einfach zu bedienende Methoden zur Gestaltung des Codes.
Sehr sprachlich und abstrakt gehalten. Objektorientiert und meistens Selbsterklärend. Man brauch die Materie dahinter einfach garnicht wirklich zu verstehen. Man benutzt einfach die bereitgestellten Methoden und integriert diese in die selbst gescripteten. Die Community ist bombastisch und schnell - man findet zu jedem Problem ein Stück Code + Erklärung auf der Supportseite von Unity. Grafiken, Animationen, Objekte, Texturen, Guis, Model - alles lässt sich im handumdrehen erstellen / einbinden - bei mir bisher problemlos.
Ich kann Unity (auch für AA ... evtl in der nächsten Version sogar AAA und vorallem für Indie-Games) nur empfehlen! Man hat quasi alle Schnittstellen die man brauch, wenn man kein Crack als Programmierer und besonders als Spieleprogrammierer ist. Das fehlende KNOW-HOW ist hier einfach kein großes Hindernis, man bekommt Hilfe wenn man mal nicht weiter weiss. Im Prinzip kann man sogar Methoden in die UnityBib einbinden und neu compilieren, auch wenn ich als Anfänger dazu abrate! Unity bietet genug Methoden!
Der Funktionsumfang und die Performance steigert sich mit jeder Unity Version... AAA Spiele sind jetzt mit gewissem Know-How schon realisierbar, auch wenn sie das modden von Unity quasi unumgänglich macht. Allerdings würden Profis dann statt eine Engine zu modden lieber eine kompliziertere Engine benutzen wie z.B. die UnrealEngine
Was auch der Grund dafür ist, dass große Studios diese, eigene oder ähnliche Engines benutzen: Man braucht sie nur minimal zu modden, braucht aber ein KNOW-HOW das bei professionellem Ansatz von einem Mitarbeiter einfach erwartet wird - In der Spielebranche werden halt keine Anfänger eingestellt
Hoffe das hilft dir bei der Entscheidung. Wenn du Ahnung hast, empfehle ich dir eine der komplexeren Engines - Für den Anfang kannst du Unity aber garnicht soweit Ausschöpfen, dass du ein besseres Ergebnis mit einer anderen Engine auch nur ansatzweise erreicht hättest. Erst wenn du merkst, dass du an die Grenzen die Unity zu bieten hat stößt (die aber auch erweiterbar sind) lohnt sich der Umstieg auf eine der komplexeren Engines.
Aber selbst ich als Profi sage dir: Privat benutze ich Unity - die Zeitersparnis und Einfachheit ist einfach zu gigantisch
Würde erst ab ca. 10+ (erfahrenen) Programmierern auf komplexe Engines wechseln, da die damit einfach mehr anstellen können!
Gruß
EndlessEternity