Quark писал(а):...можно пример зацикливаний? мне кажется, что если разобраться как работает PBS, то всё можно и с его помощью сделать, в нём тоже куча условностей, влияющих на его работу
Я привожу два рисунка - начальное состояние и финальный клин.
Это типичная трёхплатформенная станция, которую я использую в каждом городе. Про это я писал в Описалове 4.
В Депо есть поезд, который хочет попасть на платформу.
В исходном состоянии для обоих поездов сигнальный блок открыт, поэтому, согласно общему алгоритму программы, оба этих поезда получают команду на движение.
Если не принять специальных мер по организации реверса, то финал с клином неизбежен.
У меня в патчах используются три разных быстрых реверсов:
1) Реверс от вдруг покрасневшего выходного из Депо фонаря.
2) Реверс из патча "Клин клином", когда два поезда пытаются попасть на одну и ту же платформу с разных сторон на проходной станции.
Тогда один поезд поедет на платформу, а другой уткнётся в красный фонарь, и, чтобы не блокировать проезд, возвращается в исходное состояние.
3) Быстрый реверс для Станционного Смотрителя - это улучшенный вариант варианта 2).
Здесь я всё время отслеживаю соответствующий фонарь, и как только если он покраснеет, то я тут же даю команду на реверс, не дожидаясь того, как поезд не подъедет непосредственно к фонарю. Это нужно для правильной работы с использованием YAPF.
Для приведённых рисунков сработает вариант 1, поезд вернётся в Депо и позволит другому поезду туда же заехать.
Quark писал(а):Я целиком и полностью за смотрителя — в последнем обновлении есть патч на исходники, если Neko всунет туда свой патч, то возьму на себя труд сделать совместимость сейвов
Совместимость сейвов сделать можно, только толку от этого не будет никакого.
Играть это сможет только в одном случае, если полностью выключить мои патчи, а тогда зачем их ваще ставить.
А если эти патчи включить и загрузить старую савку, то игра проинициализируется только начальными значениями переменных, что тут же приведёт к полной неработоспособности конкретной загруженной игры.
У меня в патчах добавлнено много переменных к базовым структурам, которые в игре принимают те или иные значения. Что же это такое будет, если все эти переменные сбросить в начальные значения?
В силу этих причин я давно забросил даже попытки хоть как-то поддерживать совместимость.
По этому поводу здесь уже неоднократно возникали бурные обсуждения, свою точку зрения я там высказал, и пока не вижу веских причин поменять свой тезис - "Новая сборка - начинай новую игру".
Quark писал(а):однако в патче есть несколько нехороших моментов:
1) нет совместимости с сейвами, но это решаемо;
А вот что я действительно считаю важным - это обеспечение возможности переноса старых СЦЕНАРИЕВ на игру с патчами xUSSR.
Мне кажется, что эту проблему можно решить, просто я за неё пока не брался.
Quark писал(а):2) настройка координат вручную как-то не к месту, вроде их можно автоматически определить
Первый (неопубликованный здесь) вариант Михалыча был полностью автоматическим. Не было никаких дополнительных окошек и ручных настроек. Надо было только нажать на Михалыча и всё.
Но в процессе игры в этот вариант я столкнулся с той проблемой, что у меня появлялись станции разной конфигурации, и вшитый в прогу фиксированный радиус обзора из Депо не всегда удовлетворял меня.
Тогда я сделал заведомо большой радиус, но тут же столкнулся с другой проблемой - две близко стоящие станции начинали конфликтовать друг с другом.
Тогда я сделал ручную установку радиуса обзора и, заодно, окошко с расчитанными координатами - это для контроля в процессе отладки патча. Это окошко я в окончательном варианте планировал выкинуть.
Но даже с изменяемым вручную радиусом обзора я не смог решить проблему с конфликтом Михалычей у двух рядом стоящих станций.
Только достаточно намытарившись, я решил сделать установку радиуса обзора регулируемым по всем координатам отдельно, а окно с координатами не стал выбрасывать, а оставил для штатной работы, чтобы каждый мог проконтролировать свои настройки.
Единственное, что я хотел, но у меня пока не получилось - это сделать подсветку радиуса обзора наподобие, когда мы простую платформу ставим, там у нас зона охвата показывается подсветкой квадратиков.
Я тоже такую хачу.
Quark писал(а):3) снятие ограничения скорости при заходе в депо — депо и так читерное в одну клетку, так еще и заезд туда теперь свободный
К скорости входа в Депо у меня у самого неоднозначное отношение.
С одной стороны - ломать чужой труд, т.е. снимать ограничение скорости, не в моих правилах.
Но с другой стороны - у меня очень активно, особенно на ранних этапах игры, используется одноколейка. Там достаточно много Депо, скорость доставки груза достаточно значительно понижается. Вот я и решил сделать хоть какую-то поблажку себе и тем, кто захочет поиграть в одноколейку, снятием снижения скорости в Депо.
Но при этом, при входе и выходе из Депо имеются поворотные треки - там я скорость не трогал. В итоге, выигрыш за счёт моего "мухлевания" хоть и есть, но не такой заметный.
В разных сборках я то ставлю это ограничение, то не ставлю, но всё больше и больше склоняюсь к тому, что пользы от этого чуточку больше, чем вреда. Да и это ограничение включается, если играть с этими патчами. А для всех остальных игрателей всё остаётся в первозданном виде.
Quark писал(а):4) множество необходимых условий, например «В Станционном Смотрителе все поезда могут выезжать только на WayPoint»
По этому пункту надо дать отдельные пояснения.
Дело в том, что в данном моменте Михалыч сделан в "исследовательском" варианте.
Я попытался предусмотреть различного рода нештатные ситуации, которые могут возникнть в игре, но у меня есть большое подозрение, что ещё многого я не предусмотрел. Поэтому я нашпиговал патч всевозможными проверками на корректность, поставил туда обычную печать с целью набрать статистику, чтобы в дальнейшем решить, как автоматически решать ту или иную проблему.
С чем я уже сейчас столкнулся - это то, что одно и тоже событие может происходить в совершенно разных ситуациях, причём, если одну ситуацию я вполне могу и должен буду обрабатывать автоматически, то другую - это уже исправлять должен сам игратель руками.
Но всё это касается уже дальнейшей работы над патчем, поэтому более детальное обсуждение следует вести отдельно с участием всех заинтересованных сторон.