Bewegung für Rollenspiel
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktualisieren
array
betreten
bewegung
figur
handlung
http
idee
kommunizieren
kurzen intervallen
mitspieler
problem
rollenspiel
sekunde
senden
spielplatz
stelle
trick
umsetzung
url
-
Hiho,
ich schreibe aktuell an einem Rollenspiel auf PHP-Basis (+Javascript^^). Ich möchte dabei auf unnötige Plugins verzichten, also ohne Flash, Silverlight und was es sonst noch gibt arbeiten.
Zur Zeit schreibe ich dazu an einer Karte. Diese wird vom Aufbau her in etwa wie beim RPG-Maker aussehen. Das ist soweit ach kein Problem. Da ich die Seite über Ajax reinlade, kann ich sie auch aktualisieren wenn man den Randbereich betritt und muss so nicht mit jedem Schritt alles neuladen.
Die Steuerung des Charakters läuft über die Pfeiltasten. Auch das funktioniert soweit. ABER es ist extrem langsam. Also das eigentliche Koordinatenupdate ist schnell, und ich kann in kurzen Intervallen klicken. Wenn ich nun jedoch, auch per Ajax, die Spielerposition anzeige geht die Geschwindigkeit verloren. Dabei wird an der Stelle nur ein DIV an eine andere Stelle gesetzt.
Habt ihr evtl. eine Idee wie man das beschleunigen könnte?
P.S.: Wenn weitere Informationen nötig sind einfach fragen... aber wenn ich hier alles reinschreibe liest das keiner mehr ^^. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich denke die richtige vorgehensweise wäre die figur mit javascript sofort zu bewegen, jede bewegung in einem array zu speichern und dieses array dann in sekundenintervallen (so alle 3-5 sekunden) erst zu senden (arrayinhalt natürlich löschen).
Damit dann andere mitspieler den eindruck einer flüssigen bewgung haben wird dann dieses array weitergegbene und amit js animiert.
Ich habe ein kleines "Malprogramm" auf diese art realisiert.
die Striche sind viele kleine div's und ab einer bestimmten anzahl werden sie gesendet.
Sie sind extra dick damit man ich beim testen überhaupt den unterschied sehe..
Guck mal hier
Übersicht
Du hast ja sicher irgendwann auch mal einen online shooter oder ähnliches gespielt.
Dort wird ja auch zuerst Deine aktion/handlung animiert und dann gesendet.
Gut zu merken wenn es sog. "lags" gibt und Deine SPielfigur plötzlich wieder zurückspringt weil die Daten nicht bzw nicht schnell genug angekommen sind.
Also mach's erst einmal so das Du nur in sekundenintervallen die spielerposition sendest, das testest und dann es durch senden & animieren von "bewegungsarrays" flüssiger machst. -
So in etwa hätte ich es auch spontan vorgeschlagen zu realisieren. Die Bewegung nur Lokal ausführen und erst bei Stillstand oder so die aktuelle Position übermitteln, oder immer nach einem bestimmten Zeitabstand etc. Aufjedenfall müsstest du so nicht ständig mit dem Server kommunizieren.
-
Hey danke die Idee ist klasse, bei deinem Malprogramm läuft das ja echt flüssig. Muss ich zwar 2 meine Kollisionsabfragen 2 mal machen, aber das ist ja eher ein geringeres Übel (zumal ich damit schon gerechnet habe).
Auf die Idee mit dem Array hätte ich ja eigentlich auch allein kommen können xD.
Vielen Dank jedenfalls für die Hinweise, wenn es Probleme mit der Umsetzung gibt komme ich sicher nochmal auf euch zurück.
EDIT
Umsetzung ging super. Ein kleiner Puffer mit 10 Einträgen reicht schon völlig aus. Der "Trick" ist echt Gold wert.
Beitrag zuletzt geändert: 23.11.2010 9:56:10 von loadi -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage