Entwicklungsprozess
-
Hallo,
ich habe gerade einen Artikel über Torch Light 2 gelesen: Runic Games hat scheinbar angekündigt den Editor für das Spiel "TorchEd" zu veröffentlichen. Das war der springenden Punkt.
Umgelegt auf "mehr Spiele" sind mir ein paar Fragen durch den Kopf gegangen:-
Werden zu fast allen existierenden (Minecraft mal außen vor gelassen) solche "Editoren" geschrieben? Verbringen professionelle Spieleprogrammierer folglich die meiste Zeit mit dem Schreiben solcher Editoren?
-
Wenn ja: ich schätze mal solche Editoren sind in C++ geschrieben? Was aber würde eigentlich gegen andere Sprachen sprechen? Tatsächlich die Performance?
-
Wenn ich an solche Editoren denke, denke ich meist sofort an die CryEngine, Unity oder UnrealEngine (steinigt mich nicht, Unity mit den beiden anderen in einem Satz verwendet zu haben ). Was mich hierbei schon immer interessiert hat: ich vermute mal nicht, dass diese Editoren / Engines / wie man es nennen will zu zur Scene den entsprechenden Quellcode generiert. Wie aber werden diese aus solchen Programmen entstandenen Spiele "kompiliert"?
Zu letzt: 4) Gibt es vlt. sogar Artikel (müssen gar nicht unbedingt ins programmiertechnische gehen - ein "kleiner Einblick" würde reichen) über das Schreiben solcher Editoren?
Schöne Grüße
-
-
Hendriks schrieb:
- Werden zu fast allen existierenden (Minecraft mal außen vor gelassen) solche "Editoren" geschrieben? Verbringen professionelle Spieleprogrammierer folglich die meiste Zeit mit dem Schreiben solcher Editoren?
Es werden wohl zu vielen Spielen editoren gebraucht, ja. Die meiste Zeit verbringen die aber wohl eher nicht damit.
Hendriks schrieb:
- Wenn ja: ich schätze mal solche Editoren sind in C++ geschrieben? Was aber würde eigentlich gegen andere Sprachen sprechen? Tatsächlich die Performance?
Der Editor wird wohl in 99.9% der Fälle in der gleichen Sprache geschrieben sein, wie das Spiel selbst.
Hendriks schrieb:
Was mich hierbei schon immer interessiert hat: ich vermute mal nicht, dass diese Editoren / Engines / wie man es nennen will zu zur Scene den entsprechenden Quellcode generiert. Wie aber werden diese aus solchen Programmen entstandenen Spiele "kompiliert"?
Was haben Mapeditoren mit Quellcode zu tun? Die machen die Map, nicht das Spiel!
-
Hendriks schrieb:
- Werden zu fast allen existierenden (Minecraft mal außen vor gelassen) solche "Editoren" geschrieben? Verbringen professionelle Spieleprogrammierer folglich die meiste Zeit mit dem Schreiben solcher Editoren?
lustigerweise denken sich viele dass man sich das sparen kann, weil ein 3rd party editor genau so gut ist. aber man merkt dann immer wie limitierend sowas ist. als ich z.b. mal einen kleinen shooter fuer die psp geschrieben hatte, hat mein artist 3ds max als editor verwendet, war anfangs echt super.
dann aber hat er kleine bugs fixen muessen, z.b. portale ein wenig verschieben und das hat ewig gedauert und als ich pingte, meinte er dass 3dsmax ca 15min braucht zum exportieren der .obj, auch wenn mein resoruce compiler und die engine es dann in <30s konsumierten.
wenn du dir erfolgreiche spiele anschaust, wirst du meistens einen eigenen editor vorfinden. ein paar wie z.B. Sony Santa Monica (God Of War) nutzen weiterhin 3rd party (SSM nutzt Maya), aber die haben dann experten die den editor mit plugins zukleistern bis es fast wie ein eigener editor ist.
soviel aufwand macht bei hobby spielen meistens keinen sinn.- Wenn ja: ich schätze mal solche Editoren sind in C++ geschrieben? Was aber würde eigentlich gegen andere Sprachen sprechen? Tatsächlich die Performance?
performance ist auch ein faktor. ich habe mal in einem projekt gearbeitet wo jemand unseren editor aufsatz (war so ein seperates tool das du starten konntest, was sich per TCP an das spiel connecten konnte um einige sachen zu modifizieren) statt in QT+C++ in C# machen wollte, er hat das auch ziemlich fix nachprogrammiert, der kleine aufsatz hat dann aber laenger zum starten gebraucht als das eigentliche spiel und auch mehr speicher verbraucht.
ein paar tools hier haben manche in C# wegen der netten UI geschrieben und sie sind leider nicht die speichersparendesten, aber es geht.viele dinge schreibst du nunmal schon fuers spiel die ein editor auch nutzen wird, andererseitsbraucht ein editor oft extras die irgendwie support von der engine brauchen (z.b. kann es sein dass du einen texture viewer haben willst, du willst vermutlich nicht alle texturen zweimal im speicher haben, in der engine und im editor. die engine hat ein streaming fuer texturen, dein editor wird also beim request nicht sofort die daten bekommen und stallen willst du nicht, also musst du irgendwelche callbacks und die verwaltung dafuer im editor schreiben. machst du das auf engine seite, sagst du vom editor der engine einfach nur 'zeichene das, mit dieser textur' und was das streaming macht etc. ist dann engine arbeit, so als ob einfach das spiel laufen wuerde.
ich wuerde also sagen, es ist kein ding von 'zwei sprachen' sondern 'zwei komplett getrennte tools'. falls du deinen editor mit LUA scripten kannst, das nativ von der engine supported wird und alles kann was du willst, waeren es zwei sprachen aber eine applikation, dann faende ich das ueberaus gut (weil der editor portabel und lightweight waere).
- Wenn ich an solche Editoren denke, denke ich meist sofort an die CryEngine, Unity oder UnrealEngine (steinigt mich nicht, Unity mit den beiden anderen in einem Satz verwendet zu haben ). Was mich hierbei schon immer interessiert hat: ich vermute mal nicht, dass diese Editoren / Engines / wie man es nennen will zu zur Scene den entsprechenden Quellcode generiert. Wie aber werden diese aus solchen Programmen entstandenen Spiele "kompiliert"?
da gibt es verschiedene ansaetze. manchmal gibt es ein spiele modul, z.b. in c++ geschrieben, was dem editor zusaetzliche moeglichkeiten bietet die ein spiel braucht, manchmal schreibst du ein spiel auch nur in der scriptsprache die eine engine bietet, im ersten fall hast du dann das module was du mit den gespeicherten leveldaten auslieferst, im zweiten kann der editor ein 'packet' exportieren, oft sogar optimiert fuer eine spezielle platform, die dann ein platform spezifischer player abspielt (z.b. flash player).
in urealEd (UE3) kannst du mit kismet editor und in sandbox (CE3) kannst du mit dem flow graph wohl ein komplettes spiel erstellen, ohne eine zeile zu schreiben, was du dann auch exportieren kannst und ein fertiges spiel hast.
ist dann aber recht aufwendig (weil du dinge die eine zeile code brauchen eventuell mit vielen nodes simulierst).
aber auch sowas ist an sich viel zuviel aufwand bei einem hobby projekt.Zu letzt: 4) Gibt es vlt. sogar Artikel (müssen gar nicht unbedingt ins programmiertechnische gehen - ein "kleiner Einblick" würde reichen) über das Schreiben solcher Editoren?
leider hab ich sowas bisher auch nicht gefunden. gibt zwar ein paar buecher ueber spieleprogrammierung die auch noch einen editor nebenbei machen, aber die allermeisten sind sehr sehr bescheiden was umfang angeht (selbst buecher wo man nur ein spiel ohne editor macht muessen sich schon extrem kurz fassen).
das beste bisher war ISBN: 0201787067
weil es das zusammenspiel von engine <-> editor <-> plugins aufzeigt, aber vermutlich lachhaft aus sicht von Tool gurusfalls jemand ein gutes buch dazu kennt oder so, waere ich auch dankbar
-
Vielen Dank erstmal für die ausführliche Antwort.
Was mich noch interessieren würde:
Nutzen professionelle Studios eigentlich OpenGL oder DirectX?
-
Beides. Wenn nur eins, dann ist DirectX momentan wohl beliebter.
-
Beides? Wie kriegen die denn DirectX unter Mac OS X und Linux laufen? Oder ist beides darauf bezogen, dass DX unter Windows zum Einsatz kommt, und für andere Plattformen eben OpenGL?
-
Hendriks schrieb:
Beides? Wie kriegen die denn DirectX unter Mac OS X und Linux laufen? Oder ist beides darauf bezogen, dass DX unter Windows zum Einsatz kommt, und für andere Plattformen eben OpenGL?
die meisten "professionelle Studios" entwickeln fuer konsolen, xbox hat kein opengl,ps3 hat kein directX.