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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.09.2011, 11:25
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 1  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Question Управление множеством объектов игроков с сервера. Как лучше оргнизовать?

Ситуация такая. Создается игровая комната, к ней привязывается карта поля боя, и на эту карту могут добавляться до 4 игроков оновременно, с этим все ок. У каждого игрока есть отряд солдат, в котором их одного до 5. Соответственно назрела необходимость оповещать всех игроков в комнате о том, какой игрок и каким именно солдатом в данный момент управляет.
Лично моя идея такая: сначала какой-то игрок создает комнату, выбитает себе отряд, и каждому из его солдат присваивается уникальный код, который не может повторяться ни для одного солдата в комнате. Если другие игроки присоединяются, то их солдатам так же присваиваются коды, с учетом уже существующих. Сервер запоминает набор кодов солдат для каждого клиента в комнате, и просто посылает всем остальным клиентам в комнате действие игрока (например координаты, если это перемещение) и код солдата, чтобы другие клиенты знали, какой именно солдат активен у того или иного игрока.

Вопрос, нормальный ли это подход? Или у есть идеи получше?

Старый 30.09.2011, 11:45
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 2  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Да, подход нормальный. Я организовывал взаимодействие нескольких пользователей подобным образом. У подхода есть только один минус, , который в случае наличия одного сервера не проблема. Это атомарность подключения игрока и выделения солдат на него. Если вдруг этот процесс может быть длительным, а сервак распределённым, то надо будет подумать о том чтобы разные части сервера не выдали одинаковые id солдатам. Но, повторюсь, если одну комнату обслуживает один сервер, и операция подключения атомарна, то этой проблемы нет.
__________________
:)

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
мм. не совсем понял. А если не один сервер, то как это повлияет в конкретно моем случае?
У меня сейчас так, игрок подключается к комнате, в которой есть хэш карта с ключами равными клиентам, уже находящимся в комнате, и значениями равными этим уникальным кодам. При подключении нового клиента к комнате, модуль просто генерирует несколько чисел, по количеству солдат в команде подключившегося игрока, проверяет нет ли таких чисел уже, и если нет, просто шлет их клиенту, если есть, генерирует новые. По сути процесс практически мгновенный и не ресурсоемкий. + в итоге, не важно есть ли вообще на сервере уже такие коды, так как они действуют только в пределах одной комнаты

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
У вас всё хорошо. Но если вдруг у вас случится так что в комнате будет 20000 игроков и один сервер не выдержит, то придётся делать распределённый сервер, и тогда появятся проблемы с назначение id. И то решаемые. Просто у меня была подобная ситуация. При бессерверном p2p. Сервер был распределён по клиентам, и этот этап вызвал проблемы. А когда одна комната имеет небольшие размеры, проблем не будет.
__________________
:)

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Ну значит все гуд =)
У меня комнаты с ограничениями, там не может быть более 4 клиентов одновременно.

Старый 30.09.2011, 12:47
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 6  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Я тоже расчитавал на одни условия, а потом вдруг ТЗ изменилось. Всегда надо быть готовым к неожиданностям. Думаю в вашем варианте это хорошее решение.
__________________
:)

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
У меня то нет ТЗ Я делаю для себя

Старый 30.09.2011, 13:22
Dimitry_II вне форума Посмотреть профиль Отправить личное сообщение для Dimitry_II Найти все сообщения от Dimitry_II
  № 8  
Ответить с цитированием
Dimitry_II

Регистрация: Jan 2010
Сообщений: 211
А что выступает в качестве сервера?

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

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
union платформа

Старый 30.09.2011, 14:09
Dimitry_II вне форума Посмотреть профиль Отправить личное сообщение для Dimitry_II Найти все сообщения от Dimitry_II
  № 10  
Ответить с цитированием
Dimitry_II

Регистрация: Jan 2010
Сообщений: 211
Сорри, что спрашиваю, но я как раз сейчас на распутье - начал делать игрушку под заказ, вроде вполне хватало обычного сервера (я юзал обычно Tomcat), но ТЗ изменилось - потребовалась поддержка голоса. Поэтому как бы глупо отказываться от использования FMS, тем более, что в них так чудесно реализована поддержка сокетов. Но прислушиваюсь ко всем публикациям по этой теме.

Посмотрел инфу по ссылке - не увидел ни слова про мультимедийную поддержку, про RTMP. "Не наш пиджачок" ...

P.S. Что нравилось при разработке собственного сокетного сервера - сажал сокет на тот же 80-тый порт, через который грузился контент - это позволяло пользоваться исключительно общедоступными портами.

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

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

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


 


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


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