Oolite
Имя
Пароль
 Запомнить
  Re: Stranger's World: замечания и предложения
Не в сети
---Elite---
Аватар пользователя

Зарегистрирован: 15.05.11
Сообщений: 1531
Думаю, стоит объясниться, какого черта я что-то там делаю втихушку и к чему вообще надо быть готовым. Обычно я предпочитаю демонстрировать результаты, а не увлекательно рассказывать о своих гениальных планах. Но тут, похоже, повод внятно изложить свои планы на обозримое будущее назрел.

Революция – время интересное, но неудобное. Новые решения дают новые возможности, но плохо уживаются со старыми. Оставить все как есть и понемногу переделывать кусок за куском – разумно, но не всегда возможно.
Oolite 1.90 дал новые впечатляющие возможности. Теперь можно делать дивной красоты миры ручной сборки с зеркальными водоемами, рельефом и атмосферной дымкой, а не просто оклеенные матовыми фотообоями шарики. Так почему бы не заняться неспешной заменой морально устаревших текстур System Makeup на новой основе?
А дело в том, что новые текстуры состоят из двух слоев – диффузной карты (те самые фотообои) и нормальной карты, в которой как раз информация о рельефе и зеркальных водоемах. И увы, Oolite 1.90 умеет читать эту нормальную карту, только если она прописана в planetinfo.plist. Через скрипт, увы, нет. То есть вот этот замечательный умный механизм выбора внешнего вида планеты с учетом обитающих на ней мышей и лягушек, увы, с новыми текстурами не работает.
Ладно, но ведь можно отказаться от определения текстур через скрипт, прописать эти карты текстур в planetinfo.plist и потом понемногу апгрейдить его, заменяя устаревшие текстуры ручной сборки на новые под теми же именами?
Можно. Но тут есть еще две проблемы.
Во первых, в пакете System Makeup всего 96 текстур. Это, конечно, аж в 16 раз больше, чем в старом System Redux, с которого началась когда-то эволюция пакета, но полный Оониверсум включает 2048 систем, и по хорошему все главные планеты этих систем должны иметь уникальный внешний вид. Планеты могут быть похожими почти до неотличимости, но все же не идентичными в мельчайших деталях. Ладно, у нас есть еще сотня Знаменитых планет с уникальными текстурами, но на самом деле по большей части для Знаменитых планет использованы тестуры из System Makeup. То есть у большинства планет в каждом секторе есть идентичные копии, а если взять Оониверсум в целом, то у случайно выбранной планеты есть пара десятков идентичных копий. И вероятность наличия двух планет с совпадающим внешним видом в пределах 7 LY радиуса, что бы там вам не говорил ваш здравый смысл, значительно выше пренебрежимо малой. Попросту говоря, такие пары будут встречаться намного чаще, чем вам кажется.
И во вторых, даже будь я не моддер-одиночка, а командир роты военных десигнеров, которым можно было бы отдать приказ изготовить 2048 уникальных текстур, минимально приемлемая по визуальному качеству 2К текстура весит порядка 3...3.5 MB, а с картой нормалей и 4...5 MB. То есть пакет уникальных текстур минимального качества будет весить 8...10 GB. Для коммерческой игры фигня вопрос, но для Оолита с его ограничением до 150 MB это непотребно много. И именно поэтому у Povray Planets нет шансов появиться в формате OXZ. С другой стороны, встроенный в игру процедурный генератор создает 2048 уникальных планет, а вся информация об игровом мире в корневом planetinfo.plist весит всего 2.7 MB! Если создать planetinfo.plist, в котором будет содержаться информация только о внешнем виде главных планет, то можно уложиться всего в мегабайт, а то и меньше.
Я думаю, идея ясна. Поручить генерацию множества неповторимых планет процедурному генератору и неспешно заняться штучной ручной сборкой уникальных текстур.
Увы, вплоть до последнего времени результаты работы процедурного генератора, как бы это сказать деликатнее, не вполне соответствовали ожиданиям. Не то чтобы результаты работы процедурного генератора были безнадежно плохи – в чем-то процедурно сгенерированные планеты даже обошли планеты ручной сборки. Зеркальными водоемами хотя бы. Ну и все же псевдорельеф, пусть примитивный, как наждачная бумага. Но увы, жесткое освещение в режиме Extra Details напрочь убивало ощущение объема. Вместо шаров получались протравленные кислотой диски. Да, в режиме Shaders Enabled тоже не все идеально. Но я склонен примириться с запиленной линией терминатора, лишь бы видеть шары, а не плоские диски. Так что с каждым релизом я интересовался, как там дела с планетами, укоризненно вздыхал и возвращался к своим шарам, окленным фотообоями.
В Oolite 1.90 барьер визуального качества наконец взяли, причем с обоих сторон. Уникальные текстуры ручной сборки с рельефом и зеркальными водоемами – об этом я уже говорил в самом начале, но и процедурно сгенерированные текстуры в потенциале теперь смотрятся весьма неплохо. Психоделические лиловые океаны и бирюзовые континенты менять на что-то более похожее на воду и зелень можно было и раньше, но теперь к этому добавилась возможность управлять цветом атмосферы. И опять же модель освещения стало заметно лучше, так что теперь при сравнении процедурно генерированных планет с планетами ручной сборки уже не возникает прежнего чувства неприятия: ну что вы, как можно мешать это в одну кучу.
Увы, процедурный генератор по прежнему ограничен в своих возможностях. Можно сделать пустынную планету – суперконтинент с изолированными внутренними морями. А можно сделать планету-океан с архипелагами островов. Но ничего похожего на Землю сделать не получается – вместо нескольких больших континентов и океанов процедурный генератор пытается сделать лабиринт из суши и моря. Процедурный генератор может сделать нечто похожее на зеленые низменности и покрытые ледниками высокогорья, но это все. Никакой поясной зональности, никаких обширных внутриконтинентальных пустынь, никаких примечательных деталей рельефа вроде горных хребтов и обширных равнин, каньонов, сети речных русел. В этом отношении текстуры ручной сборки по прежнему вне конкуренции и если в описании планеты упомянута сеть гигантских каньонов, вы можете сделать эти каньоны. Процедурные облака совсем непохожи на реальную картину облачности со спиралями тропических циклонов, струйными течениями и крупномасштабными ячейками циркуляции. Но еще раз увы, настоящие объемные облака сделать в Оолите трудно, если вообще возможно. Я пытался экспериментировать с рельефной облачностью. Что-то похожее на облачную рябь получается лишь в узкой зоне вблизи линии терминатора, и чем ближе к терминатору, тем хуже. Оолит не понимает, что облака – это не горы, и кладет на облака неестественно жесткие тени. Так что издали все эти воронки тропических циклонов над океаном выглядят красиво, но при взгляде с близкого расстояния условность очевидна.
Но все же зеркальные океаны и рельеф – хороший повод взяться за Знаменитые планеты на новом уровне.

С переделкой Знаменитых планет есть одна серьезная проблема. Oolite 1.90, как я уже сказал, умеет читать новые карты нормалей только из planetinfo.plist – а значит, System Makeup через свой скрипт будет перекрывать не только новые процедурно сгенерированные планеты, но и новые Знаменитые планеты. System Makeup надо отключать. Но в свою очередь PlanetLand обращается ко внешнему скрипту System Makeup для выбора пейзажей планет. Нужно как минимум переносить скрипт в PlanetLand, а по хорошему основательно переделывать сам скрипт PlanetLand – он был написан давно и не использует информацию из PlanetEngine. И к тому же скрипт PlanetLand не соответствует строгим требованиям к безопасным именам переменных.
Famous Planets Overhaul также придется отключить, так как он тоже назначает текстуры свои через скрипт и будет перебивать новые Знаменитые планеты.

С учетом вышеизложенного очередное обновление Оониверсума логично разбивается на три этапа.

I. Создание planetinfo.plist с заново определенными параметрами внешнего вида для всех 2048 главных планет.

Косметической коррекцией цвета океанов и континентов дело не ограничится. Большие планеты лучше удерживают не только атмосферу, но и воду. И разве не логично предположить, что крошечная планета-океан размером с Марс – это вряд ли (разве что водно-аммиачный океан под толстым слоем льда), а вот среди больших планет это вполне обычный вариант?
И раз уж PlanetEngine умеет рассчитывать давление атмосферы и температуру на поверхности планеты, разве не логично использовать эти данные для выбора подходящих цветов – лес, степь, пустыня, тундра, снег, марсианская и даже лунная поверхность? А как насчет разнообразия оттенков океанской воды от угрюмо серых арктических океанов до лазури тропических? И разве не логично, что климат планеты определяет степень развития полярных шапок и плотность облачности?
Минуточку, возразит вдумчивый читатель. PlanetEngine – это скрипт, верно? А причем здесь planetinfo.plist?
А притом. Вы ведь не думаете, что я собираюсь редактировать 2048 записей вручную? Для этого я слишком ленив. Для генерации больших planetinfo.plist я использую БД FileMaker. И тот PlanetEngine, который реализован в Sun Gear и Planetary Systems на языке JavaScript, сделан на основе алгоритма, который я написал и отладил в FileMaker.
И по сути дела первый этап работы уже сделан. А чтобы не плодить сущности сверх необходимости, я включил всю новую информацию в обновление уже существующего пакета Habitable Main Planets. Теперь этот пакет не только переопределяет радиусы популяции главных планет Оониверсума, но и придает им более правдоподобный внешний вид.
Решение получилось безопасное. Обновленный пакет Habitable Main Planets технически не конфликтует с System Makeup и Famous Planets Overhaul. Вы можете пока пользоваться этими пакетами – просто в этом случае вы не увидите новый внешний вид планет. А я развязал себе руки для неспешной работы над следующим этапом проекта.

II. Модификация уже существующих пакетов.

В первую очередь речь о PlanetLand. Здесь опять же запланирована работа в три этапа.
1. На скорую руку пропатчить уже имеющийся пакет, чтобы он мог работать автономно от System Makeup, и опять же развязать себе руки для дальнейшей неторопливой работы над пакетом.
2. Зачистить мусорный код и привести имена переменных в соответствие со стандартом.
3. Переписать заново скрипт, определяющий выбор пейзажей, используя на этот раз информацию, которую дает движок PlanetEngine.
Первая часть работы уже сделана, на данный момент есть промежуточный вариант PlanetLand 2.6. На первый взгляд он работает, но на всякий случай оставьте архив с предыдущим вариантом PlanetLand 2.5. У меня просто не хватает времени на тестирование промежуточноых вариантов – буду тестировать финальную редакцию перед релизом.
System Makeup я дальше поддерживать не намерен. Этот пакет свою роль сыграл и его место в музее. Habitable Main Planets теперь делает вполне приличные на вид планеты и от System Makeup можно безболезненно отказаться. По счастью, кроме PlanetLand в моем Оониверсуме нет других пакетов, которые как-то зависят от System Makeup.
Planetary Systems и Moons тоже нужно срочно переделывать, и это как бы не самая неотложная работа на данный момент. В новой модели освещения планеты получаются слишком светлые,кривые яркости надо загибать вниз. Апгрейдить эти пакеты под новые возможности пока затруднительно – они определяют текстуры планет и лун через скрипты. В случае Moons можно вписать нужные карты текстур в planetinfo.plist и в принципе это должно сработать. С Planetary Systems ситуация сложнее – этот пакет использует умный механизм выбора текстур. Хотелось бы все же надеяться, что в следующем релизе игра будет поддерживать назначение карты нормалей через скрипт.

III. Уникальные карты ручной сборки.

На этот раз я не намерен повторять свой эпический подвиг – закрыть уникальными картами все Знаменитые планеты. Переделка затронет лишь планеты с примечательными особенностями внешнего вида.
Единого пакета Famous Planets Overhaul больше не будет. Большая часть текстур в пакетах System Makeup и Famous Planets Overhaul была в 2K формате (2048 х 1024). Я намерен перейти на формат 4K. Перешел бы и на 8K, но к сожалению, я ограничен разрешением исходных файлов для сборки текстур. Старая 2K текстура Лэйв весила 3.3 MB. Новая 4K текстура Лэйв с картой нормалей весит 15 MB. Следует ожидать, что пропорционально подрастут и остальные карты, поэтому я намерен выпускать обновленные Знаменитые Планеты отдельными пакетами, как это уже сделал с Лэйв.
Чтобы увидеть новую Лэйв, а в дальнейшем и другие новые Знаменитые планеты, пакет Famous Planets Overhaul придется отключить. Увы, при этом вы теряете не только старые уникальные карты, но и описания, сделанные для нескольких дополнительных планет набора. Я думаю подготовить версию пакета Famous Planets Addenda, в которой будет только текстовая информация, отсутствующая в пакете Famous Planets версии 2.7. К сожалению, весь набор новых Знаменитых планет будет готов не скоро – эта трудоемкая работа быстро не делается. А пока что рекомендация для продвинутого юзверя: вы можете отключать и повторно включать старый пакет Famous Planets Overhaul без его удаления из папки AddOns:

Famous Planets Overhaul.oxp → Famous Planets Overhaul.oxp OFF

Спасибо за понимание.


  Re: Stranger's World: замечания и предложения
Не в сети
Archangel
Аватар пользователя

Зарегистрирован: 21.11.09
Сообщений: 511
Я откладывая игру «на завтра» походу как-то лет 8 точно ее и не запускал, ибо в мыслях «да только вот вчера ж вроде все было». А тут такое великолепие за все время накопилось. Даже стыдно стало, какого хрена я ничего не пробовал раньше


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









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

cron