Seite 3 von 4

Verfasst: 23.10.2005 20:27
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.

Verfasst: 23.10.2005 20:28
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

Verfasst: 23.10.2005 20:35
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 ;)

Verfasst: 25.10.2005 15:19
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!

Verfasst: 25.10.2005 15:26
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 ;)

Verfasst: 25.10.2005 15:29
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

Verfasst: 25.10.2005 16:25
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 <_<?

Verfasst: 25.10.2005 16:37
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 ;)

Verfasst: 25.10.2005 16:46
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.

Verfasst: 25.10.2005 17:09
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 <_<