Создание собственного варианта стартовой системы. Что получилось и что ещё нет. Часть 1.
Солнечная система или Денеб?
Денеб или солнечная система?
Теорема Эскобара.
Прямо скажем, выбор стартовой системы в стелларисе небогат. Можно, конечно, поразвлечься рандомом, но желаемую звезду или размер планеты можно выбивать долго, особенно сочетание оных. И ничего особенного не получишь.
Денеб или солнечная система?
Теорема Эскобара.
Прямо скажем, выбор стартовой системы в стелларисе небогат. Можно, конечно, поразвлечься рандомом, но желаемую звезду или размер планеты можно выбивать долго, особенно сочетание оных. И ничего особенного не получишь.
Поэтому меня посетила идея создать несколько новых стартовых систем на различную тематику. Сразу оговорюсь, что навыками программирования я не владею - я просто вскрыл пару модов, нашёл файлы, отвечающие за генерацию так называемых "prescripted_species_systems", нашёл то же самое в файлах игры и принялся разбираться, что там есть, и что за что отвечает. Делается всё в документе txt, никаких дополнительных ухищрений не надо. Так же помогла одна статейка в интернете:
https://steamcommunity.com/groups/stellarismodders/discussions/1/350533172686178369/
- и всё же, многие вопросы остались нерешёнными, и я надеюсь найти их решения совместными усилиями (тем более, что я не знаю английский на достаточном уровне, чтобы сидеть на англофорумах).
Для начала я решил создать максимально простенькую систему, имитирующую старый красный карлик, поглотивший все планеты, кроме двух карликовых бедных "плутона". Вот что получилось:
1. Какие файлы понадобятся:
1.1) В папке со Стелларисом\Stellaris\common\solar_system_initializers
мы должны создать текстовый документ и назвать его, например, так: Meigui_prescripted_species_systems.txt - хотя я подозреваю, что название вообще не играет роли, главное - чтобы файл был в этой папке. Это ваша будущая система.
мы должны создать текстовый документ и назвать его, например, так: Meigui_prescripted_species_systems.txt - хотя я подозреваю, что название вообще не играет роли, главное - чтобы файл был в этой папке. Это ваша будущая система.
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
Удачи с моддингом вашей времяпожиралки!
Удачи с моддингом вашей времяпожиралки!
А за сим у меня пока всё - надеюсь, что найду единомышленников, с кем мы решим все проблемы. Я потратил сегодня большую часть дня, экспериментируя с генерацией системы и параллельно записывая эту простынь для вас и для себя. Устал, как собака. В рунете, по результатам моих изысканий, нет статей со сколько-нибудь исчерпывающей информацией по этой теме, да и поиск всё время норовит выдать что-то левое. Если же мы разберёмся со всеми ошибками, систему мечты сможет сделать себе каждый. А я своими ещё и поделюсь. Если будет отклик - продолжу выкладывать результаты своей деятельности, а там - глядишь - и на целый мод наскребу. По крайней мере, я провёл большую работу, и старался так что прошу не делать мне каку
Жду знатоков в комментариях