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

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

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

Регистрация: Aug 2009
Сообщений: 75
По умолчанию Сетевое прогр. как в Warcraft III

Здравствуйте.
Всегда меня радовала игра Warcraft III - особенно как идеально она работает по сети.
Каждый юнит имеет свой круг со своим радиусом, т.е. часто юниты толпятся и всё это передаётся другим игрокам. У каждого есть скорость поворота перед ударом, скорость полёта снаряда, анимация персонажа в миллисекундах перед ударом (имеет значение в механике игры) и всё это работает без рывков и задержек между 2-12 игроками.
Вопрос, как?
С одной стороны я думаю что используется p2p, но нет ниодного чита чтобы менять координаты юнитов или по-другому подменять пакеты. Но я не представляю как можно все эти толпы грамотно синхронизировать через сервер. Может кто-то подскажет в чём секрет?


Последний раз редактировалось Vilya21; 16.11.2011 в 08:42.
Старый 16.11.2011, 10:13
BuKT вне форума Посмотреть профиль Отправить личное сообщение для BuKT Найти все сообщения от BuKT
  № 2  
Ответить с цитированием
BuKT
 
Аватар для BuKT

блогер
Регистрация: Dec 2010
Сообщений: 237
Записей в блоге: 5
MVC, я думаю. Через p2p передаётся только модель юнита - со всеми её координатами и прочими статсами. То есть по сути набор числовых переменных (в том числе ключи. Ник статичен - его можно передать единажды при ините). А отрисовывается это всё уже на клиенте. Т.к. клиенты идентичны - отрисовка идентичной модели идентична
__________________
Дебаггер не предлагать

Старый 16.11.2011, 10:20
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 3  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Здравствуйте.
Всегда меня радовала игра Warcraft III - особенно как идеально она работает по сети.
Каждый юнит имеет свой круг со своим радиусом, т.е. часто юниты толпятся и всё это передаётся другим игрокам. У каждого есть скорость поворота перед ударом, скорость полёта снаряда, анимация персонажа в миллисекундах перед ударом (имеет значение в механике игры) и всё это работает без рывков и задержек между 2-12 игроками.
Вопрос, как?
Меня в этом смысле радовали Казаки c другом по диалапу. Тысячи юнитов и в сумме за 5-6 часов набегало около 6 метров траффика всего.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
Помню где-то ещё читал что для большей синхронности некоторые передают не координаты каждого юнита и его действия, а только действия пользователя. В случае стратегии надо передавать координаты карты над которым находится пользовательский фокус и собственно его действия. Остальное просчитывает машина клиента, а так как алгоритмы у всех одинаковые, то достигается полная синхронность и игры и не большой трафик.


Последний раз редактировалось willis83; 16.11.2011 в 11:56.
Старый 16.11.2011, 12:51
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 6  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
и всё это работает без рывков и задержек между 2-12 игроками.
Чтобы работало без рывков, нужно не посылать данные о каждом движении, а просто посылать команду на совершение того или иного движения, а уже клиент его сам воспроизводит.
На счет синхронизации, особой разницы нет 2 там или 12 игроков. Сообщение шлется в комнату на сервере, а оттуда одновременно рассылается всем подключенным клиентам. При наличии хорошего протокола, оно будет достаточно коротким, чтобы улететь практически мгновенно.
Но синхронизировать многих игроков совсем идеально невозможно. Рассинхронизация все равно будет. Для этого просто нужно через определенные промежутки времени корректировать данные

Старый 16.11.2011, 12:53
BuKT вне форума Посмотреть профиль Отправить личное сообщение для BuKT Найти все сообщения от BuKT
  № 7  
Ответить с цитированием
BuKT
 
Аватар для BuKT

блогер
Регистрация: Dec 2010
Сообщений: 237
Записей в блоге: 5
Цитата:
передают не координаты каждого юнита и его действия, а только действия пользователя
Sounds strange. Получается контроллер отдельного клиента может менять модели всех остальных? ИМХО, логичнее менять только свою модель, а отдельным ConnectionController синхронизировать модели разных клиентов.

Хотя может именно поэтому я и не пишу быстрых p2p.
__________________
Дебаггер не предлагать

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
ИМХО, логичнее менять только свою модель, а отдельным ConnectionController синхронизировать модели разных клиентов.
Не логичнее. Что с того, что он может в пределах своего клиента поменять модели других? Сервер не примет, значит смысла этого делать нет. Зато все будет двигаться плавно и без рывков, и нагрузка на сервер снизится

Старый 16.11.2011, 20:16
Vilya21 вне форума Посмотреть профиль Отправить личное сообщение для Vilya21 Найти все сообщения от Vilya21
  № 9  
Ответить с цитированием
Vilya21

Регистрация: Aug 2009
Сообщений: 75
Tr1te, спасибо за ссылку! Как раз то что хотел узнать и не мог найти!

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

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

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


 


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


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