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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.02.2009, 13:38
AlexStukoff вне форума Посмотреть профиль Отправить личное сообщение для AlexStukoff Посетить домашнюю страницу AlexStukoff Найти все сообщения от AlexStukoff
  № 1  
Ответить с цитированием
AlexStukoff
 
Аватар для AlexStukoff

Регистрация: Dec 2007
Адрес: Stavropol
Сообщений: 65
Отправить сообщение для AlexStukoff с помощью ICQ
По умолчанию Реалтайм онлайн игра. Выбор технологии, реализацие и т.д. (общие вопросы)

Привет всем.
Задача - сделать онлайн реалтайм игру. Динамичную. Предположим это будет аэрохокей (надеюсь все знают что это такое ) или что-нить подобного рода. Пока я разбираюсь с red5 (надо для видеоконференции) заказчик попросил добавить вот такую игру.
Возможно ли на red5 -ом реализовать такой вот непрерывный обмен данными?
Если использовать стандартные nc.call() и ответы сервера, то время реакции неприемлемо мало. Видимо это должен быть один, непрерывный поток данных... если кто-то что-то про это знает подскажите плиз в каком направлении копать.
И возможно ли сделать это на red5 в приницпе.
Заранее спасибо.
__________________
coming soon...

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

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Цитата:
Если использовать стандартные nc.call() и ответы сервера, то время реакции неприемлемо мало. Видимо это должен быть один, непрерывный поток данных...
гм. цифровые данные всегда разбиты на пакеты. nc.call на настоящем rtmp (который не поверх http) выполянется довольно шустро.
Что Вы собираетесь передавать потоком? На сервер передаются, например, действия пользователя, и затем отображаются с некоторой латентностью. Для сокрытия этого факта используются визуальные эффекты. Пример: отбивающий - робот, который перед передвижением включает реактивный двигатель, что происходит не моментально.
На red5 это в принципе реализуемо, но на мой взгляд, лучше разделить. Тем более, что при работе параллельно с видео латентности возрастут.
__________________
4am is time to rock

Старый 12.02.2009, 13:56
AlexStukoff вне форума Посмотреть профиль Отправить личное сообщение для AlexStukoff Посетить домашнюю страницу AlexStukoff Найти все сообщения от AlexStukoff
  № 3  
Ответить с цитированием
AlexStukoff
 
Аватар для AlexStukoff

Регистрация: Dec 2007
Адрес: Stavropol
Сообщений: 65
Отправить сообщение для AlexStukoff с помощью ICQ
Спасибо за быстрый ответ.
В принципе реализуемо на red5 это через call на настоящем rtmp? Что значит настоящий, а не поверх http? у меня никакого http нет, обращаюсь к серверу я с указанием протокола
Код:
nc.connect("rtmp://192.168.9.6/test");
Ладно, если робот,двигатели и все такое. А если это МорталКомбат?

Что значит разделить? альтернативы?

P.S.: как видите я нахожусь в информационном вакууме. Увы.
__________________
coming soon...

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

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Цитата:
Что значит настоящий, а не поверх http?
есть еще rtmpt, с туннелингом поверх http, предназначенный для работы на компьютерах, где закрыты порты, используемые rtmp

Морталкомбат - да еще проще. Инерция при движении и размах при ударе.

Разделить - имею ввиду отдельный игровой сервер. видеочат прилично грузит серверное железо, в идеале вообще на отдельном сервере игры. А сервер написать на бинарных сокетах, на java например. Или на любом другом языке. Я, например, сейчас пишу сервер для многопользовательской игры на haXe/neko
__________________
4am is time to rock

Старый 12.02.2009, 14:54
AlexStukoff вне форума Посмотреть профиль Отправить личное сообщение для AlexStukoff Посетить домашнюю страницу AlexStukoff Найти все сообщения от AlexStukoff
  № 5  
Ответить с цитированием
AlexStukoff
 
Аватар для AlexStukoff

Регистрация: Dec 2007
Адрес: Stavropol
Сообщений: 65
Отправить сообщение для AlexStukoff с помощью ICQ
Круто Это я про сервер.
Если это не часть nowhow сервера то не поделитесь ли опытом, как вы организуете обмен данными в рамках рассматриваемого вопроса? Главным образом - верна ли идеология организации взаимодействия именно таким способом:

Клиент А - дернул через call метод на сервере и в параметрах передал некие данные.
Сервер - вызвал метод на стороне клиента и передал эти данные Клиенту Б
Клиент Б - получил данные и сделал с ними чо нужно.
__________________
coming soon...

Старый 12.02.2009, 20:14
TERRORist вне форума Посмотреть профиль Отправить личное сообщение для TERRORist Найти все сообщения от TERRORist
  № 6  
Ответить с цитированием
TERRORist
 
Аватар для TERRORist

блогер
Регистрация: Jun 2005
Адрес: RU
Сообщений: 1,540
Записей в блоге: 12
Сложите пинги и поймете почему у вас ничего не получится.

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

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

Старый 13.02.2009, 03:53
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 8  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Котяра, а что в цитате не так?

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

Регистрация: Dec 2007
Адрес: Stavropol
Сообщений: 65
Отправить сообщение для AlexStukoff с помощью ICQ
BlooDHounD
Вот кто знает всю правду об ЭТОМ
К слову о пингах. Предположим у нас средний пинг 200ms. Так как в одной секунде 1000ms то обновлять данные быстрее чем 5 раз в секунду не получится. Грубо говоря реалтайм онлайн игра будет реагировать на действия пользователя со скоростью 5fps. И, в принципе, (вспоминая не браузерные онлайн игры) это приемлимо. Встает масса вопросов по обработке лагов, таймауты и пр., но это техника.
Возвращаясь к теме: RED5 писан на яве, работает с бинарными сокетами а, следовательно, при выборе иного сокет-сервера ПРИНЦИПИАЛЬНО скорость не изменится. Такое вот мое ИМХО.
Познакомился с таким протоколом(???) как RAW-данные. Их, например, использует SmartFox Server (офигенная кстати надстройка над RED5) для реализации высоконагруженных реалтайм игр. RAW-это просто все данные фигачим одной строкой с использованием сепаратора. По этой теме вопрос:

Вариант А
Я передаю данные по отдельности так сказать. Списком параметров.
Код:
nc.call("server_myfunction",null,board_mc.lastX,board_mc.lastY,user.name,user.health,user.something);
Вариант Б
В качестве разделителя испоьзую символ "|" и передаю данные одной строкой.
Код:
nc.call("server_myfunction",null,board_mc.lastX+"|"+board_mc.lastY+"|"+user.name+"|"+user.health+"|"+user.something);
Как объем данных меньше и как быстрее? Кто что знает на эту тему?
ИМХО - проще чем пульнуть строку уже не придумаешь...
__________________
coming soon...

Старый 13.02.2009, 18:21
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Быстрее - IExternalizable и придумывать свой алгоритм сжатия / записи... если сильно напрячься, то иногда можно в десятки раз сократить объем данных.
Т.е. пример, первым байтом высылаем все булевые значения, следующий байт делим для всяких целочисленных значений в сумме не превышающих 256 ну и т.д. Соответственно, слать как можно меньше строк, ну и т.п...
__________________
Hell is the possibility of sanity

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

Теги
red5 , онлайн

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

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


 


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


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