Патч "Станционный Смотритель"

Вопросы разработки OpenTTD, обсуждение новых сборок и патчей, решение проблем новых версий.

Модераторы: Smoky555, Группа модераторов

Сообщение Quark » Вт ноя 07, 2006 12:18

Kondor писал(а):
Quark писал(а):
Kondor писал(а):И опять-таки всякие пресигналы. Не всегда они работают корректно. Есть две рельсы ведущие в одну сторону, между ними перекрестие, два паровоза подошли одновременно. Есть возможность ОБОИМ проехать прямо. Поедет только один. Непорядок.
либо не до конца понял их принцип работы


В описанной мной, выше, ситуации пресигналы не работают.
пресигналы не пропускают более одного поезда, для этого нужны PBS сигналы, но и у них есть свои условности, при которых они могут не пустить второй поезд
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Вт ноя 07, 2006 12:21

Kondor писал(а):В данном контексте под обслуживанием подразумевалось принятие составов перед разгрузкой, а не починка таковых. Поверь на 13 загрузочных станциях депо хватает.
если починка не нужна, то и депо ненужно :) разгрузочной станции буфер поездов никчему — она и так может все поезда пропустить
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение DarkFenX » Вт ноя 07, 2006 13:06

Neko,
>>>Децентрализация в своём доведённом до абсурда варианте и есть соединение только "Точка-Точка". Это и есть концептуальный изъян игры, когда только Точка-Точка может дать максимальную прибыль.
Ты не понял - я именно про заводы, а не про саму ж/д сеть, к ней это никоим боком не относится.
В TTDP, кстати, играл на практически таких же настройках (а там 256х256) - аналогичных проблем не видел... потому что это твоя глобальная задача - дать хотя бы примерно равномерную нагрузку на все участки, а не везти все к 1 предприятию/городу.
Kondor,
>>>Мне не интересен бой с соперником. Мне интересен процесс "творения", я ловлю кайф именно от разгребания завалов Smile
Мне тоже не нравится... и где-то я уже писал, что в ТТ играю именно как в продвинутую песочницу :)
Но если кто-то эти завалы сам себе создает, а потом жалуется, что не разгрести... то это ппц.
- It's hot as hell in here.
- You see it too? For me, it's always like this.
Аватара пользователя
DarkFenX
Директор
Директор
 
Сообщения: 303
Зарегистрирован: Сб окт 28, 2006 12:50
Откуда: Russia, Saint-Petersburg

Сообщение Neko » Вс ноя 26, 2006 07:37

Quark писал(а):...можно пример зацикливаний? мне кажется, что если разобраться как работает PBS, то всё можно и с его помощью сделать, в нём тоже куча условностей, влияющих на его работу


Я привожу два рисунка - начальное состояние и финальный клин.
Это типичная трёхплатформенная станция, которую я использую в каждом городе. Про это я писал в Описалове 4.
В Депо есть поезд, который хочет попасть на платформу.
В исходном состоянии для обоих поездов сигнальный блок открыт, поэтому, согласно общему алгоритму программы, оба этих поезда получают команду на движение.
Если не принять специальных мер по организации реверса, то финал с клином неизбежен.
У меня в патчах используются три разных быстрых реверсов:
1) Реверс от вдруг покрасневшего выходного из Депо фонаря.
2) Реверс из патча "Клин клином", когда два поезда пытаются попасть на одну и ту же платформу с разных сторон на проходной станции.
Тогда один поезд поедет на платформу, а другой уткнётся в красный фонарь, и, чтобы не блокировать проезд, возвращается в исходное состояние.
3) Быстрый реверс для Станционного Смотрителя - это улучшенный вариант варианта 2).
Здесь я всё время отслеживаю соответствующий фонарь, и как только если он покраснеет, то я тут же даю команду на реверс, не дожидаясь того, как поезд не подъедет непосредственно к фонарю. Это нужно для правильной работы с использованием YAPF.
Для приведённых рисунков сработает вариант 1, поезд вернётся в Депо и позволит другому поезду туда же заехать.

Quark писал(а):Я целиком и полностью за смотрителя — в последнем обновлении есть патч на исходники, если Neko всунет туда свой патч, то возьму на себя труд сделать совместимость сейвов :)


Совместимость сейвов сделать можно, только толку от этого не будет никакого.
Играть это сможет только в одном случае, если полностью выключить мои патчи, а тогда зачем их ваще ставить.
А если эти патчи включить и загрузить старую савку, то игра проинициализируется только начальными значениями переменных, что тут же приведёт к полной неработоспособности конкретной загруженной игры.
У меня в патчах добавлнено много переменных к базовым структурам, которые в игре принимают те или иные значения. Что же это такое будет, если все эти переменные сбросить в начальные значения?
В силу этих причин я давно забросил даже попытки хоть как-то поддерживать совместимость.
По этому поводу здесь уже неоднократно возникали бурные обсуждения, свою точку зрения я там высказал, и пока не вижу веских причин поменять свой тезис - "Новая сборка - начинай новую игру".

Quark писал(а):однако в патче есть несколько нехороших моментов:
1) нет совместимости с сейвами, но это решаемо;


А вот что я действительно считаю важным - это обеспечение возможности переноса старых СЦЕНАРИЕВ на игру с патчами xUSSR.
Мне кажется, что эту проблему можно решить, просто я за неё пока не брался.

Quark писал(а):2) настройка координат вручную как-то не к месту, вроде их можно автоматически определить


Первый (неопубликованный здесь) вариант Михалыча был полностью автоматическим. Не было никаких дополнительных окошек и ручных настроек. Надо было только нажать на Михалыча и всё.
Но в процессе игры в этот вариант я столкнулся с той проблемой, что у меня появлялись станции разной конфигурации, и вшитый в прогу фиксированный радиус обзора из Депо не всегда удовлетворял меня.
Тогда я сделал заведомо большой радиус, но тут же столкнулся с другой проблемой - две близко стоящие станции начинали конфликтовать друг с другом.
Тогда я сделал ручную установку радиуса обзора и, заодно, окошко с расчитанными координатами - это для контроля в процессе отладки патча. Это окошко я в окончательном варианте планировал выкинуть.
Но даже с изменяемым вручную радиусом обзора я не смог решить проблему с конфликтом Михалычей у двух рядом стоящих станций.
Только достаточно намытарившись, я решил сделать установку радиуса обзора регулируемым по всем координатам отдельно, а окно с координатами не стал выбрасывать, а оставил для штатной работы, чтобы каждый мог проконтролировать свои настройки.
Единственное, что я хотел, но у меня пока не получилось - это сделать подсветку радиуса обзора наподобие, когда мы простую платформу ставим, там у нас зона охвата показывается подсветкой квадратиков.
Я тоже такую хачу.

Quark писал(а):3) снятие ограничения скорости при заходе в депо — депо и так читерное в одну клетку, так еще и заезд туда теперь свободный :)


К скорости входа в Депо у меня у самого неоднозначное отношение.
С одной стороны - ломать чужой труд, т.е. снимать ограничение скорости, не в моих правилах.
Но с другой стороны - у меня очень активно, особенно на ранних этапах игры, используется одноколейка. Там достаточно много Депо, скорость доставки груза достаточно значительно понижается. Вот я и решил сделать хоть какую-то поблажку себе и тем, кто захочет поиграть в одноколейку, снятием снижения скорости в Депо.
Но при этом, при входе и выходе из Депо имеются поворотные треки - там я скорость не трогал. В итоге, выигрыш за счёт моего "мухлевания" хоть и есть, но не такой заметный.
В разных сборках я то ставлю это ограничение, то не ставлю, но всё больше и больше склоняюсь к тому, что пользы от этого чуточку больше, чем вреда. Да и это ограничение включается, если играть с этими патчами. А для всех остальных игрателей всё остаётся в первозданном виде.

Quark писал(а):4) множество необходимых условий, например «В Станционном Смотрителе все поезда могут выезжать только на WayPoint»


По этому пункту надо дать отдельные пояснения.
Дело в том, что в данном моменте Михалыч сделан в "исследовательском" варианте.
Я попытался предусмотреть различного рода нештатные ситуации, которые могут возникнть в игре, но у меня есть большое подозрение, что ещё многого я не предусмотрел. Поэтому я нашпиговал патч всевозможными проверками на корректность, поставил туда обычную печать с целью набрать статистику, чтобы в дальнейшем решить, как автоматически решать ту или иную проблему.
С чем я уже сейчас столкнулся - это то, что одно и тоже событие может происходить в совершенно разных ситуациях, причём, если одну ситуацию я вполне могу и должен буду обрабатывать автоматически, то другую - это уже исправлять должен сам игратель руками.

Но всё это касается уже дальнейшей работы над патчем, поэтому более детальное обсуждение следует вести отдельно с участием всех заинтересованных сторон.
Вложения
Исходное.jpg
Это исходное состояние
Исходное.jpg (42.86 Кб) Просмотров: 12228
Клин.jpg
А это типичный клин, который можно разрулить только с помощью дополнительного программирования реверса
Клин.jpg (43.76 Кб) Просмотров: 12228
Последний раз редактировалось Neko Вс ноя 26, 2006 09:55, всего редактировалось 2 раз(а).
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Silicon » Вс ноя 26, 2006 09:20

2 Neko, можно ли реализовать в смотрителе "быстрый реверс" поезда от светофора с waypoint'ом, если он покраснел, пока поезд к нему ехал? Это нужно для реализации многопутных станций. Поясняю (см схему путей на картинке): пусть комбо-сигнал перед WP pass - зеленый, т.е. одна из пассажирных платформ свободна и поезд может заехать. Поезд выезжает из депо-смотрителя, проезжает выходной фонарь, а в это время навстречу ему со станции выезжает другой поезд. Результат - оба упираются в светофор у Waypoint pass. Если бы был реверс, то поезд, выехавший из "смотрителя" и упершийся в красный "контрольный" светофор, убрался бы обратно в депо и смиренно ждал, пока встречник уйдет на перегон.
Заранее предвижу вопрос: а нафига? (патч делался в расчете 1 платформа - 1 груз). Отвечаю (и думаю есть те, кто меня поддержит): станция на 3 путя в большом городе как-то не смотрится - язык не поворачивается назвать "это" ЖД централом. Компактность - не всегда сестра таланта.
PS плиз увеличь МАХ количество городов при ручной усатновке. ИМХО 50 городов на карту 2048х2048 маловато будет :(
Вложения
TAK_HADO.png
TAK_HADO.png (39.82 Кб) Просмотров: 12250
Изображение
Аватара пользователя
Silicon
Диспетчер
Диспетчер
 
Сообщения: 165
Зарегистрирован: Ср авг 09, 2006 20:12
Откуда: Саров

Сообщение Neko » Вс ноя 26, 2006 10:13

Silicon писал(а):...по пункту 4 - только через waypoint'ы ладно, а вот то, что выход только один - иногда неудобно.


Тот Михалыч, который сейчас - это пробный вариант, чтобы обкатать и проверить только саму идёю, её жизнеспособность.
А в голове у меня вертелось и два отдельных Михалыча на две независимые станции в одном Депо, и ещё всяко разного.
Сейчас в моей текущей игре, например, Михалыч вполне справляется на разъезде на множество разных направлений, кроме выполнения своих прямых служебных обязанностей на станции.

Ты мне фотку сделай того, что ты хотел по поводу нескольких выходов, чтобы я понял, что ны непосредственно хочешь.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Neko » Вс ноя 26, 2006 10:37

Silicon писал(а):... можно ли реализовать в смотрителе "быстрый реверс"


А у меня как раз такой реверс и есть. Разве он у тебя не сработал? Тогда ты мне свою савку на мыло пришли - я буду разбираться.
А фотка твоя мне понравилась. Если это нормально будет работать, то это будет ещё одним способом использования Михалыча.

Silicon писал(а):PS плиз увеличь МАХ количество городов при ручной усатновке. ИМХО 50 городов на карту 2048х2048 маловато будет :(


Сейчас поставлю 200 (хватит? или ещё больше поставить) и выложу на старое место.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Quark » Вс ноя 26, 2006 12:44

Neko писал(а):Совместимость сейвов сделать можно, только толку от этого не будет никакого.
Играть это сможет только в одном случае, если полностью выключить мои патчи, а тогда зачем их ваще ставить.
А если эти патчи включить и загрузить старую савку, то игра проинициализируется только начальными значениями переменных, что тут же приведёт к полной неработоспособности конкретной загруженной игры.
У меня в патчах добавлнено много переменных к базовым структурам, которые в игре принимают те или иные значения. Что же это такое будет, если все эти переменные сбросить в начальные значения?
В силу этих причин я давно забросил даже попытки хоть как-то поддерживать совместимость.
По этому поводу здесь уже неоднократно возникали бурные обсуждения, свою точку зрения я там высказал, и пока не вижу веских причин поменять свой тезис - "Новая сборка - начинай новую игру".
ну так при загрузке игры можно проверить есть там патч или нету, и если нету, то алгоритм поведения такой же как и при загрузке сценария — инициализация всех переменных, хотя я теперь думаю, что сценарий не загрузится :roll:
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Вс ноя 26, 2006 13:00

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

вообще патч бы лучше всего работал вместе с PBS в YAPF и расчётом пути до станции или вэйпоинта вместо обзора по радиусу :) но это конечно реализовать очень сложно, особенно учитывая что PBS в YAPF еще нет :)
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Вс ноя 26, 2006 13:17

в схему на рисунке можно еще добавить ветку из депо на выходную линию
Вложения
pbs example.png
вот пример станции с блоком PBS
pbs example.png (11.9 Кб) Просмотров: 12221
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Neko » Вс ноя 26, 2006 14:48

Если использование PBS в состоянии заменить Михалыча хотя бы в части решаемых им задач, то это просто замечательно - по крайней мере отпадёт необходимость ставить патчи xUSSR на твои, так часто изменяющиеся сборки.

А вот идея делать главную ставку на PBS для меня так и остаётся крайне непривлекательной. PBS в силу своей недоделанности до сих пор не включили в trunk и, похоже, и не будут туда включать. А YAPF до сих пор не доработали до возможностией PBS.
Поэтому, мне всё больше кажется необходимым сделать свой сигнальный блок, чтобы быть полностью отвязанным от существующих и мало меня устраивающих сигнальных блоков, и иметь закладывать такие алгоритмы обработки, которые мне необходимы.
Из существующих юнитов под это дело возможно использовать СЕМАФОР. Это экзотика - его мало кто использует - можно всегда договориться, чтобы использоваеть его для особых целей.
Для этого юнита надо запрограммировать всё необходимое - базовую структуру с индексом, координатами, цепочкой ссылок на сигнальный блок и всё остальное, что потребуется. Сделать выделение памяти и организовать сохранение в савке. И добавить модуль обработки в главном тиковом цикле обрабокти задачи.
После этого, получится вполне самостоятельный юнит, который постоянно можно будет пополнять необходимыми алгоритмами обработки.
Например, я хотел бы иметь привязку этого сигнального блока к Депо и к Станции.
Тогда можно было бы работать связкой юнитов, т.е. выполнять обработку в Депо, как у меня сейчас, но поезд при этом, мог и не заходить в это самое Депо. Т.е. можно было бы отказаться от обязательного захода в Депо, а решать каждый раз отдельно, что делать поезду, попавшему в сигнальный блок.
А привязка сигнального блока к Станции, да не одного блока, даже двух блоков с каждого торца Станции, может дать очень грамотно работающую проходную станцию.
В принципе, вся тяжесть обработки могла бы перейти от Депо (как сейчас у меня в патчах) к сигнальному блоку. А в Депо поезда принудительно уже не заходили бы, а направлялисть туда только в тех случаях, чтобы спрятать очередь из ждущих поездов, чтобы спрятать их.
И наконец, можно было бы сделать нормальные сложные развязки, а не то, чем вынужденно приходится пользоваться сейчас.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Neko » Вс ноя 26, 2006 14:59

Quark писал(а):...вообще патч бы лучше всего работал вместе с PBS в YAPF и расчётом пути до станции или вэйпоинта вместо обзора по радиусу :)


В самом начале я хотел сделать настройку, используя сканирование по реально построенным рельсам. Если сделать нормально работающую рекурсивную функцию, то это и не сложно было бы сделать.
Но я не знал как решить ситуацию, когда на одном из возможных путей не встретилось бы ни одного WayPoint, а это вполне обычная и штатная в моих играх ситуация.
Пришлось бы опять вводить какой-то эквивалент радиуса обзора...бла...бла...бла... и мы опять огребли бы все те проблемы, о которых я уже выше.
А во-вторых, мне очень хотелось получить хоть как-то работающий патч как можно быстрее, поэтому я и выбрал алгоритм с радиусом обзора, который программировать и отлаживать на порядок быстрее.
Но я совсем не собираюсь ставить крест на, на мой взгляд, более крутой алгоритм с полностью автоматической настройкой и обработкой нештатных ситуаций.
Только я не спешу этим заняться, т.к. считаю, что идея с сигнальным блоком на основе Семафора более перспективная, и если она получится, то все патчи надо будет переделывать на корню.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Quark » Вс ноя 26, 2006 15:35

идея с сигнальным блоком на основе Семафора действительно хорошая и даже можно заменить графику семафоров на новые светофоры :)

а рекурсивная функция поиска всё равно должна считать количество рекурсий и останавливать поиск — нет смысла искать нужный блок на другом конце карты или ходить кругами по замкнутой линии (я думаю тут можно просто модифицировать обычный алгоритм поиска)

патчи xUSSR у меня не получилось внедрить, так как наткнулся на различный дополнительный код в одном и том же месте и даже в одной и той же функции — если решить эту проблему один раз, потом останется только за изменениями следить
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Neko » Вс ноя 26, 2006 16:04

Quark писал(а):...если решить эту проблему один раз, потом останется только за изменениями следить


Общий программный код так стремительно и кардинально меняется, что каждый перенос патчей на новую сборку всегда у меня вызывает очень большие проблемы, вплоть до изменения некоторых кусков кода и мучительного сопряжения с другими патчами.
Поэтому, установить патчи один раз, а потом только пылинки с них сдувать, к сожалению, это стопудово не получится, хотя бы исходя из моего опыта.
В силу этих причин я и не стремлюсь очень часто менять сборки, давая возможность себе и другим наиграться в существующую. Правда, когда в MiniIN появляется что-то новое и экстранеординарное, только тогда.

А ты делаешь весьма интересную и продвинутую сборку, постоянно поддерживая её актуальность.
У тебя и так там всё крутое, и не очень-то и нужны там мои патчи, в которые никто и не играет.
А патчи Koser'a про строительстов домиков и вечно летающие самолёты можно поставить отдельно - с их установкой проблем не должно быть.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Quark » Вс ноя 26, 2006 16:34

наверное ты говоришь о коде YAPF :) — его действительно постоянно обрабатывают

кардинальных изменений, затрагивающих внедрённые мною патчи практически нет, даже utf8 только одну функцию задела в 32bpp (это если без freetype) — так что фактически я как раз и сдуваю «пылинки» :)

наибольшие проблемы были когда ввели новые виджеты, но я это время не застал :)
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Пред.След.

Вернуться в Разработка OpenTTD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1