Jump to content
Admin

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

Recommended Posts

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

Описание на 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  

 

 

Share this post


Link to post
Share on other sites

Сегодня Джин завис непонятно почему (см. в теме Глюки сервера), поэтому развязки не доделаны. У меня еще, по идее, будет интернет в пятницу днем (если меня не срубит), так что если Джин к тому времени освободится, то я смогу доделать и записать себе координаты последних развязок. Не сделаны: 4-5 и 8-14. И нет координат первой развязки.

Share this post


Link to post
Share on other sites
Достижения

3. На развязках 22, 24, 29,30 не видно дырки для Драка.

На этих развязках дырки сделал.

Share this post


Link to post
Share on other sites

Увы, не помню пароля от дропбокса, так что выложу сюда, а у меня на бумаШке записано. 

По сегодня:

1. последние девять развязок готовы, по идее, теперь все. 

2. на развязках 8-14 тоже нет дырок (остальное в файле помечено, там еще больше)

3. недостающие координаты 

1. 40 33 -94
4. -39 33 402
5. -43 33 515
8. -597 33 178
9. -597 33 917
10. -590 33 518
11. -597 33 575
12. -590 33 659
13. -597 33 737
14. -300 33 522

Теперь буду заниматься командами)

Share this post


Link to post
Share on other sites
Достижения

Ещё немного поделал дырок в развязках.

Под действующими линиями ничего раскапывать не нужно.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Достижения

1) в игре помечай, например, шерстью определённого какого-нибудь кислотного цвета

2) веди список на форуме: выбери один свой пост и там записывай выполненные развязки + развязки, которые не надо делать (под действующими линиями)

 

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

Share this post


Link to post
Share on other sites

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


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

Share this post


Link to post
Share on other sites
Достижения

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

Кстати, камень тебе же самому может пригодиться для сдачи его на стройку электростанции )

Share this post


Link to post
Share on other sites

Может поздно, но при виде рассуждений про разделение карты на квадранты мне пришла мысль о QuadTree.

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

Давай попробуем - вдруг, что-то интересное получится.

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

Если в теории всё получится, пиши сюда объяснительную :)

Share this post


Link to post
Share on other sites

Ну вы вот вообще. Я ведь один в один то же самое предлагал, а меня проигнорировали.

Share this post


Link to post
Share on other sites
Достижения

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

Если Чайник сможет расписать всё и показать, что планирование проще, а команд и командных блоков меньше, чем в предложенном мной варианте, то можно будет что-то дальше обсуждать.

Мой вариант в принципе достаточно простой: спланировал маршруты, расписал команды, закодил. Несколько муторно обновлять все развязки при добавлении новой станции. А как обстоят дела в вашем варианте?

Я считаю, что в предложенных вами вариантах всё по-другому, но по сложности также.

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

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

Я буду рад, если меня кто-то разубедит на бумаге или в кратком видео с локалки :)

Share this post


Link to post
Share on other sites

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

Если моя затея с Quadtree удастся, то, по сути, так оно и получится. Например, если поместить в Quadtree все станции, то выйдет примерно такая картинка:

WB3Z7Ni.png

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

Edited by RedTeapot

Share this post


Link to post
Share on other sites

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

  • Upvote 1

Share this post


Link to post
Share on other sites
Достижения

Вот немного размышлений по этому поводу. Warning: многабукафф и большие картинки.

Немного теории

QuadTree - дерево, у каждого узла которого имеется ровно 4 потомка. У нас оно используется для рекурсивного разбиения пространства на 4 одинаковых квадранта.

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

Чтобы упростить объяснения, мы будем нумеровать каждую ячейку таким образом:

Слева сверху - 0, справа сверху - 1, справа снизу - 2, слева снизу - 3 (то есть, по часовой стрелке)

Также, мы будем нумеровать уровни вложенности от нуля. То есть, если мы поделили карту в первый раз, то мы получили ячейки нулевого уровня. Если мы поделили ячейку нулевого уровня, мы получили ячейки первого уровня. И так далее.

Чтобы обозначать конкретную ячейку, я буду делать типа такого: 0-2-3. Это значит 0 ячейка на 0 уровне, 2 ячейка на 1 уровне, 3 ячейка на 2 уровне.

3i4xXjA.png

Допустим, есть у нас множество точек:

qDB0HHJ.png

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

wORpadc.png

Далее мы делим 1 и 3 ячейки еще раз, так как они содержат более одной точки.

PevZltj.png

После этого нам остается поделить ячейку 3-2:

DO0NYNP.png

На этом с теорией, в принципе, все. Надеюсь, что хоть что-то понятно.

Тестовый макет

Для тестирования мной был построен тестовый макет. Дорога односторонняя, все перекрестки - простые Т-образные. Естественно, это не является ключевым требованием к конечной системе. Но всего два состояния перекрестка позволяют упростить управление в разы.

IBAiTpE.png

DtJsfQc.png

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

На каждом подъезде к развязке установлены нажимные рельсы, активирующие цепочку КБ. Максимальная длина такой цепочки в худшем случае равна глубине вложенности дерева + 1.

Первый КБ в цепочке выключает стрелку (переводит ее в положение по умолчанию). Каждый следующий КБ активирует стрелку при соблюдении некоторых условий.

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

Например, для на развязке номер 2 стрелка активируется, если игрок движется слева в ячейку 1 или 2 нулевого уровня.

Далее (на глубину вложенности, на которой находится текущая развязка) проверяем следующие условия:

1. Ячейка станции назначения предыдущих уровней равна ячейке, в которой находится текущая станция.

2. Проверяем целевую ячейку текущего уровня. Если для движения необходимо переключить стрелку - переключаем ее.

Пример для развязки номер 6 (игрок движется слева):

1. Если игрок движется в ячейку номер 1 или 2 нулевого уровня, переключаем стрелку.

Если игрок движется справа, то стрелка будет переключена только если игрок направляется на станцию 3-2-1.

Таким образом, каждая развязка "не знает" о том, что расположено в соседних ячейках. И если необходимо что-то изменить, то придется менять не все развязки, а только часть.

Если мы хотим добавить развязку и станцию в ячейку 2 нулевого уровня, то нам необходимо поправить только развязку 7 и настроить нашу новую развязку. И все.

Для того, чтобы проверять разные уровни вложенности, я ввел несколько переменных (кол-во переменных равно глубине вложенности дерева). В КБ Проверяются диапазоны/значения для каждой из переменных.

Для экономии места используется /execute и /setblock.

Пример команды (активируем на 3-2 или 3-3):

 

/execute @e[x=237,y=57,z=98,r=4,score_metro_st_l_0_min=3,score_metro_st_l_0=3,score_metro_st_l_1_min=2,score_metro_st_l_1=3] ~ ~ ~ setblock 237 57 99 minecraft:redstone_block
При такой схеме необходим свой набор КБ на каждый подъезд к развязке.

Вместо выводов

В качестве вывода приведу список преимуществ и недостатков.

Преимущества:

1. При добавлении станций не нужно трогать абсолютно все развязки.

2. Немного упрощается ввод номеров станций - несколько цифр от нуля до четырех.

Недостатки:

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

2. При применении крестообразных развязок схема управления усложняется.

3. Нет возможности изменить или задать маршрут по умолчанию - либо это 0-0-0-..., либо это предыдущий маршрут. Принеправильном использовании возможно непредвиденное поведение.

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

Share this post


Link to post
Share on other sites

Далее мы делим 1 и 3 ячейки еще раз, так как они содержат более одной точки.

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

 

 

Максимальная длина такой цепочки в худшем случае равна глубине вложенности дерева + 1.

Мне кажется, что в нашем случае цепочка будет достаточно длинной.

Можем попробовать прикинуть?

 

 

/execute @e[x=237,y=57,z=98,r=4,score_metro_st_l_0_min=3,score_metro_st_l_0=3,score_metro_st_l_1_min=2,score_metro_st_l_1=3] ~ ~ ~ setblock 237 57 99 minecraft:redstone_block

metro_st_l_0 и metro_st_l_1 - это всё разные переменные?

Сколько их должно быть?

 

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

 


 

Я пока ещё не до конца вкурил все нюансы.

Но мне кажется, что это прям сложнее по всем параметрам: начиная от понимания, и заканчивая - количеством кб...

 

У кого-нибудь есть мысли по этому поводу?

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

 

+ кто знает, что делал Плотник в своих развязках? :)

Share this post


Link to post
Share on other sites

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

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

 

Мне кажется, что в нашем случае цепочка будет достаточно длинной.

Можем попробовать прикинуть?

У меня вышла глубина вложенности - 5 уровней. По большей части, все зависит от строения развязки. В моем макете это было бы максимум по 6 КБ на подъезд.

 

metro_st_l_0 и metro_st_l_1 - это всё разные переменные?

Сколько их должно быть?

 

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

Да, разные.

В данный момент для нашей карты их должно быть 5 (столько же, сколько уровней вложенности).

 

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

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

Но опять же, при увеличении географических размеров может получиться печалька.

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

Edited by RedTeapot

Share this post


Link to post
Share on other sites

59-ую развязку копать не надо - там уже сделана схема Плотником.


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

Но опять же, при увеличении географических размеров может получиться печалька.
UPD: Могу попробовать записать видео добавления еще одной развязки и станции, если это поможет понять, чего же такого я тут втюхиваю.

 

Размеры центральной ветки увеличиваться не будут. Станции будут добавляться только внутри существующего периметра. Для новых территорий будут строиться новые ветки от центрального вокзала на новом спауне.

 

Чтобы продемонстрировать свой вариант в действии, лучше сделай в качестве пример вторую развязку полностью (со всеми планируемыми станциями):

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

Возможно, Джинену будет легко это понять при планировании маршрутов и он сможет это всё сделать. Или вместе сделаете.

Share this post


Link to post
Share on other sites

Чтобы продемонстрировать свой вариант в действии, лучше сделай в качестве пример вторую развязку полностью (со всеми планируемыми станциями):

  • покажи, как будет подаваться сигнал на командные блоки и где они будут расположены
  • пропиши команды в командные блоки и выложи их сюда, обозначив на скрине какие команды к какому кб относятся
Возможно, Джинену будет легко это понять при планировании маршрутов и он сможет это всё сделать. Или вместе сделаете.
А что за вторая развязка?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Итак, вот так бы была сделана развязка номер два (только кординаты, ясно дело, неверные, так как это мой тестовый мир):

Qrlvn7v.png

Итак, у нас есть две группы КБ.

Красная группа отвечает за сброс стрелки на начальное положение (образуется замкнутый круг).

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

Команды для красной группы:

Блок №1:

/setblock -264 65 121 minecraft:rail 9
Блок №2:

/setblock -264 65 116 minecraft:rail 0
Блок №3:

/setblock -261 65 112 minecraft:rail 7

Команды желтой группы:

Блок №1:

/execute @e[x=-264,y=66,z=118,r=2,score_metro_st_l_0_min=1,score_metro_st_l_0=1,score_metro_st_l_1_min=3,score_metro_st_l_1=3,score_metro_st_l_2_min=3,score_metro_st_l_2=3,score_metro_st_l_3_min=3,score_metro_st_l_3=3,score_metro_st_l_4_min=3,score_metro_st_l_4=3] ~ ~ ~ setblock -264 65 121 minecraft:rail 0
/execute @e[x=-264,y=66,z=118,r=2,score_metro_st_l_0_min=0,score_metro_st_l_0=0] ~ ~ ~ setblock -264 65 121 minecraft:rail 0
/execute @e[x=-264,y=66,z=118,r=2,score_metro_st_l_0_min=3,score_metro_st_l_0=3] ~ ~ ~ setblock -264 65 121 minecraft:rail 0
Блок №2:

/execute @e[x=-264,y=66,z=114,r=2,score_metro_st_l_0_min=1,score_metro_st_l_0=1,score_metro_st_l_1_min=3,score_metro_st_l_1=3,score_metro_st_l_2_min=3,score_metro_st_l_2=3,score_metro_st_l_3_min=0,score_metro_st_l_3=2] ~ ~ ~ setblock -264 65 116 minecraft:rail 8
/execute @e[x=-264,y=66,z=114,r=2,score_metro_st_l_0_min=1,score_metro_st_l_0=1,score_metro_st_l_1_min=0,score_metro_st_l_1=2] ~ ~ ~ setblock -264 65 116 minecraft:rail 8
/execute @e[x=-264,y=66,z=114,r=2,score_metro_st_l_0_min=2,score_metro_st_l_0=2] ~ ~ ~ setblock -264 65 116 minecraft:rail 8
Блок №3:

/execute @e[x=-261,y=66,z=114,r=2,score_metro_st_l_0_min=1,score_metro_st_l_0=1,score_metro_st_l_1_min=3,score_metro_st_l_1=3,score_metro_st_l_2_min=3,score_metro_st_l_2=3,score_metro_st_l_3_min=3,score_metro_st_l_3=3,score_metro_st_l_4_min=1,score_metro_st_l_4=1] ~ ~ ~ setblock -261 65 112 minecraft:rail 0
Таким образом, на данную развзку нужно 3 КБ для сброса и 7 КБ для выбора пути во всех направлениях.

P. S. Естественно, все команды я писал не сам - их генерировал скрипт, я лишь указывал параметры.

Edited by RedTeapot
  • Upvote 1

Share this post


Link to post
Share on other sites

Я ещё пока не до конца вкурил это, но выглядит убедительно.

Если:

  • продумывание маршрута = расписывание команд только до следующей развязки
  • все команды тупо генерятся скриптом по заданным параметрам
  • добавление новых станций не требует переделки всех развязок

 

То имеет смысл остановиться на этом варианте :)

 

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

 

Джинен, понятна ли тебе эта схема? Будет ли тебе интересно подготовить все команды для всех развязок?

Чайник, ты просто участвуешь в этом - чисто из интереса? Или ты хотел бы сам всё закодить?

Оцелот, твое мнение тоже интересно :)

Share this post


Link to post
Share on other sites

продумывание маршрута = расписывание команд только до следующей развязки

На самом деле тут развязки второстепенны (по крайней мере, кроме текущей). Дело во все том же дереве. Я смотрел по ячейкам.

Для нулевого уровня это были все, кроме текущей (смотрел, как попасть в одну, другую, третью).

Для первого уровня, второго, третьего - полностью аналогично нулевому.

Нас даже не волнует, что творится по соседству - хоть там еще одна развязка, хоть конечная станция.

 

все команды тупо генерятся скриптом

Пока не все. Команду сброса я генерировать не стал, ибо она простая. Хотя, если надо, то можно.

Ну и плюс надо задавать достаточно много данных. А ошибка в начале (когда задается, например, префикс названия переменных) может сделать печально - проверил на своем опыте.

 

Чайник, ты просто участвуешь в этом - чисто из интереса? Или ты хотел бы сам всё закодить?

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

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

UPD: Кстати, warning: придется переделывать пульты на станциях, так как надо будет теперь задавать несколько переменных значением от 0 до 3 включительно. (Кол-во переменных, как я говорил, равно глубине дерева)

Edited by RedTeapot

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×