![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Ситуация такая. Создается игровая комната, к ней привязывается карта поля боя, и на эту карту могут добавляться до 4 игроков оновременно, с этим все ок. У каждого игрока есть отряд солдат, в котором их одного до 5. Соответственно назрела необходимость оповещать всех игроков в комнате о том, какой игрок и каким именно солдатом в данный момент управляет.
Лично моя идея такая: сначала какой-то игрок создает комнату, выбитает себе отряд, и каждому из его солдат присваивается уникальный код, который не может повторяться ни для одного солдата в комнате. Если другие игроки присоединяются, то их солдатам так же присваиваются коды, с учетом уже существующих. Сервер запоминает набор кодов солдат для каждого клиента в комнате, и просто посылает всем остальным клиентам в комнате действие игрока (например координаты, если это перемещение) и код солдата, чтобы другие клиенты знали, какой именно солдат активен у того или иного игрока. Вопрос, нормальный ли это подход? Или у есть идеи получше? |
|
|||||
|
Да, подход нормальный. Я организовывал взаимодействие нескольких пользователей подобным образом. У подхода есть только один минус, , который в случае наличия одного сервера не проблема. Это атомарность подключения игрока и выделения солдат на него. Если вдруг этот процесс может быть длительным, а сервак распределённым, то надо будет подумать о том чтобы разные части сервера не выдали одинаковые id солдатам. Но, повторюсь, если одну комнату обслуживает один сервер, и операция подключения атомарна, то этой проблемы нет.
__________________
:) |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
мм. не совсем понял. А если не один сервер, то как это повлияет в конкретно моем случае?
У меня сейчас так, игрок подключается к комнате, в которой есть хэш карта с ключами равными клиентам, уже находящимся в комнате, и значениями равными этим уникальным кодам. При подключении нового клиента к комнате, модуль просто генерирует несколько чисел, по количеству солдат в команде подключившегося игрока, проверяет нет ли таких чисел уже, и если нет, просто шлет их клиенту, если есть, генерирует новые. По сути процесс практически мгновенный и не ресурсоемкий. + в итоге, не важно есть ли вообще на сервере уже такие коды, так как они действуют только в пределах одной комнаты |
|
|||||
|
У вас всё хорошо. Но если вдруг у вас случится так что в комнате будет 20000 игроков и один сервер не выдержит, то придётся делать распределённый сервер, и тогда появятся проблемы с назначение id. И то решаемые. Просто у меня была подобная ситуация. При бессерверном p2p. Сервер был распределён по клиентам, и этот этап вызвал проблемы. А когда одна комната имеет небольшие размеры, проблем не будет.
__________________
:) |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Ну значит все гуд =)
У меня комнаты с ограничениями, там не может быть более 4 клиентов одновременно. |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
У меня то нет ТЗ
Я делаю для себя |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 211
|
А что выступает в качестве сервера?
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
|
|
|||||
|
Регистрация: Jan 2010
Сообщений: 211
|
Сорри, что спрашиваю, но я как раз сейчас на распутье - начал делать игрушку под заказ, вроде вполне хватало обычного сервера (я юзал обычно Tomcat), но ТЗ изменилось - потребовалась поддержка голоса. Поэтому как бы глупо отказываться от использования FMS, тем более, что в них так чудесно реализована поддержка сокетов. Но прислушиваюсь ко всем публикациям по этой теме.
Посмотрел инфу по ссылке - не увидел ни слова про мультимедийную поддержку, про RTMP. "Не наш пиджачок" ... P.S. Что нравилось при разработке собственного сокетного сервера - сажал сокет на тот же 80-тый порт, через который грузился контент - это позволяло пользоваться исключительно общедоступными портами. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|