Перейти к содержанию
Admin

Заказ №30: "Маршрутизация метро"

Рекомендуемые сообщения

Основное направление разработки на данный момент:

Описание на GitHub | Вспомогательная таблица

 

 


 

 

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

 

Оплата за схему развязок = 6 стеков изумрудных блоков

Оплата за подготовку отдельной развязки = 1 стек изумрудных блоков

 

Список станций тут.

 

В качестве награды, как минимум - CSLf8v7.png

 

Схема линий, станций и развязок:

efkBknA.jpg

 

 

Развязки, маршруты, команды:

Спойлер

 

При текущем подходе [для экономии командных блоков при проверке проезжающего игрока] используется "маршрут по умолчанию = на спаун": это означает, что все стрелки по умолчанию ведут на спаун.

Из-за этого необходимо выполнять сброс стрелки после проезда игрока.

 

 

При подготовке команд:

  • сначала идут команды в командных блоках: последовательность - сверху (от нажимных рельс) вниз
  • в конце должна быть команда сброса конкретной стрелки в исходное положение

 

Коды направлений рельс:

  • 0: Север-Юг (Юг-Север)
  • 1: Запад-Восток (Восток-Запад).
  • 6: Юг-Восток (Восток-Юг).
  • 7: Юг-Запад (Запад-Юг).
  • 8: Север-Запад (Запад-Север).
  • 9: Север-Восток (Восток-Север).

 

Последний вариант с деревом квадрантов

Спойлер

 

Про КБ выдачи названия станции в чат и ассоциации номер -> адрес в отдельную группу КБ  тут

Список развязок и станций с адресами  тут

Схема дерева квадрантов и станций и развязок на нем  тут

 

У нас 61 развязка и 43 станции (не считая новый спаун)

Глубина вложенности дерева - 5 уровней.

Но я немного читерил - те развязки, которые находятся близко, но у самой границы квадранта, я разносил в разные ячейки, дабы не увеличивать глубину дерева. 

 

C1Q34ep.png

Описание команд развязки тут

 

 

 

 

Старый вариант

Спойлер

 

 

1b8YBqs.jpg

 

Стрелка 1



/execute @p[r=20,score_MetroSt_min=2,score_MetroSt=2] ~ ~ ~ /setblock 44 33 -100 rail 0
/execute @p[r=20,score_MetroSt_min=7,score_MetroSt=15] ~ ~ ~ /setblock 44 33 -100 rail 0
/execute @p[r=20,score_MetroSt_min=24,score_MetroSt=26] ~ ~ ~ /setblock 44 33 -100 rail 0
/execute @p[r=20,score_MetroSt_min=32,score_MetroSt=42] ~ ~ ~ /setblock 44 33 -100 rail 0

/setblock 44 33 -100 rail 7 

Стрелка 3



/execute @p[r=20,score_MetroSt_min=1,score_MetroSt=43] ~ ~ ~ /setblock 41 33 -91 rail 9

/setblock 41 33 -91 rail 0 

 

Стрелка 2



/execute @p[r=20,score_MetroSt_min=1,score_MetroSt=1] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=3,score_MetroSt=6] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=16,score_MetroSt=23] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=27,score_MetroSt=31] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=43,score_MetroSt=43] ~ ~ ~ /setblock 41 33 -96 rail 8

/setblock 41 33 -96 rail 0  

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, RedTeapot сказал:

 

А можно еще упороться: игрока высадить с помощью рельсы-активатора, а вагонетка пущай уезжает в технический тоннель высотой 1 блок, где с ней можно делать что угодно. Но зачем?

Так эта - так и было до 1.5, когда появились кб (в первом посте темы "Метро 2" это даже упоминается, как модернизация): вагонетка останавливалась и игрок выходя из неё обязательно наступал на плиту = вагонетка стартовала и уезжала в стену (отверстие высотой с один блок) - там была система на основе воронки и лавы, когда вагонетка как-то с помощью лавы исчезала и успевала забраться вагонеткой - всё это складывалось в несколько двойных сундуков, где было много стеков вагонеток, а выдавались вагонетки по нажатию кнопки = выезжали из этого депо.

 

Видели табличку RIP с ником лошадки? Вроде, на спауне.
Так вот - в эти "депо" очень часто уезжали игроки, а т.к. там всё было в бедроке + в лаве, то... естественно, это было депо смерти :D

 

Вот первый ручной вариант 2012 года.

 

@FoxSus, кстати, вот та самая шина в технических тоннелях для передачи двоичного сигнала + конкретно на этих скринах - передатчик сигнала, т.к. сигнал можно передавать только в активных чанках:
http://mc.bbcity.ru/viewtopic.php?id=196&p=6#p6181

 

Собственно, вот тут обсуждали варианты перевода маршрутизации на кб.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 30.07.2017 в 12:38, RedTeapot сказал:

Немного пытаюсь повтыкать в эту тему. Есть еще идея - отказаться от адресов станций (определять станцию по адресу подключенной к ней развязке + ее номеру (на случай, если к одной развязке подключено две и более станции)). Возможно, это упростит задачу. Возможно, нет. Наверное, вдобавок к этому надо будет как-то умудриться искать пути в графе с учетом дерева квадрантов, но я пока слабо представляю. Ручками пофиксить проблемные места пока не очень выходит: в одном месте чинится, но ломается в другом.

Хотел поинтересоваться как успехи, удалось "повтыкать"? ) 

Ps уж очень интересна эта тема 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Admin сказал:

Давай вместе подключать новые станции метро на первой ветке к уже работающей системе?

В автоматизации метро что-нибудь шаришь?

уже есть новая система?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

20 минут назад, JinenryokuFu сказал:

уже есть новая система?

Текущая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Давай вместе подключать новые станции метро на первой ветке к уже работающей системе?



Станций то кол-во огромное, но приехать то можно только на 6 или 5 станций(точно не помню), что намного уменьшает функциональность метро

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

28 минут назад, EChris_ сказал:

Станций то кол-во огромное, но приехать то можно только на 6 или 5 станций(точно не помню), что намного уменьшает функциональность метро

в этом и есть суть моего обращения к Ахнатону - я ему предлагаю заняться настройкой подключения имеющихся построенных станций - чтобы на них можно было ехать

там работы - ад и маленькая тележка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 часов назад, Admin сказал:

там работы - ад и маленькая тележка

а можно еще раз сформулировать текущую систему маршрутизации? Та, которая была до квадрантов, для которой у меня часть команд была готова? Просто тупо диапазонами ручная маршрутизация с кучей кб под каждой стрелкой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

39 минут назад, JinenryokuFu сказал:

а можно еще раз сформулировать текущую систему маршрутизации? Та, которая была до квадрантов, для которой у меня часть команд была готова? Просто тупо диапазонами ручная маршрутизация с кучей кб под каждой стрелкой?

текущая система - это те же квадранты

команды для новых развязок не готовы

количество кб на развязке - минимальное

центр обработки из некскольких десятков кб вынесен в скрипты и в ЦНС занимает один кб

 

основная сложность - продумывание команд для каждой развязки в уме: многомерное дерево квадрантов, сложносоставная переменная, множество точек отправления и назначения, пересечение с другими маршрутами, продумывание маршрута на следующих развязках - и это всё надо учесть для каждой стрелки на развяке отдельно, а стрелок 3-4 = будет множество ошибок и куча переделок, а потом снова переделок, а потом ещё переделки, и снова переделки...

 + отдельное время на подключение каждой станции: я оцениваю это в час и более времени на каждую станцию, как бы просто это ни было

 

Спойлер

по поводу переделок

всё кажется очень просто: например, сделать развязку для 47-ой станции не сложно: кодим потоки вниз, кодим потоки вверх + заезд на станцию

но косяки вылезут, когда кто-нибудь поедет через эту развязку в будущем на какую-нибудь 37-ую станцию - через всю карту

 

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

 

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

и так будет каждый раз

 

в этом косяк ручной наладки

 

но ждать уже давно надоело + время немного появилось

 

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

не осилили

 

давно есть желание попробовать ручками это сделать: один я не хотел за это браться, но и заставлять и даже просить никого не хочу = Ахнатон сам вызвался и я ему предлагаю вместе заморочиться на этот гемор

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

 * как-нибудь найду время глянуть

 

Но есть и косяк :)

Ахнатону было сложно прикидывать даже укладку админиума с учётом всего лишь слоя отделки )))
А тут эти ваши - многомерные деревья квадрантов, сложносоставные переменные, множество точек отправления и назначения и т.д... :D

 

 


 

 

Если есть желание подключиться и продолжить эту тему, предлагаю вам с Ахнатоном объединить усилия и попробовать подключить, например, 47-ую развязку: думаю, что на вкуривание нюансов + тесты локально или на бумаге у вас уйдёт несколько часов времени. Само подключение осилит любой гм по вашим командам - там всего команд 10 надо написать и для этого не обязательно даже в игре находиться (команды все стандартные, разница только в их компоновке по стрелкам и в продумывании маршрута в уме по карте).
Далее я с помощью Рока попробую подключить первую новую станцию, чтобы самому убедиться, что всё работает, как запланировано.

Если с первой станцией справимся, далее будем последовательно подключать.

А когда закончим, будет ещё новая ветка... И дай бог, чтобы она смогла управляться имеющимся ЦУПом :)

 

 * кстати, есть предположение, что подключать лучше тупо последовательно по номерам станций, а не в произвольном порядке...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Admin сказал:

Но есть и косяк :)

Ахнатону было сложно прикидывать даже укладку админиума с учётом всего лишь слоя отделки )))
А тут эти ваши - многомерные деревья квадрантов, сложносоставные переменные, множество точек отправления и назначения и т.д... :D

     @Admin

     Не прикидывать укладку админиума, а раскапывать держа в голове два слоя, админиумовый и декоративный, и не в тоннеле а в сложном устройстве станции. 

     Мой метод выкладывать вместо админиума незерит как легко доступный материал, уменьшал количество слоев которые нужно держать в голове, у меньшая тем самым шанс ошибки которая может заставить затрачивать намного больше времени на исправление. Причем если бы вариант замены незерита на админиум командой сработал то все станции были бы щас админиумизированы. я два дня админиумизировал станцию 12го участка. Планирую седня закончить ее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

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

 

А так, уже есть проверка на наличие циклов и достижение правильной конечной станции (по идее - как раз все, что нужно). Вроде, все это есть у меня на гитхабе, потому кто-то может глянуть, если у меня не будет времени.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, RedTeapot сказал:

А так, уже есть проверка на наличие циклов и достижение правильной конечной станции (по идее - как раз все, что нужно). Вроде, все это есть у меня на гитхабе, потому кто-то может глянуть, если у меня не будет времени.

так...

ты же понимаешь, что тут мало кто что отдупляет? :)

 

1 час назад, RedTeapot сказал:

все это есть у меня на гитхабе

тут есть - введение, описание системы, примеры и... всё...
как получить эти примеры?

 

для этого у нас есть таблица с исходными данными - там есть куча буковок и цифорок )))

также там даже помечены проблемные станции/развязки, которые надо подшаманить

отдельно хочу отметить, что в зависимости от того, как кто-то из нас вобьёт исходные данные в эту таблицу - будет зависеть результат!!

например: станцию может находиться на границе квадрантов - её можно отнести к одному квадранту, а можно к другому; мы это уже обсуждали с тобой - ты всё делал чётко, а я даже предложил хитрить и корректировать исходные данные так, чтобы станции оказывались в нужном нам квадранте = тогда команды будут правильные генериться = часть проблема решается с помощью такого "дерева кривантов" ))))

 

Как конкретные команды-то для конкретных кб на конкретных развязках сгенерить?

Наверное, чё-то скомпилировать и запустить...

 

Из сгенерированных команд можно же будет подключать станции в любой последовательности?

 


 

Может, если кто-то (я? я с Бориком?) сам научится их генерить, то действительно - никакой проблемы нет?
Типа, чё-то сегенерили -> вписали в кб на конкретной развязк -> потестили основные варианты -> скорректировали косяки -> потестили -> запустились -> if <жалоба_от_игроков> then go to <скорректировали_косяки> :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 минут назад, Admin сказал:

как получить эти примеры?

 

В исходниках на ветке quadcentric. В test.py в конце есть код проверки сгенерированной таблицы (схемы?) маршрутизации.

 

Можно либо слизать алгоритм, либо выдрать этот код и вогнать в него схему маршрутизации в определенном виде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 минуту назад, RedTeapot сказал:

В исходниках на ветке quadcentric. В test.py в конце есть код проверки сгенерированной таблицы (схемы?) маршрутизации.

Можно либо слизать алгоритм, либо выдрать этот код и вогнать в него схему маршрутизации в определенном виде.

ну, да - всё понятно: я прям уверен, что это делов на 10 минут

я это не сделаю никогда :D

 

ладно, если буду делать я, то мне какой-нибудь Борик поможет

 

Есть желающие помочь?

@Ahnaton?
@JinenryokuFu?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, RedTeapot сказал:

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

я может чего не понимаю, но если взять таблицу маршрутов и попытаться отрисовать поочередно маршруты на готовой "сетке" квадрантов (ссылка вынесена в заголовочный пост), да еще и раздать готовую допустим программку энтузиастам, то будет сразу понятно, где косяки. Или я неправильно понимаю "таблицу маршрутов"?

 

Вы расскажите, что делать-то?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

1 час назад, Ahnaton сказал:

 @Admin

Готов помочь, объясните что делать сделаю.

 

28 минут назад, JinenryokuFu сказал:

Вы расскажите, что делать-то?

 

" - Мам, а где гвозди"?

" - Так вот же они!" ©

 

Рассказали же...

 

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

Просто он их генерит не идеально и надо после настройки развязки - тестировать её.
 

3 часа назад, RedTeapot сказал:

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

 

1 час назад, RedTeapot сказал:

В исходниках на ветке quadcentric. В test.py в конце есть код проверки сгенерированной таблицы (схемы?) маршрутизации.

Можно либо слизать алгоритм, либо выдрать этот код и вогнать в него схему маршрутизации в определенном виде.

 

Читай - надо "просто" сгенерить команды с помощью проги Чайника и вбить нужные команды в нужные кб на нужных развязках :D

 

1 час назад, Admin сказал:

я это не сделаю никогда

 

1 час назад, Ahnaton сказал:

объясните что делать

 

28 минут назад, JinenryokuFu сказал:

что делать-то

 

:D

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, RedTeapot сказал:

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

 

А так, уже есть проверка на наличие циклов и достижение правильной конечной станции (по идее - как раз все, что нужно). Вроде, все это есть у меня на гитхабе, потому кто-то может глянуть, если у меня не будет времени.

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

11 часов назад, Admin сказал:

либо слизать алгоритм, либо выдрать этот код и вогнать в него схему маршрутизации в определенном виде

то тогда будем пытаться, чо уж (с). 

 

11 часов назад, Admin сказал:

надо после настройки развязки - тестировать её.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Для сгенерированных команд весь маршрут тестировать не надо - это сделала программа Чайника.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

53 минуты назад, Admin сказал:

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

Ещёб ты в коде такие непотребства писал!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

4 часа назад, Lady_Lava сказал:

Ещёб ты в коде такие непотребства писал!

По факту - вызов функции скорректироватьКосяки(), ничего ужасного не вижу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×