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

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

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

Регистрация: May 2006
Сообщений: 6
Отправить сообщение для Untitled001 с помощью ICQ
По умолчанию Проектирование мультиплеера

Проектирование мультиплеера

Здравствуйте.

Прошу заранее прощение за длинный пост, да будут милостивы модераторы. Думаю что тема сама по себе интерересна и такие проблемы проектирования и возникают, и решаются.

В данный момент работаю над созданием мультиплеерной игры, с флэш интерфейсом. Возникают проблемы. Но со всем по порядку.

Во-первых передача данных, естественно, XML. Планируется обмен разными структурами, тем более так легче добавить новые пакеты данных или поля.

Во вторых, встал вопрос выбора между гонением XML туда-сюда по таймауту в секунду, 2 или более (назовем это XML.sendAndLoad()), и XML сокетом. С сокетами раньше работал (не флэш) как на клиентах так и на серверах. Из того, что я знаю про XML и XML-сокеты во флеше, сделал такие выводы:
Плюсы XML.sendAndLoad:
* процесс коммуникации более чем знаком и похож на обработку запросов на обычном сайте, аналогия - GET/POST запрос, получаем HTML. Тут в принципе то же самое. Залогинился, получил ID сессии, и гоняй его в любых окнах браузера с запросом или по Cookies. Тем более для каждого действия можно сделать XML запрос на разные файлы.

* Мне кажется, что сам процесс запрос-ответ более надежный. Т.е. имея например XML.sendAndLoad по таймеру для чата, другой XML.sendAndLoad для посылки/получения массива с данными о действиях игрока (напр. ход в игре). Если соединение чуть порвется, но восстановится через несколько секунд или даже минут - таймер все таки дождется своей очереди (пока не кончился таймаут на сервере). А вот у сокета если порвал соединение - будь добр переподключиться, да перелогиниться, да восстановить состояние игры и прочая и прочая.

Зато сокет, конечно, выигрывает по скорости реакции за счет постоянного соединения клиент-сервер, и сообщения чата проходят максимально быстро а не по таймауту.

При правильном проектировании структуры данных, сокет, конечно, оставляет простой XML далеко в лесу нервно покуривать. Как я себе представляю, то если весь процесс авторизации+чат+настройки игры+игру засунуть в 1 флешку - проблем вроде бы никаких. Но проблема в следующем:
Сайт. Страница с логином - попадаем в аккаунт.
Страница с чатом и списком игр. А диалог входа в игру и сама игра с приватным чатом - в отдельном окне. Для того, чтобы можно было одновременно открыть несколько игр.

В чем загвоздка.

Если испоьзовать XML.send... Всё ок. Но хочется использовать мощщ сокетов.
Как быть с ними? Итак главные вопросы поста:
1) Стоит ли делать для каждой задачи свой сокет-процесс на сервере (логин, чат, игра - уже 3 ) или всё пихать в один?
2) Как быть с запросами из разных флешек? Практикуется ли коммуникация между например главным флэш окном, у которого коннект на сокет и дочерними через LocalConnection?
3) Если делать один сокет/порт, на который коннектиться из каждого поп-апа, то выходит что в пуле соединений сервера на 1 реального юзера получается несколько соединений, белиберда выйдет, да и пул распухнет.
4) Если делать разные сервер-сокеты под разные задачи под разными портами, то клиентов достанет открывать/разрешать коннект на каждый прот в фаерволлах (при наличии)...
5) Или все таки все пихать в одо флешевское окно? (ну ну, и мультиоконный интерфейс внутри городить... жэсть)

Если есть люди имеющие опыт или соображения хоть по некоторым пунктам - прошу высказаться. Приветствую так же ссылки на инфо о проектировании (не туториалы как соединиться с сокетом) мультиплееров на флеше в Web среде.

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

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

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


 


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


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