PDA

Просмотр полной версии : Мультиплеер. Разработка сетевого блока.


DeBUG
11.10.2008, 12:14
Для приближения к нормальной сетевой игре пишу код сетевого блока. Если есть информация по данной теме предлагаю ее опубликовать, также можно высказывать свои пожелания и предположения по работе сетевого модуля. Разбирающиеся люди могут предлагать структуру и модель приложения. Любые толковые идеи всегда выслушаю.

Краткое ТЗ:

1.Клиент-серверное приложение.
2.Модульность приложений.
3.Открытая архитектура.
4.Взаимодействие по интерфейсам.

Основная работа идет в направлении таких этапов:

Этапы разработки.

1.Модуль управления стрелками. Выполнен, тестирование.
2.Модуль построения схемы пути.
3.Модуль сигнализации.
4.Модуль управления занятости пути.
5.Модуль визуализации ПС других игроков.


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

Предположительная дата первых тестирований всего приложения конец декабря.

Colonel_Abel
11.10.2008, 12:43
Могу сказать только одно. Если получится, то все любители МСТС тебе и той команде, что будет с тобой работать памятник при жизни поставят. Я серьезно.

art-trans
11.10.2008, 12:48
Очень полезная вещь, но с трудом верится что настолько быстро всё удастся выполнить.

Касаемо построения схемы пути - то для диспетчерского пульта можно взять одно из приложений симуляции диспетчерского пульта - Train Director, Train Dispatcher и т.д. Также желательно чтобы Модуль построения пути был выполнен этаким редактором с детальной привязкой к координатам MSTS, и с возможностью передачи информации о скорости движения состава и некоторых дополнительных элементов, при использовании приложения в качестве диспетчерского пульта при мультиплеерах.

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

Что же касается последнего пункта - его рекомендуется выполнить в двух вариантах
1. Модуль, при котором передаётся только информация о местоположении состава другого игрока, и сама составность, а вагоны и локомотивы будут загружаться из компьютера самого игрока - при этом экономия трафа и т.д.
2. Модуль при котором от игрока будет передавать вся информация вместе с файлами вагонов и локомотивов, при этом нужно иметь очень высокоскоростной интернет.

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

DeBUG
11.10.2008, 14:11
Кратко.
Лучше постамент!

Схему пути будем строить по файлу "ИМЯ_РОУТА.tdb" + что-то. Там по всей видимости бинарное дерево. Я еще не изучал досконально. Думаю что сделаю только алгоритм, а там выставлю на общее усмотрение, может кто поможет с внедрением данных в пульт.

Сигналицазия будет работать из расчета положения стрелок + занятости блок-участков. Сама игра будет делать все за нашу программу. Я буду говорить игре какое положение стрелок + что считать блокированным.

Для визуализации думаю кубиков хватит, а там буду думать, что делать дальше.

Вот и все что есть на сегодня. Пока изучаю алгоритмы файлов маршрутов. Если кто разбираеться в структуре пишите в данной теме. Быстрей будет дело двигаться.

jawa634
11.10.2008, 15:04
Вот немного: http://www.climbatized.narod.ru/folderstructure.html
Ну и здесь: http://www.trainsim.ru/forum/showthread.php?t=336&highlight=%F1%F2%F0%F3%EA%F2%F3%F0%E0+%EF%E0%EF%EE %EA

dj.dan.mc
11.10.2008, 21:09
Ну, что-ж если сделают MSTS: MP., (также как, например SA:MP) то будет действительно круто.

APK-LVDZ
11.10.2008, 21:36
Сам я в программировании такого уровня не шарю, но если нужно - могу помочь в оформлении программы, может и новыми идеями. Уж очень хочется, чтобы такая программа вышла. Обращайтесь в ЛС если что, приблизительно знаю схему управления пультом ДСП (сам готовил несколько маршрутов для поездов).

Dump
11.10.2008, 22:28
Сам третью неделю занимаюсь этим делом, в частности вторым пунктом т.е. Модуль построения схемы пути. Впринципе успехи есть, написан парсер tdb файла, уже есть алгоритм построения карты маршрута, вот только думаю как рисовать карту маршрута, как это сделано в диспетчерских или же как это сделано в AE, склоняюсь к альтернативному варианту, т.е. рисовать без кривых, просто от VectorNode до VectorNode и т.д. Во первых это будет быстрее, во вторых ПС отображать легче будет (на кривых расчётов больше)

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

Общение между игрокам пока возлагал на тимспик..

DeBUG, про управление стрелками поподробнее, если не сложно, я честно говоря пока даже не представляю как это можно реализовать, хотя и не копался с этой проблемой!

art-trans
11.10.2008, 23:49
Я б вообще делал этакими блок участками, чтобы на них могла помещаться картинка поезда, двух максимум.

Dump
12.10.2008, 02:03
art-trans Ну сколько поездов поместиться на экране, это уже будет зависеть , я думаю, от зума...


Посидел я так подумал и все таки понял, что полноценный мультиплеер в MSTS сделать нельзя, не получится, dj.dan.mc, помахать рукой встречному, к сожалению. Единственно, что можно сделать, это написать нормальный диспетчерский пульт конкретно для MSTS, и соответственно нормальная сетевая игра будет реализована только для диспетчера, а машинисты по-прежнему будут представлять себе встречные и воображать:( . Хотя у меня были такие идиотские мысли типа создания "динамического сценария" и т.д. но это бред... не будем об этом:)
Поэтому предлагаю сосредоточиться на диспетчере и действовать по плану DeBUG'a. Первый этап уже готов, на сколько я понял, второй этап готов ~65% (у меня пока что), оставшиеся 35% это собственно код отображения карты по данным из файла (проблема там в координатной системе, но выход уже нашел...). 5 этап по сути является частью второго, т.к. отображать это надо наверно все вместе...

А вот 3 и 4 этап я немного не пойму. Чего в сигнализации такого? Файл sigcfg.dat, в нем все есть, что нужно. Да и потом можно отображать только зеленый и красный (открыт\закрыт), или диспетчеру нужно четко знать, что там щас творится на светофоре?

И сразу же тогда вопрос про стрелки: диспетчер должен сам переводить стрелки игроку? Или игрок переводит эти стрелки по указанию диспетчера.

rs-basique
12.10.2008, 04:08
Готовить маршрут и открывать сигнал должен диспетчер. При этом у стрелок бывают только 2 положения: "+" и "-", а у сигналов только 2 варианта: "Открыт" или "Закрыт".

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

То есть на пульт передаётся показание светофора ("открыт"/"закрыт"), и это показание транслируется другим игрокам, но диспетчер не может вручную перекрыть сигнал, по дефолту он должен быть открыт.

P.S. Это уже мелочи "притирки".

Aleks
12.10.2008, 13:42
И ещё. Очень хотелось бы оставить проходные светофоры на автодействии, так как в реале управлять проходными светофорами невозможно вручную, они работают только автоматически.
Не совсем. Если делать двустороннюю АБ, то нужно как-то гасить светофоры противоположного установленному направления.
ИМНО, лучше всего, воздействовать на переменную enabled светофора. Устанавливаем ей значение TRUE и светофор открывается, после проезда поезда сбрасываем значение в FALSE.

art-trans
12.10.2008, 15:14
Лучше всего чтобы после проезда поезда сигнал сам менялся на красный, и чтобы была опция автоматического задания открытого сигнала где это возможно для проходных светофоров, как это выполненно в Train Director'е. Если не понятно - могу добавить иллюстрированное пояснение.

Aleks
12.10.2008, 16:13
Лучше всего чтобы после проезда поезда сигнал сам менялся на красный, и чтобы была опция автоматического задания открытого сигнала где это возможно для проходных светофоров, как это выполненно в Train Director'е.
А так и будет. Переменная enabled просто разрешает светофору открываться, при выполнении определенных условий (свободность блок-участка, показание след. светофора и т.д.). Условия задаются в файле sigscr.dat.

ВIGMAN
12.10.2008, 16:26
ИМХО Сколько не мутузили эти программы для мультиплеера всё стремиться к нулю!

Dump
12.10.2008, 19:49
Погодите вы с сигнализацией, сначала надо нормально отображать карту, затем отображать на этой карте пс, а уже только потом думать о светофорах. А для того чтобы отображать пс, надо написать клиент.

Вообще я тут все думаю о карте: как отображать? Так, как на пример это делал APK-LVDZ, или же как это сделано в редакторе сценариев. Плюсы и минусы есть у обоих вариантов. Плюсы первого варианта в том, что легче будет отрабражать пс, но построить такую карту будет тяжелее, а у второго варианта в точности до наоборот: построить карту легче, но вот отобразить составы будет тяжелее. Если кто в геометрии хорош, отзовитесь, может вместе решим проблемы. Я бы конечно хотел видеть первый вариант, вы, думаю, тоже...

art-trans
12.10.2008, 21:43
А не будет ли проще взять за основу это?
http://keep4u.ru/imgs/s/081012/97/9720ba76129cd7c0bd.jpg (http://keep4u.ru/imgs/b/081012/97/9720ba76129cd7c0bd.jpg)
Довольно удобно, а самое главное очень просто в использовании, и весит то эта прога всего ничего пару килобайт, а функциональности можно только позавидовать. Кому надо могу скинуть, обращаться в личку.

Dump
12.10.2008, 22:25
Я вообщем то теперь думаю писать что-то подобное, только чтобы карту рисовало из tdb файлов. Тут то и начинаются проблемы.
Хотя можно вприципе допустить загрузку карты не из tdb файла, а из отдельного файла (вот как раз так, как в train dispatcher'e). Тогда карты нужно создавать отдельно...

А вообще хотелось написать все свое!
Думаю, следует подождать новостей от DeBUG'a

art-trans
12.10.2008, 22:34
Знаешь, лично я вообще не могу сообразить как можно сделать этакий диспетчерский пульт используя tdb файл. А Степанки - там маршрут огого, и монитора 17-дюймовки не хватит однозначно. Поэтому карту нужно в любом случае рисовать вручную, но просто создать в ней специальные динамические элементы, которые привязывались бы к той или иной координате. И с сигнализацией станет немного проще. Кстати в train director'е к довольно удобно создавать новые карты.

Dump
12.10.2008, 23:00
да монитор то - фиг с ним, карту можно прокрутить, другое дело - память! Проблема ещё вот какая. К примеру те же Степанки. Как отобразить одновременно ветку, что идет на Лужинск, и ветку на Рестов? Их тогда как то параллельно вести надо. А там ещё и Карьер и куча таких ответвлений. Я вообщем подумаю насчёт отдельного файла, но и идею с tdb файлами пока не отбрасываю (хотя бы потому, что уже для него около 500 строк кода написано)

DeBUG
13.10.2008, 15:36
Работа идет, кода много. Как только будут серьезные продвижения обязательно сообщу. Пока пытаюсь связать данные по стрелкам и пути. Востанавливаю постепенно структуру объектов. Пульт диспетчера делайте как считаете нужны, я потом подгоню под него свои модули.

DUMP. Что именно тебя интересует по стрелкам. Стрелки имеют свою структуру. На каждую структуру есть указатели. Память динамическая. Основная задача найти таблицу указателей или восстановить(воссоздать) алгоритм по которому программа проходит к ячейки памяти конкретной стрелки. Я позже выложу код и возможно схему алгоритма, а пока слишком много погрешностей, приходится выполнять обновление кода. В tdb есть все, что тебе понадобиться если будешь делать пульт. Если что спрашивай.

Dump
13.10.2008, 16:19
Вообщем у меня пульт... все, определили.

Программу надо написать, главное - все систематизировать и тогда все получится!!

Ace Hard
13.10.2008, 17:37
Как будет осуществляться синхронизация времени? Игровое время должно быть едино для всех игроков (пунт 13.6 ПТЭ).

kozya-bozya
13.10.2008, 17:52
Есть болшое количество разработок, думаю всем поделюсь.

Вопрос со временем и с многими вещами решен, напишу как будет время через пару дней.

Есть исходники, раскуроченный train.exe, блок написанный на ассемблере для обработки блок-участков и тп....

Taras Shelest
14.10.2008, 13:35
Посидел я так подумал и все таки понял, что полноценный мультиплеер в MSTS сделать нельзя, не получится, dj.dan.mc, помахать рукой встречному, к сожалению. Единственно, что можно сделать, это написать нормальный диспетчерский пульт конкретно для MSTS, и соответственно нормальная сетевая игра будет реализована только для диспетчера, а машинисты по-прежнему будут представлять себе встречные и воображать.

Ну если будет переключаться сигнализация и стрелки - это уже будет здорово. Сейчас на сколько я представляю, машинистам приходится самим со стрелками управляться.

DeBUG
15.10.2008, 01:36
По стрелкам
DUMP ты интересовался. Выкладываю первую часть. Это только наброски, алгоритм. Все что будет работать реализуем более оптимально уже после первых тестов, еще раз повторю это информация к обдумыванию. Работает после старта сценария.

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

Мой сайт http://debug-msts.narod.ru/ Здесь буду публикавать все чот выглядит приемлемо.

DeBUG
16.10.2008, 11:56
По стрелкам

Алгоритм полностью реализован и обкатан. Результатом есть такая структура:

Tile_x
Tile_z
x,y,z
Direc

На данный момент ведется работа в области сигнализации.
------------------------------------------------------------
Публикации по работе на http://debug-msts.narod.ru/

DeBUG
26.10.2008, 22:35
Интересная тема, вернее та часть где говориться о мультиплеере: http://forum.worldracing.info/showthread.php?t=1347 Люди проделав такую работу не смогли решить задачу попроще и забросили проект, не логично.

В поисках фото пульта наткнулся на вот это: http://ukrtrains.narod.ru/pic/21chs8poezd_20040900.jpg очень впечатлило.

Dump
05.11.2008, 01:11
Пардон, что так долго не являлся, времени не было, еще грипп подхватил!

Интересная тема, вернее та часть где говориться о мультиплеере: http://forum.worldracing.info/showthread.php?t=1347
Действительно, глупо было забрасывать!

А у меня тем временем не особо получается отображать схему маршрута (именно схему). Отображает пока только маршруты с одним путем, есть баги с определением отхода стрелки, т.к. бог знает как эта стрелка может находится в пространстве, геометрия - вспоминаю школу :)
Параллельно с первым вариантом у меня идет второй - загрузка карты из отдельного файла. Делаю редактор карт на подобии TrainDirector
http://s61.radikal.ru/i174/0811/d0/adf6fb66751dt.jpg (http://radikal.ru/F/s61.radikal.ru/i174/0811/d0/adf6fb66751d.jpg.html)
Однако в этом случае надо делать схему с особой точностью, что бы не возникла ситуация, что поезд едет в никуда или что то типо того

Женя
05.11.2008, 02:12
Приятно что работа идёт.

Инструментов маловато. Сразу же заметил невозможность рисования глухих пересечений. Это ведь временно?

art-trans
05.11.2008, 02:24
Глухие пересечения нарисовать очень просто, по крайней мере в Train Director'е их я много видал.

Dump - успеха и выздоровления. За Train Dir спасибо, даже как-то круче выглядит. Может тебе с созданием карты в этом редакторе помочь?

Dump
29.11.2008, 21:37
Эх...:(
Я так понимаю работа на мультиплеером подрывается? Точнее, так скажем, уходит с этого форума в связи с конфликтом...

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

alexshegera
09.01.2009, 14:22
http://tch-club.ru/forum/index.php?showtopic=356

Freeman007
16.06.2009, 22:56
Жалко, что ничего не получилось... (((

МГУ ПС
16.06.2009, 23:14
Почему это ничего не получилось? Работа продолжается, сейчас наши разработчики выходят на финальную стадию - тестирование пульта ДНЦ. Однако, постоянно возникают подводные камни, и о сроках официального выхода говорить как минимум нелогично.

Freeman007
16.06.2009, 23:18
А об визуализации говорить не приходиться? (для машинистов)

МГУ ПС
16.06.2009, 23:58
А об визуализации говорить не приходиться? (для машинистов)
Нет. Но согласитесь, видеть хотя бы на пульте все поезда - для диспетчеров; и показания сигналов - для машинистов. Это уже что-то. Можно сказать прорыв №2 (после ленты под патч и ее расшифровщика).

Freeman007
17.06.2009, 00:11
А переключения стрелок диспетчерами есть? и другая их работа?
Вобще на счет визуализации есть идеи, типо создания мульти сценария. Допустим на 10 игроков. В идеале всеми поездами управляем ИИ( или что там? ) и для каждого игрока своя версия сценария. Как бы ты будешь видеть встречные.

MSTS
13.09.2009, 02:44
Таксс, ребят. Вы же говорили, что программа ОпенСоурс. А я не вижу вообще никакой открытой информации. В общем расскажите про файл .tdb и как координаты путей прописываются в нем.

Combine
08.12.2009, 10:39
lexastik, ну переходи к нам в ТРС, у нас тут щас интересно и тоже готовится МП ;)

lexastik
08.12.2009, 17:54
lexastik, ну переходи к нам в ТРС, у нас тут щас интересно и тоже готовится МП ;)
Спасибо за приглашение, но лучше вы к нам ;) А если без приколов, то разницы то нет, на каком сайте делать, главное результат. Здесь кто то еще работает в этом направлении?

Grebnev
08.12.2009, 18:50
Все личные взаимоотношения и прочая ненужность будут удалятся. Раздел называется МСТС, а мстс-ники-тихие адекватные улыбчивые люди.

Combine
08.12.2009, 18:54
Спасибо за приглашение, но лучше вы к нам А если без приколов, то разницы то нет, на каком сайте делать, главное результат. Здесь кто то еще работает в этом направлении? При чем тут сайт? Я про платформу.

lexastik
08.12.2009, 18:55
При чем тут сайт? Я про платформу.

Что за платформа? На трэйнсиме опять мультиплеер затеяли?

classis-nsk
08.12.2009, 19:58
Подразумевалась наверное игра. TRS=ТРС

lexastik
08.12.2009, 20:14
А, типо Trainz...я скачал 2009, но еще не ставил, времени нет да и думаю метаться не стоит, с этим бы разобраться )))

Combine
08.12.2009, 21:47
Подразумевалась наверное игра. TRS=ТРС Угу.