Problem mit Timebased Movement [DEMO auf Seite 3]

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Also so am Stück ist das leider nicht möglich, aber die Berechnungen müßten eigentlich alle stimmen:

Code: Alles auswählen

tilex = Int((x-y)*#tw/2 -(PlayerX-PlayerY)/2 + (#sw/2-#tw/2))
tiley = Int((x+y)*#th/4 -(PlayerX+PlayerY)/4 + (#sh/2-#th/2+#ph) -th(x-1,y+1))
^
Das sind die Positionen, an denen das jeweilige Tile dann angezeigt wird. Die Konstanten sind die Tilewidth und -height sowie Screenwidth und -height. PlayerX und PlayerY sind Floats, x und y sind die Positionen auf der Map.

Code: Alles auswählen

multiplicator.f = StartTime 
StartTime = timeGetTime_() 
PlayerPix.f = StartTime - multiplicator 
^
Das ist die Standardberechnungsroutine aus dem CodeArchiv für die Pixel, die der Player pro Frame laufen darf. Dieser Wert schwankt wie gesagt erheblich pro Frame.

Ansonsten gibts ja eigentlich nix, was damit zu tun hat. Und wie gesagt, daß der Wert schwankt, das weiß ich 100%ig, da ich ihn mir schon öfters ausgeben lassen habe. Also kann es nur daran liegen, denn wenn ich ihn festsetze, läuft alles viel besser.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Hm, also das was du schreibst kann nur dann sein, wenn du irgend wo einen Fehler hast, es deutet alles darauf hin. Allerdings ist das, was du schreibst nur in der relativität richtig und ist genau das, was es eigentlich mit dem Zeitbasierten ja erreicht werden soll.
Bei hohen Geschwindigkeit kann man aber durchaus höhere unterschiede pro Frame von über 1 Pixel erreichen. Aber sichtbar sind diese dort auch nicht. Wie schon mehrfach gesagt, wenn man sie wirklich sehen kann und du hast eine FPS von weit über 30 ... dann dürfte irgend was am Code falsch sein.

Posten ist wohl da die einzige möglichkeit. Ich glaub die möglichkeit des eingrenzens bzw dem herraussuchen des nur relevanten zeugs oder gar ein kleinerer Codeschnipsel, mit dem du das problem ebenfals hast, hab ich ja schon erwähnt :D

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Naja der Code ist extrem umfangreich... und das wirklich wichtige ist eben das gerade gepostete. Ich seh ja auch daß es auf anderen Rechnern besser läuft, also glaub ich auch nicht unbedingt, daß es einen Fehler im Code gibt. Die Frames dauern einfach unterschiedlich lange, obwohl sie ja immer genau gleich ablaufen.

Ich werd's morgen mal kompilieren (muß gleich weg) und hier vorstellen, dann könnt ihr schauen, ob es bei euch ruckelt und mir auch die Pixel-pro-Frame-Zahlen nennen bzw die Schwankung...

Danke auf jeden Fall für die Hilfe ;) aber Code posten wär glaub echt sinnlos, ist halt sehr umfangreich, da das Projekt auch schon weiterentwickelt ist als nur die eigentliche Grafikengine, somit wäre sowieso viel unnötiges Zeugs drin. Und wenn man das alles weglassen würde, würd es wiederum nicht laufen ;)
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

DEMO

Hier könnt ihr euch nun eine Demo runterladen: www.christian-gleinser.de/prog/isodemo.zip

Kurzer Hinweis: die Zahl unter den Koordinaten (links oben) ist der Wert, der angibt, um wie viele Pixel die Figur pro Frame laufen soll. Die FPS stehen oben in der Mitte.

Würde mich freuen, wenn einige von euch Angaben über diese Werte machen könnten, besonders eben, ob der Pixelwert stark schwankt, und natürlich auch, ob man ein Zittern beim Scrollen bemerkt.

Ihr könnt mit der Taste F den Pixelwert auch auf den entsprechenden Int() fest einfrieren, dann müßte es exakt smooth laufen. Bei mir liegen wie gesagt Welten zwischen exaktem Wert und variablem Wert!

Ach ja, die Grafiken wurden etwas "vereinfacht", da meine Freundin das genaue Aussehen des Spiels noch ein wenig geheimhalten will ;) also daran bitte nicht stören lassen :)

Vielen Dank schonmal!
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Ach ja, gebt mir bitte auch an, was für 'nen Rechner ihr habt!

Und noch was: der Pixelwert kann nie größer als 6 sein, da ich sonst bei manchen Objekten (die jetzt in der Demo nicht drin sind) Probleme mit der Kollisionsabfrage bekomme. Also wenn er konstant auf 6 sein sollte und ihr evtl. wenige FPS habt, dann schließt etwaige mp3-Player, Brennprogramme oder sonstiges was grad im Hintergrund Streß schiebt ;)
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Sims für Arme :D

hier ruckelt gar nix

FPS immer so 59 oder 60 Stück

Dää .. auf einem Laptopf 1.4GHz mit Centrino drin und TFT dran
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

sieht sehr gut aus.
FPS bleiben auch bei 59 - 60 Frames. Pixelwert geht nicht von den 6.00...
runter. Kein zittern, kein ruckeln. Hab auch n Haufen Programme an wie
Browser und Foobar2k. Hab ich bestanden <_<?
Bild
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Hab nun die EXE geupdatet, nun werden 2 Werte untereinander angezeigt. Der obere der beiden ist nach wie vor gleich, aber der untere ist nun der eigentliche Wert, also auch, wenn die "6-Sperre" greifen sollte.

Erstmal danke für den Test, aber nun bitte ich euch gleich, das nochmal mit der neuen EXE zu testen und mir, wenn der Wert über 6 ist, den eigentlichen auch noch mitzuteilen ;)
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

der unterer 6er wackelt so lustig..
ich glaub so zwischen 6,5x und 6.7x ..
ich guck zu langsam um das genauer
erkennen zu können.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

selbe hier wie bei bo³ allerdings bekomme ich des auch manchmal auf 1,
wenn ich gegen eine Person laufe und es die Figur dadurch dann zur Seite
schiebt <_<
Zuletzt geändert von MVXA am 25.10.2005 17:09, insgesamt 1-mal geändert.
Bild
Antworten