前回策定したMOD開発計画ですが、早くも暗雲が立ちこめてきました……。
2016/07/26 第3回へのリンクを追加。
先行MODが……
前回の記事にコメントで、「Beginning from the star system state」というFTL以前のプレイをやろうとしているMODがあるよという情報をいただきました。ご紹介いただいたEVAさん、ありがとうございました。
このMODの作者さんがバニラからの変更点とMOD制作メモを公開してくださっているのですが、私と同じように初期のFTL技術を取らない状態にしようとして、うまくいかなかったようです。
もうひとつ
さらにもうひとつ、「Colonization Tweak [JP]」というMODでは、「ドーム都市」という建造物を実装しています。
注目すべきはその効果で、居住性を惑星全体で向上させています。いろいろ調べてみると、どうやらタイルごとに居住性を管理することはできないようです。
考え直し
というわけで、当初の予定を考え直す必要がありそうです。問題点は
- 初期のFTL技術を取らない状態にすることはできない
- タイルごとに居住性を管理することはできない
の2点。どちらもどうしようもなさそうですが、これを解決できないと予定どおりの実装は無理ですからどうにかしないといけません。
1については、初期のFTL技術を換骨奪胎してしまうという解決で問題ないでしょう。
2については、正直どうしようもありません……。というわけで、設計思想から考え直してみました。
ロボットでのみ植民する案
まず「初期惑星以外の居住性はせいぜい50%程度にとどめ、初期惑星外へは基本的にロボットで植民する」というのを基本とするという案を考えつきました。
最初に「地球外に人間が出て行くのはそんなに簡単なのか?」という疑問が湧いたのです。なにをするにも「安全第一」という世の中で、地球以外の惑星に人間が出向いてそこで生活するというのがあまりありそうにないと思いました。
そもそも地球外になにを求めて出て行くのかということですが、おそらく資源採掘のためということになるでしょう。そうなると、過酷な地球外惑星に人間が出て行くよりも、ロボットが出て行くというほうが現実的に思えます。
技術開発の順序としても、おそらく自律型ロボット技術のほうがFTL航行技術よりも前に来るのではないかとも考えます。
そもそもリアル方面にするMODは面白いのか?
が、ここまで考えて、こうしたリアル方面に向かうMODはゲームが面白くなるのだろうかという疑問が湧いてきました。
「FTL登場以前のプレイを可能にする」という部分はプレイを拡張するからいいとして、「初期惑星以外へは事実上ロボットでしか植民できなくなる」というのはプレイの幅を明らかに狭めています。
というわけで、そのあたりは深く考えずに、「単にテラフォーミングをもっと早くにできるようにし、太陽系に植民可能な惑星をいくつか設定する」というだけに留めることにすることにします。
やることリストの更新
上記を踏まえると、やることリストが以下のようになります。
FTL関係
- FTL航法をアンロックする技術と、FTL以前の航行技術
- 初期のFTL技術を事実上星系間航行ができないように変更し、中盤以降に通常のFTL技術が出てくるように変更する
- 化学推進機(バニラの初期スラスター技術)よりも下のグレードの技術・スラスターを作る(余裕があれば)
- FTL航行ができない艦船モジュールの追加
- 初期のFTL技術で出るFTLモジュールを星系間航行ができないようにする
入植関係
- 月・火星など、太陽系の惑星の設定を変更し、入植できるようにする
ドーム都市(仮称)という建造物を作って建設できるようにする大陸型惑星など、惑星種別による居住性を変更する
入植技術の変更・調整通常の植民船(バニラと同じ)を出せる技術をFTL技術以降に出るようにする入植時にドーム都市を建設する植民船を出せる技術を序盤に設定(最初から持っていてもいいかも)ドーム都市の改善技術があってもいいかも
- テラフォーミング技術をもっと早く(初期技術でもよい)に出す
- テラフォーミングガスなどのテラフォーミングに必要な資源をどうするか(必要量はそのままに太陽系内で採れる量を調節?)
その他
- 元からあるイベントやアノマリーなどの調整(作ってテストプレイをしてみて調整か)
実際の作業へ
初期FTL技術
作業を始める前に、初期のFTL技術はどこで決まっているのかを調べるべくGREP検索をしてみました。
上の画像はワームホールの技術の検索結果。拡大して見ていただくとわかりますが、関係ありそうなのは、技術の内容を決めるtechnologyフォルダ以下のファイルとexeファイル。technologyフォルダ以下のファイルはどういう技術かを決めているだけのようなので、どうもexeファイルによって初期技術が決まっているようです(他のファイルも探してみましたがそれらしいものはなし)。exeを改造する腕はないので、やはり初期FTL技術を書き換えるしかないようです。
作業の前に
さて作業を……とその前にもうひとつ、以下の手順で、改造したファイルを入れるフォルダとMODとしてのラベルを作ってやる必要があります。
- 「Stellaris」を起動してすぐに出てくるランチャーで「MOD」タブをクリックし、右上の「Mod Tools」をクリックし、左の「Create Mod」をクリックすると、上の画像のような画面が表示されます。
- “Available Mods”にはMODのタイトル、DirectoryにはMODファイルが格納されるフォルダ名を入力(おそらく日本語は不可)し、その下の”Mod tags”のプルダウンメニューからそれらしいのをいくつか選んでおきます。”Supported version”は現在のゲームのバージョンが自動で記入されるので、特になにもなければそのままでOK。全部終わったら右下の「Create Mod」をクリックします。
- そうすると上の画像のように、ドキュメント/Paradox Interactive/Stellaris/mod以下に、simulationianというフォルダとsimulationian.modというファイルが作成されます(Windows10の場合)。これでフォルダとMODとしてのラベル作りは完了。
ラベルである.modファイルは、デフォルトでは音声ファイルとして認識されていると思いますので、単にダブルクリックするでは音楽再生ソフトが起動してエラーを吐いて終わりですが、テキストエディタから開いてやると中身を見ることができます(上の画像)。先ほどランチャーで設定した内容が記載されているだけですが、このファイルがないとMODとして認識してもらえないので、削除したり位置を変更してはいけません。
ファイルの記述
まずはFTL技術をなんとかするところからいきましょう。例としてワープドライブの改変からやっていきますが、その前にどういうことが書いてあるかを見てみます。
ワープ技術
ワープドライブをアンロックする技術「ワープトラベル」の設定がこちら。
common/technology以下の00_phys_tech.txtというファイルがそれです。以下にそれぞれの変数がなにを規定しているかを、予想ですが考えてみました。
- cost:研究コスト(初期技術なのでゼロ)
- area:領域(物理学)
- tier:不明。おおまかな技術の段階?
- category:技術分野(フィールドマニピュレーション)
- is_reverse_engineerable:リバースエンジニアリング可能かどうか
- weight_modifier:技術リストでの選ばれやすさを規定。
- factor:倍率。ここではweight_modifierの倍率。初期技術なのでゼロに設定されている。
- prereqfor_desc:技術の名称(title)と説明文(desc)の指定先。localisationファイルに同名の記載があり、そこで実際になんと表示するかを決めています。
2016/07/24追記:weight_modifier、factorについて、いただいたコメントを元に修正。いただいたコメントにはほかの変数などもとてもわかりやすく説明してくださっているので、以下に引用します。教えていただき、本当にありがとうございます。
weight:技術リストでの選ばれやすさ
modifier:追加の条件
factor:倍率
ai_weight:AIの重視度例
weight = @tier1weight3
weight_modifier = {
modifier = {
factor = 2
research_leader = {
area = engineering
has_trait = “leader_trait_expertise_materials”
}
工学研究に配属されてる研究員が材料工学を持ってる場合、技術の出現率が@tier1weight3の2倍になる。powerやcostは変数@を使わずに直接数字を打ち込んでもおk。新しく変数@を作るのもおk。
ワープドライブ
「ワープトラベル」でアンロックされる艦船コンポーネント「ワープドライブ1型」の設定がこちら。
ファイルはcommon/component_templates以下の00_utilities_drives.txtです。
- key:おそらく艦船コンポーネントとしての内部の名称
- size:おそらく兵器コンポーネント以外ではすべてsmall
- icon:コンポーネントのアイコン
- icon_frame:不明
- power:消費電力
- cost:コスト。消費電力とコストはこのファイルの最初に「@power1 = -5」などと定められています。
- ai_weight:AIの使用する優先度?
- class_restriction:コンポーネントを使用できる艦船クラス
- prerequisites:そのコンポーネントをアンロックする技術
- component_set:コンポーネントの分類?
こうして見ていくと、技術を改変するというより、コンポーネントのほうを改変することになりそうです。
というところで、今回はここまで。急な予定変更があって長くなってしまいましたが、MODとしてはスッキリさせられたような気がしますが、どうでしょうか。
コメント
weight:技術リストでの選ばれやすさ
modifier:追加の条件
factor:倍率
ai_weight:AIの重視度
例
weight = @tier1weight3
weight_modifier = {
modifier = {
factor = 2
research_leader = {
area = engineering
has_trait = “leader_trait_expertise_materials”
}
工学研究に配属されてる研究員が材料工学を持ってる場合、技術の出現率が@tier1weight3の2倍になる。
powerやcostは変数@を使わずに直接数字を打ち込んでもおk。新しく変数@を作るのもおk。
研究担当の科学者によって出現する技術が変わるのは、こうやって設定されていたんですね。
記事本文にも引用させていただきました。詳しく解説いただきありがとうございます。とても参考になります。