Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

18.06.2013, 14:11

SDL 2.0 mit OpenGL oder SFML 2.0 ?

/EDIT: Irgendwie habe ich es geschafft im falschen Unterforum zu landen. Kann das bitte jemand nach Grafik schieben? Danke -.-'

Hi, bisher habe ich viel mit SDL gearbeitet und kaum mit SFML. Aktuell arbeite ich mit SDL 1.2 an meinem Rollenspielprojekt und fühle mich dabei wohl: für Grafiken und Sounds habe ich Wrapper geschrieben, die einerseits die SDL-Internas verdecken und andererseits Resources cachen, so dass ich nicht immer wieder das Tileset XY von der Festplatte laden muss. Zusätzlich glaube ich, dass ich (eben durch die Kapselung) die (von mir) geplante Migration auf SDL 2.0 schneller und fehlerfreier abwickeln kann.

Bisher hatte ich mein Netzwerk-Framework (Code findet ihr auf GitHub) auf SDL_net 1.2 aufbauen lassen. Vorgestern habe ich mit aus Spaß mal SFML 2.0 angesehen und festgestellt, dass ich mit mir, wenn ich SFML verwende, einen Teil meines Codes sparen kann. In diesem Atemzug habe ich den Code umgeschrieben, da ich eh noch ein Feature einbauen wollte und SFML sich hier stark anbot. Dann habe ich gestern mit dem Gedanken gespielt meine bisherige Game Engine auf SFML umzubauen. Damit ich mir damit aber nicht ins Knie schieße, habe ich mir selber einen Riegen vorgeschoben und mein weiteres Vorgehen (d.h. meine eigentliche Systemarchitektur) weiter modelliert ... so kann man auch das Tempo rausnehmen und sich auf den roten Faden besinnen :D

Jetzt frage ich mich: lohnt es sich für mich auf SFML umzusteigen? Ich wrappe eh sehr viele Dinge, um sie "auf meine Art" zu verwenden. Dabei ähneln meine Wrapper teilweise den Klassen von SFML - aber auch nicht komplett ^^ Zum Beispiel müsste ich - wenn ich SFML verwende - mein Caching dennoch implementieren. Nun frage ich mich aber, ob ich mit diesem Wrappen einer ohnehin schon OO-API mir nicht vielleicht selber ein Ei lege. Bisher läuft meine Game Engine auf meinem Netbook (ca. 3 Jahre alt) flüssig, d.h. mit >20 FPS im Fenstermodus (640x480) unter Verwendung von SDL.

Feature-technisch habe ich mit dem Projekt folgendes vor:
  • Tile-basierte Map, isometrische Darstellung
  • Kacheln bereits isometrisch vorgerendert
  • animierte Sprites, dazu ein paar Sounds

Also das "typische 2D-Spiel" aus meiner Sicht :D Ich frage mich also insgesamt:

  • "Bringt" es das, wenn ich von SDL 1.2 auf SFML 2.0 umsteige?
  • Wäre eine Migration von SDL 1.2 auf SDL 2.0 sinnvoller?
  • Erzeuge ich durch mein exzessives Gewrapper mehr Overhead, wenn ich SFML verwende? Wie könnte sich dieser Overhead bemerkbar machen? (Stichwort Netbook)
  • Oder fahre ich vllt. insgesamt besser, wenn ich bei SDL bleibe und das Rendering auf OpenGL (Stichwort orthogonale Projektion) umbaue?

Bisher "antworte ich mir" wie folgt:

  • Afaik verwendet SFML direkt OpenGL. Das sollte das Rendering eigentlich beschleunigen.
  • Ich habe gelesen (div. Quellen), dass sich die Geschwindigkeit des SDL-Renderers mit v2.0 verbessert haben sollte. Also müsste sich die Migration schon lohnen.
  • Vermutlich bin ich knapp an der Grenze zwischen bemerkbar und unbemerkbar :D
  • siehe erster Punkt.

Könnt ihr mir da ein paar Dinge zu Orientierung raten? Generell habe ich schon das Gefühl, dass ich mir "schon einige Gedanken" gemacht habe, d.h. es hier nicht um ein Biergarten-Projekt geht :D Ich hoffe ihr könnt mir helfen :)

Damit das ganze hier nicht nur ein langer Text mit Tausend Fragen ist, habe ich hier mal einen Screenshot:


(Link)


Die Grafiken stammen dabei von FLARE, wobei ich dessen Source-Code nur als SDL-Tutorial verwendet habe. Mein Rendering-Algorithmus arbeitet z.B. etwas anders als der der FLARE-Enigne. In meiner Hoffnung finde ich irgendwann (wenn mein Projekt weiter fortgeschritten ist) den ein oder anderen Grafiker :D Aber das ist ein anderes Blatt.

LG Glocke

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »BlueCobold« (18.06.2013, 14:45) aus folgendem Grund: - Titel konkretisiert - falsches Unterforum erwischt -.-


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

18.06.2013, 14:44

Also wenn du auf SFML umsteigst wäre es unsinnig wenn du dazu noch groß Wrapper schreibst. Aber SFML nimmt dir dadurch natürlich enorm viel Arbeit ab, so dass du dich direkt auf dein Spiel konzentrieren kannst.
Allerdings versteh ich den Reiz, selber diese Wrapper zu schreiben. Für mich selbst habe ich ein eigenes Framework geschrieben, welches die SDL 2.0 und OpenGL in Kombination benutzt. Aber das eher aus dem Grund, dass ich unter D nichts vergleichbares wie die SFML für C++ besaß als ich anfing. Also wenn du gerne selber rumbastelst, würde ich sagen: steig auf SDL 2.0 um und verbinde es mit OpenGL. Es ist wirklich sehr leicht SDL und OpenGL zu kombinieren.
Wenn du dich aber lieber auf das eigentliche Spiel konzentrieren willst: benutz die SFML, das nimmt dir jedwede Arbeit ab. Jedenfalls größtenteils.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

3

18.06.2013, 14:57

Also wenn du auf SFML umsteigst wäre es unsinnig wenn du dazu noch groß Wrapper schreibst.


Das habe ich fast vermutet :D

Allerdings versteh ich den Reiz, selber diese Wrapper zu schreiben. Für mich selbst habe ich ein eigenes Framework geschrieben, welches die SDL 2.0 und OpenGL in Kombination benutzt. Aber das eher aus dem Grund, dass ich unter D nichts vergleichbares wie die SFML für C++ besaß als ich anfing.


Ja, der Reiz ist vorhanden und groß :D Zumal man durch das Erstellen eigener Interfaces auch öfters mal in der Sackgasse landet, merkt "aha, so geht's nicht" und daraus ein Lerneffekt entsteht :)

Also wenn du gerne selber rumbastelst, würde ich sagen: steig auf SDL 2.0 um und verbinde es mit OpenGL. Es ist wirklich sehr leicht SDL und OpenGL zu kombinieren.


Ich habe SDL 1.2 mal mit OpenGL kombiniert ... eine sehr hübsche Sache ist das :) Da ich ohnehin eine Image-Klasse verwende, die aktuell SDL_Surface wrappt, würde sich die Verwendung von OpenGL quasi anbieten.

Soll ich erst auf SDL 2.0 migrieren und dann OpenGL mit einbauen? (Andersrum erscheint mir unangebracht, aber ich frag' es trotzdem mal xD)

Wenn du dich aber lieber auf das eigentliche Spiel konzentrieren willst: benutz die SFML, das nimmt dir jedwede Arbeit ab. Jedenfalls größtenteils.


Naja ich habe keine Deadline im Rücken. Von daher ... :D Aktuell geht es mir eher um das "das Framework um das Spiel drumrum" bauen.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

18.06.2013, 15:19

Ja ich würde zuerst auf die SDL 2.0 migrieren. Du wirst sehen da kommt eine Menge neues dazu. ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

5

18.06.2013, 16:23

Zur Migration auf SDL 2.0 habe ich diesen Artikel gefunden. Habt ihr noch ein paar Vorschläge zu zusätzlichen Quellen? ja, der Guide ist schon der offizielle, aber vielleicht gibt's ja noch mehr "gutes Zeug" :)

6

07.02.2014, 16:44

Zur Migration auf SDL 2.0 habe ich diesen Artikel gefunden. Habt ihr noch ein paar Vorschläge zu zusätzlichen Quellen? ja, der Guide ist schon der offizielle, aber vielleicht gibt's ja noch mehr "gutes Zeug" :)


Auf Basis des genannten Guides habe ich mein Wrapper-Framework auf SDL 2 umgestellt. Wer es sich (noch)mal anschauen möchte:

LG Glocke

Werbeanzeige