Noruhh » 15 мар 2015, 03:09
Тема, в которой затрагивается продолжительность путешествий с использованием метро встречается со стабильной регулярностью, но сложность этого вопроса и осознание не приоритет этого направления останавливает игроков от серьёзных предложений и обсуждений. Однако, появление темы о введение ПП натолкнула меня на мысль высказать то что давно витает в голове и периодически появляется в моих сообщения на форуме.
Виртуальное перемещение - перемещение которое происходит только в “мозге” сервера. Это своего рода основа, база, полигон, для возможно, будущего транспорта на сервере. В моём обывательском представление для этого не понадобится что либо моделировать и даже делать текстуры, а вот без программиста, увы не обойтись. Но всё по порядку.
И так, начнём с конца и попробуем размотать клубок вместе. Преступим.
Задача, доставить груз из точки А, игрок отправитель, в точку Б, игрок получатель.
Что нам понадобиться для решения этой задачи? Начнём с простого, с определения транспорта для доставки груза. Многие уже догадались что речь пойдёт о железной дороге.
Если вы спросите почему, то я вам попробую ответить как можно короче. Железная дорога есть в клиенте, а значит не нужно ничего рисовать и вводить новые предметы. Так же железная дорога уже развита по всему серверу и для её работы написаны алгоритмы. Так что для меня, практически, не было вопросов почему Ж/Д, а не что то ещё. Так проще.
Естественно что нужно доработать железную дорогу, так, слегка…
Грузовой сундук - сундук стоящий вплотную к железнодорожным путям, которые в свою очередь подключены к КБ железнодорожной станции. Так игроки получать физический адрес, который может быть как числовой, так и в том виде что мы вводим сейчас когда хотим куда то добраться. Но учитывая размеры и сложность некоторых номер кажется удобней. Сервер же будет знать на какой станции сколько груза могут принять.
Желательно, но на первом этапе можно для упрощения пропустить.
Депо - опять же сундук возле железнодорожных путей, всё так же подключенных к КБ, но в нём лежат тележки с сундуками. Они будут вычитаться из депо на время выполнения заказа по доставке. То есть, визуально они могут вовсе и не появляться на рельсах и куда то уезжать, хотя было бы забавно.
Так же для того чтобы приучить игроков к новой системе помимо тележек с сундуками в депо должны находиться тележки с печкой. Логично что если нет чего одного, “паровоза” или грузового вагона, задача выполнена быть не может. И подвижной состав нужно вызвать с ближайшей соседней станции. Так же нужно учитывать что один заказ это один “паровоз” и от одного до н-цать грузовых вагонов.
Ещё одно обязательное введение на первом этапе, это плата за использования подвижного состава и за использования путей.
Стоимость использования путей предлагаю считать 1на зелень за 1ну клетку путей, Это для баланса, что бы не гоняли поезда, а для экономии катались сами, так как на этом этапе вводить плату за личный проезд я бы не хотел.
Стоимость аренды подвижного состава предлагаю установить 10 зелени за маршрут от 1ой до 1000чи клеток пути.
Для чего нужна эта 1000ча клеток? Это условное расстояние которое пройдёт поезд пока ему не потребуется заправка. Фактически это означает что маршрут из точки А в точку Б будет прокладывать от заправки до заправки. Для заправки не нужно ничего, просто состав какое то время стоит на станции. Одно, важное условие. Для того чтобы поезд смог заправиться, нужно чтобы на этой станции было нужное количество свободных грузовых сундуков, в противном случае состав как бы не влез и будет вынужден искать другую станцию.
Вы спросите что будет если в пределах 1000чи клеток не будет подходящей станции? Хороший вопрос. Я думаю что если станции с подходящим количеством грузовых сундуков нет вообще или они забронированы под груз прибывающий на эту станцию, то сервер должен сообщить, что в данный момент такой большой состав по этому пути отправить не возможно и сообщит допустимый максимум для этого маршрута в данный момент времени. Если же грузовые сундуки просто заняты сквозным грузом, то будет выдано сообщение что дополнительная задержка составить столько то минут. Или будет предложен обходной путь, не оптимальный, при условии что по времени он будет выгодней, оптимального с учётом задержек.
Итого, если груз едет 1000чу клеток, то услуга транспортной компании составит 1010 зелени, в независимости от количества используемых вагонов, пока в не зависимости, до ввода веса у предметов.
Куда пойдут деньги? Всё просто, 10ть зелени уйдёт владельцу подвижного состава, 1000чу владельцу железной дороги. Владелец же железной дороги определяется по привату. И тут мы подходим к следующей пачке доработок.
Как вы могли заметить, владельцы заправок не получают прибыли, но это пока. Но они получат часть денег за использование путей которые им принадлежат.
Приваты.
Список команд которые, скорей всего, будут нужны.
Разрешения на использование железнодорожного полотна другими игроками кроме тех что вписаны в регион. А значит и получение прибыли с транзита поездов.
Разрешение на вызов подвижного состава на соседние станции в случае если своих нет или они заняты.
Назначение управляющего, вполне вероятна ситуация когда владелец привата решит сдать в аренду свою территорию третьему лицу для прокладки и обслуживания путей. Такая команда позволит укладывать и обслуживать железную дорогу, но не более этого. По мимо ограниченного доступа является ещё своего рода договором между игроками. Определения фактического владельца рельс, кто их создал и укладывал, ещё нужно обсудить. Так же как и автоматическое разделение денег между владельцем территории и транспортной компанией арендующей землю.
Из предметов которые, возможно, потребуется это КБ. Для того чтобы сервер определял где заканчиваются владения и рельсы одного игрока и начинаются другого.
Для примера, игрок А имеет на своей территории железную дорогу, которая с одной стороны уже имеет подключения к другому соседу игрока А, а вот второй конец заканчивается тупиком. Игрок Б говорить игроку А чтобы тот подвёл свою железную дорогу к их общей границе, чтобы он смог подключить свою ветку. Игрок А прокладывает рельсы и под последний кусок на своей земле кладёт КБ. Игрок Б в это же время тоже заканчивает укладку рельсов и так же кладёт КБ под последний кусок рельсы.
Не факт что это потребуется, может быть достаточно будет привата или есть более изящное решения.
Напоследок осталось самой сложно, отправка/получение товара. Тут на самом деле есть множество вариантов решений, но вот какое самое удобное в освоение, это уже сложно сказать.
Но начнём по порядку.
Игроки как то должны составить накладную в которой будет указано: что, в каком количестве, от кого, кому, стоимость, оплата транспорта, время на доставку. И вот что в результате у меня получилось.
Домашний грузовой сундук или почтовый ящик, если вам будет угодно. Принцип такой же, но с некоторым отличием, для почтового сундука не нужны рельсы и КБ. Нужно лишь превратить обычный сундук в сундук почтовый, для этого нужна либо команда, либо что то по принципу магазина, с табличками или ещё чем то. Для чего это нужно? Нам как то нужно получить адрес доставки груза. Предположим что мы используем команду, предположим это /cargo, ударяем по сундуку и формируем его уникальный номер. Тоже самое должен сделать и другой игрок. По необходимости таких сундуков можно сделать нужное количество. Теперь когда у нас есть адрес отправителя и получателя самое время определится что мы отправляем. В созданные при помощи команды /cargo почтовые сундуки складываем отправляемые груз.
Дальше я предлагаю использовать книги, не всё же ими печки топить, и возможно чернила. Берём книгу и ударяем ей по почтовому сундуку, если сундуков несколько, то повторяем операцию нужное число раз. Почтовый сундук, по которому ударили книгой блокируется, это нужно чтобы исключить мошенничество. Чтобы разблокировать сундуки книгу нужно уничтожить. Пока сундук заблокирован его нельзя сломать, вписать или выписать игрока, вынуть или доложить предмет.
Теперь нужно как то передать это сообщение получателю груза. Для этого командой /cargo воздействуем на книжную полку, теперь у неё тоже есть свой уникальный адрес. Берём книгу, которой только что “били” по сундукам с грузом, открываем и вписываем адрес книжной полки получателя. Ставим на полку и происходить магия! Эта книга перемещается к второму игроку на полку. Теперь он должен её взять и ударить этой книгой по своим грузовым сундукам, естественно по пустым. После каждого удара сервер сообщает сколько ещё нужно сундуков и ударов для завершения операции.
Сундук по которому ударили, как и в первом случае, блокируется. Но можно в него заглянуть и увидеть товар и его количество. Как только произошла магия и книга появляется на полке игрока получателя или при снятии книги с полки или с последним ударом книгой по сундуку, в чат у обоих игроков выводится сообщение о времени и стоимости доставки.
Если игрока получателя всё устраивает и он готов подтвердить заказ, ему нужно вернуть книгу на специальную книжную полку, ту с которой он её снял, или уничтожить её чтобы расторгнуть сделку.
И так, игрока получателя всё устраивает и он ставит книгу на полку, она исчезает уже совсем. Тут же происходит следующее, на ближайших станциях от игроков отправителя и получателя и на всех станциях где будет происходить заправка поезда, блокируются такое же количество сундуков. Если на ближайшей станции нет своих вагонов и паровозов, то их вызывают с ближайшей станции. Груз “пешком” и не очень спеша идёт до станции, сам, по кротчайшей прямой, не взирая на препятствия, но очень - очень медленно. Как только он туда пришёл, состав отправляется и через указанное время прибывает на ближайшую станцию к игроку получателю. Груз “вылезает” из вагонов и так же “пешком идёт” до сундуков. Всё, пришёл.
Теперь загвоздка, если вы заметили то отсутствует момент оплаты груза и его доставки, как и в какой момент это сделать вопрос сложный. Мне думается что оплату лучше проводить по прибытию товара и вот почему. Пока товар не оплачен он по прежнему занимает место и у игрока отправителя и на станциях. Казалось бы зачем такая сложность. А всё для того чтобы в случае не оплаты товар не повис где то на станции или отправитель не остался без денег и товара. Но можно и упростить, а именно отправлять груз только после оплаты, так проще, но не так весело.
Вот собственно и всё, спасибо что прочитали столько ночных букв и совсем без картинок.