PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Währen moderne A+ High End Games mit modernen Hochsprachen wie Ada, D,Java denkbar?


Gast
2007-09-19, 17:16:02
Währen moderne A++ High End Games mit modernen Hochsprachen wie Ada, D oder Java (nativ compiliert ohne Java VM) anstatt C und C++ theoretisch denkbar oder sind die dazu nicht geeignet (weil z.B. zu langsam oder zu [bitte einfügen])?


Wenn man sich die ganzen Bugs in heutigen High End Games anschaut, dann fragt man sich doch in der Tat, ob man durch eine modernere Hochsprache mit Features wie z.B. einem Garbage Collector oder strengere Typisierung nicht deutlich bugfreiere Spiele entwickeln könnte und gleichzeitig dabei auch noch an Entwicklungszeit einspart.

Daher lautet die Frage auch, wieso werden heutige A++ Highe End Spiele meisten immer noch in C oder C++ realisiert?

Und welche großen Spieletitel wurden bis jetzt in einer anderen Sprache als C oder C++ entwickelt? Und welche Sprache war das?

maximAL
2007-09-19, 17:22:21
arena wars wurde zb. in C# geschrieben, bei chrome wohl zumindest die spiellogik in java.
ein PS2 entwickler (wer wars nochmal...die rachet & clank macher?!) hatte aber auch einen eigenen lisp-dialekt benutzt.

vorallem, wenn man stark auf externe bibliotheken setzt, kann man natürlich auch in modernen hochsprachen performante spiele schreiben.

problem ist hier bei spielen vorallem noch die mangelnde portierbarkeit auf konsolen...

Kabelsalat
2007-09-19, 17:40:23
... was Microsoft mit XNA anpackt. XNA baut auf DirectX und .Net auf. Als Programmiersprache kann daher C# verwendet werden. Das fertige Produkt ist danach unter MS Windows und auf der XBox (360) lauffähig. Prinzipiell ist .Net nicht plattformgebunden. Aufgrund politisch / strategischer Entscheidung von Microsoft gilt das allerdings (noch) nicht für die Praxis.

/edit: Läuft auf der PS3 nicht Linux? Wenn ja könnte man die Spielelogik für Windows, Linux, PS3 und XBox mittels .Net / Mono implementieren. Nur das Rendering etc. müsste gesondert programmiert werden.

Gast
2007-09-19, 17:54:03
/edit: Läuft auf der PS3 nicht Linux? Wenn ja könnte man die Spielelogik für Windows, Linux, PS3 und XBox mittels .Net / Mono implementieren. Nur das Rendering etc. müsste gesondert programmiert werden.

Linux läuft zwar auf der PS3 aber die 3d Hardware kann dann nicht angesprochen werden.

Monger
2007-09-19, 18:00:49
Das Problem bis jetzt war, dass die Grafikkarten nunmal ganz schlecht mit Objektorientierung umgehen können. Die Pipelines sind relativ starr, und man kann nur an speziellen Stellen im Speicher lesen... die Flexibilität die man auf der CPU hat, gibt es dort einfach nicht, und damit hat man in gemanagten Sprachen wie Java oder C# wohl ein bißchen zu wenig Kontrolle darüber, was genau die Grafikkarte mit dem Code macht, um performant zu bleiben.

Deshalb waren wohl die Ansätze eines "Managed" DirectX nicht so prickelnd. Die Idee hat MS mittlerweile verworfen, und konzentriert sich voll auf XNA, was wohl einen ganz guten Kompromiss zwischen Hardwarenähe und Einbindung in C# bietet.


Grundsätzlich mal bin ich davon überzeugt, dass die gemanagten Sprachen in nicht allzu ferner Zeit die Softwareentwicklung absolut dominieren werden, und dann eben auch in Spielen. Die Vorteile zur Entwicklungszeit sind einfach zu dramatisch, als dass man sie langfristig ignorieren könnte.

Kabelsalat
2007-09-19, 18:26:22
Deshalb waren wohl die Ansätze eines "Managed" DirectX nicht so prickelnd. Die Idee hat MS mittlerweile verworfen, und konzentriert sich voll auf XNA, was wohl einen ganz guten Kompromiss zwischen Hardwarenähe und Einbindung in C# bietet.

Selber habe ich mit XNA noch nie gearbeitet. Es scheint jedoch weiterhin den verwalteten Zugriff auf DirectX / die zugrundeliegende Hardware zu ermöglichen - ähnlich wie MDX ("The XNA Framework has a managed API for working with hardware on the Xbox 360 and Windows. This API subsumes much of the functionality that previously existed in the MDX 2.0 beta." - XNA FAQ (http://msdn2.microsoft.com/de-de/directx/Aa937793.aspx)).

Demirug
2007-09-19, 18:53:24
Das Problem bis jetzt war, dass die Grafikkarten nunmal ganz schlecht mit Objektorientierung umgehen können. Die Pipelines sind relativ starr, und man kann nur an speziellen Stellen im Speicher lesen... die Flexibilität die man auf der CPU hat, gibt es dort einfach nicht, und damit hat man in gemanagten Sprachen wie Java oder C# wohl ein bißchen zu wenig Kontrolle darüber, was genau die Grafikkarte mit dem Code macht, um performant zu bleiben.

Du hast mit einer managend Sprache genau so viel Kontrolle wie mit der nativen API. Wenn du GPU limitiert bist kannst du mit C‘ sogar genauso schnell sein wie mit C++. Das Problem ist das die ganzen APIs ja eigentlich unmanaged sind und du deswegen einen Wrapper brauchst. Dadurch sind bei jedem Call einige bis viele Taktzyklen zusätzlichen Overhead notwendig. I habe einen managend Wrapper für D3D10 programmiert kenne daher die Probleme recht gut.

Deshalb waren wohl die Ansätze eines "Managed" DirectX nicht so prickelnd. Die Idee hat MS mittlerweile verworfen, und konzentriert sich voll auf XNA, was wohl einen ganz guten Kompromiss zwischen Hardwarenähe und Einbindung in C# bietet.

XNA ist aus MDX hervorgegangen. Zum Teil steckt da sogar MDX Code drin.

Grundsätzlich mal bin ich davon überzeugt, dass die gemanagten Sprachen in nicht allzu ferner Zeit die Softwareentwicklung absolut dominieren werden, und dann eben auch in Spielen. Die Vorteile zur Entwicklungszeit sind einfach zu dramatisch, als dass man sie langfristig ignorieren könnte.

Das Problem ist das wenn es um die Portierbarkeit geht C++ derzeit das höchste ist was du verwenden kannst.

Monger
2007-09-19, 19:24:43
Das Problem ist das wenn es um die Portierbarkeit geht C++ derzeit das höchste ist was du verwenden kannst.
Jo, ich weiß. Aber ist Portabilität wirklich so ein Thema?

Da du ja grade an der Quelle sitzst :D , kannst du ja vielleicht was zu dem Thema sagen: was denkt denn deine Firma über Portabilität jenseits von XBox360 und Windows? Sind OSX und Linux wirklich ein interessanter Markt? Und wieviel lässt sich z.B. von XBox360 auf PS3 denn wirklich portieren?

tokugawa
2007-09-19, 19:27:41
Deshalb waren wohl die Ansätze eines "Managed" DirectX nicht so prickelnd. Die Idee hat MS mittlerweile verworfen, und konzentriert sich voll auf XNA, was wohl einen ganz guten Kompromiss zwischen Hardwarenähe und Einbindung in C# bietet.


XNA ist im Prinzip Managed DirectX.


Grundsätzlich mal bin ich davon überzeugt, dass die gemanagten Sprachen in nicht allzu ferner Zeit die Softwareentwicklung absolut dominieren werden, und dann eben auch in Spielen. Die Vorteile zur Entwicklungszeit sind einfach zu dramatisch, als dass man sie langfristig ignorieren könnte.

Wie Demirug schon geschrieben hat: nur mit C/C++ hat man wirklich die Möglichkeit für alle Konsolen eine Codebasis (von mir aus "Engine", aber das ist zu hoch gegriffen) zu schreiben die überall kompilierbar ist.

In einer Spieleentwicklerfirma mit mehreren Programmierern, die sich auf einen gemeinsamen Standard sowohl im Coding Style als auch softwaredesigntechnisch einigen müssen, ist eine idente Codebasis Gold wert.

Die Performance wäre nicht mal wirklich der Hauptgrund.


Auch gibt es halt nur sehr wenig Toolchains (Compiler, Linker) für Konsolen außerhalb von C/C++. Alle Standard-Toolchains sind nun mal C/C++.

Trotzdem spricht ansonsten prinzipiell nichts dagegen, für einzelne Titel (ist ja wie auch schon erwähnt wurde, bereits vereinzelt geschehen).



Zur Bugfreiheit würde es meiner Ansicht nach aber nicht beitragen. Sicher, Memoryleaks und illegale Speicherzugriffe sind oft die lästigsten Probleme und Bugs, aber viel öfter sind Bugs in der Spiellogik - und hier hilft dann auch eine managed Language nicht weiter.

Schneller entwickeln lässt sich dadurch finde ich auch nicht, zumindest fiele mir kein Grund ein wieso das der Fall sein sollte.

Demirug
2007-09-19, 19:45:47
Da du ja grade an der Quelle sitzst :D , kannst du ja vielleicht was zu dem Thema sagen: was denkt denn deine Firma über Portabilität jenseits von XBox360 und Windows? Sind OSX und Linux wirklich ein interessanter Markt?

Ich werde jetzt keine internas verraten aber es gab ja schon ein offizielles Statement von EA das man in Zukunft mehr Spiele für MacOS bringen möchte.

Aber im Spielebereich bedeutet Portierbarkeit ja primär Windows/Xbox360/PS3/Wii.

Und wieviel lässt sich z.B. von XBox360 auf PS3 denn wirklich portieren?

Wenn man die Hardware Schicht gut abstrahiert hat relative viel. Wobei es die Eigenheiten von Cell etwas erschweren. Aber Sony ist ja bekannt dafür nicht gerade Entwicklerfreundliche Hardware zu bauen.

Expandable
2007-09-19, 22:14:39
Ich werde jetzt keine internas verraten aber es gab ja schon ein offizielles Statement von EA das man in Zukunft mehr Spiele für MacOS bringen möchte.


Heißt das, dass OpenGL wieder etwas mehr in den Mittelpunkt rücken wird? Wie schätzt du generell die Chancen von OpenGL 3.0 + "DX10 Feature Set" gegen DX10 ein?

Ansonsten halte ich XNA persönlich für eine sehr gute Entwicklung, gerade für Hobby-Programmierer und Spiele, bei denen es nicht 100%ig auf Performance ankommt...

Coda
2007-09-19, 22:43:29
OpenGL 3.0 wird sich wohl sehr ausgiebig bei Direct3D 10 bedienen was die Struktur angeht. Und das ist auch gut so.

Demirug
2007-09-19, 22:58:31
Heißt das, dass OpenGL wieder etwas mehr in den Mittelpunkt rücken wird? Wie schätzt du generell die Chancen von OpenGL 3.0 + "DX10 Feature Set" gegen DX10 ein?

Ich liebe es wenn es wenn es Presse Erklärungen gibt: http://www.transgaming.com/news/?id=50

Ansonsten hat man bisher ja noch nicht mal die Spec für das OpenGL 3.0 auf DX9 Level geliefert. Zudem wird durch eine neue API das alte OpenGL Problem mit dem schlechten SDK ja auch nicht gelöst.

OpenGL 3.0 wird sich wohl sehr ausgiebig bei Direct3D 10 bedienen was die Struktur angeht. Und das ist auch gut so.

Da die gleichen Firmen Treiber schreiben müssen war das ja zu erwarten.

Gast
2007-09-20, 01:25:12
Wenn man die Hardware Schicht gut abstrahiert hat relative viel. Wobei es die Eigenheiten von Cell etwas erschweren. Aber Sony ist ja bekannt dafür nicht gerade Entwicklerfreundliche Hardware zu bauen.

Womit dann eigentlich der Beweis erbracht ist, daß man auch bei Konsolen schon lange nicht mehr das Spiel mittels Assembler und Co auf die Konsole hin optimiert.

Demirug
2007-09-20, 07:33:46
Womit dann eigentlich der Beweis erbracht ist, daß man auch bei Konsolen schon lange nicht mehr das Spiel mittels Assembler und Co auf die Konsole hin optimiert.

Sonst könnte die Spiele ja niemand mehr bezahlen. Assembler wird an denn Stellen eingesetzt wo einzelne Funktion eine signifikanten Anteil an der benötigten Rechenzeit haben und man es anders nicht mehr schneller bekommt.

Ganon
2007-09-20, 07:45:23
Ich liebe es wenn es wenn es Presse Erklärungen gibt: http://www.transgaming.com/news/?id=50

Mit anderen Worten, es wird nicht in einer Zeile eures Codes OpenGL benutzt :D :D

The_Invisible
2007-09-20, 07:54:16
Womit dann eigentlich der Beweis erbracht ist, daß man auch bei Konsolen schon lange nicht mehr das Spiel mittels Assembler und Co auf die Konsole hin optimiert.

naja, bei exklusivtiteln könnte ich mir schon vorstellen das mehr optimiert wird. ist ja nur eine hardware da.

mfg

Gast
2007-09-20, 08:37:22
Ansonsten hat man bisher ja noch nicht mal die Spec für das OpenGL 3.0 auf DX9 Level geliefert. Zudem wird durch eine neue API das alte OpenGL Problem mit dem schlechten SDK ja auch nicht gelöst. Sollte da nicht kurz nach der Veröffentlich von OpenGL3 auch noch was kommen?

maximAL
2007-09-20, 10:43:35
Jo, ich weiß. Aber ist Portabilität wirklich so ein Thema?
was konsolen angeht - natürlich. der konsolen-markt ist längst wichtiger und größer als der PC-markt ;)


Zur Bugfreiheit würde es meiner Ansicht nach aber nicht beitragen. Sicher, Memoryleaks und illegale Speicherzugriffe sind oft die lästigsten Probleme und Bugs, aber viel öfter sind Bugs in der Spiellogik - und hier hilft dann auch eine managed Language nicht weiter.

Schneller entwickeln lässt sich dadurch finde ich auch nicht, zumindest fiele mir kein Grund ein wieso das der Fall sein sollte.
bitte, bitte schau dir mal ne richtige high-level sprache an. und damit meine ich nicht nur diesen möchtegern-highlevel schmonz für C++ programmierer wie C# oder java.
es gibt auf der welt weit mehr als C++ artige syntax mit dicker standardlib und garbage collector.

BAGZZlash
2007-09-20, 10:49:38
was konsolen angeht - natürlich. der konsolen-markt ist längst wichtiger und größer als der PC-markt ;)


bitte, bitte schau dir mal ne richtige high-level sprache an. und damit meine ich nicht nur diesen möchtegern-highlevel schmonz für C++ programmierer wie C# oder java.
es gibt auf der welt weit mehr als C++ artige syntax mit dicker standardlib und garbage collector.

Ja? Was denn so? (ernst gemeinte Frage)

maximAL
2007-09-20, 11:07:40
Ja? Was denn so? (ernst gemeinte Frage)
das problem der verbreiteten mainstream sprachen ist imho, dass sie versuchen für jedes problem die passende lösung zu sein. das ergebnis ist eine völlig überladene syntax mit kaum zu überblickenden features, die letztendlich wieder nur umständlich zu benutzen sind.

imho muss der weg in richtung kleinerer speziel-sprachen gehen, die wirklich auf die lösung bestimmter probleme zugeschnitten sind.
prolog zb. ist eine geile sprache zur lösung logischer probleme und lässt sich innerhalb von ein paar tagen lernen.

davon ab fehlt es den mainstream-sprachen immernoch an highlevel-features. pattern matching, funktionale programmieung (und zwar ohne krampfiges funktions-objekt oder gar funktions-zeiger gedöns), typ-inferenz etc.
leider wehren sich die meissten programmierer ja auch immernoch dagegen, mit systemen zu arbeiten, die saubere lösung einfach mal erzwingen.
man muss wohl mal selbst gesehen haben, wie robust ein programm ist, wenn per default funktionen keine seiteneffekte haben und variablen immutable sind.

Monger
2007-09-20, 12:39:07
das problem der verbreiteten mainstream sprachen ist imho, dass sie versuchen für jedes problem die passende lösung zu sein. das ergebnis ist eine völlig überladene syntax mit kaum zu überblickenden features, die letztendlich wieder nur umständlich zu benutzen sind.

Sobald du mal etwas größere Anwendungen entwirfst, bietet sich halt eher die eierlegende Wollmilchsau an als eine Vielzahl von spezialisierten Lösungen.

Prolog z.B. ist zwar brilliant für logische Verknüpfungen, und hat die simpelste Syntax die ich je gesehen habe, ist aber höllisch schwer zu designen und zu debuggen. Jede kleine Änderung irgendwo kann das System völlig umstoßen, damit ist es für größere Konstrukte völlig ungeeignet.

Ruby fand ich sehr spannend auch wenn ich nur mal einen kleinen Blick darauf gewagt habe. Aber wie so oft: wo sind die guten IDEs dafür?

Ohne gute Tools ist jede Sprache wertlos, und bei Ruby hatte ich den Eindruck, dass man einer IDE dort sehr wenig Chancen lässt, bereits zur Compilezeit dem Entwickler auf die Sprünge zu helfen.

maximAL
2007-09-20, 12:51:43
Sobald du mal etwas größere Anwendungen entwirfst, bietet sich halt eher die eierlegende Wollmilchsau an als eine Vielzahl von spezialisierten Lösungen.

nun, da sehe ich das problem eher in der verknüpfung der verschiedenen sprachen.
.net könnte dafür eine lösung sein. ich bastel zur zeit mit F# und dem Tao-framework (bindings für SDL, OGL, ODE etc.), läuft einwandfrei, sogar unter linux.

die verfügbarkeit von tools ist natürlich immer ein leidiges thema, aber auch das dürfte sich mit einer einheitlichen basis wie .net leichter machen lassen.

Gast
2007-09-20, 13:02:12
D herrscht. Und ist auch überhaupt nicht mit Java vergleichbar. Mit D kannst Du genau so maschinennah programmieren, wie mit C++ und hast gleichzeitig die gewünschten Features wie GC und nicht zuletzt eine sehr gutes Vertragsmodell. Außerdem ist der Umstieg von C++ auf D leicht, weil die Syntax an C++ angelehnt ist. Deswegen steht es außer Frage, dass D zur Spieleprogrammierung taugen würde, wenn es nur all die nötigen Tools dafür gäbe. Aber das kommt langsam. :wink: Die Final ist erst Anfang Januar erschienen. :smile:

Deine Zusammenfassung von Ada, D und Java als "moderne Hochsprachen" ist schon etwas komisch. Die sind alle sehr unterschiedlich. :smile:

Kabelsalat
2007-09-20, 13:11:48
Das ist genau der große Vorteil von .Net: Es lassen sich nahezu für jede Sprache Compiler für .Net entwickeln. Es gibt etwa auch P# für Prolog. Im Gegensatz zu gewöhnlichen .Net Compilern, erzeugt dieser C# Code. Unabhängig davon lassen sich mit einem beliebigen .Net Compiler erstellte Assemblies von jeder anderen .Net Sprache verwenden.


Hier ein paar Links:
P# (http://www.dcs.ed.ac.uk/home/stg/Psharp/) (Prolog)
F# (http://research.microsoft.com/fsharp/fsharp.aspx) (ML)
Chrome (http://www.remobjects.com/product/?id={38861650-4B7D-434B-8764-2AE18254649A}) (Object Pascal)
Fujitsu Fortran (http://www.lahey.com/lf71/lf71.htm) (Fortran 95)
Boo (http://boo.codehaus.org/)
COBOL (http://www.netcobol.com/)
IronPython (http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython) (Python)
Ruby.Net (http://plas2003.fit.qut.edu.au/Ruby.NET/)
Phalanger (http://www.php-compiler.net/doku.php) (PHP)
Smalltalk (http://www.refactory.com/Software/SharpSmalltalk/)
Delphi (http://www.codegear.com/products/delphi/2006)
Lua (http://www.lua.inf.puc-rio.br/luanet/)
LOLCODE (http://code.google.com/p/lolcode-dot-net/)

Es gibt noch dutzende weitere .Net Sprachen. Nicht alle verfügen über eine IDE oder VS-Unterstützung aber doch einige.

Gast
2007-09-21, 02:50:28
D herrscht. Und ist auch überhaupt nicht mit Java vergleichbar. Mit D kannst Du genau so maschinennah programmieren, wie mit C++ und hast gleichzeitig die gewünschten Features wie GC und nicht zuletzt eine sehr gutes Vertragsmodell. Außerdem ist der Umstieg von C++ auf D leicht, weil die Syntax an C++ angelehnt ist. Deswegen steht es außer Frage, dass D zur Spieleprogrammierung taugen würde, wenn es nur all die nötigen Tools dafür gäbe. Aber das kommt langsam. :wink: Die Final ist erst Anfang Januar erschienen. :smile:

Deine Zusammenfassung von Ada, D und Java als "moderne Hochsprachen" ist schon etwas komisch. Die sind alle sehr unterschiedlich. :smile:

Naja, ich wollte auch jede geliebte gewünschte Form der Herangehensweise abdecken, jeder Programmierer hat ja seine Vorlieben, daher habe ich mal ein Rundumpaket genannt.

D finde ich übrigens auch sehr schick. :up:

Gast
2007-09-21, 02:55:18
Ach ja, C# habe ich wegen der nicht wirklich garantierten Plattformunabhängigkeit mal weggelassen.
Ich gehe nämlich davon aus, daß Spielehersteller in Zukunft nahezu jeden Markt gerne abdecken würden und bezogen auf die Zukunft in 10 oder 20 Jahren schließe ich auch Linux als Spieleplattform nicht aus.

Daher habe ich mich auf die Sprachen beschränkt, die auch gut portabel für alle möglichen Systeme verfügbar sind oder in kürzester Zeit verfügbar sein könnten.

tokugawa
2007-09-21, 03:16:23
was konsolen angeht - natürlich. der konsolen-markt ist längst wichtiger und größer als der PC-markt ;)


bitte, bitte schau dir mal ne richtige high-level sprache an. und damit meine ich nicht nur diesen möchtegern-highlevel schmonz für C++ programmierer wie C# oder java.
es gibt auf der welt weit mehr als C++ artige syntax mit dicker standardlib und garbage collector.

Aber nicht für Konsolen. Touché.

Außerdem, ich kenn durchaus auch Sprachen die keine C-artige Syntax haben und nicht mal imperativ sind... nichtsdestotrotz bezweifle ich deren Praktikabilität, wenn man sie nicht konsequent auf allen Plattformen einsetzen kann.

Deswegen steht es außer Frage, dass D zur Spieleprogrammierung taugen würde, wenn es nur all die nötigen Tools dafür gäbe.

Das Problem daran ist der Konjunktiv.

Es würden sich viele Sprachen zur Spieleentwicklung eignen. Aber was zählt ist was es letztendlich in der Realität und Praxis wirklich gibt. Und da hab ich meine Zweifel dass D hier Fuß fassen wird, zumindest auf Konsolen.

Der Compiler für die Plattform allein würde ja nicht ausreichen. Es müsste der Konsolenhersteller auch Libraries dafür bereitstellen da normalerweise bestimmte Konsolen-SDK-Libraries vorgeschrieben sind.

Gast
2007-09-21, 04:42:02
Das Problem daran ist der Konjunktiv.

Es würden sich viele Sprachen zur Spieleentwicklung eignen. Aber was zählt ist was es letztendlich in der Realität und Praxis wirklich gibt. Und da hab ich meine Zweifel dass D hier Fuß fassen wird, zumindest auf Konsolen.

Der Compiler für die Plattform allein würde ja nicht ausreichen. Es müsste der Konsolenhersteller auch Libraries dafür bereitstellen da normalerweise bestimmte Konsolen-SDK-Libraries vorgeschrieben sind.

D kann C libs ansprechen.

tokugawa
2007-09-21, 04:44:40
D kann C libs ansprechen.

Gut, dann zeig mir D-basierte SDKs/Toolchains (die von den jeweiligen Herstellern zugelassen sind) für:

- Nintendo DS
- PlayStation 2
- Nintendo Wii
- Xbox360

und die sich library-binary-technisch mit den vorhandenen C-libs vertragen.

maximAL
2007-09-21, 09:58:35
Aber nicht für Konsolen. Touché.

wie schon geschrieben weiss ich das auch.

zumindest für MS konsolen wird sich das womöglich ändern...