Пытаюсь замутить свой симулятор.
| |
V9 | Дата: Воскресенье, 13.07.2025, 17:27 | Сообщение # 501 |
Поездной диспетчер
Группа: Пользователи
Сообщений: 559
Награды: 12
Репутация: 3
Статус: Offline
| Ок! Тогда делай (в отдельном каталоге). ВСЁ удали в каталоге Territory\1, можно оставить pult.ini. Распакуй архив, что я присылаю. Должно заработать.
| |
| |
olegpersh999 | Дата: Воскресенье, 13.07.2025, 17:30 | Сообщение # 502 |
Начальник станции
Группа: Пользователи
Сообщений: 230
Награды: 3
Репутация: 0
Статус: Offline
| V9, заработало! Спасибо огромное за помощь) Осталось ГИД под себя перенастроить)
| |
| |
V9 | Дата: Воскресенье, 13.07.2025, 18:58 | Сообщение # 503 |
Поездной диспетчер
Группа: Пользователи
Сообщений: 559
Награды: 12
Репутация: 3
Статус: Offline
| Цитата olegpersh999 (  ) V9, заработало! Спасибо огромное за помощь) Осталось ГИД под себя перенастроить) dsim.ini со старого каталога возьми.
Добавлено (13.07.2025, 18:59) ---------------------------------------------
Цитата olegpersh999 (  ) V9, заработало! Спасибо огромное за помощь) Осталось ГИД под себя перенастроить) Отмечу, что благодаря твоей задаче, я нашел и исправил ошибку, которая у меня в коде проги была.
Добавлено (13.07.2025, 22:54) --------------------------------------------- Закончил загрузку из .dat файлов. Условно, с этого момента мой сим полагается только и только на инфу, которая находится в файлах. Это означает, что ничего не мешает добавлять мне или кому-то еще дополнительные полигоны(территории) железных дорог без необходимости перекомпиляции исходного кода симулятора. Сим будет опираться только на сведения в файлах.
Потребуется еще тестрование на всех режимах и удаление всех диагностических-отладочных комментариев.
Но есть проблемы. (А) Мой сим может моделировать только протяженные в линию полигоны. Нет возможности "орисовать" и управлять разветвлением. (Б) Пока перегонные времена хода берутся из первого попавшегося пути данного перегона. Путей на перегоне может быть два(три, четыре), перегонные хода могут быть разные по ним. Мой сим в данный момент не умеет в такие расклады.
upd. Но можно делать два(три...) полигона и рулить всеми. Скажем, полигон Сургут-НВ1 может "стыковаться" по УЯ с полигоном УЯ-Ноябрьск-I. Соответственно, можно провести по участку поезд с Сургута до УЯ, оттуда вести по полигону до Ноя-I И наоборот.Добавлено (14.07.2025, 00:14) --------------------------------------------- upd2. Была проблема, что при попытке толи откомпилирровать, толи запустить в более старших версиях джавы, все крашилось нафиг. Решил разобрать в какой точки, но крашится перестало. "само починилося". Хз где была проблема. Добавлено (14.07.2025, 07:24) --------------------------------------------- upd3. Выяснился еще один прикол, что заставлет думать об эффекте Манделы. У меня ранее, если я откомпилировал исходный текст в байт код Java'й более старшего уровня, то я не мог запустить на своей java 1.0.2. Просто не мог. Даже самые маленькие сниппиты кода. "Ничего удивительного!" - думал я - "В скомпилированном файле пишется версия Java, младшая отказываетяс запускать старшую, я бы так же сделал!" Но по итогу, сейчас у меня компилируется старшей версией, запускается на java 1.0.2 и прекрасно работает. Что подстрекает меня делать разработку в более старшей, а запускать в младшей. Так как в старшей исправили несколько ошибок компилятора, изза чего мне приходилось сильно к этому приспосабливаться, к примеру, разбивая код на более мелкие куски. Но! А вдруг я столкнусь с ситуацией, когда я веду-веду разработку в старшей версии, и внезапно все перестанет запускаться на младшей Версии? И что делать? В общем, "и хочется, и колется". Добавлено (15.07.2025, 08:52) --------------------------------------------- Решил немного порефакторить, смотрю на свои же куски кода и долго думаю - "Что это и зачем?" Код _this.curColorScheme = (byte)Math.min(_4th[0].length, _this.curColorScheme);
20 минут и наконец понял! "Это защита от переполнения массива! Чтобы не получить исключение IndexArrayOfBoundsException!" И далее понимаю, что в выражении ошибка, так как верно было бы т Код _this.curColorScheme = (byte)Math.min(_4th[0].length - 1, _this.curColorScheme);
Вот как-то так и идет!Добавлено (15.07.2025, 22:36) --------------------------------------------- Модель - это физический движок симулятора. Она двигает поезда, считает занятость/свободность, короч - отражает мир. Сижу, думаю - "Зачем может в симе потребоваться две независимые модели мира одновременно в одном процессе?" Добавлено (18.07.2025, 18:55) --------------------------------------------- Подзадолбался. Переносил загрузку станционных путей с одного места (загрузка в подпрограмме ГИДа) в место общей загрузки (загрузка всего полигона) с переписыванием алгоритма. Вначале все ошибки для пользователей четко расшифровывались - "В такой-то строке такого то числа вот именно такая-то ошибка!", под конец - "В такой-то строке такого-то числа есть какая-то ошибка!"
ps. Иду в направлении выведения на экран зеленого выносного пульта. Раньше всегда грузился ГИД (безусловно), и состояние путей на станциях грузилось именно там. Ибо изначально в проге вообще ничего кроме ГИДа не было. А сейчас условия меняются: ГИДов может не быть, может быть один, может быть много. Поэтому и полагаться на загрузку в коде ГИДа нельзя: ГИДа может не быть на экране!
PPS. Мечтаю о режиме игры, при котором ГИД нельзя вызвать на экран. Типа "есть пульт и достаточно!" Но в этом режиме диспетчер может по радиосвязи запросить - "А кто у меня там стоит на 5м пути Силинского?" - или - "Кто проследовал Урьевский?" - но это бы считалось "браком" диспетчера. А пользователь бы чертил у себя на бумаге график. Добавлено (18.07.2025, 19:07) --------------------------------------------- ppps. Уже получается, воспоминания! Первым делался ГИД. Станции везде одинаковые, поэтому я "забил" их жестко внутри программы, чтоыб не мучится. А вот пути были разные так как есть несколько вариантов полигона Сургут-НВ1. Zork, моя "реконструкция без двухпутки" и моя "реконструкция с двухпуткой". Поэтому секцию путей пришлось грузить, а так как кроме ГИДа ничего не было, то и грузил там в ГИДе. Блин, как это давно было!
Сообщение отредактировал V9 - Воскресенье, 13.07.2025, 23:05
| |
| |
V9 | Дата: Пятница, 18.07.2025, 20:37 | Сообщение # 504 |
Поездной диспетчер
Группа: Пользователи
Сообщений: 559
Награды: 12
Репутация: 3
Статус: Offline
| Посмотрел систему контроля версий. Оказывается загрузку путей я делал 20.07.2024, т.е. почти год назад.
А сегодня годовщина! 18.07, год назад, была выпущена версия, 0.1.0.0, в которой появилась Модель движения поездов. Поезда начали ехать косо-криво. К сожалению, косо-криво они едут до сих пор.
| |
| |
olegpersh999 | Дата: Суббота, 19.07.2025, 05:41 | Сообщение # 505 |
Начальник станции
Группа: Пользователи
Сообщений: 230
Награды: 3
Репутация: 0
Статус: Offline
| Почему криво-косо?
| |
| |
skiff4832 | Дата: Суббота, 19.07.2025, 07:20 | Сообщение # 506 |
Станционный диспетчер
Группа: Пользователи
Сообщений: 51
Награды: 0
Репутация: 0
Статус: Offline
| А где сама-то версия?
| |
| |
V9 | Дата: Суббота, 19.07.2025, 11:31 | Сообщение # 507 |
Поездной диспетчер
Группа: Пользователи
Сообщений: 559
Награды: 12
Репутация: 3
Статус: Offline
| Цитата olegpersh999 (  ) Почему криво-косо?
- Команды по движению поездов ручками надо вводить.
- Модель движения поездов кривая до безумия. По факту, контролирует только перегонные хода времени
Цитата skiff4832 (  ) А где сама-то версия? Будет выложена когда появится сам пульт (хоть какой-то) и появится возможность задавать движение поездов с пульта. На данный момент времени переделываются внутренности в рамках подготовки к появлению пульта. Внешне ничего в проге не поменялось с последнего релиза.
| |
| |
skiff4832 | Дата: Суббота, 19.07.2025, 12:12 | Сообщение # 508 |
Станционный диспетчер
Группа: Пользователи
Сообщений: 51
Награды: 0
Репутация: 0
Статус: Offline
| Ну тогда все понятно. Будем ждать
| |
| |
olegpersh999 | Дата: Суббота, 19.07.2025, 12:48 | Сообщение # 509 |
Начальник станции
Группа: Пользователи
Сообщений: 230
Награды: 3
Репутация: 0
Статус: Offline
| Так ты делаешь пульт для участка НВ - Сургут или для другого участка?
| |
| |
V9 | Дата: Суббота, 19.07.2025, 12:57 | Сообщение # 510 |
Поездной диспетчер
Группа: Пользователи
Сообщений: 559
Награды: 12
Репутация: 3
Статус: Offline
| Планы по версиям. 0.3 - Пульт. Манипуляции с пульта движением поездов. Лампы. Спрятать/показать ГИД(ы). 0.4 - Расписание движения поездов. НГДП (возможно). Ввод поездов на полигон диспетчерами соседних участков (компом). Сейчас поезда вводить надо самому. 0.5 - Сетевой протокол взаимодействия. Сейчас инфа по движению пишется моделью в текстовый файлик gid.txt, а подсистема ГИД читает файлик и показывает. Такой режим позволяет сделать многопользовательскую физическую модель движения поездов, но она достаточно "неточная", нет необходимой точности. Для многопользовательского режима с максимально точным движением требуется сетевая передача данных. Вот в 0.5 планируется делать. 0.6 - Путевой граф, путевое развитие. Физическая модель движения. Поезд будет рассчитываться в движении. 0.7, 0.8, 0.9, 1.0 - еще не придумал, что планируется.Добавлено (19.07.2025, 13:45) ---------------------------------------------
Цитата olegpersh999 (  ) Так ты делаешь пульт для участка НВ - Сургут или для другого участка? Пульт будет работать для любых участков. Вся инфа берется из .DAT файлов и pult.bmp (картинка). Кроме того, уже реализована возможность играть на сквозных участках (2х и более) и возможность мультиплеера.Добавлено (19.07.2025, 14:03) ---------------------------------------------
Цитата V9 (  ) 0.7, 0.8, 0.9, 1.0 - еще не придумал, что планируется. Придумал задачу для 0.7: "Путейские окна + вариативный график движения поездов". Прога будет планировать путейские окна, а к ним строить вариативный график движения поездов.
| |
| |
olegpersh999 | Дата: Воскресенье, 20.07.2025, 10:07 | Сообщение # 511 |
Начальник станции
Группа: Пользователи
Сообщений: 230
Награды: 3
Репутация: 0
Статус: Offline
| Цитата V9 (  ) Придумал задачу для 0.7: "Путейские окна + вариативный график движения поездов" оо, вот это интересно. А то поезда идут и идут, а окна только на двухпутке получается делать. Пока было мало поездов, спланировал 12 часовое окно на однопутном перегоне. Грузовые прятал по станциям и на двухпутке и пропускал только пассажирские. В итоге их соответственно пришлось поубивать и потом разъезжаться 
Сообщение отредактировал olegpersh999 - Воскресенье, 20.07.2025, 10:08
| |
| |
V9 | Дата: Воскресенье, 20.07.2025, 13:55 | Сообщение # 512 |
Поездной диспетчер
Группа: Пользователи
Сообщений: 559
Награды: 12
Репутация: 3
Статус: Offline
|
| |
| |
V9 | Дата: Воскресенье, 20.07.2025, 17:06 | Сообщение # 513 |
Поездной диспетчер
Группа: Пользователи
Сообщений: 559
Награды: 12
Репутация: 3
Статус: Offline
|  Когда-то эта белая фигня станет зеленым пультом...
| |
| |
olegpersh999 | Дата: Воскресенье, 20.07.2025, 17:14 | Сообщение # 514 |
Начальник станции
Группа: Пользователи
Сообщений: 230
Награды: 3
Репутация: 0
Статус: Offline
| любопытно
| |
| |
V9 | Дата: Воскресенье, 20.07.2025, 21:04 | Сообщение # 515 |
Поездной диспетчер
Группа: Пользователи
Сообщений: 559
Награды: 12
Репутация: 3
Статус: Offline
|  "белая фигня" превратилась в зеленую, появились станции и пути. Далее долгая и мучительная настройка видимости и управляемости.
| |
| |
skiff4832 | Дата: Воскресенье, 20.07.2025, 23:04 | Сообщение # 516 |
Станционный диспетчер
Группа: Пользователи
Сообщений: 51
Награды: 0
Репутация: 0
Статус: Offline
| Довольно любопытно, ждем
| |
| |
V9 | Дата: Вторник, 22.07.2025, 08:15 | Сообщение # 517 |
Поездной диспетчер
Группа: Пользователи
Сообщений: 559
Награды: 12
Репутация: 3
Статус: Offline
| Уперся в то, как должны быть представлены в data.dat станционные парки. Могут быть очень сложно сконструированные станции типа Агрыза, где куча парков, часть - последовательно расположенных, часть - параллельно.
Для моего сима, где упор на чтение из data.dat, это достаточно критично.
Добавлено (22.07.2025, 12:48) --------------------------------------------- upd. Нет проблем. Временное решение сделаю на наше участок только, оно все равно будет временным так как основное решение будет графическим.
Добавлено (22.07.2025, 17:41) ---------------------------------------------
Код [Data_Station_Yards] ;Информация по многопарковым станциям. ;1 - Код станции, ;2 - Смещение оси парка относительно оси станции по направлению роста километров, в сотнях метров. 10 = 10 сотен = 1 км. >1000 - минус значение, ;3 - Rоличество путей в парке ;4 и далее - номера путей в кодировке Data_Put 56, 0, 4, 102, 1101, 103, 105 56, 1011, 7, 7, 6, 5, 4, 3, 2, 1001
[Data_Station_Yards_Names] ;имена парков для индексации в ГИД(Пульта). Соотвествует порядку расположения парков в секции Data_Station_Yards Pss, Frt
Сделал изменение в data.dat чтобы мой сим корректно отрабатывал многопарковые станции.
Добавлено (22.07.2025, 17:51) --------------------------------------------- upd. Оказывается то, что мы называем "парк" в английском железнодорожном - "yard". Reception yard - парк приема, classification yard - сортировочный парк, departure yard - парк отправления.
Добавлено (22.07.2025, 17:53) --------------------------------------------- https://en.wikipedia.org/wiki/Rail_yardДобавлено (22.07.2025, 19:51) --------------------------------------------- Вопрос к комьюнити! Как вы бы хотели рулить пультом - с упором на мышь или с упором на клавиатуру? Добавлено (22.07.2025, 21:36) --------------------------------------------- в проекте перевалили за 7000 строк. Сейчас - 7075.
Сообщение отредактировал V9 - Вторник, 22.07.2025, 18:03
| |
| |
olegpersh999 | Дата: Среда, Вчера, 06:53 | Сообщение # 518 |
Начальник станции
Группа: Пользователи
Сообщений: 230
Награды: 3
Репутация: 0
Статус: Offline
| Цитата V9 (  ) Как вы бы хотели рулить пультом - с упором на мышь или с упором на клавиатуру? мне с мышкой удобнее
| |
| |
V9 | Дата: Среда, Вчера, 11:15 | Сообщение # 519 |
Поездной диспетчер
Группа: Пользователи
Сообщений: 559
Награды: 12
Репутация: 3
Статус: Offline
| Цитата olegpersh999 (  ) мне с мышкой удобнее Записал!
Оффтоп.О сложностях разработки.
Я делаю так, что мой сим грузит инфу не из одного data.dat, а из трех файлов - data.dat, dsim.dat, polygon.dat. Замысел в том, что в других файлах можно уточнять инфу из data.dat. Скажем, сделать другое расписание с тем же графом путей. Другой граф путей (с тем же расписанием). В будущем, замысел, что будут еще временные метки, когда сим меняет структуру путей и(или) расписание "на ходу".
Но появились сложности.
- Нельзя полагаться на расположение данных в data.dat. Так как данные могут быть перезаписаны из других файлах. Единственный выход: делать разбор данных и грузить разобранное в промежуточные хранилища. А потом, вторым этапом, проверять корректность данных и увязывать друг с другом, т.н. "линковка".
- На первом этапе проверяем, что, к примеру, в числах нет букв. И есть сами числа. Тут все просто: в момент ошибки мы укажем пользователю, где и какая ошибка.
- Но есть еще ошибки линковки. Пример.
Код [Data_Station_Yards] ;Информация по многопарковым станциям. ;1 - Код станции, ;2 - Смещение оси парка относительно оси станции по направлению роста километров, в сотнях метров. 10 = 10 сотен = 1 км. >1000 - минус значение, ;3 - Rоличество путей в парке ;4 и далее - номера путей в кодировке Data_Put 56, 0, 4, 102, 1101, 103, 105 56, 1011, 7, 7, 6, 5, 4, 3, 2, 1001
- Добавлена информация о парках станции НВ1, код - 56. Лежит инфа в polygon.dat. Но пользователь по ошибке запихал polygon.dat не в Territory/1 (где есть НВ1) в полигон Territory/2, где НВ1 нет, зато есть двухпарковый Сургут (код - 41, парки другие, коды путей - другие). В момент загрузки секции данных мы ничего не знаем, есть у нас НВ1 или нет. Это выяснится в процессе линковки.
- И тут проблема. Выяснив проблему, мы не можем указать пользователю, ни в каком файле была проблема, ни в какой строке файла была проблема. Проблему указать можем, а ткнуть пальцем - нет.
- То есть. Требуется добавлять хранилища данных. Одно должно хранить сведения, из какого файла было прочитаны указанные данные. Во втором - построчное соотствие прочитанным данным и .dat-файла. Тогда при ошибке в момент линковки, прога сможет точно указать пользователю, где, какая проблема есть, в каком файле искать, в какой строке текста файла.
- Но всё это дополнительные сложности с которыми приходится бороться.
Добавлено (23.07.2025, 20:17) --------------------------------------------- Господа дистетчеры! Ищу регламент переговоров ДНЦ-ДСП по типовым операциям движения поездов. Добавлено (23.07.2025, 20:48) --------------------------------------------- upd. Это в рамках расчета потребного времени на перегоры. Дабы симулировать физическое ограничение диспетчеру на прием-отдачу команд.
| |
| |
|