Проект HighCity (мы не одиноки во вселенной VR :)

 
RU RandomAmbersky #23.07.2007 23:55
+
-
edit
 

RandomAmbersky

разработчик OpenWorlds
Всем привет, я автор проекта HighCity (http://highcity.sourceforge.net/ , но там все в зачаточном состоянии, только схемы ). Проект разрабатывается на C++, с использованием кросс-платформенного масштабируемого движка AmberSkyNet ( [ AmberSkyNet VR ], регулярно обновляются исходники в SVN, который тоже я пишу, довольно медленный и с не очень хорошей архитектурой, возникает желание забить и сделать по-быстрому виртуального клиента на VElib, скажем :)


Идея 3d-мира приходила в голову и мне.. Я вдохновлялся немецкой программой Roomancer ( единый мета-сервер, куча пользовательских локаций.. весь контент хранится на локальных компах у участников.. можно "заходить в гости" на удаленный комп и принимать гостей у себя.. )
Одна из идей проекта HighCity - разделить сервер логики и граф. сервер по двум разным серверам.. Соответственно к одному и тому же серверу логики можно "подцепить" несколько "визуализаторов" - 3d, 2d, текстовые, адаптированные для КПК, мобильные, итп.. Таким образом куча пользователей может находиться в одном и том же мире, сидя на разных устройствах...

Cервер логики проверяет - может ли обьект Х cовершить операцию У над обьектом Z, и если может, то проводит ее...
Сервер графики - по полученному от сервера логики XML-файлу логики делает визуализацию системы и передаёт дальше XML-файл с описанием изменений в 3d-мире...
Сервер графики еще может быть полезен тем, что служит как бы "шляпкой" для сервера логики, и если его взломают, то сервер логики останется невредимым.. :)
--
Еще одна идея 3d-мира - адаптация других интерфейсов в единую VR-среду Например - модуль IRC-клиента, через который сервер логики общается с обычным IRC-сервером и передает полученные от него в VR-среду, которая в зависимости от пользовательских настроек трансформирует полученные сообщения, например, в падающие сверху на "рабочий стол" конверты, при клике на которых эти сообщения будут прочитаны, и при желании на них можно будет ответить..

К сожалению, это все пока лирика, но пока не начата разработка сетевого протокола, может быть как-то можно согласовать его и выработать единый..

Я в своем проекте думаю использовать обмен XML-файлами.. (как вариант - переключение на "бинарный" протокол, где каждый унифицированый тег закодирован своим числом, но на этапе устаканивания протокола самое то - открытый XML).


К чему это я? Может быть какие-то идеи вам понравятся (их можно смело воровать :), может быть получится сделать единый XML-протокол для 3dWeb на основе наших проектов...
 
+
-
edit
 

Balancer

администратор
★★★★★
Единый протокол безусловно рулит, но мы ратуем за бинарный обмен. Экономия в командном потоке будет очень большая, буквально - в разЫ.
 
RU RandomAmbersky #24.07.2007 00:14
+
-
edit
 

RandomAmbersky

разработчик OpenWorlds
Если делать только бинарный проткол, имхо - будет еще один 3d-чат со своим особым протоколом :( В XML - сила :)
В конце концов, можно сделать поддержку и того и другого, а XML по-моему будет легче увязать со сторонними разработками, чем бинарный протокол..
Например, в том же Flash есть средства для разбора XML, поэтому и на нем можно будет сделать визуализацию XML с сервера логики не используя сторонних библиотек..
 
+
-
edit
 

Balancer

администратор
★★★★★
В XML - сила. Но у нас стоит задача минимизации трафика :)

Вообще, есть в качестве примера для подражания протколы L2 и WoW. Где, скажем, пакет CharMoveToLocation (один из самых часто посылаемых) занимает 29 байт (код операции + код объекта + 3 координаты исходной точки + 3 координаты конечной). В то время, как в XML он же будет занимать уже под две сотни байт:
code xml
  1. <packet action="CharMoveToLocation">
  2. <object_id>123456</object_id>
  3. <from>
  4. <x>123456</x>
  5. <y>56789</y>
  6. <z>-1234</z>
  7. </from>
  8. <to>
  9. <x>123499</x>
  10. <y>56789</y>
  11. <z>-1234</z>
  12. </to>
  13. </packet>


Итого - шестикарнтый проигрышь по трафику на таком простом примере. А даже бинарный протокол на не самом загруженном L2-сервере уже в упор забивает стомегабитные каналы на сервере и едва хоть как-то позволяет играть на хороших модемах.

С переходом на XML с той же загрузкой придётся улучшать серверные каналы до гигабита, а от юзеров с каналом меньше 256к - просто отказываться :)

Кроме того, у нас даже бинарный пакет будет больше размером (координаты придётся делать long, object_id - тоже не меньше long'а, если вообще не строкой...)
 
UA help #24.07.2007 20:51  @RandomAmbersky#24.07.2007 00:14
+
-
edit
 

help

разработчик L2J Fortress

RandomAmbersky> Если делать только бинарный проткол, имхо - будет еще один 3d-чат со своим особым протоколом :( В XML - сила :)

ну ладно, а теговая структура?

code text
  1. <packet action="CharMoveToLocation">
  2. <object_id>123456</object_id>
  3. <from>
  4. <x>123456</x>
  5. <y>56789</y>
  6. <z>-1234</z>
  7. </from>
  8. <to>
  9. <x>123499</x>
  10. <y>56789</y>
  11. <z>-1234</z>
  12. </to>
  13. </packet>


не находишь, что это уже своего рода "свой особый протокол"? ;)

RandomAmbersky> В конце концов, можно сделать поддержку и того и другого, а XML по-моему будет легче увязать со сторонними разработками, чем бинарный протокол..

нуу.. я бы сказал, если уже увязывать что-то с чем-то - имеет больший смысл не "легче", а "лучше". в этом случае, я как бы преимуществ хмл пока вообще никаких не вижу.

RandomAmbersky> Например, в том же Flash есть средства для разбора XML, поэтому и на нем можно будет сделать визуализацию XML с сервера логики не используя сторонних библиотек..

как вариант - сделать прокси-прокладку, на входе двоичные данные, на выходе - хмл (м.б. соответственно, такую же но в обратном направлении - со стороны сервера). но опять же, выиграем в простоте (внутренней, прошу заметить), но проиграем в процессорном ресурсе на преобразование - есть ли смысл?
 
RU RandomAmbersky #24.07.2007 20:52
+
-
edit
 

RandomAmbersky

разработчик OpenWorlds
(пока писал уже ответили :)
 

help

разработчик L2J Fortress

Balancer> С переходом на XML с той же загрузкой придётся улучшать серверные каналы до гигабита, а от юзеров с каналом меньше 256к - просто отказываться :)

ну, вообще-то сами юзеры давно и повсеместно отказываются от каналов меньше 256.. ;) это не в защиту хмл, а как мысль по теме - если и в остальном на V.90 дальше равняться - тесновато будет, будет проигрыш в функционале, а во имя чего?
 

Murkt

Pythoneer

Balancer>> С переходом на XML с той же загрузкой придётся улучшать серверные каналы до гигабита, а от юзеров с каналом меньше 256к - просто отказываться :)
help> ну, вообще-то сами юзеры давно и повсеместно отказываются от каналов меньше 256.. ;) это не в защиту хмл, а как мысль по теме - если и в остальном на V.90 дальше равняться - тесновато будет, будет проигрыш в функционале, а во имя чего?

Отказываются по возможности, но возможности есть далеко не всегда. На 33600 не равняться, конечно, но просто так в трубу выкидывать канал нежелательно.
[team Їжачки - сумні падлюки]  
+
-
edit
 

SoulKeeper

разработчик L2J Fortress

Balancer>> С переходом на XML с той же загрузкой придётся улучшать серверные каналы до гигабита, а от юзеров с каналом меньше 256к - просто отказываться :)
help> ну, вообще-то сами юзеры давно и повсеместно отказываются от каналов меньше 256.. ;) это не в защиту хмл, а как мысль по теме - если и в остальном на V.90 дальше равняться - тесновато будет, будет проигрыш в функционале, а во имя чего?

К примеру у меня анлим 256к стоит 84 бакса. Дороговато, вам не кажется?

Собственно переходят когда есть возможность, а у меня даже технической возможности нет поставить что-то толстее 256к. Провайдер не тянет(либо тянет, но морозится, хотя в прайсах есть). Вот вам простой пример "давно и повсеместно".
Разыскивается десятка с два датапакеров :) http://la2.wrk.ru/forum/viewtopic.php?id=50882  
+
-
edit
 

Balancer

администратор
★★★★★
Повторюсь, ведь. Просаживается не только канал юзера. Но и канал сервера :)
 

help

разработчик L2J Fortress

Murkt> На 33600 не равняться, конечно, но просто так в трубу выкидывать канал нежелательно.

сева, ты именно черту подвёл под тем, что я хотел сказать. :)
 
+
-
edit
 

help

разработчик L2J Fortress

SoulKeeper> К примеру у меня анлим 256к стоит 84 бакса. Дороговато, вам не кажется?

да ну. у укртелекома дсл 64/256 стоит 100 грн ($20) и есть он уже ну везде, да и телеком повсеместно давят ответным демпингом мелкие домашнесеточные операторы; если порыться - в 80% случаев можно нарыть ещё дешевле (по себе знаю :D). в россии, как мне кажется, с этим дела обстоят ещё проще (могу ошибаться).
ну это вообще не к теме - так, реплика.

SoulKeeper> Собственно переходят когда есть возможность, а у меня даже технической возможности нет поставить что-то толстее 256к. Провайдер не тянет(либо тянет, но морозится, хотя в прайсах есть). Вот вам простой пример "давно и повсеместно".

ну опять же, может сейчас нет, но тенденции налицо - насколько уже у меня глухое место, но ещё 3 года назад что-то выше 64к казалось мифическим, а сегодня я уже без напряга отдаю по 2мбит на абонента. а ведь и проект за пару месяцев не напишется - к тому времени 100мбит из мира домой уже повсеместной нормой могут стать, даже в самый глухой колхоз. :) фактор "мало жрёт трафика" станет просто никому неинтересен, а вот ущерб функционалу из-за этого - напротив, будет ощущаться всё крепче.
 

Murkt

Pythoneer

Murkt>> На 33600 не равняться, конечно, но просто так в трубу выкидывать канал нежелательно.
help> сева, ты именно черту подвёл под тем, что я хотел сказать. :)

Вот и хорошо © :D
[team Їжачки - сумні падлюки]  

help

разработчик L2J Fortress

Balancer> Повторюсь, ведь. Просаживается не только канал юзера. Но и канал сервера :)

видимо, тогда я не всё или невнимательно читал. мне казалось, что система обмена будет пиринговой?
 

Murkt

Pythoneer

help> да ну. у укртелекома дсл 64/256 стоит 100 грн ($20) и есть он уже ну везде

Вот, к сожалению, не везде. У меня ещё нет (хотя обещают через несколько месяцев).

help> ну опять же, может сейчас нет, но тенденции налицо - насколько уже у меня глухое место, но ещё 3 года назад что-то выше 64к казалось мифическим, а сегодня я уже без напряга отдаю по 2мбит на абонента

У меня ситуация считай не изменилась по сравнению с ситуацией двухгодичной давности - можно юзать GPRS по 80 центов за мегабайт, можно с помощью антенны и такой-то матери юзать CDMA-95 по 12.5 центов за мегабайт, можно попробовать провести телефон и диал-ап через межгород.
[team Їжачки - сумні падлюки]  

Murkt

Pythoneer

Balancer>> Повторюсь, ведь. Просаживается не только канал юзера. Но и канал сервера :)
help> видимо, тогда я не всё или невнимательно читал. мне казалось, что система обмена будет пиринговой?

Система обмена статической инфой - да. Обмен актуальной игровой информацией - только через сервер, потому что клиенту нельзя ничего доверять считать.
[team Їжачки - сумні падлюки]  
+
-
edit
 

SoulKeeper

разработчик L2J Fortress

help> да ну. у укртелекома дсл 64/256 стоит 100 грн ($20) и есть он уже ну везде, да и телеком повсеместно давят ответным демпингом мелкие домашнесеточные операторы;

Я говорил про чистый 256к, + укртелеком не дает реального ip(который мне нужен, но большенсво юзеров не знают что это такое), ну или дополнительной услугой... Если смотреть по прайсам того же укртелекома, то получаем 480 грн (96$).

а вообще вот тебе прайс, полюбуюся :)


Уарнет - Інтернет провайдер


Справжній інтернет. Без обмежень
з 1 лютого, інтернет для наших клієнтів став ще швидшим, і ще дешевшим!
І головне, немає ніяких обмежень по трафіку та часу - справжній інтернет без обмежень.
Інтернет від Уарнет
Компанія Уарнет вже понад 16 років надає послуги доступу до мережі інтернет. За цей час ми стали справжнім лідером на західній Україні.
виділена лінія, ADSLцілодобовий доступ до мережі Інтернет через виділену лінію або ADSL (до 30 Мбіт/с)радіо каналцілодобовий доступ до мережі Інтернет через радіоканал (до 10 Мбіт/с)комутована лініяцілодобовий доступ до мережі Інтернет через dial-up.

// Дальше —
www.uar.net
 


3-х этажки стоят в центре города, провайдерам тянуть что-то не выгодно. Масивы 15-ти этажек куда привлекательнее.

Единственная альтернатива не считая укртелекома: 404 Not Found

но это вообще 3.14здец... У них апаратура легко держит пару мегабит, но внаглую режут. Реального ip у них тоже не выбить, нет вообще идет через другой город. Собственно подключайтесь куда хотите, это если еше есть возможность подключится. А то бывает провайдеры по 300-500$ просят за прокладку кабеля и упорно не желают пользоваться радионетом.

Это так, для прояснения ситуации с траффиком... Да и тот же укртелеком обслуживает далеко не все ATC. В общем модемы еше в ходу, и такими темпами будут в ходу еше пару лет. Про gprs интернет даже не вспоминайте. Скорость 0,4к у того же Life "рулит". Хотя если юзать телефон с поддержкой Edge, то разгоняемся до 32к. Но это тоже не дело.

help> ну опять же, может сейчас нет, но тенденции налицо.

Тенденции на лицо, но до уровня той же америки (до 16 мбит за 15$) эти тенденции такими темпами дойдут лет через 10, а то и через все 20. Если вообще дойдут.
Разыскивается десятка с два датапакеров :) http://la2.wrk.ru/forum/viewtopic.php?id=50882  
+
-
edit
 

Mirosya

разработчик OpenWorlds
Balancer> В XML - сила. Но у нас стоит задача минимизации трафика :)
Balancer> Вообще, есть в качестве примера для подражания протколы L2 и WoW. Где, скажем, пакет CharMoveToLocation (один из самых часто посылаемых) занимает 29 байт (код операции + код объекта + 3 координаты исходной точки + 3 координаты конечной). В то время, как в XML он же будет занимать уже под две сотни байт:
Balancer> Итого - шестикарнтый проигрышь по трафику на таком простом примере. А даже бинарный протокол на не самом загруженном L2-сервере уже в упор забивает стомегабитные каналы на сервере и едва хоть как-то позволяет играть на хороших модемах.

1) как вариант - кодировать пакеты ака архивировать на лету - будет однозначно меньше трафик
2) одно другому не мешает - xml-like на стадии отладки и разработки, binary-like в реальной работе
 3.0.53.0.5
+
-
edit
 

Balancer

администратор
★★★★★
Mirosya> 2) одно другому не мешает - xml-like на стадии отладки и разработки, binary-like в реальной работе

Одно другому не мешает, но я всё равно в нашем случае не вижу плюсов XML :) Деревья нам передавать, вроде, не нужно. Глазами пакеты отслеживать - тоже. Одна только лишняя нагрузка на сервер :)
 
RU lubyagin #12.02.2009 00:14  @Balancer#17.01.2009 05:26
+
-
edit
 

lubyagin

разработчик OpenWorlds
Mirosya>> 2) одно другому не мешает - xml-like на стадии отладки и разработки, binary-like в реальной работе

Кроме того, существует спецификация Binary XML, Binary XML - Wikipedia, the free encyclopedia , объединяющая
такие форматы, как "Extensible Binary Meta Language (EBML) from Matroska", Extensible Binary Meta Language - Wikipedia, the free encyclopedia
"PlainXML project from SourceForge.net", "BXML Encoding Specification" и прочее.

Balancer> Одно другому не мешает, но я всё равно в нашем случае не вижу плюсов XML :) Деревья нам передавать, вроде, не нужно. Глазами пакеты отслеживать - тоже. Одна только лишняя нагрузка на сервер :)

Деревья можно кодировать, используя и бинарный формат.
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru