
10.11.2009, 11:32
|
|
Регистрация: Nov 2009
Сообщений: 5
|
SmartFoxServer + Flash = лаги при движении. почему?
Привет всем.
Вот пишу игрушку SFS + Flash.
Делаю передвижение игроков, но удаленно лагает(((
Кто компитентный в этой сфере будьте добры, объясните что не так я делаю.
Как передвигаются мои игроки:
Когда пользователь нажал на кнопку чтобы идти в какую либо сторону, он начинает идти (по таймеру с тиком 70 милисекунд) в ту сторону и включается таймер на 150 милисекунд (я его назвал antiFastTimer защита от рывков на коротких передвижений), и если пользователь за эти 150 секунд успел остановиться то посылается запрос на стоп игрока с новыми координатами для синхронизации, иначе посылается запрос сереверу с координатами что данный игрок пошел. Также вместе с запросом отправляется пинг данного пользователя (от клиента до сервера в одну сторону). Размер шага у меня 5 пикселей, НО, т.к. таймер всегда работает не идеально и на каждой машине по разному, то размер шага я высчитываю из настоящего тика (беру разницу getTime перед и после тика), подгоняю к идеальному и получается что размер шага то больше то меньше взависимости от четкости работы таймера.
Когда другие пользователи поймали запрос что игрок стал ходить, то прибавляют к его пингу свой пинг и от исходя из этого числа и координат которые он послал при движении игрок сдвигается на позицию где он сейчас должен быть и начинает также движение по таймеру.
Как только другие пользователи ловят запрос на стоп игрока, то просто останавливается таймер и синхронизируются координаты.
Когда тестирую на удаленной машине, движение смотрится коряво, не идеально (даже при пинге в 40-70 милисекунд).
Может быть SF Server работает медленно? Или чтото я делаю не так?
|