Вообще, мы с Дмитрием много обсуждали систему маршрутостроения для RRS, в том числе лазили по маршрутам MSTS. Для примера, приведу пару скриншотов из маршрутов MSTS по системе "Картостроение":
(
маршрут "Киевский ход")
Распространённое название "маршрут" для таких вещей как MSTS и многие другие симуляторы, некорректно. Дело в том, что в данной технологии, маршрут строиться не от пункта А, до пункта Б, (как сейчас в ZDS), а именно по карте! То есть создаётся некая часть ландшафта (полигон который привязывается к реальным координатам мира!), и уже на ней разработчик рисует линии пути, где поезда могут ездить. В MSTS, это были так называемые линии TDB (Track Data Base), которые скриптовались в специальном файле "tsection.dat". То есть можно создать свою секцию пути, к примеру кривая радиусом 500, или стрелочный перевод и заскриптовать эту модель файле так, что бы поезд ехал по ней с очень плавным отклонением. Я эту технологию не успел освоить в MSTS, но предполагаю, что геоданные отклонения, выстраивались на базе данных от модели в 3ds max. Там даже есть какой-то редактор кривых что ли. На такой же основе делались и более сложные участки пути. Например, та же английская стрелка, укладывалась частями, каждая из которых имела возможность отклонить поезд.
Вернёмся к скриншотам. На первом, вы видите, что жёлтые линии на карте, это линии TDB, то есть путь, где поезд может ехать. На втором, я показал стрелочные переводы, где красная отметка перед её остряком (надпись 4775), это и есть точка создания кривой отклонения поезда, в случае, если я переведу стрелку в игре, или задам это через сценарий. С этого момента, на карте появляется ветвь, дальнейшее развитие которой, никак не ограничено. А все последующие секции пути, "примагничиваются" к окончанию и можно строить столько разных направлений, сколько угодно!
Примерно что-то на подобии этого, нам нужно сделать в маршрутах RRS.
Теперь расскажу, что я придумал по поводу маршрутов ZDS.
По скольку маршруты ZDS, это именно "маршруты", а не карты, то здесь все расстояния абсолютно абстрагированные, то есть у них нет привязки к геокоординатам. А отсчёт расположения объектов, идёт от "осевого нуля" маршрута. Данная технология ужасный костыль, созданный на скорую руку. Однако даже при нём, создать качественный реалистичный маршрут можно, но с некоторыми ограничениями.
Если мы будем полностью уходить от системы треков и маршрутов, на "картостроение", то маршруты ZDS, у нас больше работать не будут (вероятнее всего). Что конечно же, многим очень не понравится и нам тоже, так как база реальных маршрутов ZDS, просто огромная!!!
Но что бы нам эту базу не терять, желательно было бы, написать специальную программу, которая конвертирует данные из файла "route1.map", в геоданные с привязкой на местности. Что это значит?
А значит это то, что мы выбираем маршрут, например Москва-Сухиничи. На картах мира, ищем спутниковый снимок вокзала и то место, где предположительно, стоит осевой ноль маршрута ZDS:
На скриншоте, я обозначил точку, где стоит тупиковая призма и внизу, я подчеркнул красным геокоординаты северной широты, восточной долготы. Это и должен быть старт конвертации данных из route1.map.
Далее, по идее, нужно задать конечную точку, где предположительно будет заканчиваться маршрут - то есть Сухиничи-главные. При этом в программе должен появиться как бы вектор, направленный именно на Сухиничи, к тем координатам (сев. широты, вост. долготы). После этого, программа, автоматически должна выставлять объекты (записи в route1.map) отсчитывая их от точки, которую мы обозначили на скриншоте. Данные по расстояниям, она будет брать всё из того же файла. Конечным пунктом конвертации, будет вторая точка, на которую направлен вектор.
Что по идее должно получиться? А получится именно точно такая же карта, как в MSTS, только без ландшафта и без базы треков. Все объекты, должны будут устанавливаться строго на своих местах, но уже не по системе ZDS, а в координатах геоданных. Возможно, что какие-то объекты сползут и их придётся поправлять вручную. Но это уже будет дело редактора маршрутов. А если мы сумеем сделать базу данных пути, то возможно по моделям секций пути, конвертируемого маршрута, программа, автоматически нарисует путевую базу, опираясь на специальный файл (типа как tsection.dat в MSTS), где уже будут описания кривых или прямых линий.
Для примера, приведу запись из Route1.map:
opkl,-3.75,49200,0,0,0,0;
Где цифра 49200 - это и есть нужная нам координата длинны от нуля!
Примерно как-то так!