|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Oct 2013
Сообщений: 23
|
Боты для realtime мультиплеера
Есть сервер, который позволяет обмениваться клиентам данными в реальном времени, в данном конкретном случае их позициями. Т.е. игрок изменил положение, оно разослалось остальным игрокам.
Если добавлять ботов, то требуется, чтобы у всех игроков каждый из ботов находился в одинаковом положении, при чем, в идеале, взаимодействуя с игроками. Как считаете, требуется, чтобы сервер сам считал положение ботов? Высчитывать на сервере каждый пиксель тоже не красота, что бы вы могли порекомендовать? |
|
|||||
[+4 06.05.14]
|
Бот делается как обычный игрок на клиенте, и точно так же будет рассылать серверу об изменении, а он будет рассылать всем клиентам. Тоесть управление создается в вашем случае на клиенте, так как есть большая визуальная часть. Придется писать логику
__________________
Марк Tween |
|
|||||
Регистрация: Oct 2013
Сообщений: 23
|
Цитата:
или Вы имеет в виду создать "отдельного клиента", который будет управлять именно ботами? |
|
|||||
[+4 06.05.14]
|
Цитата:
Проще говоря, первый игрок авторизуется, садиться за танк ( или что там ), сервер при ините передает статус мира, где бот стоит, что делает, и т.п. Так что первый это игрок или 10й разницы никакой. У вас и получается система, что бот работает на клиенте, он сам ищет пути, сам двигается по интерФрейм или что там у вас, изменяет свои свойства и т.п. Это целая микро-система, и да она заслуживает отдельного клиента. Сервер же в вашем случае просто рассылает статус мира ( карту ) . Причем нужно сделать так, чтобы мир полностью рассылался ТОЛЬКО для зашедших игроков, а для уже играющих только ОБНОВЛЕННЫЕ данные, этим вы сократите траффик , да и просто увеличите скорость работы. Задача не одного дня, если у нас в казино например боты все на сервере делаются, и то там боты то простейшие, и то заняло от 2х месяцев на отладку, то в вашем случае это серьезная игра и задача может решаться очень долго, взависимости от навыков и кол-во командных людей.
__________________
Марк Tween |
|
|||||
А вы на сервере и не будете высчитывать каждый пиксель. Отправляем только конечные позиции. А клиент будет сам визуализировать всё, что происходит в комнате именно так, как ему нужно, эмитируя как-бы непрерывный обмен данными.
__________________
There is no thing in this world that is not simple. |
|
|||||
[+4 06.05.14]
|
И вот еще добавлю, стоит посмотреть какие данные рассылают современные игры на сервер, тот же diablo 3 например, посмотрите как там мультиплеер сделан, если бы там лились ОГРОМНЕЙШИЕ пачки данных туда суда, такой бы синхронизации не было, был бы отклик от 1 сек и выше, а там отклик чуть ли не в 100 мс.
Как посмотреть? А хрен его знает, каким нить профайлером сети. Может дяди постарше что подскажут...
__________________
Марк Tween |
|
|||||
Цитата:
И ещё, мир полностью никому не должен отсылаться, только то, что видит пользователь вокруг себя. Тоесть, если карта большая, то мы отсылаем данные только о том, что входит в область экрана.
__________________
There is no thing in this world that is not simple. |
|
|||||
[+4 06.05.14]
|
Цитата:
Добавлено через 2 минуты Кроме того добавлю. Бот не может жить 100% на сервере, так как все равно половина задач будет решаться на клиенте, и тут уже получается разделеине логики и там и там, разве это хорошо? Логика по сути должна быть в одном месте. Но есть игры где это уместно : шахматы - бот сервер. Одно единственно данное для отправки - позиция и фигура, все остальное решается на сервере, тут удобно. А тут будет решаться сразу 2 задачи, а при боте на клиенте только 1. - выгодно клиент.
__________________
Марк Tween |
|
|||||
Цитата:
Цитата:
Цитата:
Добавлено через 2 минуты Цитата:
Хотя в реальности повторного кода там не будет. Сервер должен хранить всю логику, а клиент её отображать.
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 31.05.2014 в 04:44. |
|
|||||
Цитата:
Цитата:
Я делал, и опыта у меня тут хоть отбавляй) Наступал на кучу граблей. И могу тут точно сказать, что SuriTheAngel говорит правильно. Вся логика врагов-ботов должна считаться исключительно на сервере. Ни один клиент не должен иметь возможности управлять врагами. Даже если предположить, что он не читер. А что если у него, вдруг, интернет рубанулся? Или игра подвисла? Что тогда? Все враги сразу встанут? И о какой половине задач ты говоришь? Все задачи решаются так же на сервере, а клиент их только отрисовывает. Если под задачами ты имеешь в виду анимации, то да, эту часть можно смело доверять клиенту. Причин, чтобы делать логику врагов на сервере целая гора, и все они вполне обоснованы. Цитата:
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
Часовой пояс GMT +4, время: 20:10. |
|
« Предыдущая тема | Следующая тема » |
|
|