Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.04.2011, 15:16
romeoq вне форума Посмотреть профиль Отправить личное сообщение для romeoq Посетить домашнюю страницу romeoq Найти все сообщения от romeoq
  № 1  
Ответить с цитированием
romeoq

Регистрация: Mar 2011
Сообщений: 14
Arrow Производительность флешки на разных компьютерах

Есть флешка - сетевая игра. Подключение через сокет. Все работает. Проблема заключается в том что у всех разные компы с разной производительностью, соответственно на одном компе персонаж может дойти из точки А в точку В быстрее или медленнее чем на другом.
Сейчас в алгоритме использую ENTER_FRAME. Пробовал Timer, и setInterval() - так на медленных компах еще сильнее тормозит. Что делать? Как привязаться к какому либо таймеру правильно? Может надо использовать какой либо внешний таймер? Например с сервера? Вобщем HELP!!!!

Старый 11.04.2011, 15:42
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Привязывайтесь к абсолютному времени.

Старый 11.04.2011, 15:56
romeoq вне форума Посмотреть профиль Отправить личное сообщение для romeoq Посетить домашнюю страницу romeoq Найти все сообщения от romeoq
  № 3  
Ответить с цитированием
romeoq

Регистрация: Mar 2011
Сообщений: 14
По умолчанию Можно подробнее

Цитата:
Сообщение от etc Посмотреть сообщение
Привязывайтесь к абсолютному времени.
Я так понимаю алгоритм будет выглядить следующим образом.
1. В определенные промежутки времени - запрос абсолютного времени
2. Вычисление времени которое прошло с последнего запроса
3. Исходя из вычисленного времени - передвигать объекты.

Старый 11.04.2011, 18:03
MAPUTO вне форума Посмотреть профиль Отправить личное сообщение для MAPUTO Найти все сообщения от MAPUTO
  № 4  
Ответить с цитированием
MAPUTO
 
Аватар для MAPUTO

Регистрация: Mar 2011
Сообщений: 38
Зачем всем вычислять расстояние на которое надо всем перемемтиться?
Каждый вычисляет свою позицию сам и передает остальным где находится сейчас и что делает.
Если кто медленней - это его проблемы. Главное он будет знать где находятся остальные сейчас.

Старый 11.04.2011, 21:23
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 5  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
MAPUTO, тут похоже дело не совсем в этом. Одни и те же объекты будут на разных компах находиться в разных местах.
Jobe Makar в своей книжке Actionscript for Multiplayer Games and Virtual Worlds довольно подробно об этом писал

Старый 11.04.2011, 21:49
romeoq вне форума Посмотреть профиль Отправить личное сообщение для romeoq Посетить домашнюю страницу romeoq Найти все сообщения от romeoq
  № 6  
Ответить с цитированием
romeoq

Регистрация: Mar 2011
Сообщений: 14
В этой проблеме действительно помогает привязка к абсолютному времени, только вот где его взять то? Timer и setInterval тормозят вместе с флешкой. Я сделал следующим образом:
Код AS3:
var tim:Timer = new Timer(40);
tim.start();
tim.addEventListener(TimerEvent.TIMER, setTimerToLocation);
//Установка таймера на локации
private function setTimerToLocation(e:TimerEvent = null):void 
{
var timePassed:int = getTimer() - pastTimer;
pastTimer = getTimer();
setMovement();
}
Вот так вне зависимости от тормозов Timer, я вычисляю сколько времени прошло с предыдущего вызова функции движения, и уже это значение использую при передвижении. Если знаете как еще прикрепиться к абсолютному времени - говорите. Очень интересно как решали подобные проблемы.

Старый 11.04.2011, 22:08
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Date#getTime()

Старый 15.04.2011, 14:16
Alexd21 вне форума Посмотреть профиль Отправить личное сообщение для Alexd21 Найти все сообщения от Alexd21
  № 8  
Ответить с цитированием
Alexd21

Регистрация: Jan 2011
Сообщений: 49
для решения этой проблемы есть готовые классы сторонних разработчиков
TweenMax - указываете координаты и время за которое объект должен туда добраться
время расчитываете сами, формула проста: время=расстояние/скорость

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:51.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.