LINUX.ORG.RU
ФорумTalks

Нет желающих заняться реализацией распределённого открытого 3D-мира? ;)


0

0

Сабж. Тут понемногу из старой гвардии формируется команда, собирающаяся сделать фигню, типа deeptown.org (Second Life, ActiveWorlds и т.п.), но полностью открытую (сервер, клиент, протоколы, подключение к системе).

Основное направление - на развитие стандартизированного расширяемого протокола. Т.е. в перспективе - система с произвольной разработки серверами и клиентами.

Всё это, естественно, мультиплатформенное.

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

Клиент первого этапа был намечен на связку Ogre3D + Python (апологеты C++ всегда смогут написать на нём свой варант клиента позже, нам же сейчас важно отработать протокол), но всё обломалось на самом начальном этапе - элементарно не выходит собрать python-ogre, на Linux они практически забили.

Поэтому - сабж.

В принципе, интересуют любые люди, даже просто те, кто в рамках проекта болтологией будет заниматься.

Но хочется заполучить хотя бы одного-двух имеющих реальный опыт элементарного программирования мультиплатформенных 3D-клиентов. Желательно - на упомянутой связке Python-Ogre3D. Возможны также комбинации с Irrlicht, Java :)

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

★★★★★
Ответ на: комментарий от geek

>идеи о протоколе у тебя какие-то есть уже?

На уровне командного протокола я пока ориентируюсь на протокол L2. Благо он отлично изучен и отработан нами. И, судя по описанию в этом же топике, оно почти то же самое, что в WoW. Удобный, с низким трафиком.

На счёт 2/3 - это я не загибаю. Скорее, не 2/3, а практически все. Это я урезал осетра из природной осторожности :)

Говорю же, основная масса пакетов - это пакеты типа MoveTo от сервера и StopMove от клиента. И тот, и другой - обязаны подтверждаться. Также - постоянный поток серверных пакетов DeleteObject (объект вышел из зоны видимости, клиент должен его забыть), NpcInfo (информация о новом NPC в зоне видимости), UserInfo (новый игрок в зоне видимости) и т.п. Все они обязаны доходить до клиента. Ну и, конечно, серверные StartAutoAttack, StopAutoAttack - тоже доходить обязаны :D

Рискну утверждать, что основная масса пакетов, дохождение которых не обязательно, из этого протокола была просто выкинута ради экономии :D

Навскидку из "необязательных" в голову приходят чистые украшательства, типа "SocilAction" (поклониться, там, рукой помахать, посмеяться, поплакать) - но они редкие гости. А уж в бою каком-нибудь вообще не нужны :D

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

>На уровне командного протокола я пока ориентируюсь на протокол L2. Благо он отлично изучен и отработан нами. И, судя по описанию в этом же топике, оно почти то же самое, что в WoW. Удобный, с низким трафиком.

где координаты раз в полторы секунды? Я уже говорил, какие это ограничения накладывает

>Говорю же, основная масса пакетов - это пакеты типа MoveTo от сервера и StopMove от клиента.

не обязаны =)

в потоке пакетов MoveTo реальную ценность представляет только последний. Если несколько пропущено в середине - фигня

>Рискну утверждать, что основная масса пакетов, дохождение которых не обязательно, из этого протокола была просто выкинута ради экономии :D

там просто сама идеология работы с сетью другая. Гонки, леталки и fps на таком протоколе не реализуешь

>Навскидку из "необязательных" в голову приходят чистые украшательства, типа "SocilAction" (поклониться, там, рукой помахать, посмеяться, поплакать) - но они редкие гости. А уж в бою каком-нибудь вообще не нужны :D

в бою нужно "успеть" раньше противника. Если ты не пошаговую стратегию делаешь, разумеется. И вот тут протокола уровня LA2 не хватит.

ещё хинт: AnarchyOnline использует и tcp и udp.

geek ★★★
()
Ответ на: комментарий от geek

>ещё хинт: AnarchyOnline использует и tcp и udp.

емнип, tcp используется для подгрузки карты/моделей, а udp - собственно для игры.

geek ★★★
()
Ответ на: комментарий от geek

>где координаты раз в полторы секунды? Я уже говорил, какие это ограничения накладывает

Раз в полторы секунды клиент отсылает серверу координаты на валидацию. При согласованных алгоритмах расчёта перемещений эта валидация - чисто формальное дело. Ибо и клиент и сервер расчитывают перемещение параллельно.

В L2, даже _не зная_ алгоритмов, по которым перемещается клиент, у нас рассинхронизация сейчас редко превышает 0.1 сек. А это - типичная задержка времени распространения пакета.

>в потоке пакетов MoveTo реальную ценность представляет только последний. Если несколько пропущено в середине - фигня

При типовой игре они идут не часто :)

Но главное тут в другом. Да хоть один последний - но подтверждать его _надо_. Иначе клиент может просто не получить команду перемещения, а сервер - перемещение начнёт. А значит - подтверждать придётся _все_ пакеты. Ибо ни один из них не будет последним. За ним будет ещё и ещё... :)

>Гонки, леталки и fps на таком протоколе не реализуешь

Но пока открытым остаётся вопрос, можно ли реализовать действительно массовый мир на UDP :) WWII пока на эту тему не очень внятен.

Кроме того, вопрос трафика. Ибо при таком входящем трафике, порождённом подтверждением пакетов любой сервер уткнётся в толщину канала гораздо быстрее. И получится что вместо роста эффективности будет её снижение.

>в бою нужно "успеть" раньше противника. Если ты не пошаговую стратегию делаешь, разумеется. И вот тут протокола уровня LA2 не хватит.

Ну, хорошо. Команды на выстрел можно передавать по UDP :D Но без подтверждения... Хм. Ты стреляешь, а сервер об этом так и не узнает :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от geek

>емнип, tcp используется для подгрузки карты/моделей, а udp - собственно для игры.

Вполне может быть, что придётся делать три уровня потоков. Загрузка объектов (хоть по привычному http) и два командных - tcp и udp :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

>Кроме того, вопрос трафика. Ибо при таком входящем трафике, порождённом подтверждением пакетов любой сервер уткнётся в толщину канала гораздо быстрее. И получится что вместо роста эффективности будет её снижение.

tcp точно так же грузит канал и точно так же отправляет подтверждения недошедших до хопа пакетов. Собственно, в tcp всё гораздо сложнее, просто это скрыто от глаз в недрах стека

>Ну, хорошо. Команды на выстрел можно передавать по UDP :D Но без подтверждения... Хм. Ты стреляешь, а сервер об этом так и не узнает :)

сервер как раз об этом должен узнать. А вот координаты каждой ракеты пользователю например знать не обязательно. В смысле некритично

geek ★★★
()
Ответ на: комментарий от KRoN73

>Вполне может быть, что придётся делать три уровня потоков. Загрузка объектов (хоть по привычному http) и два командных - tcp и udp :)

дада. Устал уже намекать на то, что не надо ограничиваться ММОРГ-ориентированным протоколом =)

geek ★★★
()

Hi all. I am one of the maintainers of the Python-Ogre project.

Recently we improved our support for the Linux and created few Python scripts that allow easy Python-Ogre installation. We also start to provide binaries for this platform.

I guess we can help you with building Linux environment. Also it could be nice if you will share the problems you had, so we can improve the project.

Roman ( http://python-ogre.org/ )

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.