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

Вернуться   Форум Flasher.ru > Flasher.ru > Организационные вопросы

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

Регистрация: Feb 2008
Сообщений: 890
По умолчанию Разработка многопользовательских онлайн-игр

Здесь будет обсуждение всяких нюансов и трудностей, с которыми сталкиваются разработчики больших игровых онлайновых проектов (логика, архитектура, нагрузки).

Причастные к таким проектам люди, очень интересует ваш бесценный опыт и знания - надеюсь, вы готовы ими поделиться)))

Начну, пожалуй, с малого - с игрового чата.

Как реализуется обновление таблицы пользователей в онлайне? Каждый раз, когда список пользователей меняется, по сокету кидается вся таблица пользователей (если 200 пользователей в пределах актуальной видимости чата, то по хмл-сокету летает хмл-ка порядка 50(+-) килобайт), или же это какие-то систематические интервальные рассылки? Или если не вся таблица, а конкретно, кто пришел или ушел, то боретесь ли вы с коллизиями, могущими возникнуть в случае, если кому-то что-то не дошло?

Добавлено через 8 минут
А можно ли предположить, что если сокет жив, то пакет гарантированно будет доставлен до адресата? Если да, то можно гонять не всю таблицу, а только инфу о том, что кто-то пришел или ушел, а в случае разрыва соединения при повторной установке сокетного соединения получать всю таблицу пользователей как при инициализации чата. Где при такой схеме могут возникнуть коллизии, связанные с неполучением данных адресатом? Какие еще могу возникнуть проблемы?
__________________
скриптограф

Старый 10.09.2010, 13:17
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Нахождение пользователя в чате — бесполезная для БД инфа, её можно тупо сунуть в memcache. Соответственно никакой нагрузки на базу.

Старый 10.09.2010, 13:20
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 3  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от etc Посмотреть сообщение
Нахождение пользователя в чате — бесполезная для БД инфа, её можно тупо сунуть в memcache. Соответственно никакой нагрузки на базу.
а никто и не говорил про бд, смысл был, что не очень здорово в плане трафика и нагрузки на сервер гонять постоянно по 50 килобайт по сокету
__________________
скриптограф

Старый 10.09.2010, 13:27
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ну само собой приходящих кидать через команды типа addUser/removeUser. Чтобы что-то не доходило — я такого не помню. К тому же, tcp гарантирует доставку, в отличие от udp.

Старый 10.09.2010, 13:30
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 5  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Цитата:
Сообщение от orcpochta Посмотреть сообщение
Здесь будет обсуждение всяких нюансов и трудностей, с которыми сталкиваются разработчики больших игровых онлайновых проектов (логика, архитектура, нагрузки).
пока пост не захватят (но флейм смотрю тут суров, разве что холивар про архитектуру полезет)

Если можно слать изменение - надо слать изменение (про список). http://en.wikipedia.org/wiki/Delta_encoding какбэ
Стоит таки ознакомиться с http://en.wikipedia.org/wiki/Transmi...ntrol_Protocol
Протокол гарантирует доставку данных неповреждёнными и в правильном порядке (ну или сокет помрёт). Но т.к. мы работаем с потоком, то не факт, что данные придут одним куском (в случае XMLSocket это проблемы флэша и можно считать, что данные придут одним куском (не забудьте отделить их на сервере при помощи '\0'), в случае Socket надо об этом помнить и клиенту). Обычно чтоб узнать, жив ли юзер, юзер шлёт на сервер раз в н сек пинги (по протоколу возможна ситуация, когда взорвут соединение, через н лет восстановят и если по сокету никто ничего не слал, то сокет нормально продолжит работу).
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.


Последний раз редактировалось -De-; 10.09.2010 в 13:51.
Старый 10.09.2010, 13:32
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от -De- Посмотреть сообщение
пока псто не зохватят
Настоятельно не рекомендую пользоваться подобным сленгом, т. к. он попадает под второй пункт правил.

Старый 10.09.2010, 13:34
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 7  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от etc Посмотреть сообщение
Ну само собой приходящих кидать через команды типа addUser/removeUser. Чтобы что-то не доходило — я такого не помню. К тому же, tcp гарантирует доставку, в отличие от udp.
т.е. схема:
Чат-клиент подключается к чат-серверу по сокету, запрашивает весь список пользователей, далее в процессе работы сервер шлет инфу о конкретных подключившихся или отключившихся пользователях. В случае обрыва сокета, клиент делает попытки переподключения, и, если ему это удается, запрашивает снова весь список пользователей, цикл...
- по сути должна работать нормально, да?
__________________
скриптограф

Старый 10.09.2010, 13:39
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от orcpochta Посмотреть сообщение
- по сути должна работать нормально, да?
Само собой. Я бы сказал, что это так и работает везде.

Старый 10.09.2010, 14:25
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 9  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Вообще всегда так схема и работает (на зависимо чат это, или местоположение орков на локации или курсы валют на форексе)
При подключении сервер шлёт ( по запросу) текущее значение всех данных модели.
Затем посылает только апдейты модели.
Во всяком случае, это наиболее приемлемая схема по трафику итп.
т.е. имеем классический MС-V сетевого уровня.
клиенты - виды
сервер - контроллер
сервер - модель (БД или место в памяти или ещё что)
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 10.09.2010 в 14:29.
Старый 10.09.2010, 14:30
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 10  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
ну теперь да, когда стало ясно, что сокетное соединение гарантирует доставку чего надо куда надо, то другой схемы, наверно, просто и быть не может - это я познаю азы клиент-серверных взаимодействий)))
__________________
скриптограф


Последний раз редактировалось orcpochta; 10.09.2010 в 14:32.
Создать новую тему Ответ Часовой пояс GMT +4, время: 22:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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