Plattformunabhängige Spiele
-
Doch klar.
Bye, TGGC (Demo or Die)
-
Vertexwahn schrieb:
100% der Spieler nutzen Windows als Betriebssystem
kann ich so nicht bestätigen
Vertexwahn schrieb:
ich rate dir folgendes: programmier erst mal erst ein lauffähiges Spiel und dann mach dir Gedanken darüber auf welchen Plattformen es laufen soll
Danke für den tip, aber das mit dem lauffähigen Spiel werd ich schon irgendwie hinbekommen, man könnte das Projekt auch mehr als eine Studie der technischen Mittel bezeichnen. Das 2D Jump'n Run das ich für den Anfang vorhabe könnte ich wohl zwar auch mit WinAPI, bzw wxWidgets o.ä., realisieren, aber mich interresiert halt u.a. OpenGL und plattformunabhängige Programmierung. Es geht mir weniger darum nen "Kassenschlager" oder das ganze komplett zu ende zu programmieren sondern eher darum mich mal in die Materie einzufinden und die Probleme kennen zu lernen damit ich diese erfahrung in die Planung vor dem eigentlichen Spiel mit einfließen lassen kann.
EDIT: irgendwie bin ich mit der Formulierung nicht zufrieden aber ich bin noch recht müde
Daher verzeiht bitte wenn da irgendwas überheblich klingt, bin mir der schwierigkeit ein Game wirklich zum laufen zu bringen bewusst.
-
das einzige worauf du achten mußt ist, dass du alle api-aufrufe kapselst. wenn du später eine neue plattform unterstützen möchtest, dann mußt du nur die wrapper anpassen und jedes spiel, dass du gemacht hast, läuft dann auf der neuen plattform.
mehr mußt du vorerst nicht beachten, und es ist auch erstmal egal welche apis du nutzt.
rapso->greets();
-
das einzige worauf du achten mußt ist, dass du alle api-aufrufe kapselst.
Wobei das sicher eher leichter gesagt als getan ist, kenn mich mit OpenGL nich so aus, aber denk mal das die logische unterschiede z.B. zu directX schon imens sind. Und du dann bei bedarf zur emulation einer DirectX routine fuer OpenGL ne menge rumrechnen darfst. Bye Bye Performance
Bsser waere sicher die Abstrakte trennlinie zwischen grafik und Spiele-Logic in deinem spiel sauber zu halten, und die eigentliche Grafik Engine in 2 versionen zu liefern, als nur die API aufrufe zu kapseln ^^
Wenn OpenGL und directX doch nich so unterschiedlich sind, kannst halt viel kopieren ^^
Ciao ...
-
Wäre das so zu realisieren?:
Ich mach mir ein Interface mit Funktionsprototypen und für jede API die ich verwenden will eine entsprechende dll. z.B. OpenGL.dll und DirectX.dll
für das interface erstell ich mir ne liste von Funktionen die das entsprechende Gegenstück aus der DLL laden in denen ich die gewünschte Funktion entsprechend nachbilde.
Vor Programmstart muss dann eben noch die API ausgewählt werden und die enstsprechende dll geladen werden.
-
RHBaum schrieb:
das einzige worauf du achten mußt ist, dass du alle api-aufrufe kapselst.
Wobei das sicher eher leichter gesagt als getan ist, kenn mich mit OpenGL nich so aus, aber denk mal das die logische unterschiede z.B. zu directX schon imens sind. Und du dann bei bedarf zur emulation einer DirectX routine fuer OpenGL ne menge rumrechnen darfst. Bye Bye Performance
Bsser waere sicher die Abstrakte trennlinie zwischen grafik und Spiele-Logic in deinem spiel sauber zu halten, und die eigentliche Grafik Engine in 2 versionen zu liefern, als nur die API aufrufe zu kapseln ^^
Wenn OpenGL und directX doch nich so unterschiedlich sind, kannst halt viel kopieren ^^
Mit Ausnahme des letzten Postings hat er doch gar nicht behauptet, unter Windows DirectX einsetzen zu wollen.

-
RHBaum schrieb:
das einzige worauf du achten mußt ist, dass du alle api-aufrufe kapselst.
Wobei das sicher eher leichter gesagt als getan ist, kenn mich mit OpenGL nich so aus, aber denk mal das die logische unterschiede z.B. zu directX schon imens sind. Und du dann bei bedarf zur emulation einer DirectX routine fuer OpenGL ne menge rumrechnen darfst. Bye Bye Performance
nein, nicht wirklich. der weg ist ja entweder:
app -> dx -> driver
oder
app -> ogl -> driver
dx und ogl ist also ein layer der die treiber kapselt und da man dort nicht viel performance verlieren möchte, sind beide recht driver-nah, was bedeutet das kaum umrechnungen vorhanden sind die performance kosten würde, somit gibt es auch zwischen ogl und d3d keine großartigen umrechnungen.die performance hängt zum großteil von der verarbeitung von resourcen durch die graphikhartware ab.
resourcen wiederrum lädt man zur laufzeit selten in die hardware, weil es selbst im optimalen fall zu langsam wäre die daten immer neu zu laden.
das einzige was man also zur laufzeit macht, ist der aufruf von ein paar kontrollfunktionen, alles andere blockt die asynchrone abarbeitung und hat eh schlechte performance zum resultat.Bsser waere sicher die Abstrakte trennlinie zwischen grafik und Spiele-Logic in deinem spiel sauber zu halten, und die eigentliche Grafik Engine in 2 versionen zu liefern, als nur die API aufrufe zu kapseln
besser ist so auslegbar.... der arbeitsaufwand würde sich pro plattform steigern extrem steigern (jedesmal die graphikengine erneut erstellen), du müßtest dann nicht nur die grafikengine in mehreren versionen erstellen und pflegen, sondern auch die daten und tools. alles natürlich mit abhängigkeiten voneinander und nicht zu vergessen, dass graphik nicht alles ist. input,network,resourcemanagement würde ebenfalls neu geschrieben werden müssen.
Wenn OpenGL und directX doch nich so unterschiedlich sind, kannst halt viel kopieren
ich glaube er wollte plattformunabhängig und nicht auf ogl/d3d limitiert sein.
rapso->greets();
-
rapso schrieb:
dx und ogl ist also ein layer der die treiber kapselt und da man dort nicht viel performance verlieren möchte, sind beide recht driver-nah, was bedeutet das kaum umrechnungen vorhanden sind die performance kosten würde, somit gibt es auch zwischen ogl und d3d keine großartigen umrechnungen.
Ich glaube, er meinte eher, daß eine App die zunächst nativ OpenGL nutzt und deren Matrizen-Pointer-Format und deren Koord.system, beim Nutzen von DirectX dann diesen Kram jeden Frame umrechnen muß.
Ob das allerdings soviel Performanz zieht ist 'ne andere Frage...
-
Sgt. Nukem schrieb:
rapso schrieb:
dx und ogl ist also ein layer der die treiber kapselt und da man dort nicht viel performance verlieren möchte, sind beide recht driver-nah, was bedeutet das kaum umrechnungen vorhanden sind die performance kosten würde, somit gibt es auch zwischen ogl und d3d keine großartigen umrechnungen.
Ich glaube, er meinte eher, daß eine App die zunächst nativ OpenGL nutzt und deren Matrizen-Pointer-Format und deren Koord.system, beim Nutzen von DirectX dann diesen Kram jeden Frame umrechnen muß.
Ob das allerdings soviel Performanz zieht ist 'ne andere Frage...
ich weiß, das sollte ja auch die antwort darauf sein.
nochmal explizit.
d3d muss diese suboptimalen matrizen usw. auch jedesmal transponieren. ati karten z.b. haben nur vertexshader, kein TnL mehr, sie müssen also mit 4 dp3 die transformation durchführen, das setzt normale matrizen voraus. die TnL hardware hat auch kein transpose, also....rapso->greets();
-
Vertexwahn schrieb:
syntax-highlighting ist für schwächlinge! echte Klingonen programmieren in notepad, und wenn sie eine IDE sehen jagen und töten sie diese.
hmm, der satz kommt mir irgendwie bekannt vor, nur was hat das jetzt mit meiner frage zu tun?
-
also nur 90% der spielr auf dem PC ham windows...
windows (zumindest NTund folgende...)baaasieren nicht auf DOS sondern ehre auf MAC OS X und die PS basiert meines wiissens auch net auf DOs denn doss ist nic der ursprung von allem sonder nur der ursprung von MS und der Blödheit
-
shade37337 schrieb:
also nur 90% der spielr auf dem PC ham windows...
windows (zumindest NTund folgende...)baaasieren nicht auf DOS sondern ehre auf MAC OS X und die PS basiert meines wiissens auch net auf DOs denn doss ist nic der ursprung von allem sonder nur der ursprung von MS und der Blödheit*tätschel
und nu geh wieder cs spielen...
-

rapso schrieb:
ich weiß, das sollte ja auch die antwort darauf sein.
Oh sorry... :schäm:
-
Vertexwahn schrieb:
mit was sollte ich mich auskennen wenn ich Plattform unabhängige Spiele realisieren möchte?
100% der Spieler nutzen Windows als Betriebssystem
Glatt gelogen.
-
Java3d ist auch ganz lustig für plattformunabhängige Spielchen, machen das grad inner Uni.
-
shade37337 schrieb:
also nur 90% der spielr auf dem PC ham windows...
windows (zumindest NTund folgende...)baaasieren nicht auf DOS sondern ehre auf MAC OS X und die PS basiert meines wiissens auch net auf DOs denn doss ist nic der ursprung von allem sonder nur der ursprung von MS und der BlödheitDos wurde aber auch nicht vom guten herr gates "erfunden" das hat er sich meines wissens auch nurangeeignet, sein Dos war eigentlich eines der schlechteren weil kein reales 16bit system oder so ähnlich.
hab das nur noch so halb im hinterkopf
-