Hi ich weiss nicht ob das hier im richtigen bereich ist, weil es eigentlich ein Mathematisches "Problem" ist aber ich stells einfach mal hier rein....
Ich baue noch immer an einem Browsergame, bisher Interpoliere ich sowohl die eigenen Spielbewegungen als auch die der Kontrahenten mittels folgendem Prinzip.
ich hab nun hier nur die Formeln reingepostet weil es darum geht.
Rein technich berechne ich den Quotienten der zurückzulegenden gesammt Strecke bezogen auf die Zeit die hierfür gegeben ist, berechne dann die Strecke die in der restlichen Zeit nach diesen Quotienten zurück gelegt werden kann und ziehe das von der restlichen verbliebenen Strecke ab, somit bleibt ein "schritt" für x und einer für y mit dessen hilfe ich dann Anhand der Aktuellen Position die neue Berechne.
mein Problem liegt nun an foolgender Formel::
denn rein "subjektiv" betrachtet ist die Beschleunigung der Bewegung entgegen meiner Annahme nicht Linear sondern steigt die Beschleuningung JEDER GESAMMTSTRECKE zu Begin an bleibt dann annähernd kontinuierlich bis kurz vor beendigung des GESAMMT SCHRITTES und wird hier wieder langsamer...
Also die Kurve der Beschleunigung sieht übertreiben so:
................. ____________..............
beginn... /.......laufzeit........ \ ..ende
aus
Was bei der Bewegung der eigenen Spielfigur jetzt nicht sonderlich auffällt da hier die Schritte allgemen gesehen viel kürzer sind fällt bei Gegnern dann schon ins Gewicht, allerdings werden vom server nur alle 150ms werte gesendet und dazwischen die Schritte werden Interpoliert.
Das ergebniss ist dann keine schön weiche gleichmässige bewegung sondern eine die der beschleunigung eines autos mit verdrecktem vergaser sehr ähnelt...
Kann mir nun bitte ein Mathematisch begeisterter Mensch erklären warum dem so ist und mir evtl Literatur vorschlagen bzw einfach ne formel reinposten die linear ist?
zur Interpolation noch:
(Momentan werden die Aktuellen werte für eine Restlaufzeit bei 220ms gesetzt, so das eine 70 millisekündige Verzögerung und auch Reserve für die Ungleichmässig eintreffenden Servernachrichten existiert, die "normzeit" ist zwar 150 ms aber die scheduled Jobs worker (quartz) laufen da nicht wirklich rund so das 96 und 203 ms normal sind, zuweilen hatte ich auch schon werte um 324ms wobei hier vermutlich ein Paket verloren ging...)
Ich baue noch immer an einem Browsergame, bisher Interpoliere ich sowohl die eigenen Spielbewegungen als auch die der Kontrahenten mittels folgendem Prinzip.
PHP:
function beiWertÄnderung {
....
speedFactorX = gesammtSchrittwWeite / schrittDauerBisZurNächstenÄnderung;
....
}
function beiWertÄnderung {
....
schrittWeiteAktuellX = restStrreckeX - ( speedFactorX * restLaufZeitDesSchrittes);
....
}
ich hab nun hier nur die Formeln reingepostet weil es darum geht.
Rein technich berechne ich den Quotienten der zurückzulegenden gesammt Strecke bezogen auf die Zeit die hierfür gegeben ist, berechne dann die Strecke die in der restlichen Zeit nach diesen Quotienten zurück gelegt werden kann und ziehe das von der restlichen verbliebenen Strecke ab, somit bleibt ein "schritt" für x und einer für y mit dessen hilfe ich dann Anhand der Aktuellen Position die neue Berechne.
mein Problem liegt nun an foolgender Formel::
schrittWeiteAktuellX = restStrreckeX - ( speedFactorX * restLaufZeitDesSchrittes);
denn rein "subjektiv" betrachtet ist die Beschleunigung der Bewegung entgegen meiner Annahme nicht Linear sondern steigt die Beschleuningung JEDER GESAMMTSTRECKE zu Begin an bleibt dann annähernd kontinuierlich bis kurz vor beendigung des GESAMMT SCHRITTES und wird hier wieder langsamer...
Also die Kurve der Beschleunigung sieht übertreiben so:
................. ____________..............
beginn... /.......laufzeit........ \ ..ende
aus
Was bei der Bewegung der eigenen Spielfigur jetzt nicht sonderlich auffällt da hier die Schritte allgemen gesehen viel kürzer sind fällt bei Gegnern dann schon ins Gewicht, allerdings werden vom server nur alle 150ms werte gesendet und dazwischen die Schritte werden Interpoliert.
Das ergebniss ist dann keine schön weiche gleichmässige bewegung sondern eine die der beschleunigung eines autos mit verdrecktem vergaser sehr ähnelt...
Kann mir nun bitte ein Mathematisch begeisterter Mensch erklären warum dem so ist und mir evtl Literatur vorschlagen bzw einfach ne formel reinposten die linear ist?
zur Interpolation noch:
(Momentan werden die Aktuellen werte für eine Restlaufzeit bei 220ms gesetzt, so das eine 70 millisekündige Verzögerung und auch Reserve für die Ungleichmässig eintreffenden Servernachrichten existiert, die "normzeit" ist zwar 150 ms aber die scheduled Jobs worker (quartz) laufen da nicht wirklich rund so das 96 und 203 ms normal sind, zuweilen hatte ich auch schon werte um 324ms wobei hier vermutlich ein Paket verloren ging...)