星系のMOD制作¶
旧バージョンの資料
原文はゲームバージョン3.4向けです。現行版では生成キーや既定クラスが変わっている可能性があります。
本ページでは、恒星系の追加・変更方法を解説します。
ゲームマップと星系生成¶
Stellarisは、最初にmapファイルから銀河マップ上の恒星座標を作り、次にstar_classesから各座標の星系クラスを選び、最後にsystem initializerとplanet_classesから惑星・衛星・小惑星帯などを加えて星系を完成させると考えられます。
星系クラス¶
common/star_classesにあります。新規作成する場合はこのフォルダへtxtを追加します。
「恒星」と「星系クラス」は別物です。個々の恒星はコード上では惑星と同じ天体で、common/planet_classesに定義します。星系クラスは恒星系全体の分類で、照明、銀河マップのアイコン、恒星数を決めます。個々の恒星は惑星のMOD制作で扱います。
新しい星系クラスの追加¶
00_star_classesにある、A型星とパルサーの連星系例です。原文のコードコメントでは、パルサーを青色星が周回するX線連星系と説明されています。
sc_binary_1 = {
class = a_star
icon = e_binary_star
planet = { key = pc_a_star class = a_star }
planet = { key = pc_pulsar class = pulsar }
spawn_odds = 5
num_planets = { min = 4 max = 10 }
pc_desert = { spawn_odds = 0 }
pc_tropical = { spawn_odds = 0 }
pc_arid = { spawn_odds = 0 }
pc_continental = { spawn_odds = 0 }
pc_ocean = { spawn_odds = 0 }
pc_tundra = { spawn_odds = 0 }
pc_arctic = { spawn_odds = 0 }
pc_gaia = { spawn_odds = 0 }
pc_alpine = { spawn_odds = 0 }
pc_savannah = { spawn_odds = 0 }
is_environmental_hazard = yes
modifier = { ship_shield_reduction = 1.0 }
}
sc_binary_1— コードから参照するクラスID。表示名はローカライズします。class— 星系照明。既存のものを使うか、GFXで独自作成します。icon— 銀河マップのアイコン。既定では恒星名に対応するものをgfx/map/star_classesから探しますが、ここで上書きできます。icon_scale— 任意のアイコン倍率。1が既定、0.5が半分です。planet— このクラスが標準で持つ恒星。単星系なら内側のclassは不要です。spawn_odds—rl_standard_starsなどのランダムリストで選ばれる重み。リストへ入れないなら任意値または省略できます。num_planets— 惑星数。通常は星系初期化子側の数が上書きしますが、初期化子がランダム範囲を使う場合はここを利用します。- 惑星クラスごとの
spawn_odds— この星系で特定クラスが生成される重み。中性子星系など居住不適な星系では居住惑星を0にします。 is_environmental_hazard— 星系を危険地帯として扱います。modifierは星系内の艦船・ステーションへ強化または弱体化を適用します。
バニラの星系クラス¶
| アイコン | クラス | 恒星構成 | 環境効果 |
|---|---|---|---|
sc_b |
B型星 | — | |
sc_a |
A型星 | — | |
sc_f |
F型星 | — | |
sc_g |
G型星 | — | |
sc_k |
K型星 | — | |
sc_m |
M型星 | — | |
sc_m_giant |
M型赤色巨星 | — | |
sc_t |
T型褐色矮星 | — | |
sc_black_hole |
ブラックホール | 離脱確率低下+50%、緊急FTLクールダウン+50% | |
sc_neutron_star |
中性子星 | 亜光速速度低下+50% | |
sc_pulsar |
パルサー | シールド無効化+100% | |
sc_binary_1 |
A、パルサー | シールド無効化+100% | |
sc_binary_2 |
B、中性子星 | 亜光速速度低下+50% | |
sc_binary_3 |
M型巨星、B | — | |
sc_binary_4 |
M型巨星、F | — | |
sc_binary_5 |
B、B | — | |
sc_binary_6 |
M、G | — | |
sc_binary_7 |
K、F | — | |
sc_binary_8 |
G、F | — | |
sc_binary_9 |
A、F | — | |
sc_binary_10 |
A、T | — | |
sc_trinary_1 |
G、M、K | — | |
sc_trinary_2 |
B、A、F | — | |
sc_trinary_3 |
K、F、G | — | |
sc_trinary_4 |
B、K、T | — |
星系初期化子¶
common/solar_system_initializersにあります。新規作成する場合はこのフォルダへtxtを追加します。追加情報はフォルダ内のexample.txtも参照してください。
単星系¶
単星系は恒星1つと惑星・衛星から成る、最も一般的な星系です。
@base_moon_distance = 10
my_system_initializer = {
name = "My System"
class = "rl_standard_stars"
asteroid_belt = { type = rocky_asteroid_belt radius = 70 }
planet = {
class = star
size = { min = 25 max = 30 }
orbit_distance = 0
orbit_angle = 1
}
change_orbit = 10
planet = {
class = pc_arid
orbit_distance = 30
orbit_angle = { min = 90 max = 270 }
init_effect = {
prevent_anomaly = yes
generate_primitives_on_planet = yes
}
change_orbit = @base_moon_distance
moon = {
count = { min = 0 max = 1 }
class = pc_molten
orbit_distance = 5
orbit_angle = { min = 90 max = 270 }
}
}
change_orbit = 30
planet = {
count = { min = 1 max = 4 }
class = pc_asteroid
orbit_distance = 0
orbit_angle = { min = 90 max = 270 }
}
planet = {
count = { min = 3 max = 6 }
orbit_distance = 20
orbit_angle = { min = 90 max = 270 }
change_orbit = @base_moon_distance
moon = {
count = { min = 0 max = 1 }
orbit_distance = 5
orbit_angle = { min = 90 max = 270 }
}
}
neighbor_system = {
trigger = { num_guaranteed_colonies >= 1 }
distance = { min = 10 max = @distance }
initializer = "sol_neighbor_t1_first_colony"
}
}
初期化子全体¶
@base_moon_distance— ファイル内変数。必須ではありませんが、衛星軌道距離を一括調整できます。バニラは通常10です。my_system_initializer— コード上のID。星系表示名は直下のnameへ直接書くためローカライズ不要です。class— 星系クラス。sc_bなどの固定クラス、または各星系クラスのspawn_oddsで選ぶrl_standard_starsなどのランダムリストを指定します。asteroid_belt— 星系中心から指定半径に小惑星帯を追加します(恒星からとは限りません)。種類はcommon/00_asteroid_beltsを参照し、通常はrockyまたはicyを使います。独自追加も可能です。
恒星¶
class = star— 星系クラスと一致する恒星クラスを使います。固定のpc_b_starも指定できますが、照明や複星系の命名に問題が出る場合があります。理由がなければstarを推奨します。size— 見た目の大きさ。恒星には20~35を推奨し、小さすぎると不自然、大きすぎると通過艦船を覆います。orbit_distance— 直前の要素からの距離。直前がなければ星系中心からの距離。中央恒星は0にします。orbit_angle— 直前の惑星からの相対角。たとえば直前の角度が30でorbit_angle = 20なら、絶対角は50になります。中央恒星では任意で、バニラは多くが1です。
惑星¶
change_orbitは、星系スコープでは惑星間、惑星スコープでは惑星と最初の衛星の間隔を増やします。例の乾燥惑星は前のchange_orbit = 10とorbit_distance = 30を合計し、恒星から40離れます。orbit_angleは直前要素から90~270度の範囲でランダムです。
init_effectは生成時に惑星へ効果・スクリプト効果を実行します。星系全体へ適用したい場合は星系スコープでも使えます。prevent_anomalyはアノマリー生成を禁止し、generate_primitives_on_planetは前FTL種族を生成します。
![]()
衛星¶
例では@base_moon_distanceの10とorbit_distance = 5で合計15離れます。countは0~1個をランダム生成し、必要なら任意の範囲にできます。ガス惑星以外でバニラが2個以上の衛星を持つ例はまれです。
![]()
小惑星帯と残りの惑星¶
change_orbitを調整し、小惑星帯のradius = 70と合う位置へ進めます。小惑星は帯と同じ軌道に置くためorbit_distance = 0にします。同じ軌道で重なる可能性があるため、必要なら個別の角度を指定します。氷小惑星帯ではpc_ice_asteroid、結晶ではpc_crystal_asteroidまたはpc_rare_crystal_asteroidを使います。
後続惑星でclassを省略すると、common/star_classesの条件に基づいてゲームがクラスを選びます。例では3~6惑星、それぞれ0~1衛星です。
neighbor_systemは、指定条件のもとで一定距離内へ特定の別星系を生成します。
連星系と三重星系¶
実際の複星系は複雑ですが、大別してP型とS型があります。
P型¶
周連星惑星が全恒星の共通重心を周回します。シリウスやStar Warsのタトゥイーンが例です。Stellarisでは最も簡単な複星系です。
planet = {
class = star
size = { min = 30 max = 35 }
orbit_distance = 15
orbit_angle = { min = 90 max = 270 }
}
planet = {
class = star
size = { min = 25 max = 30 }
orbit_distance = 10
orbit_angle = 180
}
通常どおり惑星を続け、星系クラスをrl_binary_stars、rl_trinary_stars、または固定複星クラスへ変えます。
- 全恒星を
class = starにすれば、sc_binary_1なら第1恒星がA型、第2がパルサーというようにクラス構成に従います。 - 三重星なら同様に第3恒星を加え、第2の角度を145、第3を角度70・距離0・最大サイズ25にします。
- 距離、角度、サイズは自由です。上記は原文執筆者が見栄えのよい値として挙げたものです。
S型¶
各恒星が独自の惑星系を持ちます。ハイパードライブなしで移動できるほど近接した2~3個の単星系と考えられます。エリダヌス座40番星やStar Trekのヴァルカンが例です。
比較のため、単星系の基本構造を再掲します。恒星と惑星は同じ階層に並びます。
planet = {
class = star
size = { min = 25 max = 30 }
orbit_distance = 0
orbit_angle = 1
}
planet = {
count = { min = 3 max = 6 }
orbit_distance = 20
orbit_angle = { min = 90 max = 270 }
change_orbit = @base_moon_distance
moon = {
count = { min = 0 max = 1 }
orbit_distance = 5
orbit_angle = { min = 90 max = 270 }
}
}
単星系と違い、惑星を星系スコープではなく所属恒星のスコープ内へ置き、正しい軌道線と名前を得ます。satellite_naming_policy = upper_case_roman_numeralsは恒星の惑星を大文字ローマ数字、lower_case_latin_lettersは惑星の衛星を小文字ラテン文字で命名します。
planet = {
class = star
size = { min = 25 max = 30 }
orbit_distance = 0
orbit_angle = 1
satellite_naming_policy = upper_case_roman_numerals
planet = {
count = { min = 3 max = 6 }
orbit_distance = 20
orbit_angle = { min = 90 max = 270 }
satellite_naming_policy = lower_case_latin_letters
change_orbit = @base_moon_distance
moon = {
count = { min = 0 max = 1 }
orbit_distance = 5
orbit_angle = { min = 90 max = 270 }
}
}
}
完全なS型三重星では上のブロックを3つ並べます。恒星Aは最大6惑星・距離20で最大幅120、恒星Bは最大5惑星で最大幅100なので、両星間を230(120+100+余白10)にします。恒星CはAからBと同じ230離し、別角度へ置けます。さらに離しても構いませんが、バニラは同距離を使い、巨大すぎる星系は亜光速横断に時間がかかります。
# 恒星A: 最大6惑星
planet = {
class = star size = { min = 30 max = 35 }
orbit_distance = 0 orbit_angle = 1
satellite_naming_policy = upper_case_roman_numerals
planet = {
count = { min = 3 max = 6 } orbit_distance = 20
orbit_angle = { min = 90 max = 270 }
satellite_naming_policy = lower_case_latin_letters
change_orbit = @base_moon_distance
moon = { count = { min = 0 max = 1 } orbit_distance = 5 orbit_angle = { min = 90 max = 270 } }
}
}
# 恒星B: 最大5惑星
planet = {
class = star size = { min = 25 max = 30 }
orbit_distance = 230 orbit_angle = { min = 90 max = 270 }
satellite_naming_policy = upper_case_roman_numerals
planet = {
count = { min = 3 max = 5 } orbit_distance = 20
orbit_angle = { min = 90 max = 270 }
satellite_naming_policy = lower_case_latin_letters
change_orbit = @base_moon_distance
moon = { count = { min = 0 max = 1 } orbit_distance = 5 orbit_angle = { min = 90 max = 270 } }
}
}
# 恒星C: 最大4惑星
planet = {
class = star size = { min = 20 max = 25 }
orbit_distance = 0 orbit_angle = { min = 90 max = 270 }
satellite_naming_policy = upper_case_roman_numerals
planet = {
count = { min = 2 max = 4 } orbit_distance = 20
orbit_angle = { min = 90 max = 270 }
satellite_naming_policy = lower_case_latin_letters
change_orbit = @base_moon_distance
moon = { count = { min = 0 max = 1 } orbit_distance = 5 orbit_angle = { min = 90 max = 270 } }
}
}
利用方法¶
以下は、ゲームがどの星系を生成するかを指定する設定で、星系スコープへ記述します。
usage = misc_system_init—usage_oddsに基づき銀河のどこかへランダム生成します。銀河内位置に応じた補正も使え、max_instancesで最大数を制限できます。
usage = misc_system_init
usage_odds = {
base = 2000000
modifier = { factor = 0 is_bottleneck_system = yes }
}
max_instances = 1
usage = empire_init— プレイヤーまたはAIが帝国作成画面で「ランダム」を選んだときの母星系です。母星には次を指定します。
planet = {
home_planet = yes
init_effect = {
generate_empire_home_planet = yes
prevent_anomaly = yes
}
}
usage = custom_empire— SolやDenebのように、帝国作成画面から選ぶプリセット帝国の母星系です。名称と説明をローカライズします。usageを省略するかusage_odds = 0なら、イベントなど外部から明示的に呼ばない限り生成されません。
一般的な助言¶
- 単星系では
class = pc_b_starでも大抵動きますが、複星系の恒星・惑星名で問題が出ます。星系クラスと無関係に恒星クラスを固定するなら、class = starとし、直下へinit_effect = { change_pc = pc_b_star }を置きます。 - 惑星へ直接
name = "Joe"と書くと、次の惑星番号がずれる場合があります。init_effect = { set_name = "Joe" }を使います。 - 星系内の惑星・艦船などは、恒星位置にかかわらず常に星系中心から照らされます。原文執筆時点では修正待ちです。
- 小惑星とリングワールド区画は通常軌道線を表示しませんが、S型複星系など恒星スコープ内へ置くと線が出て煩雑になります。可能なら星系スコープへ置きます。
- リングワールドの各区画は、周回する恒星ではなく常に星系中心を向きます。
orbit_distanceの既定値は0ではありません。同じ軌道距離へ置く場合は必ずorbit_distance = 0を明記します。省略すると未知の範囲でランダム化されます。
出典: Stellaris Wiki — System modding(原文更新日: 2023年5月21日、版ID 75166)
翻訳日: 2026年9月18日 / 対応バージョン: 3.4
本ページは原文Wiki(CC BY-SA 3.0)の内容を翻訳した非公式ファン翻訳です。