Поэтому меня посетила идея создать несколько новых стартовых систем на различную тематику. Сразу оговорюсь, что навыками программирования я не владею - я просто вскрыл пару модов, нашёл файлы, отвечающие за генерацию так называемых "prescripted_species_systems", нашёл то же самое в файлах игры и принялся разбираться, что там есть, и что за что отвечает. Делается всё в документе txt, никаких дополнительных ухищрений не надо. Так же помогла одна статейка в интернете:
https://steamcommunity.com/groups/stellarismodders/discussions/1/350533172686178369/
- и всё же, многие вопросы остались нерешёнными, и я надеюсь найти их решения совместными усилиями (тем более, что я не знаю английский на достаточном уровне, чтобы сидеть на англофорумах).
Для начала я решил создать максимально простенькую систему, имитирующую старый красный карлик, поглотивший все планеты, кроме двух карликовых бедных "плутона". Вот что получилось:
Где же вторая обесчещенная планета, второй "плутон", спросите вы? А нигде - его нет. Тут вообще много чего нет из того, что я туда пытался залепить. Тем не менее, половина есть, и кое-что полезное я поведать могу. Но обо всём по порядку.
1.2) Там же вы найдёте много интересного, в том числе файл prescripted_species_systems.txt, где запрограммированы Солнечная система и Денеб - их можно использовать как образец. Также интересен example.txt.
А если дофига разбираетесь в скриптах, в этой папке можно перевернуть с ног на голову генерацию вообще всего в вашей Галактике.
1.3) Посмотреть верное написание и полный список классов звёзд можно здесь:
папка с игрой\Stellaris\common\star_classes\00_star_classes.txt
если есть моды и патчи, добавляющие новые классы, то могут появиться ещё текстовые файлы, или измениться этот - разные моды делают это по-разному
1.4) Аналогично с планетами: папка с игрой\Stellaris\common\planet_classes\00_planet_classes.txt
Кстати, если в них что-нибудь переделать, можно много чего интересного получить. Ну, или испортить игру. Я лично расширил максимальных и минимальных границы размеров планет и лун. Можно сделать доступными для колонизации неколонизируемые типы миров, только плитка у них у всех будет как у континентального (см. скриншоты ниже)
1.5) В ...\common\planet_modifiers вы найдёте файлы с планетарными модификаторами, правда, мне не удалось их присвоить планете либо звезде при генерации.
1.6) ...\common\buildings - здания
и т.д., для создания стартовой системы хватит этого
2. Создание стартовой системы на примере (с косяками):
Открываем наш созданный текстовый документ, и вписываем туда код, копируя с СС или хоть с моей (она попроще), на ходу меняя по своему разумению. Самое главное, что нужно запомнить, каждый отдельный компонент системы вписывается так:
NAME_system = { -просто начало. Назовите как-нибудь - это нигде не отображается
class -класс звезды в системе, отображается на галактической карте при наведении, не определяет звезду на самом деле
asteroids_distance -параметр орбиты астероидного кольца. как расположить несколько - пока не ясно
usage = custom_empire -оставьте так, чтобы можно было присвоить стартовую систему любой вашей империи
planet = { -первая планета. ВНИМАНИЕ - звезда в стелларисе - это тоже планета, только класса звезда и с радиусом орбиты 0. Начать нужно с неё, если вы не геоцентрист. Помните: форпост можно строить только над звездой/чд/пульсаром
name = "NAME"
class = "pc_m_star" -её класс. Смотрите список в 00_star_classes.txt или 00_planet_classes.txt, или альтернативных файлах
orbit_distance -дистанция от орбиты предыдущего тела, НЕ ОТ ЦЕНТРА СИСТЕМЫ!
orbit_angle -положение на орбите, как на циферблате. Если сделать одинаковыми - планеты выстроятся в линию
size -размер планеты/звезды. Для колонизируемых определяет ещё и число клеток
has_ring = no/yes -кольца
modifier -модификаторы
init_effect = { -эффекты (СЛОЖНА)
какой-нибудь эффект
}
} -завершающая скобка. следить за фен-шуем скобок! их должно быть каждой по паре: {...}
Вот как выглядит моя система в виде текстового документа:
(кто-нибудь знает, как сделать спойлер?)
| Код | Результат |
|
Meigui_system = { class = "sc_m" asteroids_distance = 19 asteroids_distance = 80 asteroids_distance = 95 usage = custom_empire
planet = { name = "Meigui A" class = "pc_m_star" orbit_angle = 30 size = 16 orbit_distance = 0 has_ring = no modifier = "High_Metallicity" }
planet = { class = random_asteroid orbit_distance = 17 size = 3 has_ring = no init_effect = { orbital_deposit_tile = { clear_deposits = yes add_deposit = d_mineral_deposit } } } planet = { class = random_asteroid orbit_distance = 1 orbit_angle = 288 size = 2 has_ring = no init_effect = { orbital_deposit_tile = { clear_deposits = yes add_deposit = d_mineral_deposit } } } planet = { class = random_asteroid orbit_distance = 0 orbit_angle = 202 size = 2 has_ring = no init_effect = { orbital_deposit_tile = { clear_deposits = yes add_deposit = d_mineral_deposit } } } planet = { class = random_asteroid orbit_distance = 0 orbit_angle = 130 size = 1 has_ring = no init_effect = { orbital_deposit_tile = { clear_deposits = yes add_deposit = d_mineral_deposit } } } planet = { class = random_asteroid orbit_distance = 1 size = 1 has_ring = no init_effect = { orbital_deposit_tile = { clear_deposits = yes add_deposit = d_mineral_deposit } } } planet = { name = "Hua-Xiwang" class = "pc_barren" orbit_distance = 18 orbit_angle = 350 size = 11 starting_planet = yes has_ring = no modifier = "low_gravity_2" modifier = "Thin_Atmospheres" modifier = "weak_magnetic_field" modifier = "mineral_poor" modifier = "mineral_poor" init_effect = { prevent_anomaly = yes } init_effect = { orbital_deposit_tile = { clear_deposits = yes add_deposit = d_mineral_deposit } } init_effect = { random_tile = { limit = { has_blocker = no has_building = no num_adjacent_tiles > 2 } set_building = "building_capital_1" add_resource = { resource = energy amount = 1 replace = no } } random_tile = { limit = { has_blocker = no has_building = no } set_building = "building_hydroponics_farm_1" add_resource = { resource = food amount = 1 replace = no } } random_tile = { limit = { has_blocker = no has_building = no } set_building = "building_power_plant_4" add_resource = { resource = energy amount = 1 replace = no } } random_tile = { limit = { has_blocker = no has_building = no } set_blocker = "tech_tb_quicksand_basin" } random_tile = { limit = { has_blocker = no has_building = no } set_blocker = "tech_tb_quicksand_basin" } random_tile = { limit = { has_blocker = no has_building = no } set_blocker = "tech_tb_quicksand_basin" } random_tile = { limit = { has_blocker = no has_building = no } set_blocker = "tech_tb_quicksand_basin" } random_tile = { limit = { has_blocker = no has_building = no } set_blocker = "tech_tb_quicksand_basin" } random_tile = { limit = { has_blocker = no has_building = no } set_blocker = "tech_tb_quicksand_basin" } random_tile = { limit = { has_blocker = no has_building = no } set_blocker = "tech_tb_quicksand_basin" add_resource = { resource = physics_research amount = 1 replace = no } } } } planet = { name = "Yi" class = "pc_frozen" orbit_distance = 26 orbit_angle = 6 size = 3 has_ring = no modifier = "mineral_poor" } } planet = { class = random_asteroid orbit_distance = 14 orbit_angle = 288 size = 2 has_ring = no init_effect = { orbital_deposit_tile = { clear_deposits = yes add_deposit = d_mineral_deposit } } } planet = { class = random_asteroid orbit_distance = 0 orbit_angle = 330 size = 2 has_ring = no init_effect = { orbital_deposit_tile = { clear_deposits = yes add_deposit = d_mineral_deposit } } } planet = { class = random_asteroid orbit_distance = 15 orbit_angle = 24 size = 1 has_ring = no init_effect = { orbital_deposit_tile = { clear_deposits = yes add_deposit = d_mineral_deposit } } } planet = { class = random_asteroid orbit_distance = 0 orbit_angle = 97 size = 3 has_ring = no init_effect = { orbital_deposit_tile = { clear_deposits = yes add_deposit = d_mineral_deposit } } } } |
<---успешно сгенерироваловалось только первое, и то была проблема, т.к. в файле example.txt есть минимальная уладённость кольца, пришлось изменить <---с этим проблем нет
звезда сгенерировалась успешно, но признаки вместо "высокой металличности" получаются случайные. Возможно, я неверно задаю
астероид сгенерировался успешно
даёт 1 ед минералов, как регулировать количество - не ясно
то же
то же
то же
и последний астероид. Все 5 сгенерировались нормально, все дают по 1 минералу. Единственное, что астероиды размеров 1,2,3 выглядят много больше положенного, в отличии от планет и лун.
Стартовая планета. С неё начинаются проблемы. Генерация мира размером ниже минимума проходит ус- пешно, даже лезть в example.txt не надо. Хоть планету с 1 клетой забабахать. Выше 25 диаметр будет расти, но не число клеток. Нельзя задать неколонизируемый тип планеты, даже если сделать его колонизируемым в planet_classes/ 00_planet_classes.txt (colonizable= с "no" на "yes"). То есть можно, но при старте игры он заменится на одну из списка доступных в меню выбора, а с интерфейсом мне пока не совладать.
<--никак не удаётся установить модификаторы, хотя вроде бы запись правильная
возможная критическая ошибка должна быть в коде, начиная с этой строки
<--Здесь задаются стартовые здания, к сожалению, сгенерировалась только планетарная администрация 1 уровня.
<--вот она <-а уже начиная отсюда не работает ничего. В теории, так задаются ресурсы клеткам. На деле не работает.
<--и далее ни одно здание не построилось, ресурсы на клетках по-прежнему появляются случайно
<--здесь я пытался загадить всю планету зыбучими песками (кроме клеток стартовых зданий). Безрезультатно.
Дальше ничего не генерируется, в том числе не появляется вторая планета и ещё несколько астероидов. Это принципиальная вещь: если где-то ошибка, система сгенерируется только до того объекта, в котором она есть. Если ошибка будет на стадии создания солнца - в системе останется один лишь пояс астероидов, а название вашей планеты будет висеть в центре, но её самой не будет, как и всего остального.
Я задолбался искать, где ошибка, и как её исправить
<--вот это должна была быть вторая планета Размером 3 клетки
|
3. Итак, подводим итоги:
-Можно без проблем создать систему с определённой звездой (или иным объектом), или несколькими, с определёнными неколонизируемыми планетами, и определить размер стартовой планеты от 1 до 25 в клетках, и до полного безобразия в диаметре.
-Нельзя с помощью текстового документа поселить своих тараканов на необитаемой планете, хотя это не невозможно в принципе, если как-то добавить тип планеты в меню выбора в начале игры.
-С модификаторами ничерта не выходит, но генерацию это не рушит - может, кто поймёт, как исправить?
-Если начать мудрить с ресурсами, квадратами и прочим, велик шанс напортачить и похерить генерацию системы
-Если поставить обитаемую планету со всеми наворотами в конце системы, то в принципе, плевать.
4. Скриншоты:
1 - Как видите, планета размером 11 клеток, хотя в стандарте игре минимум - 12.
| А вот она же, но уже размером 50. Клеток при этим 25. |
Вот колонизируемая не-стартовая планета класса "Холодная безжизненная", размером 7 клеток. Без всяких изменений пригодность сносная. | А вот так вот интересно выглядят её клетки. Все без ресурсов, на одной - тот же список, что при добыче с орбиты. |
А вот солнышко размером 300 с гаком, созданное не мной, а из мода, который я распотрошил - из него же портреты расы на остальных скриншотах. Мод хороший, только мужской половине портретов нужен мешок на голову. |
ЗЫ: А кольцо астероидов у меня, кстати, всё-таки скокнуло обратно на дальнюю дистанцию - похоже, ему планета мешает. Наверняка там есть минимальное расстояние, чтобы планеты не генерировались в кольце астероидов.
5. Моды
Советую:
1) Planetary Diversity - прекрасный мод, который стоит ставить на стелларис по-умолчанию. Без него уныло. К тому же, в нём в интерфейсе выбора типа предпочитаемого мира есть три свободных места.
2) More Star Classes - один из лучших модов. Добавляет объект класса "барицентр" и заставляет генерироваться двойные/тройные/иногда четверные и пятерные системы, белые/коричневые/чёрные карлики, гиганты и сверхгиганты. Прекрасно вписывается, расширяет возможности для нашего дела.
3) Guilli’s Planet Modifiers - планетарные и звёздные модификаторы
4) Hypothetical Stars - тоже довольно интересный мод. Я как-то знатно повоевал в системе белой дыры, на которую мне всё время нападали. Поскольку БД полностью снимала щиты, я построил флот с одной только бронёй, и регулярно выносил флот мародёров, превосходящий меня числом. Только вот, если вы физико-нази, он вам противопоказан. Ибо у БД не может быть системы, а обитаемые планеты у звезды из тёмной материи - это... странно.
6. По поводу установки модов на стелларис:
Погуглите статьи на эту тему... и бросьте их в мусоропровод, так как там написана полная хрень. Не знаю, как на стимовской версии, но в обычной все файлы моды должны быть ни в какой-то папочке в "моих документах", а по канону - в соответствующих папках игры. Замена файлов, и всё прочее.
В ...\Documents\Paradox Interactive\Stellaris\mod должен остаться только управляющий файл .mod
Удачи с моддингом вашей времяпожиралки!
А за сим у меня пока всё - надеюсь, что найду единомышленников, с кем мы решим все проблемы. Я потратил сегодня большую часть дня, экспериментируя с генерацией системы и параллельно записывая эту простынь для вас и для себя. Устал, как собака. В рунете, по результатам моих изысканий, нет статей со сколько-нибудь исчерпывающей информацией по этой теме, да и поиск всё время норовит выдать что-то левое. Если же мы разберёмся со всеми ошибками, систему мечты сможет сделать себе каждый. А я своими ещё и поделюсь. Если будет отклик - продолжу выкладывать результаты своей деятельности, а там - глядишь - и на целый мод наскребу. По крайней мере, я провёл большую работу, и старался так что прошу не делать мне каку
Жду знатоков в комментариях