QCanval: Schnell genug für Spiele?
-
Hallo!
Habe eine Frage zum QCanvas: In Java sind die Zeichenfunktionen eines Canvas ja ziemlich langsam.
Wie ist das beim QCanvas? Ist dieses Canvas auch für Spiele geeignet oder nur für primitive Ausgaben eines Programms?Ich nehme an OpenGL ist da wesentlich schneller, oder?
Danke!
mfg
-
Hi !
Ich kenne QT zwar nicht wirklich gut, aber ich gehe davon aus dass QCanvas -ebenso wie bei allen vergleichbaren APIs ebenfalls- zu langsam für Spiele ist, die mindestens 25 Bilder in der Sekunde bei 1024x768 und 32 Bit zeichnen müssen.
OpenGL ist, natürlich, ungleich schneller, wenn auch von Haus aus eher für 3D Sachen ausgelegt. Schau mal auf www.clanlib.org, das ist eine nette plattformunabhängige C++ Library, mit der sehr schnell und einfach 2D Sachen machbar sind. Im FAQ sollte sich sogar noch etwas Beispiel Code finden
-
Danke erstmal für den Tipp, doch bevor ich anfange ein Spiel zu entwickeln, das auf diese Bibliothek aufbaut stelle ich die Frage, die mir am meisten Sorgen macht wenn es darum geht etwas neues auszuprobieren:
Angenommen ich installiere diese Bibliothek und verwende sie in meinem Projekt, muss diese Bilbiothek dann jeder installiert haben, der mein Programm/Spiel starten will?
Bei der Qt-Bibliothek ist es ja so, nur gibt es da kein Problem weil Qt sowieso standardmäßig mit jedem X-Server mit-installiert wird. Im Gegensatz dazu haben "Clanlib" glaube ich eher wenige User installiert.Ist es dann notwendig einen Hinweis in die Readme zu schreiben: "Um dieses Programm verwenden zu können müssen Sie folgendes herunterladen und installieren: ..."?
Danke!
mfg
-
Hi !
Du kannst deine Anwendung statisch gegen die Clanlib linken, dann brauchst du sie nicht mitzuliefern. Oder du kopierst die benötigten Dateien einfach ins SPielverzecihnis und änderst den LD_LIBRARY_PATH. Oder du machst deine Readme
-
eigentliche
Einsteiger schrieb:
bevor ich anfange ein Spiel zu entwickeln, das auf diese Bibliothek aufbaut
Bevor du anfängst ein Spiel zu entwickeln, solltest du versuchen, ein Konzept zu erarbeiten, bei dem das eigentliche Programm und die grafische Ausgabe möglichst streng von einander getrennt sind.
Dann kannst du zum Einen schon mit der Implementierung (des Kerns) beginnen, während du noch verschiedene Grafikbibliotheken auf ihre Tauglichkeit hin testest und kannst zum Anderen, falls es aus irgendeinem Grund notwendig sein sollte, mit vergleichsweise geringem Aufwand die Grafikbibliothek wechseln oder ggf. zusätzliche unterstützen.
-
Statisch linken klingt gut. Und wie bringe ich dem GNU-Compiler bei dass/welche Bibliotheken er statisch linken soll?
Danke!
mfg
-
Die SDL sollte heir durchaus auch nochmal erwähnt werden finde ich, wenns um Spieleprogrammierung geht
-
Hallo!
Diese ClanLib ist ja vielleicht ganz gut, aber man wird trotzdem verrückt wenn man diese Bibliothek verwendet um ein Spiel zu entwickeln: Wie ich nämlich gerade auf der ClanLib-Homepage sehe (siehe Abschnitt "Required Libraries for ClanLib") braucht diese Bibliothek selbst wieder andere Bibliothken damit sie funktioniert. Und es ist weder ClanLib selbst noch die anderen benötigten Bibliotheken bei einer Standard-Distribution dabei.
Wenn ich also ein Spiel auf Basis dieser Bibliothek schreibe und dann als Freeware zum Download anbiete ist das doch nicht zumutbar: Ich kann weder die ganzen Bibliotheken statisch linken (bei einer geht das gerade noch, aber für diese ClanLib braucht man so viel dass alleine die Binärdatei dann über 3 MB groß wäre - dann kommen noch die Grafiken dazu), noch kann ich eine ganze Liste Links in die Readme schreiben und den User bitten diese Pakete alle runterzuladen.
Wenn ein kleines Freeware-Spiel inklusive Grafiken mal geschätzt über 6 MB hat wird das der Großteil der User nicht runterladen nur um es mal schnell auszuprobieren.
Und wenn ich die Bibliothken nicht statisch linke werden die meisten User, die es runtergeladen haben es sofort wieder löschen wenn es sich nicht starten lässt. Der Rest der User, der sich die Mühe macht in die Readme zu schauen, löscht es spätestens wenn er festgestellt hat dass er noch weitere 5 Pakete runterladen muss.Wieso ist das denn in Linux alles so umständlich?
Ich meine: Open Source, GNU und die Verteilte Entwicklung auf der ganzen Welt mag ja vielleicht eine nicht so schlechte Idee sein, aber spätestens wenn ich ein Programm oder Spiel für End-User schreiben will (die sich selbst nicht gut auskennen!) ist Windows besser (BITTE jetzt keinen Streit anfangen). Unter Win ist die einzige Systemvorraussetzung für Spiele dass man DirectX installiert hat. Und da dieser sowieso standardmäßig bei Win dabei ist gibt es keine Probleme.
Und selbst wenn sich ein User noch so gut auskennt hat er es VIEL lieber wenn er was runterlädt und es sofort läuft, als wenn er noch Zusatz-Libs downloaden muss.
Ich glaube dass sogar Linus Torvalds höchstpersönlich keine Lust hätte im Internet 5 Pakete zusammenzukratzen nur um ein kleines Tool oder Spiel zu verwenden.
Bei MS wird eine neue Version von Windows zentral geplant und dann entwickelt, aber bei Linux macht einer das, der andere das, um zum Schluss gibt es hunderte verschiedene Bibliothken für die gleiche Sache.
Einer entwickelt seine Sachen auf Basis von der Bibliothek, der andere zieht eine andere Bibliothek vor. Ich mache ja SuSE, Redhat & Co. keine Vorwürfe: Es ist selbstverständlich dass niemals alle existierenden Bibliotheken auf 8 CDs Platz haben, aber es sollte zumindest mal irgendwer so eine Art Standard festlegen, auf die man dann bauen kann. Sogar hier im Forum gibt es schon so viele verschiedene Meinungen welche Bibliothek besser ist, wie sieht die Sache dann erst weltweit aus?
Alleine für das GUI gibt es mehrere Möglichkeiten: Qt, GTK+, und wahrscheinlich noch tonnenweise andere Bibliotheken.
Für die Grafikausgabe gibt es diese ClanLib, OpenGL, und wahrscheinlich ebenfalls noch viele andere.Korrigiert mich wenn ich mich irre.
Ich möchte nochmals betonen: Ich bin nicht einer der Windows-User, die auf Linux herumhacken nur weil sie sich nicht auskennen. Das sind alles ernst gemeinte Fragen!
Ich will doch einfach mal was unter Linux programmieren, das ich dann auch an Freunde weitergeben oder ins Internet stellen kann, und sicher sein kann dass es bei JEDEM läuft. Dabei soll die Zielperson aber kein Linux-Guru sein müssen, der sich zuerst sie Sources selbst kompiliert.
Auch der DAU (=Dümmster anzunehmender User) soll mein Programm verwenden können.
mfg
-
Einsteiger schrieb:
Und es ist weder ClanLib selbst noch die anderen benötigten Bibliotheken bei einer Standard-Distribution dabei.
Deswegen habe ich die SDL genannt.
Wenn ich also ein Spiel auf Basis dieser Bibliothek schreibe und dann als Freeware zum Download anbiete ist das doch nicht zumutbar: Ich kann weder die ganzen Bibliotheken statisch linken (bei einer geht das gerade noch, aber für diese ClanLib braucht man so viel dass alleine die Binärdatei dann über 3 MB groß wäre - dann kommen noch die Grafiken dazu), noch kann ich eine ganze Liste Links in die Readme schreiben und den User bitten diese Pakete alle runterzuladen.
Bei Windows-Spielen ists auch üblich, extra-dlls im download mitzuliefern, son großer unterschied ists nicht.
aber spätestens wenn ich ein Programm oder Spiel für End-User schreiben will (die sich selbst nicht gut auskennen!) ist Windows besser (BITTE jetzt keinen Streit anfangen).
Kein Streit, nur ein bisschen die andere Seite beleuchten
Unter Win ist die einzige Systemvorraussetzung für Spiele dass man DirectX installiert hat. Und da dieser sowieso standardmäßig bei Win dabei ist gibt es keine Probleme.
Aber oft nicht in der benötigten Version. Da musst du genauso Updaten.
Und selbst wenn sich ein User noch so gut auskennt hat er es VIEL lieber wenn er was runterlädt und es sofort läuft, als wenn er noch Zusatz-Libs downloaden muss.
Die SDL ist ziemlicher Standard, die ist auf jedem normalen System drauf würde ich mal behaupten.
Bei MS wird eine neue Version von Windows zentral geplant und dann entwickelt, aber bei Linux macht einer das, der andere das, um zum Schluss gibt es hunderte verschiedene Bibliothken für die gleiche Sache.
Ohoh, das ist unter Windows genauso. Da fällts nur nicht so auf, weil die Bibliotheken als DLLs keine merkliche Installation haben.
Alleine für das GUI gibt es mehrere Möglichkeiten: Qt, GTK+, und wahrscheinlich noch tonnenweise andere Bibliotheken.
Alleine für die Windows-GUI gibts MFC, VCL und wahrscheinlich noch tonnenweise andere Frameworks
Für die Grafikausgabe gibt es diese ClanLib, OpenGL, und wahrscheinlich ebenfalls noch viele andere.
...DirectX, OpenGL, SDL und ebenfalls noch viele andere
Dabei soll die Zielperson aber kein Linux-Guru sein müssen, der sich zuerst sie Sources selbst kompiliert.
Auch der DAU (=Dümmster anzunehmender User) soll mein Programm verwenden können.
Dann bleiben dir nur RPMs. Mit nem vernünftigen makefile ist das doch nur noch das übliche
./configure
make
make installDas kann man auf der Homepage in 3 Zeilen schreiben
Linux und Windows sind garnicht so unterschiedlich in manchen Dingen wie man denkt...