JörnS
Anmeldungsdatum: 25. November 2010
Beiträge: 2107
|
Hallo! Unter anderem durch Diskussion hier im Forum habe ich ein wenig experimentiert (mit PyGame). Ich habe bei Wikibooks ein Tutorial für Raycasting gefunden und dieses erweitert. Zur Zeit arbeite ich nur auf einem Notrechner mit etwa 1,5 GHz und einem GB Ram. Erwartungsgemäß ist das etwas lahm - PyGame ist ja grundsätzlich nicht für Geschwindigkeit berühmt. Im Tutorial waren auch Ansätze beschrieben, den Vorgang des Raycastings zu beschleunigen. Leider kein Erfolg, obwohl rechenintensive Kreisfunktionen (Sinus, Cosinus & Tangens) gecached werden. Deswegen würde ich mich freuen, wenn einige Leute mit halbwegs aktueller Hardware das Spiel mal testen würden. Bei mir komme ich auf etwa 8 fps (steht oben im Titel). Wer das Ganze mal kurz testen mag, den bitte ich um folgende Daten: -Prozessor -Grafikkarte (und welchen Treiber) -RAM und natürlich die fps. Die Texturen sind (testweise) von Wolfenstein geliehen. Es gibt einen kleinen Bug, so einen schmalen Streifen, den könnt ihr einfach ignorieren. Abhängigkeiten sind Python2 (2.6 und 2.7 gehen auf jeden Fall) und PyGame.
Vielen Dank an alle Helfer.
- raycast.zip (20.4 KiB)
- Download raycast.zip
|
The-Compiler
Anmeldungsdatum: 21. April 2006
Beiträge: 2640
Wohnort: Winterthur, Schweiz
|
Nett, nett ☺ ca. 14 FPS mit folgendem System:
|
Xell
Anmeldungsdatum: 17. Oktober 2005
Beiträge: 360
|
Ich denke, mein Rechner passt genau in die Kategorie "halbwegs aktuell". Fps schwankt arg, so zwischen 17 und 22. model name : AMD Athlon(tm) 64 X2 Dual Core Processor 5200+
nVidia Corporation G96 [GeForce 9500 GT] (rev a1)
NVIDIA Driver Version: 260.19.06
2GB RAM
|
trick17
Anmeldungsdatum: 17. Dezember 2008
Beiträge: 201
|
Hallo. 23 - 23.5 FPS - ziemlich konstant also * Intel Core i5-460M (2,53 GHz, 3MB L3 cache)
* ATI Mobility Radeon HD 5850 → radeon-Treiber
* 4 GB RAM Gruß Pa_trick17
|
Riddle
Anmeldungsdatum: 27. Juli 2007
Beiträge: 201
Wohnort: 127.0.0.1
|
Also ich komme mit meinem neuen Notebook relativ konstant auf 24-25 fps. Scheint ziemlich unabhängig von der Grafikkarte zu sein, da das bei beiden verbauten Karten gleich ist.
|
JörnS
(Themenstarter)
Anmeldungsdatum: 25. November 2010
Beiträge: 2107
|
Solche Zahlen hab ich ziemlich genau sogar erwartet. Problematisch ist (ausser PyGame) die fehlende Skalierung mit mehreren Prozessorkernen und auch das Wände linear rechenintensiver werden, je weiter sie weg sind. Konsequenz ist wohl, dass ich noch etwas mehr "back to the roots" gehen werde. Also wie in Dungeon Master, nicht volle Bewegungsfreiheit, sondern Fortbewegung von Feld zu Feld und Drehung in 90°-Schritten. So kann ich den Boden und die Decke auch texturiert darstellen (vollständig gecached), sonst sieht mir das einfach zu kahl aus. Ziel ist ein freies RPG, da ist bisher nicht viel spannendes zu finden ☺ Riddle schrieb: Also ich komme mit meinem neuen Notebook relativ konstant auf 24-25 fps. Scheint ziemlich unabhängig von der Grafikkarte zu sein, da das bei beiden verbauten Karten gleich ist.
Kann ich sogar nachvollziehen, da alles reines Software-Rendering ist. Das einzig interessante ist die Anbindung an den Grafikspeicher, glaube ich zumindest ^^
|
Inkane
Anmeldungsdatum: 17. Oktober 2010
Beiträge: 306
|
Bei meinem Notebook mit i5@2.7 GHz mit integrierter Grafik auch so um die 23, 25 fps. P.S.: Kennst du schon memoize aus der Python Decorator Library?
|
Surst
Lokalisierungsteam
Anmeldungsdatum: 8. Februar 2008
Beiträge: 392
Wohnort: Gießen
|
Recht konstante 24 FPS
Core-i7 720QM (4x1,6 GHz + HT)
RadeonMobile HD4650
4 GiB RAM
|
Inkane
Anmeldungsdatum: 17. Oktober 2010
Beiträge: 306
|
Mal noch gerade nach 2to3 getestet: Scheint alles gleich zu bleiben. P.S.:
Du scheinst die Genauigkeit von Sinus und Kosinus gar nicht zu brauchen, oder? Du rundest am Ende ja eh mit int(). Dann kannst du auch eine der vielen schnellen Approximationen benutzen, dann kostet die Multiplikation weniger Zeit.
|
stfischr
Anmeldungsdatum: 1. März 2007
Beiträge: 19197
|
Hi. Also, sowas über Software zu machen ist schon recht ineffizient, dann auch noch über pygame 😕 Ich hatte konstant 24 FPS auf meinem Phenom X4 3,2GHz 8 GB Ram und da war nichtmal einer der Kerne bei 100% Last, also wirklich nur reine Speicherkopiererei mit verdammt viel Overhead. Entweder du versuchst mal die zeitkritischen Funktionen mit ner C-lib bereit zu stellen. Oder du arbeitest dich mal in OpenGL ein, da hast du sowas einfaches in wenigen Stunden programmiert und diverse Texturfilter zur Verfügung, die das ganze noch schön aufpolieren, bei einem vielfachen der FPS.
|
JörnS
(Themenstarter)
Anmeldungsdatum: 25. November 2010
Beiträge: 2107
|
Inkane schrieb: P.S.: Kennst du schon memoize aus der Python Decorator Library?
Nein, kannte ich noch nicht. Ist aber auch nicht 100pro für mich geeignet: Ich berechne alles ja vor dem Spiel, bei memoize werden ja nur Werte gecached, die schon vorkamen. Aber werde ich mir trotzdem mal merken, danke! stfischr schrieb: Hi. Also, sowas über Software zu machen ist schon recht ineffizient, dann auch noch über pygame 😕 Ich hatte konstant 24 FPS auf meinem Phenom X4 3,2GHz 8 GB Ram und da war nichtmal einer der Kerne bei 100% Last, also wirklich nur reine Speicherkopiererei mit verdammt viel Overhead. Entweder du versuchst mal die zeitkritischen Funktionen mit ner C-lib bereit zu stellen. Oder du arbeitest dich mal in OpenGL ein, da hast du sowas einfaches in wenigen Stunden programmiert und diverse Texturfilter zur Verfügung, die das ganze noch schön aufpolieren, bei einem vielfachen der FPS.
Tja, Overhead ist das wesentliche Grundproblem von PyGame, das weiss ich auch. Und im Prinzip ist die Berechnung per Software schon effizient, schließlich hat die Geschichte in Assembler geschrieben schon auf 286ern funktioniert. Nur zeitgemäß ist es wirklich nicht mehr, das interessiert mich jedoch nicht ☺ OpenGL ist gar nichts für mich, das übersteigt iwie meine Vorstellungskraft. Hab ich ewig mit rumgetestet, noch unter Delphi (lang lang her - da war ich noch Schüler). In neuerer Zeit hab ich diverse 3D-Engines getestet (Ogre, Crystal Space, Soya). Außer Soya war mir das alles zu kompliziert bzw die Bindings waren eher grenzwertig. Nur mit Soya hatte ich auch so meine Probleme und meine Motivation daran weiter zu arbeiten war begrenzt, weil die Engine sehr im Comicstil gehalten ist. Konsequenz ist jetzt tatsächlich, dass ich mich vom framebasierten zum ereignisorientierten Modell umstellen werde - dass funzt dann auch ziemlich gut.
|
stfischr
Anmeldungsdatum: 1. März 2007
Beiträge: 19197
|
JörnS schrieb: ... in Assembler geschrieben schon auf 286ern funktioniert
Ja, diese Programme geben aber auf aktuellen Rechnern auch deutlich mehr als 24 FPS her. Ich möchte dir dein Projekt auch garnicht madig machen, ich hab ja früher selber alles mögliche Programmiert, was es woanders schon besser gab, das ist für den Lernvorgang unersetzlich. Aber vielleicht kannst du in deinem Spiel komplett auf 3D verzichten und lieber auf eine gute 2D-Engine setzen? Das würde am Ende graphisch viel ansprechender sein und insgesamt wäre es auch nicht so aufwändig. Nuja, du machst das schon irgendwie. Auf jeden Fall viel Spaß dabei.
|
JörnS
(Themenstarter)
Anmeldungsdatum: 25. November 2010
Beiträge: 2107
|
stfischr schrieb: JörnS schrieb: ... in Assembler geschrieben schon auf 286ern funktioniert
Ja, diese Programme geben aber auf aktuellen Rechnern auch deutlich mehr als 24 FPS her. Ich möchte dir dein Projekt auch garnicht madig machen, ich hab ja früher selber alles mögliche Programmiert, was es woanders schon besser gab, das ist für den Lernvorgang unersetzlich. Aber vielleicht kannst du in deinem Spiel komplett auf 3D verzichten und lieber auf eine gute 2D-Engine setzen? Das würde am Ende graphisch viel ansprechender sein und insgesamt wäre es auch nicht so aufwändig. Nuja, du machst das schon irgendwie. Auf jeden Fall viel Spaß dabei.
3D ist es ja eh nicht wirklich, zumindest nur sehr eingeschränkt. Und 2D, also zB eine isometrische Ansicht ist mit PyGame auch nicht wesentlich schneller. Danke auf jeden Fall für eure Unterstützung. Mir sind eben auch noch ein paar Ideen zum Optimieren gekommen, memoize könnte doch noch interessant werden. Ich melde mich in ein paar Tagen noch einmal ☺
|
Glocke
Anmeldungsdatum: 1. März 2009
Beiträge: 880
Wohnort: Thüringen
|
Ich habs mal eben just-4-fun auf meinem Samsung N220-Marvel Plus getestet. Wie erwartet eine Dia-Show ^^ Dennoch Daumen hoch - interessantes Projekt ☺
|
JörnS
(Themenstarter)
Anmeldungsdatum: 25. November 2010
Beiträge: 2107
|
Glocke schrieb: Ich habs mal eben just-4-fun auf meinem Samsung N220-Marvel Plus getestet. Wie erwartet eine Dia-Show ^^ Dennoch Daumen hoch - interessantes Projekt ☺
Wahnsinn, das es trotzdem läuft^^ Am Wochenende hab ich mich, mit einer Kanne Kaffee bewaffnet doch noch mal an OpenGL gesetzt. Und heute krieg ich das viel besser hin als früher. Bin jetzt schon in einem bedeutend weiteren Stadium als meine Softwarevariante. Und dass natürlich mit ordentlich Speed. In einigen Wochen kann ich wohl eine frühe Version präsentieren, hoffe ich zumindest. Im Moment hab ich noch Probleme mit Texturen, manche kann ich laden, manche (sogar bmp's) wollen einfach nicht. Gruß Jörn 😛
|