Oolite
Имя
Пароль
 Запомнить
  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
Итак, господа, прошло два месяца с лишним с тех пор, как Stranger's World выгружали что-нибудь новенькое.
Обычно когда коммандер Стрэнджер надолго исчезает из виду - ну стало быть, или опять гасится где-нибудь в полях вдали от своего Mac Pro и Интернета, или снова затеял какой-то масштабный проект.
Да, вы опять угадали. В полях сейчас холодно, так что...

In-System Cargo Delivery 0.3

Пакет открывает новый слой игрового мира: внутрисистемные грузовые перевозки. Но речь идет не об обычном грузе в стандартных однотонных контейнерах, который вы закупаете, перевозите и продаете на свой страх и риск, а о грузе специального назначения.
В первом приближении похоже на In-System Taxi - сервис внутрипланетных пассажирских перевозок. Заключаете контракт на срочную перевозку, принимаете на борт груз, доставляете его в порт назначения в пределах системы и получаете оплату.
Что именно за груз?
Во первых, срочная доставка оборудования на научные станции. Планы исследований и списки потребной для них матчасти составляются и утверждаются загодя за годы вперед, но именно потому всегда чего-то не хватает: оборудование стареет, ломается, теряется в полях. На далекие научные станции на окраинах систем приходится время от времени завозить приборы, запчасти, расходные материалы. Довольно часто это оборудование требует специальных условий для перевозки или запрещено к перевозке обычными грузовыми рейсами, поэтому Галкоп привлекает квалифицированных частных пилотов для этой работы.
Во вторых, экстренная доставка специального снаряжения на места аварий. На далеких объектах жизненно важное оборудование иногда выходит из строя и требует срочной замены, а порой возникают и катастрофические ситуации с прямой угрозой жизни персонала - взрывы, пожары, разрушения, транспортные катастрофы, потеря связи с полевыми партиями. Срочная доставка средств первой помощи, ремонтного инструмента, специального снаряжения для ремонтных и поисково-спасательных работ также может быть поручена в этих ситуациях пилоту, готовому вылететь на место аварии без промедления.
Оба варианта груза перевозятся в опломбированных пятитонных контейнерах. Эти контейнеры обрабатываются как оборудование, а не как груз - продать их на стороне невозможно, они автоматически устанавливаются при заключении контракта и изымаются автоматически при прибытии на место. Соответственно специальный груз показывается не в грузовом манифесте F5-F5, а в списке систем корабля F5:
Special Cargo Unit - контейнер со специальным грузом.
Urgent Cargo Unit - контейнер с экстренным грузом.
В отличие от внутрисистемных пассажирских перевозок In-System Taxi внутрисистемные грузовые перевозки даются только на дополнительные планеты: НЕ на главную планету, НЕ на луны, НЕ на космические станции.
Обязательно нужен корабль, оснащенный системой посадки на планету PLC и с минимальной грузоподъемностью 5 тонн. Наличие апгрейда астрокомпаса (Advanced Space Compass) пакет не проверяет - если вы считаете, что сможете разыскать нужную планету без астрокомпаса, это ваше право.
При заключении контракта с вашего счета будет снят страховой взнос 250 кредов. Эта сумма будет возвращена только при успешном выполнении контракта вместе с оплатой.

Как работает пакет?
После прибытия в систему и стыковки с главной станцией миссии предлагаются в интерфейсе F4. После старта игры опции In-System Cargo Delivery в интерфейсе нет, она появится только при перелете на главную станцию в другой системе.
Заходим в интерфейс миссии и если что-то предложили, после выбора миссии сохраняемся. В этом случае при загрузке из сэйва миссия в него уже будет записана. Ну или летим сразу.
ВАЖНО!
Перед заходом в интерфейс миссии нужно освободить хотя бы 5 тонн свободного места в трюме, иначе при заключении контракта часть груза пропадет безвозвратно. Поэтому продаем лишний груз и только после этого заходим в интерфейс F4. Если отказаться от миссии в первый раз, повторно в этой системе ее не предложат, нужно лететь в соседнюю.
После выбора миссии или загрузки сэйва с сохраненной миссией смотрим, что там значится как пункт назначения на странице F5-F5. Стартуем, настраиваем астрокомпас на нужную планету и летим к ней. Подлетаем, садимся в любом порту, получаем оплату. Дальше местный МЧС сам доставит груз куда нужно.
Лимита времени на перевозку груза нет. После заключения контракта вы можете взять попутный груз, попутного пассажира и даже установить дополнительное оборудование. Единственное требование - груз должен быть доставлен точно на указанную планету. Любая промежуточная стыковка с посторонним портом (и даже повторная стыковка с главной станцией сразу после старта!) приведет к тому, что груз будет изъят и контракт аннулирован без возвращения страхового взноса. При прыжке в соседнюю систему груз останется на борту до первой стыковки, но даже при возвращении в исходную систему контракт тоже будет аннулирован.
В опасных для навигации системах в стоимость оплаты включается надбавка за риск. Суммы оплаты сравнительно небольшие. Это принципиальное решение и пересматриваться оно не будет. Ну, не захочет геймер лететь на окраину системы за полтысячи кредов - его право. Пакет рассчитан на геймера, которому дай только повод слетать. коммандер vasig, к примеру, полетит. Я тоже.
Хочу обратить ваше внимание еще раз: миссии предлагаются далеко не каждый раз. Регулярно проверяйте интерфейс миссии In-System Cargo Delivery на экране F4.

Что нужно для работы пакета:
Planetary Compass (автор - Thargoid).
PlanetLand (автор - stranger) или PlanetFall (автор - Thargoid).
Planetary Systems (автор - stranger) или Additional Planets SR (Spara, Redspear).


  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
Пока Oolite 1.84 на сносях, есть время уделить внимание текущему ремонту наработанного.

Hard Way 1.8

Скорее всего, геймер никаких изменений в работе пакета не заметит, и если так - это на самом деле хорошая новость. Я разгрузил кусок кода, определяющий высоту корабля геймера над ближайшим небесным телом.
Когда я начал писать этот пакет, солнечные системы в Оониверсуме были совсем маленькими и тесными. Если кто из ветеранов помнит старый System Redux, там одна из лун была очень близко к главной планете и их зоны влияния перекрывались. Чтобы корректно отображать высоту в зонах перекрытия зон влияния, я использовал алгоритм поиска ближайшего небесного тела из библиотеки глобальных функций Tch. Мне не очень нравилось, что скрипт исполняет эту процедуру каждую секунду, но более простого способа решить задачу я в то время не видел. Со временем системы стали более просторными, но мне уже не хотелось без крайней нужды редактировать работающий код.
Сейчас я решил задачу по другому. Альтиметр захватывает нужную планету в момент пересечения границы ближних окрестностей планеты (3 радиуса планеты). Регулярно сканировать все планеты нет необходимости, так как в моем Оониверсуме в ближних окрестностях планеты других массивных небесных тел нет и их зоны влияния не перекрываются. Это несложно проверить на предельном случае самой маленькой планеты с большой луной на минимальном расстоянии 5 радиусов планеты:
Расстояние между центрами планеты и луны 2817*5 = 14085 км.
Радиус границы ближних окрестностей планеты 2817*3 = 8451 км
Радиус границы ближних окрестностей луны 1725*3 = 5175 км
Между границами ближних окрестностей самой близкой пары небесных тел остается 14085-8451-5175 = 459 км зазора.
Упрощенный алгоритм поиска ближайшего массивного небесного тела рассчитан на работу в моих просторных солнечных системах. В тесной системе планета-луна (расстояние между планетой и луной менее 5 радиусов планеты) альтиметр может ошибочно захватить соседнее небесное тело, поэтому я не гарантирую корректную работу альтиметра в сочетании с пакетом Additional Planets без тестирования. Еще одна потенциально уязвимая ситуация - старт из сохранения на астероидном отшельнике в ближних окрестностях внешней планеты или луны (менее 3 радиусов планеты). Так как альтиметр при загрузке из сохраненной позиции по умолчанию настроен на главную планету, его корректная перенастройка произойдет только после выхода из ближних окрестностей внешней планеты.
Некорректная работа альтиметра в обоих случаях не приведет к серьезным игровым последствиям. Для геймера ситуация будет выглядеть как частичный сбой авионики - пропадет индикация на шкалке альтиметра и не будут выводиться данные цифрового альтиметра при снижении к поверхности планеты. На возможность посадки на планету это не повлияет, так как PlanetLand использует свою процедуру определения планеты.

SW Economy 3.0

Коммандер sanata высказал в свое время дельную идею интегрировать пакет In-System Market Restore ST, допиленный под мою экономическую матрицу, в мой суперпакет Stranger's Set. И в самом деле, модифицированный пакет нужен только для моей экономической модели и поддерживать его как автономный пакет смысла нет.
Сделано.
Если вы используете мою экономическую модель, после установки обновления SW Economy 3.0 удалите пакет In-System Market Restore ST!
Напоминаю: для дефолтной экономики предназначен оригинальный пакет In-System Market Restore (автор spara).
Пакет SW Economy 3.0 входит в суперпакет Stranger's Set 3.0.
В обновлении суперпакета также есть пакет Xternal OXP Tweaks 3.0, в котором я экспериментировал с размерами корабля GalTech Escort Fighter (параметр model_scale_factor). Вот честно, все руки не доходят проверить, что из этого получилось, поэтому эту работу пока не презентую.

Start Choices Addenda 0.4

Как оказалось, пакет Start Choices Addenda не совсем бесшовно стыкуется с пакетом Illicit Unlock (автор Nick Rogers). Транспортер из моего пакета имеет перенастроенную грузовместимость 8 тонн, а Транспортер из пакета Illicit Unlock сохранил дефолтные 12 тонн.
Грузовместимость обеих версий Транспортера установлена 8 тонн.


  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
Итак, господа. Прежде всего, я наконец-то привел свои большие пакеты в то состояние, в котором их настоятельно рекомендуется предлагать конечному потребителю, то бишь геймеру.
Поясню на примере пакета PlanetLand.
Раньше геймер скачивал небольшой пакет с исполняемым кодом и шесть томов архивов с картинками. После чего он собирал рабочий пакет на коленках, перенося картинки из архивов в папку Images вручную. При обновлении пакета скачивать гигабайт картинок по новой не надо было, но процедуру сборки пакета вручную приходилось повторять каждый раз заново.
Теперь будет так. Открыв папку PlanetLand на GoogleDrive, геймер обнаружит там семь архивов - архив самой программы и архив пакетов с ресурсами для ее работы. После распаковки архивов получится семь пакетов:

//рабочий пакет
PlanetLand 2.0.oxp

//ресурсные пакеты
PlanetLand Image Pack A.oxp
PlanetLand Image Pack B.oxp
PlanetLand Image Pack C.oxp
PlanetLand Image Pack D.oxp
PlanetLand Image Pack E.oxp
PlanetLand Image Pack F.oxp


Преимущество такого подхода в том, что ничего вручную переносить не надо: все уже разложено по нужным папкам. То, что должно лежать в папке Images, уже лежит именно в ней, а не в папке Textures.

Теперь у геймера есть три варианта на выбор.

Ленивый геймер: просто переносим все разархивированные пакеты в директорию AddOns. При этом все пакеты загружаются в алфавитном порядке.
Геймер-перфекционист: создаем папку PlanetLand, переносим в нее рабочий пакет и все ресурсные пакеты, прописываем папке расширение PlanetLand.oxp. Получается суперпакет, в котором собрано все нужное, но опять же не нужно таскать вручную десятки файлов.
Геймер-старовер и любитель оптимизации: потрошим все ресурсные пакеты и переносим из них все картинки в папку Images основного пакета, как прежде.

На самом деле открою секрет: Оолиту абсолютно пофиг, как вы поступите, потому что при инициализации игры все однотипные ресурсы из всех пакетов как бы собираются в одну большую папку в оперативной памяти: все картинки из папок Images всех пакетов - в одну папку Images и так далее. Так что на производительность системы ваши эстетские извращения никак не повлияют.
А вот обновление пакетов станет удобнее: когда я выгружу версию пакета PlanetLand 2.1, будет достаточно скачать один файл архива, разархивировать его и заменить им старый пакет PlanetLand 2.0. Картинки у вас уже лежат где нужно и об их обновлении я буду оповещать по мере необходимости.


  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
А теперь конкретно, что нового помимо более удобной структуры пакетов.

Planetary Systems 1.0

Было семь внешних планет, теперь каждая из них представлена в 10 вариантах с шагом по радиусу.
Резонный вопрос: а к чему так сложно? Геймер астрометрическими измерениями заниматься не будет, так что разница между шаром радиусом 4000 км и 5000 км для него некритична. А вот хлопот синхронизации новой модели с моими другими пакетами, которые используют эти уникальные радиусы для определения класса планеты, добавилось.
Для Оониверсума в нынешнем виде особой разницы и правда нет, но для задуманного мира-исследования пригодится.
Пакет разбит на два модуля:
//тело пакета
Planetary Systems 1.0.oxp
//пакет текстур внешних планет
Planetary Systems Texture Pack.oxp

Moons 0.6

Аналогичной операции подверглись луны. Была большая и малая луна главной планеты и большая и малая луна газового гиганта. Теперь каждая из этих лун может быть в 10 вариантах.
Пакет также разбит на два модуля:
//тело пакета
Moons 0.6.oxp
//пакет текстур лун
Moons Texture Pack.oxp

Sun Gear 2.4

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

Famous Planets ST 0.8

Пакет разбит на четыре модуля:
//тело пакета
Famous Planets ST 0.8.oxp
//пакеты текстур Знаменитых Планет
Famous Planets ST Texture Pack A.oxp
Famous Planets ST Texture Pack B.oxp
Famous Planets ST Texture Pack C.oxp

System Makeup 2.0

Пакет разбит на пять модулей:
//тело пакета
System Makeup 2.0.oxp
//пакеты текстур
System Makeup Texture Pack A.oxp
System Makeup Texture Pack B.oxp
System Makeup Texture Pack C.oxp
System Makeup Texture Pack D.oxp

PlanetLand 2.0

Пакет разбит на семь модулей:
//тело пакета
PlanetLand 2.0.oxp
//пакеты картинок (не текстур!)
PlanetLand Image Pack A.oxp - ландшафты главной планеты, часть 1
PlanetLand Image Pack B.oxp - ландшафты главной планеты, часть 2 + ландшафты внешних планет и лун
PlanetLand Image Pack C.oxp - ландшафты Знаменитых Планет, часть 1
PlanetLand Image Pack D.oxp - ландшафты Знаменитых планет, часть 2
PlanetLand Image Pack E.oxp - порты главной планеты
PlanetLand Image Pack F.oxp - порты внешних планет и лун.

Код, выбирающий картинку порта на внешних планетах и лунах, дописан и узнает их расширенный набор.
И кстати, я заменил имена ландшафтов внешних планет и лун, которые совпадали с именами текстур в пакетах Planetary Systems и Moons. Хотя новая структура пакетов более безопасна, избегать совпадения имен - полезная привычка.

Orbital Stations 2.0

Код засева станций узнает расширенный набор планет и лун.
Заодно я пофиксил баг, который вылез в Oolite 1.84. Для строительства своих станций я использовал модульные станции Kiota из пакета Таргоида WildShips. И вот у него в shipdata.plist объявлена предельная дальность огня плазменных пушек 7500 м (кстати, эта величина так и осталась в последней версии пакета 1.11.1). Баг не фатальный - Оолит принудительно выставляет максимально допустимую для плазменной турели дальность огня 7200 м, но лог пакостит.


  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
Геймер :? Так что, опять все два гигабайта с лишним скачивать?
Автор :ugeek: Скачивать всё.
Надеюсь, в следующий раз затея с генеральной ревизией меня посетит не скоро, но эту работу надо сделать один раз, чтобы потом не париться с детективными расследованиями, почему на луне вдруг оказалась натянута картинка пейзажа и почему вместо картинки порта после посадки наблюдается черное поле.
Основной совет: пакеты Planetary Systems и Moons небольшие, но их надо ставить в последнюю очередь. Остальные пакеты - в любой удобной для вас последовательности.
Что произойдет, если поставить обновления Planetary Systems и Moons и не поставить все остальное?
Пропадут орбитальные станции вокруг луны, марса и газового гиганта.
Не будет выводиться список обнаруженных в системе планет.
Не будет показана картинка планетного или лунного порта.

Благодарю за внимание.


  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
Позволю себе длинное предисловие, прежде чем перейти к сути дела.

Оониверсум - открытый мир, но это густонаселенный мир с полной информацией о системах. Геймер изначально видит всю карту, необследованных уголков Оониверсума для него нет. Геймеру-исследователю в этом Оониверсуме оставлена возможность лишь вести журнал с хроникой своих путешествий (чем занимается гениальный пакет Explorer's Club) и обследовать системы на предмет местных достопримечательностей. Таков канонический геймплей, унаследованный из Элиты. Мест, куда не ступала нога человека, в Оониверсуме нет, он тесно связан в единое политическое, экономическое, правовое и самое главное для темы сегодняшнего разговора - информационное поле.
Между тем поколение космосимов, пришедшее вслед за Элитой, утвердило другой стандарт геймплея - открытый мир с постепенно раскрываемой картой. Можно спорить сколько угодно о природе удивительной амнезии геймера в таком мире. И в самом деле, узнику, привезенному на остров Ввандерфелл в трюме невольничьего корабля (завязка сюжета Morrowind), простительно не знать ничего об его географии, природе и культуре, но чтобы пилот межзвездного корабля отправился странствовать наобум, не имея даже навигационных карт региона? Но факт есть факт: несмотря на абсурдность исходного допущения, постепенно раскрываемый мир, о котором изначально геймер почти ничего не знает, делает геймплей крайне привлекательным.
Конечно, в Оониверсуме - по крайней мере, в его канонической реализации - нет политических блоков, нет таинственных рас ксеноморфов, нет артефактов в системах, затерянных где-то в галактической пустоши. Да что там, никаких галактических пустошей нет в помине - куда на карте курсором ни ткни, обязательно найдется как минимум убогая аграрная планетка первого технологического уровня с многомиллиардным населением. И все же...
Да, было бы здорово изначально почти ничего не знать о мире, в котором Джеймсон начинает свое путешествие.
Вот только как это реализовать технически?
В Oolite 1.77, который был актуален на момент зарождения этой идеи, ответ звучал "да никак". Управлять отображением систем на карте геймер никак не может.
Обмозговав эту затею с коммандером vasig, я сообразил, что кое-что сделать все таки можно. Спрятать системы на карте и правда нельзя, но я могу блокировать вывод паспорта системы, если она находится за пределами информационного горизонта в 7 LY и геймером не посещалась.
Код получился легким. Есть Explorer's Club, который пишет в сэйв список систем, причем даже в порядке их посещения. Все что должен делать новый пакет - подгружать эту базу данных из сэйва и сверяться с ней.
Конечно, серьезную техническую экспертизу мой код вряд ли прошел бы. Отслеживать обновения базы данных посещенных систем самостоятельно в ходе игровой сессии он не умел, синхронизация происходила в момент загрузки из сэйва. Но это вполне можно было списать на неразворотливость галкоповской бюрократии. А так получился интересный игровой пакет, которым я гордился.
Была у геймера, правда, еще одна забавная лазейка, которую пакет не закрывал. Локальная карта, если вы помните, предъявляла геймеру квадратный участок карты сектора, охватывающий 7 LY радиус-окрестность текущей системы с небольшим запасом. Ну и соответственно включив режим пиктограмм клавишей i геймер мог получить критически важную информацию о системах за пределами информационного горизонта, если они были в углах карты, то есть при удачном раскладе почти до 10 LY.
"Полумэр" - колоритно выразился коммандер vasig и прибил эту клавишу i в keyconfig.plist насмерть. Что и где он там еще прибил насмерть "косыми палочками", даже гадать боюсь. А мне пиктограммы нравились. Они очень стильные и прекрасно читаются.
Все было просто замечательно вплоть до появления Oolite 1.82. А с его появлением все стало очень плохо.
Отдельно локальной карты и отдельно генеральной больше нет. Есть карта с зумом и скролингом. Само по себе это замечательно. Плохо то, что эти стильные пиктограммы теперь видны далеко за пределами 7 LY радиус-окрестности.
Хороший, годный игровой пакет в один момент потерял заложенный в него смысл.
Думаю, вы понимаете, с какой радостью я узнал о новых возможностях, которые обещал новый параметр concealment (маскировка информации о системе) в обещанном релизе Oolite 1.84. И с каким нетерпением я ждал этого релиза.

Макс релиза дожидаться не стал, и правильно - ночные сборки для того и предназначены, чтобы разработчики тестировали новые возможности загодя. Пакет ZeroMap - реализация идеи раскрываемой карты на новом техническом уровне. Хороший пакет, профессионально написанный и вполне игровой. Но вот глядя на код, отчетливо понимаешь, насколько трудоемкой оказалась реализация программы-максимум. Просто прятать системы на карте и показывать непосещенные системы только в пределах 7 LY радиус-окрестности нельзя, иначе геймер обнаружит их лишь методом случайного блуждания. Надо дать геймеру зацепку: этот уголок карты еще не обследован до конца и здесь что-то может быть. Самый простой способ сделать это - показывать на карте все обнаруженные, но не посещенные геймером системы. Explorer's Club запоминать такие системы не умеет, значит, пакет должен писать в сэйв свою базу данных. Плюс отдельно отмечаемые системы - цели миссий, итого все четыре состояния параметра concealment задействованы и обновления их статуса должны сохраняться в сэйве.
В пакете ZeroMap есть два недочета.
Первый момент - не столько недосмотр Макса, сколько недоведенная до ума реализация нового параметра concealment. Суть проблемы я изложил в соответствующей теме. Если вкратце - параметр concealment не обеспечивает избирательный вывод информации о системе. Геймер может получить полную информацию о любой системе, которую он видит на карте, причем без всяких читерских штучек, а законным образом через интерфейс игры. Пока что единственный прок от параметра concealment в нынешнем виде - он позволяет быстро и удобно показать на карте системы, в которых вы еще не побывали.
Второй дефект пакета намного более серьезный.
Изолированные миры.
Миссии в эти системы не генерируются, оказаться в пределах 7 LY от них геймер не может ни при каких условиях. Внимание, вопрос: каким образом геймер может хотя бы догадаться о существовании на картах изолированных островных систем и архипелагов?
Можно, конечно, сослаться на то, что это часть легенды, положенной в основу пакета. В принципе на этой легенде можно построить вполне интересную миссию "найди не понять что не понять где". Но проблема-то в том, что такая миссия займет слишком много игрового времени. Геймер очертил в своих экспедициях подозрительно пустой регион карты. Но чтобы попасть в изолированные миры на карте n, ему надо заново пропрыгать через всю стопку из восьми карт. Ошибка в выборе стартовой системы для прыжка из системы n-1 - и если играть по честному, без читов, надо снова путешествовать через все восемь карт.
Можно взять пакет ZeroMap за основу и допилить его, чтобы закрыть огрехи. Технически это несложно. Код легко читается и хорошо комментирован. Сделать такой пакет с нуля я не смог бы - моей любительской квалификации не хватает - а вот допилить запросто.
А можно пойти своим самобытным путем. И если отказаться от требования "раскрываемая карта с изначально невидимыми системами", то задача упрощается фантастически.
Изолированные системы видны на карте и геймер знает об их существовании, но информацию о них получить не может. В этом плане изолированные системы ничем не отличаются от других неисследованных систем за пределами информационного горизонта.
Проверка особых случаев не нужна. Все системы назначения сгенерированных миссий отображаются на карте без проблем.
Запоминать системы, увиденные геймером на пролете, не нужно. Геймер и так видит на карте, что они существуют, но еще не исследованы.
Писать в сэйв ничего не нужно. О системах за пределами информационного горизонта нужно знать только одно: посещались ли они геймером ранее. Эту информацию пишет в сэйв Explorer's Club.
Мы снова возвращаемся к связке из Explorer's Club и маленького плагина к нему с простым легким кодом.


  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
Here Be Dragons 0.5

Легенда в основе моего пакета такова.
Астрономические базы данных с каталогами координат всех обитаемых систем сектора являются общедоступной информацией. Никаких ограничений на ее распространение не существует. Геймер сразу получает на руки звездную карту сектора.
Распространение информации о политическом, экономическом и технологическом профиле обитаемых систем регулируется нормативными актами Галкопа.
А конкретно действуют правила, вытекающие из простых прагматических соображений.
Местное представительство Галкопа заинтересовано в предоставлении частным торговцам информации о ближайших соседях системы, так как оно обязано заботиться о развитии торговых связей с ними.
Местное представительство Галкопа не заинтересовано в предоставлении частным торговцам информации о системах, не связанных с местной системой торговыми путями.
Хартия о свободе навигации "Небо открыто для всех" гарантирует право частного торговца на сбор и хранение этой информации самостоятельно.

Возрожденный Here Be Dragons работает почти так же, как его предшественник, но теперь он умеет помечать исследованные системы на карте. При загрузке сэйва скрипт считывает базу данных и присваивает всем посещенным системам на карте значение concealment = 0, а непосещенным - concealment = 200. Вторым проходом скрипт присваивает значение concealment = 0 всем системам в радиусе 7 LY, включая текущую систему. Эта информация обновляется при каждом прыжке в новую систему: информация о неисследованных системах, попавших в 7 LY радиус-окрестность, становится доступной, вышедших из нее - теряется. И кстати, пакет теперь корректно работает при прыжке на новую неисследованную карту: после прыжка он сканирует все системы сектора и не найдя данных, подтверждающих их посещение, помечает их как необследованные, после чего показывает все системы в пределах информационного горизонта.
Хочу обратить ваше внимание: геймер видит всю информацию обо всех системах в пределах 7 LY, на карте они неотличимы. Определить, в каких из них геймер уже был, а в каких еще нет, просто: Explorer's Club выводит эту информацию в паспорте системы.
При попытке запроса паспорта неисследованной системы за пределами информационного горизонта Here Be Dragons блокирует вывод паспорта системы и выводит свой экран с сообщением, что эта область карты еще не исследована (даже если вы пролетели сквозь нее не отмечаясь).
Here Be Dragons не умеет синхронизировать с Explorer's Club информацию об уже посещенных системах в ходе игровой сессии - он пользуется базой данных из последнего загруженного сэйва. То есть может получиться так: вы побывали в системе, Explorer's Club отметил ее как посещенную, но Here Be Dragons об этом еще не знает. Вы продолжаете игровую сессию без перезагрузки из сэйва, через два прыжка система уходит за информационный горизонт и Here Be Dragons ее теряет.
Технически я знаю, как решить этот вопрос, но не вижу особого смысла его решать. Если геймеру лениво запоминать, где он был час назад и что было в этой системе, то save/load ему в помощь. Это тоже, если хотите, часть легенды: обновление базы данных требует синхронизации с серверами Галкопа, доступ к которым возможен только с главной станции.
Единственный серьезный момент, который может смутить геймера - поведение пакета при первом запуске. Если Explorer's Club был уже установлен и успел записать в сэйв свои данные, то все в порядке - Here Be Dragons при первом же запуске их захватит и сразу покажет карту как надо. Но вот если вы завели нового пилота, то при первом запуске связки Explorer's Club + Here Be Dragons вы увидите всю карту сектора без ограничений. При повторной загрузке из первого сэйва дальше все будет нормально. Технически, думаю, этот вопрос тоже можно корректно решить, но проблема одноразовая и решается так:
1. Заводим нового пилота
2. Пишем сэйв
3. Перезагружаемся из сэйва
4. Играем дальше.

Если кто ниасилил много букв, то еще раз обращаю ваше внимание:
Here Be Dragons без Explorer's Club не работает.

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


Вложения:
oolite-014.png

oolite-015.png

  Re: Презентация наших ОХР
Не в сети
Dangerous
Аватар пользователя

Зарегистрирован: 25.01.16
Сообщений: 110
ZeroMap 0.4
Выпустил новую версию:
1. Корректно работает с Oolite 1.84 (не вся информация скрывается, но эта проблемы самого Oolite, баг-репорт отправил).
2. На карте показываются планеты в радиусе 10LY как точки (позволяет находить все изолированные области).

Скачать: В личной рубрике.

step2.png



Последний раз редактировалось Max 12.08.16, всего редактировалось 1 раз.

  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 01.10.12
Сообщений: 747
Откуда: Novosibirsk
1.jpg


2.jpg


3.jpg


4.jpg


5.jpg



  Re: Презентация наших ОХР
Не в сети
Dangerous
Аватар пользователя

Зарегистрирован: 25.01.16
Сообщений: 110
vasig:
А вот контракты на перевозку пассажиров и доставку посылок предлагают не смотря на то, что маршрут к некоторым планетам проложить невозможно.

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

P.S. Чтобы добиться подобного эффекта пришлось хорошенько поработать над плагином, усложнив его в 2-3 раза... Зато появился дополнительный стимул к исследованию галактики.


  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 01.10.12
Сообщений: 747
Откуда: Novosibirsk
to Max

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


  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 01.10.12
Сообщений: 747
Откуда: Novosibirsk
to Max

А можно ли в Вашем пакете заменить "???" на unknown или unvisited? По-моему это будет более красиво, ну, а нет - так нет :)

В Oolite начиная с версии 1.82 появилась возможность делать save не только на главной станции, но и на некоторых других: KIOTA, RSS, Rock Hermit...
Но оказалось, что эта функция save возможна только, если станции находятся внутри "магического" треугольника: входной буй, планета, солнце. Стоит "закинуть" на край вселенной Rock Hermit или другую станцию, то данная функция пропадает. А при длительных полетах внутри системы это было бы очень удобно, так как иногда нужно прерваться, а до главной станции еще лететь и лететь, особенно если находишься вблизи отдаленной планеты, а сделать save ни на этой планете, ни на орбитальной станции (при ее наличии) нельзя.

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


  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
To Max

Добавлю в список хотелок.

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

2. Фиксация в сэйве рынка временных портов.
Порт в PlanetFall/PlanetLand создается непосредственно перед посадкой и уничтожается после взлета. Рынок порта соответственно никак не запоминается и можно циркулировать между ними до бесконечности, вообще не покидая систему.
Я бы предложил такой алгоритм фиксации этой проблемы.
При покидании станции запоминается рынок станции. Этот массив пишется в сэйв.
При повторной стыковке со станцией ее рынок замещается на запись из массива соответственно роли станции.
При покидании системы массив обнуляется.
Алгоритм должен работать только для временных портов, так как для рынка главной станции и таких постоянных станций, как косморазборка и астероидные отшельники, задача уже корректно решена.


  Re: Презентация наших ОХР
Не в сети
Dangerous
Аватар пользователя

Зарегистрирован: 25.01.16
Сообщений: 110
To vasig
vasig:
А можно ли в Вашем пакете заменить "???" на unknown или unvisited? По-моему это будет более красиво, ну, а нет - так нет :)

Нет, заменить "???" на что-либо нельзя из плагина. Эти "???" прописаны непосредственно в коде игры. Да и на мой взгляд, лучше "???", чем "unknown" или "unvisited" - меньше загромождает экран.

vasig:
В Oolite начиная с версии 1.82 появилась возможность делать save не только на главной станции, но и на некоторых других: KIOTA, RSS, Rock Hermit...
Но оказалось, что эта функция save возможна только, если станции находятся внутри "магического" треугольника: входной буй, планета, солнце.
...
Так вот, не могли бы Вы проанализировать данную ситуацию и при возможности решить эту проблему. Конечно, есть ОХР, которое позволяет сохраняться где угодно, но оно было и раньше, а теперь сама игра это позволяет, значит в ней что-то изменено?

Технически, сейчас сохраняться можно на любой станции (1.79+). Зависимости от "треугольника" в коде игры я не нашел.
Для возможности сохранения необходимо в system.setPopulator() задать deterministic в true и выполнить несколько дополнительных условий (wiki).

deterministic : a boolean, default false. If this is true (only possible when using "COORDINATES" or a non-zero locationSeed, and not in nova systems or interstellar space) this is a promise to Oolite that this populator function will always be called with these parameters if the player revisits this system, provided the OXP has the power to do so, and will always have the same effect when it is called. (i.e. it has not been uninstalled, had the system populator function changed under it, has its populator entries removed by another OXP, etc.). Currently secondary stations added by deterministic populators may allow the player to save and load the game. If the player saves the game at such a station, which is then not there when they reload the game, they will be returned to the main station as a safety measure.

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



To stranger
stranger:
1. Фиксация в сэйве информации об астероидах системы.

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

stranger:
2. Фиксация в сэйве рынка временных портов.

Тут уже проблема в PlanetFall/PlanetLand, а именно - в динамической природе порта. На мой взгляд, задачу решить можно.
Можно непосредственно сохранить информацию о рынке с привязкой к планете.
Или избавиться от динамической природы станции - создать ее в центре системы и перемещать к игроку при подлете (но тогда в компасе появится дополнительный объект).
Можно сделать отдельным плагином, но корректнее доработать PlanetFall/PlanetLand.



P.S. в ZeroMap ничего из этого добавлять не буду. Я придерживаюсь принципа 1 плагин - 1 функция. А вот отдельным плагином... Возможно.


  Re: Презентация наших ОХР
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
Max:
P.S. в ZeroMap ничего из этого добавлять не буду. Я придерживаюсь принципа 1 плагин - 1 функция. А вот отдельным плагином... Возможно.

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


Новая тема  Ответить  
Показать сообщения за:  Сортировать по:  









Список форумов / Обсуждение игры и OXP