ステラリス 開発者日記 第115回 Ver2.1のアノマリーMod

記事をシェアする

パラドックス社の公式フォーラムに
ステラリスの開発者日記 第115回が掲載されています。

今週休みって言ったからゆっくりしてたのに・・・( ´Д`)

Welcome to a brief unannounced surprise bonus dev diary! PDXCon preparations are taking up most of our time, but with attendees getting some early...

今回はボーナス扱いの開発者日記ということで、Ver2.1におけるアノマリーのMOD制作に関する内容のようです。
コードの書き方など技術的な事が多いようなので、簡単な紹介にしたいと思います。

管理人の英語力はかなり怪しいので誤訳・誤解釈の可能性は十分にあります。ご了承ください(-人-)

※当記事内のコードはフォーラム内のものを引用。

以下開発者日記を意訳したものです。

スポンサーリンク

ステラリス 開発者日記 第115回 Ver2.1のアノマリーMod 2018/5/17

冒頭のお知らせ

簡単な予告なしの驚きのボーナスdev日記へようこそ!

アノマリー関係のMOD制作コードを大幅にスリム化

私達はPDXCon()の準備にほとんどの時間を費やしていますが、参加者の開催までの待ち時間にDistant Stars Story Packについて紹介したいと思います。
私たちは、2.1アップデートにおける詳細な変更の一部をMOD製作者向けに紹介したいと思います。

私たちは以前2.1のNivenアップデートにてアノマリーに起こる変更について説明しましたが、それらが実際にプレイヤーやMod製作者にとって何を意味するのでしょうか・・・?
うまくいけば、再設計されたアノマリーのバックエンドはあなたの人生をもっと楽にしてくれるはずです。

ここからはちょっと技術的になります。

昔の古いコードを振り返ってみましょう。

00_anomaly_categories_3.txt

anomaly_category = {
    key = "DES_BURIED_CAT"
    desc = "DES_BURIED_DESC"
    picture = "GFX_evt_desert"
    level = 2

    spawn_chance = {
        modifier = {
            add = 3
            is_planet_class = pc_desert
            from = {
                owner = {
                    NOT = {
                        has_country_flag = masters_writings_politics_found
                        has_country_flag = ai_admiral_found
                    }
                }
            }
        }
    }

    on_spawn = {
    }

    on_success = {
    }

    on_fail = {
        ship_event = { id = anomaly_failure.4030 }
    }
}

00_anomalies_3.txt

anomaly = {
    event = anomaly.4030
    category = "DES_BURIED_CAT"

    weight = 1

    potential = {
        always = yes
    }
}

anomaly = {
    event = anomaly.4135
    category = "DES_BURIED_CAT"
   
    weight = 1
   
    potential = {
        owner = {
            NOT = { has_ethic = ethic_gestalt_consciousness }
        }
    }
}

酷いって?全くそうです。
これは、50行のスクリプトを2つの異なるファイル間で3つのエントリに分割したものです。

しかし、恐れてはいけない、未来は明るいです!

New script in 03_anomaly_categories.txt

DES_BURIED_CAT = {
    picture = "GFX_evt_desert"
    level = 4
   
    spawn_chance = {
        modifier = {
            add = 3
            is_planet_class = pc_desert
        }
    }

    max_once = yes
   
    on_success = {
        1 = anomaly.4030
        1 = {
            modifier = {
                factor = 0
                owner = { has_ethic = ethic_gestalt_consciousness }
            }
            anomaly_event = anomaly.4135
        }
    }
}

25行未満のスクリプトになりました。クリーンで効率的でなめらかです。

Mod製作者が2.1向けにイベントModを更新したい場合に備えて、便利な説明者を用意しました。

an_anomaly_category = {                # Anomaly category ID key

    should_ai_use = yes/no            # Allows AI empires to generate the category. Default: no

    desc = "key"                    # Optional, if no desc is given "<category key>_desc" is assumed

    desc = {                        # Can also use triggered descs. First valid entry will be used.
        trigger = { ... }            # Scope: planet, from = ship
        text = "key"                # Localization key for description
    }
    picture = GFX_picture            # Picture displayed in category window
    level = int                        # Anomaly level, 1 to 10

    null_spawn_chance = 0.5            # Default 0. 0.0 - 1.0 (0 to 100%) chance category will NOT spawn
                                    # even if it is picked by the anomaly die roll. Used to make
                                    # categories for unusual objects (e.g. black holes) actually rare.
   
    max_once = yes/no                # default NO, if true will spawn category only once per empire
    max_once_global = yes/no        # default NO, if true will spawn category only once per game

    spawn_chance = {                # Chance for this anomaly category to spawn, 
        base = <num>                # relative to other valid categories. Default: base = 0
        modifier = {                # Spawn chance modifier
            add/factor = <num>
            <triggers>                # Scope: planet, from = ship
        }
    }

    on_spawn = { <effects> }        # Executes immediately when anomaly category is spawned. 
                                    # Scopes are this/root: planet, from: ship
                                    # NOTE: on_spawn effects will not run if category is spawned through console

    on_success = {                    # Picks anomaly event to fire; similar to random_list
        1 = {                        # Base chance
            max_once = yes            # Individual outcomes default to max_once = yes,
            max_once_global = no     # and max_once_global = no
            modifier = {            # Optional modifiers
                add/factor = <num>
                <triggers>            # Scope: ship, from: planet
            }
            anomaly_event = <id>    # New effect anomaly_event fires specified event ID. Scope: ship, from: planet           
        }                            # Can also use ship_event, though it gets different scopes:
                                    # ship, from: ship, fromfrom: planet       

        1 = <event id>                # shorthand for 1 = { anomaly_event = <event id> }
    }

    on_success = <event id>            # Shorthand for on_success = { 1 = { anomaly_event = <event id> } }
}                                    # Only use if there is only one outcome in the category

これが今日のすべてです!
PDXConでのニュースに注目してください。


以上

パラドックス社が主催する年に1度の大規模イベントのこと。

フォーラム内のやり取り

今回はいつものWizさんは不在なので省略します。

感想・まとめ

以上、Stellaris 開発者日記 第115回の紹介でした。

先週、お休みって言ったのに・・・。
チェックしたら開発者日記が載っててびっくりしました。
115回って番号が振ってあるので紹介しないわけにもいきませんし・・・( ´Д`)

日記の内容としてはコードの仕様が代わってModが作りやすくなった点と、
コードに関する注釈の紹介と言った感じですね。

主にModを作る人向けの内容でしたが、Modを使う側の人も中身はこうなっているんだ~と少しでも把握しておくと何かの時に役に立つかもしれません(・∀・)

それからパラド社によるとPDXConでステラリス関係の発表があるみたいなので
そちらも楽しみですね。

それではまた( ✧Д✧) カッ!!