X
tim,
erstmal danke für den Post, SEHR interessant alles.
Zu Java:
Ich habe mich prinzipiell nicht dagegen entschieden, aber grade dein letzter Post stupst mich etwas weiter in Richtung Python. Ich kann sowohl Java als auch C++, zwar nicht Meisterhaft, aber es sollte mittlerweile ausreichend sein.
Wie schon gesagt möchte ich nicht unbedingt eine komplett fertige Engine nehmen, jedenfalls nicht wirklich eine der gängigen OpenSource Lösungen, aus folgenden Gründen:
- KEINE Engine deckt den vollen Bereich ab. Meistens mangelt es an Sound- oder Netzwerkunterstützung, oder die Lösungen sind nicht Plattformunabhängig (im Sinne meiner vorherigen Posts).
- Viele Engines setzen das Handling von Objekten über Scriptsprachen voraus, oftmals Eigenentwicklungen. Ich bin ja gerne bereit mir auch auf dem Bereich nochwas anzulernen, aber dann reicht es auch. Properität kommt da eigentlihc nicht in Frage. Außerdem würde ich vorerst am liebsten komplett auf Scriptlogik als Schnittstelle zu Objekten verzichten, sondern erstmal eine XML basierte Lösung bevorzugen. Da schreib ich gleich nochwas dazu.
- Core Tasks wie Rendering will ich nicht selbst implementieren, genausowenig wie Plattform-spezifische Implementation etc.
Die eierlegende Wollmichsau gibt es nicht, aber Engines zwingen mich u.U. in ein enges Korsett (ja, OpenSource könnte ich erweitern/ändern, aber das ist nicht unbedingt meine Absicht).
Was ich benötige ist eigentlich ein selbstgeschriebenes Framwork, das exakt meinen Anforderungen entspricht und über sinnvolle Patterns änderbar ist. Das Managerkonzept ist ja ebenfalls in vielen Engines implementiert und das würde ich ähnlich implementieren. So könnte man hinter einen Soundmanager verschiedene Implementationen verstecken, die entweder über OpenAL o.a. laufen, so hätte ich größte Auswahl und Kontrolle, ohne Details implementieren zu müssen.
Das Entwickeln entsprechender Objektklassen wird natürlich knifflig, da diese direkt von den Libs abhängen, aber das sollte auch gehen (hoffe ich).
Ich würde Klassen vorgeben, und die Objekte in XML definieren. Über XML wären Objekte dann frei konfigurierbar. NATÜRLICH ist dieser Ansatz wesentlich weniger konfigurierbarer seitens des Nutzers, der keinen Code schreiben will als eine Scriptsprache, aber es geht darum , ein Spiel schnell pflegen zu können ohne zu kompilieren. Der Ansatz reicht mir vorläufig.
Dieses XML wäre mein Metadata-Container der Objekteigenschaften und Fähigkeiten definiert. Allerdings ist es blödsinn Levelformate oder Modelformate ebenfalls neu erfinden zu wollen. Also müssen die Metadaten auf Fremdformate verweisen. Formate wie Collada würden sich da anbieten. Bis auf Photoshop möchte ich soviel wie möglich Freeware nutzen, z.B. Renderware.
Kurz zur Geschwindigkeit:
Meiner Meinung ist das für Hobby bis Indieentwickler doch kaum ein Argument. Es macht sicherlich kaum Sinn Spiele komplett in Python zu entwickeln (jedenfalls finde ich das gebotene in diesem Bereich etwas lahm, kommt auch drauf an), aber im Hinblick auf 80/20 sinnvoll. Gerade das starke String-Handling z.B. in Interpretern und High-Level Integrität sind IMO Ideal dafür. Frameabhängige Implementation auslagern nach C++, und es sollte wenigstens in der Theorie klappen.
Das wäre auch ein (zugegegebenermaßen weicher) Grund gegen Java:
- Der Interpreter ist (noch) stäker in High-Level Processing
- C++ ist performancekritisch stärker und es gibt Massenhaft Tuts und Libs, wo in Java eher noch weniger Auswahl herrscht (Physiklibs). Klar kann man auch JNI nutzen oder Native kompilieren, aber das finde ich ... naja.
Letztendlich stellt sich wieder die Frage nach der Nutzung. Ich will und kann keinen 3DShooter entwickeln. Aber ich würde gerne klein anfangen und mich in Libs reinsteigern, ohne mich auf eine ungewisse properitäre Lösung festzulegen.
Würde ich Plattformunabghängikeit völlig aussen vor lassen, wäre .NET + XNA vielleicht tatsächlich spannend. Gerade im Bezug auf XBOX. Aber ich kann mir nicht helfen, Linux wird nach und nach salonfähig im Multimediabereich, Mac seit der Umstellung auf Intel Cores sicherlich auch nicht schlechter. Will sagen: Auf Microsoft zu setzen ist vielleicht ein Fehler im Indie Bereich.
Ich würds so ausdrücken wollen:
- Produktivität statt Effektivität
- Implementation statt Grundlagenforschung
Aber um auf deinen Post zurückzukommen:
Ogre kann Rendern, mehr fast nicht, und es ist mir schon beinahe zu Überladen.
Panda3D kannte ich noch garnicht, dass schaue ich mir auf jeden Fall mal an.
Dickes THX!