Registriert: Mo Jan 20, 2003 20:10 Beiträge: 424 Wohnort: nähe Starnberg
Hallo DGL'er,
unter http://www.seban.de/download/sf.zip (1.7MB) habe ich ein einfaches 2D Ballerspiel Spiel erstellt, welches OpenGL und FMOD verwendet. Zurzeit sind nur grundlegende Sachen umgesetzt und nun möchte ich wissen, ob es bei euch läuft. Da die Kollisions - Abfrage unoptimiert umgesetzt wurden, sind die Frameraten recht gering. Ohne Kollision geht es auf über 1000 FPS, mit Kollision auf meinem System so ca. 280-300 FPS.
Grafiken und Musik sind wie immer bei mir nicht aus eigener Hand und werden in der endgültigen Fassung durch andere ausgetauscht. Die Explosion habe ich mir aus dem 2D - Tutorial von SoS geborgt. Mit den Cursortasten wird das Raumschiff gesteuert und mit der Ctrl - Taste geschossen. Es gibt nur einen Level zur Zeit, welcher endlos ist, zudem hat der Spieler unendlich viele Leben.
An dieser Stelle mein Dank an Lossy eX und an SoS für sein 2D - Tutorial, welches gerade am Anfang eine sehr gute Hilfe ist.
Registriert: Do Nov 20, 2003 19:52 Beiträge: 48 Wohnort: Tillingen bei Chemnitz
Habs mal ausprobiert, läuft ganz gut soweit, allerdings hab ich bloß ~100 Frames bei ~120 Objekten und manchmal ruckelt es ganz kurz. Es sieht so aus als updatest du die Caption in jedem Frame, das kostet viel Performance.
Nen Bug hab ich auch gefunden: wenn der Spieler abgeschossen worde und gleich danach nochmal getroffen wird, wird das Schiff des Spielers unsichtbar und er kann nicht mehr getroffen werden.
Edit: Ich denke mal mit Kollisionsabfrage ist Schuss<>Schiff gemeint, das funktioniert doch.
_________________ ...die Idee ist gut, doch die Welt noch nicht bereit...
Zuletzt geändert von dopeFish am Di Nov 23, 2004 21:26, insgesamt 2-mal geändert.
Registriert: Mo Jan 20, 2003 20:10 Beiträge: 424 Wohnort: nähe Starnberg
@Kollisionsabfrage
Die Kollisionsabfrage ist immer aktiviert oder kannst Du nicht die Vögel abschiessen bzw. gehst Du nicht kaputt, wenn Du getroffen wirst?
@Sound
Keine Ahnung, ich rufe die Init - Prozedure von FMOD auf und das wars. Mehr mache ich nicht.
@dopeFish
Ja, den Fehler habe ich gerade auch gehabt. Man kann immer noch die Gegner abschießen . Was für eine GraKa und PC hast Du?
@Kollisionsabfrage Die Kollisionsabfrage ist immer aktiviert oder kannst Du nicht die Vögel abschiessen bzw. gehst Du nicht kaputt, wenn Du getroffen wirst?
Registriert: Do Nov 20, 2003 19:52 Beiträge: 48 Wohnort: Tillingen bei Chemnitz
Toller MegaCheat Hm...also ich kann alles abschießen, auch die Schüsse der Gegner und kann auch getroffen werden.
Hab nen Athlon 1800+ mit ner Radeon8500, langsam läufts bei mir auch, aber ich denk mal das soll so sein, sieht schon nach Timebased Movement aus, läuft bei mir nämlich immer gleich langsam.
_________________ ...die Idee ist gut, doch die Welt noch nicht bereit...
Zuletzt geändert von dopeFish am Di Nov 23, 2004 21:36, insgesamt 1-mal geändert.
Registriert: Di Nov 26, 2002 22:12 Beiträge: 259 Wohnort: Dresden
Bei mir funktioniert die Kollisionsabfrage auch nicht. Weiterhin solltest du dein Timebased Movement prüfen. Bei mir läuft das alles mordsmäßig langsam (ich habe eine recht alte Grafikkarte). Oder soll das so sein?
Zum Spielgefühl selbst kann ich aufgrund der Probleme leider noch nicht viel sagen.
_________________ Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650
Registriert: Mo Jan 20, 2003 20:10 Beiträge: 424 Wohnort: nähe Starnberg
Seltsam, woran kann das liegen, das dopeFish und ich Kollisionen haben und bei euch diese nicht funktioniert. Die Raumschiffe sind doch korrekt ausgerichtet, oder?
Und normaler weiße sollte jeder PC die Berechnung gleich durchführen?! Aber du berechnest das schon in jedem Frame oder?
Und dreh mal bitte die geschwindigkeit hoch
Registriert: Di Nov 26, 2002 22:12 Beiträge: 259 Wohnort: Dresden
Wie realisierst du denn die Kollisionsabfrage?
_________________ Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650
Registriert: Mo Jan 20, 2003 20:10 Beiträge: 424 Wohnort: nähe Starnberg
@Time Based Movement
Ist in der Form implementiert, dass jedes Sprite einen TimeStamp der letzten Bewegung speichert und mit dem aktuellen TimeStamp vergleicht. Weicht diese um eine bestimmte Zeit - Differenz, z. B. 25ms, ab wird der Sprite bewegt. Sind seit dem letzten Aufruf 100ms vergangen, wird trotzdem nur eine Einheit weiterbewegt, damit keine Sprünge auftauchen, die dann bei der Kollision Schwierigkeiten machen.
Ich habe mal künstlich einen sleep(50) eingesetzt und siehe da, nur 40FPS, die Bewegungen sind nicht abgehackt und die Kollision funktionierte ohne Schwierigkeiten. Es muss noch einen anderen Grund dafür geben. Ich habe jedoch einen PC gefunden, bei dem der Fehler auftritt, so daß ich dort weiter testen kann.
@Kollision
Geschieht in 2 Schritten:
1. Die umschliessenden Rechtecke werden geprüft. Überlappen diese sich nicht, dann keine weitere Prüfung notwending
2. Pixel für Pixel wird der überlappende Bereich geprüft, ob der Alpha - Wert bei beiden ungleich 255 ist. Falls ja, dann übeschneiden sich die beiden Pixel.
Ich werde eine Debugversion erstellen, die die Rechteck um den Sprites und eventuelle Kollsionen anzeigt.
Registriert: Mo Jan 20, 2003 20:10 Beiträge: 424 Wohnort: nähe Starnberg
Ich habe einen Fehler bezüglich der Kollision herausgefunden. In einer Sicherheitsabfrage für den pixelgenaue Kollision, habe ich geprüft, ob der gesuchte Pixel ausserhalb des Speicherbereiches der Daten, ermittelt mit TGL2DBitmap.TextureSize, liegt. Wenn ja, habe ich die Prüfung abgebrochen. Bei dem Testrechner war diese Größe immer 0, so daß keine Kollision durchgeführt wurde. Nachdem ich die Prüfung ausgeklammert habe, ging die Kollision auch auf dem Testrechner.
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.