Обсуждение терраформинга

Самостоятельная настройка параметров игры и создание модификаций.
Аватара пользователя
Artos
Frigate
Сообщения: 533

Обсуждение терраформинга

Сообщение Artos » 18 окт 2018, 22:03

Ufnv, большое спасибо за оперативность с новым патчем! Теперь есть чем занять мозги&руки... ;)
Просьба пояснить применение новой функции UFChangePlanetType, а конкретно что/когда нужно использовать в качестве 2-го аргумента "int Reason" при её вызове?
Аватара пользователя
Ufnv
Senior Developer
Сообщения: 1188

Патчи к игре.

Сообщение Ufnv » 18 окт 2018, 22:41

Reason:

0 - Nova
1 - Destroy
2 - Degrade
3 - Upgrade

В какой именно тип делается Upgrade или Degrade, прописывается в PlanType.ini так же как сейчас Nova/Destroy.

Например, Degrade "Exhausted2"
Аватара пользователя
Artos
Frigate
Сообщения: 533

Патчи к игре.

Сообщение Artos » 18 окт 2018, 23:53

Еще раз спасибо за патч и ответ.
Предложение: Может быть стОит внести в файл МодКит'а (const.a) что-то типа:

Код: Выделить всё

// ChangePlanetType [+]added in v1.06g
def const cpNova = 0
def const cpDestroy = 1
def const cpDegrade = 2
def const cpUpgrade = 3
- чтобы не в "голове" держать, а использовать как штатные константы?!
Аватара пользователя
Artos
Frigate
Сообщения: 533

Патчи к игре.

Сообщение Artos » 06 ноя 2018, 09:20

Ufnv, отказывается работать функция userfunc UFChangePlanetType(int Handle, int Reason)
1. Внес необходимые типы для Upgrade или Degrade в файл PlanType.ini (добавив строки сразу после Nova/Destroy);
2. Восстановил планетарную политику TerraformingProject (в простейшем виде);
3. Запускаю политику -> стартует таймер... По окончании запускается функция UFChangePlanetType(PlanetHandle, 3) и ... НИЧЕГО не происходит. Тип планет остается неизменным. Хотя вроде бы и окно подтверждения изменения типа планеты должно появляться, судя по наличию ? Yes_ : No_ внутри функции...

Для проверки попробовал использовать мод "Star System Destroyer", в котором вместо UFDestroyPlanet(PlanetHandle) попробовал использовать UFChangePlanetType(PlanetHandle, 2) или UFChangePlanetType(PlanetHandle, 3) - результат нулевой, т.е. планеты НЕ деградируют и не апгрейдятся. :(
Что делаю не так?

---
Дополнительно вопрос:
Как все же при бомбардировке планет воспользоваться функцией деградации? Ведь нигде в доступных кодах ModKit'а, связанных с бомбардировками, нет доступа к PlanetHandle, чтобы передать этот аргумент в UFChangePlanetType(PlanetHandle, 2).
Аватара пользователя
Artos
Frigate
Сообщения: 533

Обсуждение терраформинга

Сообщение Artos » 14 ноя 2018, 06:00

(отсюда)
Veshnyak писал(а):Источник цитаты Artos писал:
Источник цитаты: Возвращаясь к теме мода терраформинга, то этот процесс предполагает снос всех планетарных строений (кроме кол.модуля) и потерю почти всего населения.


Снос понятно, на месте гор стали моря. Но население... Неожиданный ночной терраформинг без предупреждения? Как минимум свое население должно свалить, они же не идиоты. Можно заставлять игрока увозить всех на транспортах, но кмк это лишний шаг, микроменеджмент пусть идет лесом. Еще как вариант можно оставлять (в смысле пускать в расход, оставлять на планете) только неассимилированных, типа не жалко.
Т.к. пока не починена функция апгрейда планет ( UFChangePlanetType), то не могу сказать точно, будет ли она работать также как функция UFDestroyPlanet, которую пока использую для терраформинга, поменяв в настройках PlanType.ini строку с Destroy на нужный мне тип для трансформации. Или будет работать иначе... Скорее всего будет апгрейдить аналогично, т.е. планета подменяется на девственно чистую с новым типом. Даже приходится заново колонизировать(!).

Veshnyak писал(а):Источник цитаты Artos писал:
Источник цитаты: Терраформинг предполагается двух типов: планетарной политикой и орбитальным модулем.


В чем принципиальное отличие?
Как пока предполагаю и делаю (вкратце):
а) Терраформинг планетарной политикой
1. Игрок принимает планетарную политику, которая требует ежемесячных минеральных ресурсов и почти всей производительности планеты. Предполагается, что вся планета трудится над некими сооружениями/шахтами/...
2. От производительности планеты (обычных молоточков) зависит время требуемое до заключительного этапа терраформинга. Если на планете куча заводов и орб.фабрик - время значительно сокращается. Т.е. работает формула: Требуемое кол-во молотков на весь процесс -(минус) Ежемесячная наработка молотков (с учетом бонусов). Как только все выработается - запускается процесс терраформинга.
3. Перед запуском терраформинга планеты (за месяц) игрок получает предупреждение и... может быть все же сделаю возможность эвакуировать население (кроме чужих расе игрока аборигенов). Игрок может сам решить что порушить/эвакуировать...
4. Сразу после смены типа терраформируемой на ней восстанавливаются все производственные постройки (колонии/заводы/орбиталки). Пока не решил, будут ли восстанавливаться научные постройки и шахты. Вероятно должны оставаться. Гидро- иль морские фермы точно уничтожаются. Разные танки и прочая наземная техника - под нож. Все кол-во населения (расы игрока) восстанавливается на планете. Неассимилированные аборигены пока будут исчезать, т.к. вычислять их кол-во на конкретной планете потребует еще некоторое кол-во строк кода, а хочется опробовать в игре хотя бы без них. ;)
Т.о. игрок получает по сути чистую, но(!) обустроенную планету без (гидро-/морских) ферм, но с новыми запасами минералов и новыми бонусами.

б) Терраформинг орбитальным модулем
Задуман в дополнение к моду "Разрушитель планет", т.е. как способ задействовать в игре "AsteroidBelt" (Пояс астероидов). Т.е. процесс не требует колонизированной планеты, а может производиться над любой планетой (ну может быть за исключением планетоидов).
1. Игроком изучается соотв.технология, которая дает возможность строить летающую терраформирующую платформу (на базе "Боевой платформы") с модулем терраформинга. Затраты и время постройки очень большие - т.е. это и определяет основное время требуемое на подготовку самого процесса терраформирования планет.
2. Построив платформу игрок направляет её к нужной звезде. Платформа должна быть тихоходной, т.е. скорость полета мала.
3. В созвездии игрок выбирает нужную ему планету или пояс астероидов и, имея значительный требуемый запас минералов, запускает процесс.
4. Все, что было на планете уничтожается, точнее исчезает прежняя планета и появляется новая, девственно чистая, с новым типом и новыми свойствами. Игроку остается только её заново колонизировать.
Примечание: Возможно сделаю (если получится), что платформа превращается в колониальный модуль, тем самым колонизируя планету для игрока.
---
Т.о. основное отличие в способах терраформинга:
- а) за счет производства самой же терраформируемой планеты, а значит время для "богатых" на фабрики планет будет значительно меньше чем для "бедных".
- б) за счет орбитального производства какой-то планеты игрока с индустриальной экономикой + запас минеральных ресурсов + время полета до целевой планеты.
Вариант а) по сути готов в черновом варианте и жду починки функции UFDestroyPlanet от Владимира...
Если удастся сделать терраформинг для ИИ-рас (это очень не скоро), то вариант б) может сильно разнообразить игру и борьбу с терр.платформами и/или за терраформируемые планеты. А вариант а) усилит интригу игры, т.к. игроку будет неведомо (как правило) где/что терраформируется у других рас.
Аватара пользователя
Veshnyak
Destroyer
Сообщения: 903

Обсуждение терраформинга

Сообщение Veshnyak » 14 ноя 2018, 11:53

Мне нравиться. Примерно так и представлял.
Только не надо превращать в колониальный модуль платформу. Затраты и время постройки указаны для неё большие - дешевле будет сделать обычный колонизатор.
И еще. Насколько понял - платформа будет строиться долго, сам процесс преобразования быстрый? Он же тоже должен занимать значительное время.
Аватара пользователя
Artos
Frigate
Сообщения: 533

Обсуждение терраформинга

Сообщение Artos » 14 ноя 2018, 13:02

Выше в сообщении ошибся с указанием ошибочной функции, нужно чинить UFChangePlanetType (!), но Владимир что-то молчит...
---
Veshnyak писал(а):Источник цитаты Только не надо превращать в колониальный модуль платформу.
Тут есть заковыка: построив одну платформу игрок может себе кучу планет терраформировать... т.к. пока предполагаю, что основное время на подготовку терраформинга идет именно на постройку платформы, а сам процесс (при нажатии игроком кнопки действия) краток.
Veshnyak писал(а):Источник цитаты платформа будет строиться долго, сам процесс преобразования быстрый?
П сути в кодах нажатие кнопки "Терраформировать планету" просто запускается обработчик события и сам процесс может быть мгновенным. Но можно запустить таймер, по окончанию которого собственно и произойдет "подмена" планеты. Но(!) тут уже не знаю, удастся ли отключить управление платформой от игрока, т.к. он может полететь от планеты дальше терраформировать...
Veshnyak писал(а):Источник цитаты Он же тоже должен занимать значительное время.
Хм, вообще то согласен, но(!) вспоминаем (иль смотрим) фильм "Через тернии к звездам" (~1:45:00 и ~2:17:25), в котором корабль ассенизаторов терраформирует атмосферу планеты по сути за часы. Т.о. пустынные/загрязненные/токсичные могут быстро терраформироваться.
В общем пока ориентируюсь на некий короткий таймер, если не удастся отключить управление платформой от игрока. Если же удастся - то растягивать можно будет сколь душе угодно. Сюда же и затрачиваемые ресурсы можно будет перераспределить.
Аватара пользователя
Veshnyak
Destroyer
Сообщения: 903

Обсуждение терраформинга

Сообщение Veshnyak » 14 ноя 2018, 14:05

Artos писал(а):Источник цитаты Тут есть заковыка: построив одну платформу игрок может себе кучу планет терраформировать...
Ну тогда несколько вариантов
1. Сделать очень дорогую стоимость. Что бы не терраформировали всё подряд.
2. Делать посадку. Платформа создает здание в списке для постройки (или автоматом запускает постройку здания), в нем уже и время и ресурсы, сама исчезает. После окончания "взлетает", появляется корабль, управление отдается игроку обратно. Насколько помню, можно было командами и создать и уничтожить корабль. О, даже не здание, а типа орбитального завода, на орбите. Более логично.
Artos писал(а):Источник цитаты Т.о. пустынные/загрязненные/токсичные могут быстро терраформироваться.
Кстати, кто в кого переделывается?
Аватара пользователя
Artos
Frigate
Сообщения: 533

Обсуждение терраформинга

Сообщение Artos » 14 ноя 2018, 15:08

Veshnyak писал(а):Источник цитаты кто в кого переделывается?
Пока делаю так:
► Показать
Примечание: От типа исходной планеты будет зависеть потребное количество затрат молоточков на процесс терраформирования - т.о. будет и время варьироваться для разных типов планет.
Veshnyak писал(а):Источник цитаты 2. Делать посадку. Платформа создает здание в списке....
Вряд ли такая заморочка с исчезновениями/появлениями летающей платформы и здания будут поняты игроками, да и на астероиды некуда садиться(!) и негде строить! ;) А если захочется терраформировать "чужую" планету? ... ;)

Есть ещё один вариант: Игрок должен найти разбросанные по вселенной контейнеры с созданной когда-то древней расой Прионов платформой терраформинга + некие скрижали с неведомой никому технологией (это уже затянет возможность терраформирования планет как минимум до середины игры). Собрав платформу (аналогично прионовскому кораблю) игроку потребуется отремонтировать её и загрузить много-много минералов, далее разобрать и загрузить в транспорт - можно отправляться к целевой планете. По прибытии, платформа вновь собирается, становясь орбитальной стационарной(!) станцией (что-то типа: смеси орб.верфь + корабль с ремонтным модулем) - вот эта орбиталка с её производительностью и будет терраформировать планету, аналогично варианту а), но с орбиты.
По окончанию терраформирования орбиталку нужно будет вновь разбирать, транспортировать, ремонтировать и загружать ресурсами. Ну и сам ресурс на количество терраформированных планет для платформы можно будет установить в 2...3 штуки, после чего платформа разрушается.
Аватара пользователя
Veshnyak
Destroyer
Сообщения: 903

Обсуждение терраформинга

Сообщение Veshnyak » 14 ноя 2018, 16:20

Горячие, холодные, карликовые и тп думаю лучше деградировать до карликовой, а "nova" сделать до астероидного пояса. Если "=" - это значит ничего не происходит, так?
Artos писал(а):Источник цитаты захочется терраформировать "чужую" планету?
Благотворительность? Или если в худшую сторону, тогда легче просто разрушить
Artos писал(а):Источник цитаты найти разбросанные по вселенной контейнеры с созданной когда-то древней расой Прионов платформой терраформинга
Хороший вариант. Только тогда нужно добавить после сборки платформы и исследование соответствующей технологии, как с Богованами. Чтобы можно было потом свою построить. Ну и "загрузки ресурсами" же нет. А было бы неплохо, кстати. Можно было бы прилетать, высасывать все ресурсы из планеты (одновременно с ухудшением качества планеты) и сваливать домой :)
Аватара пользователя
Lex
Frigate
Сообщения: 530

Обсуждение терраформинга

Сообщение Lex » 14 ноя 2018, 21:30

Artos писал(а):Источник цитаты б) Терраформинг орбитальным модулем

Пока согласен на такой вариант только. Если получится, можно первый попробовать в качестве улучшения второго варианта.
Касательно длительности/условий терраформинга - может, проще сделать счетчик процесса, завязанный на количество терраформирующих платформ на орбите без их ресурсного наполнения? Т.е. нужно несколько платформ разместить и чтобы они были неподвижны (монтируются транспортом после разборки). Потом после окончания процесса перевозятся в другое место. Главное - чтобы жрало энергии тыщ на 50 минимум. Надо бы энергию ввести как ресурс уже.
Тут еще можно разделить процесс технологиями. Например, замороженную планету проще превратить в океанскую, дороже -в землеподобную, еще дороже - в пустыню и т.п. И на каждую такую пару нужна своя технология терраформирования.
Хорошо бы приделать высасыватель ресурсов из планеты, чтобы она уничтожалась и разное количество ресурсов (какие на ней были) давалось бы игроку мгновенно или, лучше, постепенно.
Аватара пользователя
Artos
Frigate
Сообщения: 533

Обсуждение терраформинга

Сообщение Artos » 14 ноя 2018, 22:52

Veshnyak писал(а):Источник цитаты Горячие, холодные, карликовые и тп думаю лучше деградировать до карликовой, а "nova" сделать до астероидного пояса. Если "=" - это значит ничего не происходит, так?
Да, '=' - это пометка о том что планета сохраняет свой тип. При сменах типов планет, ИМХО, стОит учитывать и 'Size' (размер планет), чтобы не получалось у игрока, разрушив/отбомбировав, например, планету-карлик - за один раз превратить её терраформированием в "земного типа". 'Degrade' - это свойство объектов планет ухудшаться при, например, орбитальных бомбардировках. Делать из горячих/холодных планеты-карлики - у меня, например, вызывает вопрос: "Это куда же делась масса планеты всего лишь от бомбардировки с орбиты?".
'Nova' - пока не трогаю. Это все же связано с Богованами, которые взрывают звезды а не рушат планеты, т.е. "очищают мироздание от скверны" (от разума). Как написано в прионовских скрижалях: «…спасти, уничтожив» - вот цель богованов. Т.о. 'Nova' не должна рушить планеты до астероидов, иначе каждая волна богованов будет разрушать мироздание приближая именно к хаосу - астероидным полям во всех мирах.
Veshnyak писал(а):Источник цитаты Благотворительность? Или если в худшую сторону, тогда легче просто разрушить
Не-е-е-е! ;) Тут все поинтереснее может быть:
Можно, например, заключив договор о совместных границах, "подселиться" к уже имеющейся у ИИ планете в стратегически нужной точке. Партнер немного "поворчит" на такое нахальство и даже может потребовать отдать плохонькую планетку, но(!) не будет выгонять, объявляя войну. Вот тут и засада для него - подгоняем платформу и ... пользуясь и защитой звезды нашим сожителем-партнером, запускаем терраформирование не своей(!), а чужой планеты. В результате, а) получаем контроль над звездой (наша территория) без явных враждебных действий против партнера, т.е. партнер не обижается. б) получаем чистую планету и нужно только быстро ее колонизировать. В итоге: получаем хорошую позицию и не задираем партнера. ;)
Ну и иные вариации можно напридумывать, была бы возможность их реализовывать.
Veshnyak писал(а):Источник цитаты Чтобы можно было потом свою построить.
Но(!) пока предполагаю что терраформинг редкое событие в игре! Т.е. 1-3 раза для игрока, а "научившись строить" - предполагает уже неоднократное повторение терраформирования. Т.о. найденные контейнеры должны позволять создать только один экземпляр платформы, дизайн которой НЕ доступен игроку! (аля прионовско- арионовские корабли)
Veshnyak писал(а):Источник цитаты Ну и "загрузки ресурсами" же нет. А было бы неплохо, кстати.
Предполагаю, что осилю завязать событие возможности сборки контейнеров платформы с "забором" у игрока ресурсов. Если разобрать обратно без терраформинга - ресурсы возвращаются "в амбары".
Veshnyak писал(а):Источник цитаты Можно было бы прилетать, высасывать все ресурсы из планеты
А вот это пока вряд ли получится, т.к. "высасывание" ресурсов из планет происходит в движке игры и пока получать планетарные ресурсы можно, если только, разрушая до астероидов. А это можно сделать будет модулем "разрушитель планет", а не терраформингом.

---
Lex писал(а):Источник цитаты Если получится, можно первый попробовать в качестве улучшения второго варианта.
;) Вот только всё наоборот - вариант а) уже готов в кодах (в статусе альфа-версии) и уже играюсь с ним, а вот для б) пока только наработки...
Lex писал(а):Источник цитаты может, проще сделать счетчик процесса, завязанный на количество терраформирующих платформ на орбите без их ресурсного наполнения?
Делаю не как проще, а как логичнее и интереснее (на свой вкус ;) ). Завязывать только на кол-во платформ без ресурсов - означает что, наклепав единожды, игрок нахаляву будет получать бонусные планеты -> ресурсы. А значит: ресурсы в игре обесценятся, т.к. будут по сути воспроизводимы и в больших количествах.
Lex писал(а):Источник цитаты Тут еще можно разделить процесс технологиями. Например, замороженную планету проще превратить в океанскую, дороже -в землеподобную, еще дороже - в пустыню и т.п.
Ты уже фантазируешь... ;) Не забывай, что поле 'Upgrade' для типа планеты одно(!), да и то пока не работает из-за нерабочей функции UFChangePlanetType. Т.о. пока возможность таких вариаций Владимиром не предполагаются.
Последний раз редактировалось Artos 15 ноя 2018, 00:37, всего редактировалось 1 раз.
Аватара пользователя
Artos
Frigate
Сообщения: 533

Обсуждение терраформинга

Сообщение Artos » 14 ноя 2018, 23:05

Ufnv, вопрос по 'bpPerformsTerraforming' - свойству для терраформирующего проекта, имеющееся к кодах и зашитое в движок: "Что это означает? На что и как влияет?"
Аватара пользователя
Ufnv
Senior Developer
Сообщения: 1188

Обсуждение терраформинга

Сообщение Ufnv » 15 ноя 2018, 01:04

Вообще, работает UFChangePlanetType.

Простая проверка:
1. В plantype.ini для Earthlike прописываем
Degrade "Active"
Upgrade "Active"
после
Destroy "AsteroidBelt"

2. в race.a, в phrase CreateHomeworld() в самом конце добавляем call UFChangePlanetType(PlanetHandle, 2)

3. Компилируем .a файлы, копируем

4. Запускаем игру, New Game, стартовая планета будет "активной".

Возможно, Ваша проверка не сработала т.к. вы использовали сейв, а не New Game?