Fanadventures und OpenGL?

Der Anlaufpunkt für alle, die selbst ein Adventure programmieren wollen.
Antworten
Benutzeravatar
Martin Lassahn
Süßwasserpirat
Süßwasserpirat
Beiträge: 436
Registriert: 29.04.2003, 22:07
Wohnort: Mettmann
Kontaktdaten:

Fanadventures und OpenGL?

Beitrag von Martin Lassahn »

Ich habe eventuell vor die Engine meines Adventures auf OpenGL umzustellen, aus Performance-Gründen. Bei höheren Auflösungen (>=800*600) bricht die Geschwindigkeit ohne Hardware-Beschleunigung unkontrolliert ein (Bei 2Ghz/Geforce4200 nur 35fps, unter 800Mhz braucht man gar nicht erst starten). Auch wenn es 'nur' ein Adventure ist, möchte ich dem Spieler keine FPS-Zahl unter 20 anbieten. Wenn ich aber nun auf OpenGL setze, dann gucken die älteren Maschinen ohne OpenGL-Unterstützung 100% ziemlich dumm in die Röhre. Ich bin also hin- und hergerissen, was ich tun soll: Eine OpenGL-Karte voraussetzen, oder nicht?

(Jetzt kommt mir nicht mit Assembler-Programmierung, aus dem Alter bin ich raus...)
Benutzeravatar
Lebostein
Logik-Lord
Logik-Lord
Beiträge: 1343
Registriert: 24.03.2003, 22:54
Wohnort: Elbflorenz
Kontaktdaten:

Beitrag von Lebostein »

Hallo

Was hast du denn vor? Soweit ich auf deiner Homepage entnehmen kann, handelt es sich bei deiner Engine um eine 2D-Engine. Da müsste man doch auch bei hohen Auflösungen mit ordentlicher Programmierung gute Geschwindigkeiten auch auf langsamen Rechnern erzielen können. Hab selber schon derartige Spiele in hohen Auflösungen auf meinem 350Mhz Rechner mit 8MB-Grafikkarte gespielt, die flüssig liefen (ein paar Sprites, ein paar alpha und transparent-effekte, mehr passiert da ja nicht...).

Für ein 2d-Adventure Anforderungen höher als 800Mhz, da musst du ja dein Spiel mit Effekten nur so vollgestopft haben....
Benutzeravatar
Martin Lassahn
Süßwasserpirat
Süßwasserpirat
Beiträge: 436
Registriert: 29.04.2003, 22:07
Wohnort: Mettmann
Kontaktdaten:

Beitrag von Martin Lassahn »

Nunja, ich gebe ja zu, dass ich nicht der begnadetste Spieleprogrammierer bin, aber mein Performance-Problem hat ziemlich einfache Gründe:

1. Ich benutze bisher kein Assembler/DirectX oder OpenGL
2. Ich möchte 32bit benutzen, nicht nur 16bit.
3. AlphaMaps für Semitransparente Effekte ist der einzige Effekt, der die Grafikschnittstelle richtig fordert.

Auch ältere Adventures wie BaphometsFluch 1 benutzen schon DirectX, um eine Beschleunigung zu erzielen. Man kommt schon fast gar nicht mehr um DirectX herum, um in hohen Auflösungen spielbar zu bleiben. Welches aktuelle Spiel (auch Adventure) läuft ohne DirectX/OpenGL?

'Grossartige' Effekte kommen nicht rein. Aber ein paar unauffällige Hintergrundanimationen kosten auch nicht unerheblich Performance: animiertes Meer, Wolkenbewegungen, etc...

Es wird wie ein klassisches 2D-Spiel aussehen, bloss mit OpenGL-Beschleunigung. Warum nicht?
WiDDY
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 174
Registriert: 06.08.2003, 10:50
Wohnort: München
Kontaktdaten:

Beitrag von WiDDY »

Ah - Du machst das mit GDI?
DirectX sollte einfacher und vor allem sinnvoller als OpenGL sein.

WiDDY.
Smith & Wesson - The original Point and Click interface!
Benutzeravatar
Martin Lassahn
Süßwasserpirat
Süßwasserpirat
Beiträge: 436
Registriert: 29.04.2003, 22:07
Wohnort: Mettmann
Kontaktdaten:

Beitrag von Martin Lassahn »

Nein, mit GDI mache ich das auch nicht. Das wäre ja echt grottenlangsam. Ich benutze eine gfx-Lib: g32. Ist eigentlich eine ordentliche und einfache Sache, aber bei 32bit-FullScreenBlits ist die dann in 800*600 doch überfordert.

Bei DirectX ist mir zum einen die längere Einarbeitungszeit gegenüber OpenGL aufgefallen und zum anderen hab ich keine Funktionen gefunden um AlphaMasking in 2D machen zu können (mit Hardwareunterstützung). DirectX7 macht das ja nicht. Und bei 8 und 9 realisiert man diesen Krempel sowieso nur noch in 3D. Und das geht dann mit OpenGL einfacher. Falls ich nur zu blöd bin, kann man mir auch gerne eine Hilfestellung geben :)
john_doe[g]

Beitrag von john_doe[g] »

Schau dir mal SDL an (http://www.libsdl.org), eine Grafik-/Sound-Schnittstelle, die relativ einfach zu handhaben ist.
Sie benutzt je nach OS die darunterliegende Schnittstelle, also z.B. DirectX bei Windows.
Benutzeravatar
Martin Lassahn
Süßwasserpirat
Süßwasserpirat
Beiträge: 436
Registriert: 29.04.2003, 22:07
Wohnort: Mettmann
Kontaktdaten:

Beitrag von Martin Lassahn »

Sorry, das hatte ich mir auch schon mal angeguckt, aber auf der Site steht leider:
"SDL supports Windows 95/98/NT/ME/2000/XP. SDL can be built with Visual C++, Borland C++, Cygwin, MinGW, Dev-C++, and Watcom C++. "

Meine Engine ist 'leider' in Delphi/Pascal geschrieben und dabei bleib ich auch. Abgesehen davon weiss ich nicht, ob es wirklich was bringen würde, denn so würde ich ja nicht OpenGL sondern DirectX voraussetzen. Denn die GDI-Unterstützung ist bestimmt nicht performanter als meine bisherige Lösung.

Nochmal zurück zur Frage: Warum nicht OpenGL ?
WiDDY
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 174
Registriert: 06.08.2003, 10:50
Wohnort: München
Kontaktdaten:

Beitrag von WiDDY »

Also helfen kann ich auch nicht wirklich, ist schon ein Weilchen her, daß ich am PC was gemacht habe...
Hast Du eine Ahnung, worauf G32 aufsetzt? Vermutlich doch schon auf irgendein DirectX, aber wohl auf nur auf DirectDraw. Da ist gar nix mit Alphablending oder sonstigem Eyecandy, es sei denn, Du machst das händisch. Die Frage ist, ob der hübsche Schatten wirklich den Performance-Einbruch oder den Aufwand wert ist (ich sag's jetzt ungern, aber es gibt da so ein Videospiel für die Hosentasche, bei dem das sehr schön hardwaremässig geht! :wink: )
Große Bereiche der Hintergrundgrafik zu animieren wird immer ein mittleres Problem sein, es sei denn, man fängt mit wirklichen Schweinereien an, die dann aber gern mal auch nicht auf allen Rechnern gehen.
Ich hab' dann noch was auf Deiner Seite gelesen von wegen "Light-Maps" - falls Du die Helligkeit der Sprites abhängig von einer virtuellen Lichtquelle meinst, das kann man auch schön faken.

WiDDY.
Smith & Wesson - The original Point and Click interface!
Benutzeravatar
Martin Lassahn
Süßwasserpirat
Süßwasserpirat
Beiträge: 436
Registriert: 29.04.2003, 22:07
Wohnort: Mettmann
Kontaktdaten:

Beitrag von Martin Lassahn »

G32 setzt eben nicht auf DirectX auf. Es ist optimierter AssemblerCode. (Vielleicht MMX Unterstützung oder so). Jedenfalls funktionierte das bisherige Programm auch auf WindowsNT (und das kann regulär nur bis DirectX3)

Auf tolle Schatteneffekte könnte ich schon verzichten, aber in anderen Bereichen (Wolken + Wasser) sieht das mit AlphaMasks schon sehr gut aus. Das klappt jetzt schon und möchte ich eigentlich nicht mehr entfernen. Ich schätze Videospiele für die Hosentasche (programmiere ja selbst PalmOS) aber zeig mir dort mal ein Spiel mit 800*600*32-Auflösung ;)

Die Helligkeiten der Sprites habe ich bereits gefaked...mit einer dynamischen schwarzen AlphaMask.

Mit OpenGL ist das alles soooo easy und beschleunigt die Anwendung durch die Hardwarebeschleunigung um mehrere Faktoren.
john_doe[g]

Beitrag von john_doe[g] »

SDL gibt's auch für Delphi. SDL besteht ja nur aus einem Haufen DLLs, für die man dann halt die entsprechenden Import-Units braucht.
Gibt's glaub ich beim Project JEDI.
john_doe[g]

Beitrag von john_doe[g] »

Noch was: Ich würde OpenGL bei einem 2D-Spiel nur optional einsetzen. Wenn der Benutzer eine ältere Grafikkarte hat, kann es vorkommen daß das Spiel mit OpenGL langsamer läuft als mit DirectX.
Benutzeravatar
Martin Lassahn
Süßwasserpirat
Süßwasserpirat
Beiträge: 436
Registriert: 29.04.2003, 22:07
Wohnort: Mettmann
Kontaktdaten:

Beitrag von Martin Lassahn »

Öhm, wenn der User eine ältere Grafikkarte hat, dann kann es sogar sein, dass das Game gar nicht läuft. Ok, kann ich mit leben. Ehrlich gesagt, finde ich das gar nicht sooo schlimm. Wenn das Spiel läuft, dann wenigstens vernünftig. Wenn irgendjemand das Spiel spielen möchte, dann braucht er eben eine OpenGL-fähige Grafikkarte. Es ist eben kein 'Retro-AGS'-Game. Um grosse,flüssige Background-Animationen darzustellen reicht eben kein 200Mhz-Rechner. Athmosphäre hat eben seinen Preis.

Übrigens habe ich mir das JEDI-SDLv0.5 mal installiert und ein wenig rumprobiert. Also von den Beispielen laufen weniger als die Hälfte und die Hilfe finde ich auch nicht sehr brauchbar. Fast sämtliche Beispiele sind ohne VCL umgesetzt, was ich nicht sehr angenehm empfinde. Und zum Thema AlphaMaps habe ich nicht den 100%igen Beweis gefunden, dass ich das so umsetzen kann, wie ich es brauche (Graustufen-Jpgs). Insgesamt gesehen habe ich mich vielleicht zuwenig damit beschäftigt, aber mir erscheint es subjektiv auch noch sehr 'beta' zu sein. Wenn jemand mir mehr Infos dazu geben kann (brauchbare WebSiten oder ähnliches), würde ich mich vielleicht intensiver damit beschäftigen. Aber 'easy' ist es nicht.
Benutzeravatar
Lebostein
Logik-Lord
Logik-Lord
Beiträge: 1343
Registriert: 24.03.2003, 22:54
Wohnort: Elbflorenz
Kontaktdaten:

Beitrag von Lebostein »

Jaja, das ist so ne Sache. Hab selber schon mit DirectX und C++ bzw. Delphi rumexperimentiert und war nie richtig glücklich.

Mittlerweile benutze ich PureBasic (alle C++-Fans mögen mir verzeihen, aber ich hab die Nase voll von Seitenweise Code, nur um DirectX zu initialisieren und immer noch kein einziges Sprite zu sehen). Zum Programmieren von Spielen ist das DIE optimale Sprache. Mit einer Befehlszeile hab ich die komplette DirectX- umgebung initialisiert, mit beliebiger Auflösung im Fullscreenmodus und atemberaubender Geschwindigkeit (1024x765 und hunderte von durch den Raum fliegender Sprites auf meinem 350 Mhz-Rechner kein Problem -> 80 fps). Das laden und anzeigen und manipulieren von Sprites (Alpha, Blending, Effekte mit Graustufenmasken, Zoom, Rotation, Transparenzeffekte usw,) geht so genial einfach, Pageflipping braucht einen einzigen Befehl...usw.

Früher war ich auch immer darauf aus, so viel wie möglich Code selber zu schreiben. Hatte damals in QBasic ne komplette Grafikbibliothek in Assembler programmiert....

.... aber warum soll ich es mir kompliziert machen, wenns auch einfach geht? (abgesehen davon hat man sowieso immer wenig Zeit) Tja, dass ist mittlerweile meine Meinung. Dem Anwender ist es sowieso egal, wie das Spiel programmiert wurde und wieviel Zeit der Programmierer investiert hat....

http://www.purebasic.de/features.shtml
http://www.purebasic.com/german/index.php3, soll keine Werbung sein, aber ich finds einfach genial...

Hier, ein kleines Demo mit Quellcode:
http://home.arcor.de/tomysoft/download/grafikdemo.zip
Zuletzt geändert von Lebostein am 16.12.2003, 21:33, insgesamt 1-mal geändert.
Benutzeravatar
Martin Lassahn
Süßwasserpirat
Süßwasserpirat
Beiträge: 436
Registriert: 29.04.2003, 22:07
Wohnort: Mettmann
Kontaktdaten:

Beitrag von Martin Lassahn »

Hab ich auch nix gegen, in purebasic programmieren. Jedem das Seine. Ob DirectX,BlitzBasic,OpenGL,VisualBasic oder Flash: kann man alles machen. Aber die meisten schnellen Systeme setzen irgendwas an 'VorInstallation' voraus.

Meine Frage nochmal an Euch: Glaubt Ihr, dass ich ZUVIEL vom Anwender verlange, wenn ich OpenGL voraussetze?
Antworten