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

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

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

Регистрация: Oct 2013
Сообщений: 23
По умолчанию Боты для realtime мультиплеера

Есть сервер, который позволяет обмениваться клиентам данными в реальном времени, в данном конкретном случае их позициями. Т.е. игрок изменил положение, оно разослалось остальным игрокам.
Если добавлять ботов, то требуется, чтобы у всех игроков каждый из ботов находился в одинаковом положении, при чем, в идеале, взаимодействуя с игроками.
Как считаете, требуется, чтобы сервер сам считал положение ботов? Высчитывать на сервере каждый пиксель тоже не красота, что бы вы могли порекомендовать?

Старый 31.05.2014, 02:45
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Бот делается как обычный игрок на клиенте, и точно так же будет рассылать серверу об изменении, а он будет рассылать всем клиентам. Тоесть управление создается в вашем случае на клиенте, так как есть большая визуальная часть. Придется писать логику
__________________
Марк Tween

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

Регистрация: Oct 2013
Сообщений: 23
Цитата:
Сообщение от in4core Посмотреть сообщение
Бот делается как обычный игрок на клиенте, и точно так же будет рассылать серверу об изменении, а он будет рассылать всем клиентам. Тоесть управление создается в вашем случае на клиенте, так как есть большая визуальная часть. Придется писать логику
т.е., допустим первый, зашедший на сервер игрок, должен будет отправлять в 2,3,4,10 раз больше данных?
или Вы имеет в виду создать "отдельного клиента", который будет управлять именно ботами?

Старый 31.05.2014, 03:31
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
т.е., допустим первый, зашедший на сервер игрок, должен будет отправлять в 2,3,4,10 раз больше данных?
Не понимаю причем тут игрок. Игрок отправляет только свои данные, а вот получает данные о мире в целом.
Проще говоря, первый игрок авторизуется, садиться за танк ( или что там ), сервер при ините передает статус мира, где бот стоит, что делает, и т.п. Так что первый это игрок или 10й разницы никакой.

У вас и получается система, что бот работает на клиенте, он сам ищет пути, сам двигается по интерФрейм или что там у вас, изменяет свои свойства и т.п. Это целая микро-система, и да она заслуживает отдельного клиента. Сервер же в вашем случае просто рассылает статус мира ( карту ) . Причем нужно сделать так, чтобы мир полностью рассылался ТОЛЬКО для зашедших игроков, а для уже играющих только ОБНОВЛЕННЫЕ данные, этим вы сократите траффик , да и просто увеличите скорость работы.
Задача не одного дня, если у нас в казино например боты все на сервере делаются, и то там боты то простейшие, и то заняло от 2х месяцев на отладку, то в вашем случае это серьезная игра и задача может решаться очень долго, взависимости от навыков и кол-во командных людей.
__________________
Марк Tween

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
А вы на сервере и не будете высчитывать каждый пиксель. Отправляем только конечные позиции. А клиент будет сам визуализировать всё, что происходит в комнате именно так, как ему нужно, эмитируя как-бы непрерывный обмен данными.
__________________
There is no thing in this world that is not simple.

Старый 31.05.2014, 03:36
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
И вот еще добавлю, стоит посмотреть какие данные рассылают современные игры на сервер, тот же diablo 3 например, посмотрите как там мультиплеер сделан, если бы там лились ОГРОМНЕЙШИЕ пачки данных туда суда, такой бы синхронизации не было, был бы отклик от 1 сек и выше, а там отклик чуть ли не в 100 мс.
Как посмотреть? А хрен его знает, каким нить профайлером сети.
Может дяди постарше что подскажут...
__________________
Марк Tween

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
У вас и получается система, что бот работает на клиенте, он сам ищет пути, сам двигается по интерФрейм или что там у вас, изменяет свои свойства и т.п.
В идеале бот должен жить на сервере и клиент не должен просчитывать никаких путей. Бот ведь такой же игрок, как и другие игроки.
И ещё, мир полностью никому не должен отсылаться, только то, что видит пользователь вокруг себя.
Тоесть, если карта большая, то мы отсылаем данные только о том, что входит в область экрана.
__________________
There is no thing in this world that is not simple.

Старый 31.05.2014, 03:39
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
В идеале бот должен жить на сервере и клиент не должен просчитывать никаких путей.
Это кто тебе сказал о таком идеале? Совершенно не согласен. Задача должна быть решена максимально удобно, в данном случае вполне себе клиент. Чем больше прорисовки - тем клиент на самом деле справедливо. В single player играх напимер боты на сервере чтоль делаются ? Хотя смеха ради - там тоже есть сервер)

Добавлено через 2 минуты
Кроме того добавлю. Бот не может жить 100% на сервере, так как все равно половина задач будет решаться на клиенте, и тут уже получается разделеине логики и там и там, разве это хорошо? Логика по сути должна быть в одном месте. Но есть игры где это уместно : шахматы - бот сервер. Одно единственно данное для отправки - позиция и фигура, все остальное решается на сервере, тут удобно. А тут будет решаться сразу 2 задачи, а при боте на клиенте только 1. - выгодно клиент.
__________________
Марк Tween

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Это кто тебе сказал о таком идеале?
Года задротства в онлайн-игры И я могу показать, почему это идеал.
Цитата:
Задача должна быть решена максимально удобно, в данном случае вполне себе клиент.
Ну, разумеется, всё это зависит от самой игры, поэтому тут ТС сам должен решить, что ему больше подходит.
Цитата:
В single player играх напимер боты на сервере чтоль делаются ?
Вообще не понял смысла этого предложения.

Добавлено через 2 минуты
Цитата:
Кроме того добавлю. Бот не может жить 100% на сервере, так как все равно половина задач будет решаться на клиенте, и тут уже получается разделеине логики и там и там, разве это хорошо?
Человек говорит про рилтайм, а это значит, что это очень даже хорошо.
Хотя в реальности повторного кода там не будет. Сервер должен хранить всю логику, а клиент её отображать.
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 31.05.2014 в 04:44.
Старый 31.05.2014, 09:52
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 10  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Как считаете, требуется, чтобы сервер сам считал положение ботов?
Да. Такие вещи должен считать только сервер, и никак иначе.
Цитата:
Кроме того добавлю. Бот не может жить 100% на сервере, так как все равно половина задач будет решаться на клиенте, и тут уже получается разделеине
Сань, ты хоть раз делал реалтайм онлайн игры?
Я делал, и опыта у меня тут хоть отбавляй) Наступал на кучу граблей. И могу тут точно сказать, что SuriTheAngel говорит правильно. Вся логика врагов-ботов должна считаться исключительно на сервере. Ни один клиент не должен иметь возможности управлять врагами.
Даже если предположить, что он не читер. А что если у него, вдруг, интернет рубанулся? Или игра подвисла? Что тогда? Все враги сразу встанут? И о какой половине задач ты говоришь? Все задачи решаются так же на сервере, а клиент их только отрисовывает. Если под задачами ты имеешь в виду анимации, то да, эту часть можно смело доверять клиенту.
Причин, чтобы делать логику врагов на сервере целая гора, и все они вполне обоснованы.

Цитата:
Высчитывать на сервере каждый пиксель тоже не красота, что бы вы могли порекомендовать?
Ну, как бы не красота, конечно, но другого выбора нет. Хотя если посмотреть, то ведь на сервере игровое пространтсво разделяется на комнаты. То есть серверу не придется считать бой для каждого отдельного игрока. Он будет считать для комнаты. А игрокам в комнате лишь рассылать одинаковые данные. Так что схема вполне жизнеспособна
Цитата:
А вы на сервере и не будете высчитывать каждый пиксель. Отправляем только конечные позиции.
Вот тут внесу корректировку. Чтобы знать эту конечную позицию, ее тоже надо сначала рассчитать. А для этого, возможно, потребуется считать каждый пиксель. Все зависит от задачи
__________________
Ко мне можно и нужно обращаться на ты)

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

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

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


 


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


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