Stellaris

Stellaris

Not enough ratings
【Stellaris】目的のコードの探し方
By fatal_errorjp
Stellaris Modの作成にあたり、バニラの機能を改変したいといった場合には
元となるコードが何処にあるのか当たりをつける必要があります。

当たりをつけるためにどうすればいいのかわからない人にとっては
わかる人に聞いたり日本語ドキュメントを参照するという選択肢が出てくるかと思います。
しかしこれは現状あまり現実的な選択肢とはなっていません。
というのも、そもそも日本人のStellarisのModder人口は低く
更にドキュメントを残す人はほぼ皆無といった現実があるからです。

新規参画者の敷居を下げるためにもできればModderの皆さんにはメモでも良いから
ドキュメント残して欲しいなと個人的には思っていますが
当然それは願望でしかなく、書いている人も数人程度でそのドキュメントも古かったり
引退していると思われる人もいるようです。

で、現実問題Modを作成するために最低限必要な要素としては、以下の2点が上げられると思います。
①:英語WikiのModの説明ページを読み込み理解すること
②:自力で該当コードに当たりをつけ、コード改変ができること

本ガイドではこの②について私がどういう方法で当たりをつけて
Modを作っているかについて説明します。

この探し方の説明がメインのため、コードの細かい解説などについては
割愛しておりますのでその点ご留意ください。
   
Award
Favorite
Favorited
Unfavorite
1. 手っ取り早く知りたい人向け
このガイドで説明する方法を書くとこれだけです。

1) 変更したい要素の「日本語」から、その要素の定義を探す
2) 定義が見つかったら、その定義名をヒントに当たりをつける
3) 当たりをつけた内容を修正し、当たりをつけた箇所が正しいことを確認する
4) 当たりをつけられたので、実現したいコードを書く

以下、具体例を交えながら説明を記載します。
2. (例1) 既存の外交補正「有利な貿易協定」の最大値を変更する場合
例として、最近私が作成した以下のModを作る過程で
どのように調査をして辺りをつけていったかについて説明します。
https://steamproxy.net/sharedfiles/filedetails/?id=3031696031
このModは、貿易協定を結んだ際に発生する外交補正「有利な貿易協定」の最大値を
10に変更するModです。バニラは100なので、1/10に変更しています。

この修正対象のファイルはどこにありどのように探し出したと思うでしょうか。
1章の内容で理解できた方は、以下の説明は読まずに自分で探してみるといいでしょう。
2-1. 変更したい要素の「日本語」から、その要素の定義を探す
1) 要素の日本語を確認する
まず、変更したい要素の日本語をゲーム画面から確認してみましょう。


ツールチップから確認ができました。「有利な貿易協定」という単語が見えますね。
これが今回変更したい対象です。


2) 要素の日本語を元に、定義名だと思われる名前を探す
ではこの単語を元に、外交補正の定義を探してみましょう。
日本語ローカライズファイル内をgrepツールでgrepします。

私はコマンドに慣れているので、コマンドで確認していますが
よくわからなければgrep機能をもったテキストエディタ等のツールを使いましょう。
さくらエディタでもgPadでもVS CodeでもSublime Textでもなんでもいいです。

日本語ローカライズファイルは、本体のパスを基準として「localisation/japanese/」以下に
配置されています。特にSteamの保存先の設定等を変更していないのであれば
以下のパスになっているのではないかと思います。
C:\Program Files (x86)\Steam\steamapps\common\Stellaris\localisation\japanese\

$ grep -ri 有利な貿易協定 ./localisation/japanese/ ./localisation/japanese/modifiers_l_japanese.yml: opinion_trade_gift:1 "有利な貿易協定"

検索結果が1件見つかりましたね。modifiers_l_japanese.ymlというファイル内に
「opinion_trade_gift:1 "有利な貿易協定"」という記述があるようです。

この内容から、「有利な貿易協定」の外交補正の定義は
恐らく「opinion_trade_gift」だろうと推測できます。


3) 定義名だと思われる名前を元に、定義を探す
定義名の候補が見つかったら、その名前でgrepして定義そのものを探します。
多分common以下にあると思うのでcommon以下を見てみましょう。

$ grep -ri opinion_trade_gift ./common/ ./common/opinion_modifiers/00_opinion_modifiers.txt:opinion_trade_gift = {

これもちょうど一件だけありましたね。
フォルダ名を見るとopinion_modifiers、英語Wiki[stellaris.paradoxwikis.com]のフォルダの説明を見ても
このフォルダ配下が外交補正の定義ファイルの置き場所で間違いなさそうです。
2-2. 定義が見つかったら、その定義名をヒントに当たりをつける
先ほど見つけた定義ファイル、common/opinion_modifiers/00_opinion_modifiers.txt
をテキストエディタで開き、opinion_trade_giftの記載されている箇所を確認してみましょう。
以下のような記述がなされていることがわかるはずです。
# Favorable trade deal opinion_trade_gift = { opinion = { base = 1 } accumulative = yes max = 100 decay = { base = 2 } }

書いてある内容がわかるでしょうか?私は初見はわかりませんでした。
Stellarisの記述は保存されているフォルダ毎に内容が異なります。
ということで、初回は英語Wiki[stellaris.paradoxwikis.com]を参照しましょう。
「Game structure」の「opinion_modifiers」の説明を見ると
専用のガイドページへの案内があることがわかります。

Opinion modifier modding[stellaris.paradoxwikis.com]というページですね。
ここに基本的な解説は載っているので、翻訳サイトなども利用して一通り読みましょう。

なお、外交補正については一応日本語でまとまっているページはあります。
これはあくまで私がMod作成時の自分用の参考としてまとめたものかつ
ちゃんと動作確認をしないで予想で書いているものも含まれています。
つまり情報が必ずしも正確ではない可能性があります。
基本的には英語Wikiを当たるようにしましょう。
https://steamproxy.net/sharedfiles/filedetails/?id=2841515134
それで、定義の内容を英語Wikiで確認すると「有利な貿易協定」の最大値を変更するためには
以下の部分を修正すれば良いことがわかるはずです。

# Favorable trade deal opinion_trade_gift = { opinion = { base = 1 } accumulative = yes max = 100 # ← ここが最大値なのでここを修正すれば良いはず decay = { base = 2 } }

具体的な修正箇所に当たりがつけられましたね。
2-3. 当たりをつけた内容を修正し、当たりをつけた箇所が正しいことを確認する
当たりをつけたら、本当にその場所が正しいかどうかを実際に確かめましょう。
具体的には、コード修正しゲーム内どのように反映されるかを確認します。

ただ、直接元のファイルを修正してはいけません。
修正を間違えた場合、最悪ゲームが起動しなくなるからです。
そういう事例を避けるため、ローカルModを作成し
ローカルModで定義を上書きするように対応します。
これなら修正に誤りがあっても最悪Modを無効化するだけで済みます。


1. MOD作成用のフォルダを生成する
まずは、Mod作成用のフォルダを用意しましょう。

これは、私の過去に作ったガイド「【Stellaris3.8.2】ポートレート&種族の作り方メモ」の
第1章「1. MOD作成用のフォルダを生成する」と内容が被るので細かい説明は割愛します。
https://steamproxy.net/sharedfiles/filedetails/?id=2982605349

2. 当たりをつけたファイルをMod作成用フォルダにコピーする
辺りをつけたファイルである「00_opinion_modifiers.txt」を
先ほど作ったModの配置先にファイルをコピーします。

フォルダ構造はStellaris本体と合わせないといけないので
Mod側にもフォルダを作り、common\opinion_modifiers\00_opinion_modifiers.txt
というパスになるように配置しましょう。
特に設定を弄ってなければコピー元とコピー先は以下のようになるはずです。
コピーのつもりで切り取りなどしないように注意しましょう。
コピー元) C:\Program Files (x86)\Steam\steamapps\common\Stellaris └common  └opinion_modifiers   └00_opinion_modifiers.txt ↓ コピー先) C:\Users\(ユーザー名)\Documents\Paradox Interactive\Stellaris\mod\(1.で作ったModのフォルダ) └common  └opinion_modifiers   └00_opinion_modifiers.txt


3. コピーしたファイルを編集する
ファイルのコピーが完了したら、当たりをつけた箇所に修正を加えます。
それ以外のコードには手を触れないようにしてください。

# ここより上の記述についても消さずにそのまま残す # そうしないと他の外交補正の定義が全て消えてしまう # Favorable trade deal opinion_trade_gift = { opinion = { base = 1 } accumulative = yes max = 10 # ← ここを「100」から「10」に修正する decay = { base = 2 } } # ここより下の記述についても消さずにそのまま残す # そうしないと他の外交補正の定義が全て消えてしまう


4. Modを反映した状態でゲームを起動し、動作確認をする
以下a)~e)の順に軽く動かして、動作確認してみましょう。
a) 今回作成したModをプレイリストに加える
b) プレイリスト内でModが「有効」になっていることを確認する
c) 当該プレイリストが選択されている状態でゲームを起動する
d) ゲーム起動時(タイトル画面が表示されている状態の時)に
 以下のエラーログに余計なエラーコードが出ていないことを確認する
 C:\Users\(ユーザー名)\Documents\Paradox Interactive\Stellaris\logs\error.log
e) 実際に貿易協定を結んで、最大値が10に変わっていることを確認する

これで意図した通りに変更ができていれば、「当たりがつけられた」と言っていいと思います。
2-4. 当たりをつけられたので、実現したいコードを書く
さて、先ほどのコードで完成にしてしまうと、色々と弊害が生まれます
例えば他の外交補正を変更するModと干渉したり、
アップデートで他の外交補正に変更が入る度に
このModにもその変更を反映しないといけなくなるわけです。

どういうことが原因で上記に書いたような問題が起きるのかについては
「初心者のためのMod導入ガイド」の2~3章に記載しているので割愛します。
https://steamproxy.net/sharedfiles/filedetails/?id=2900946277
さて、できるだけ影響範囲を狭めてメンテナンス制を上げるために
対応することは以下の2点です。
1)ファイル名を変更する
2)ファイルに残すのは修正に関わる定義の固まりのみとし、それ以外は削除する


1. ファイル名を変更する
Mod内の「00_opinion_modifiers.txt」のファイル名をStellaris本体のファイル名である
「00_opinion_modifiers.txt」とは別の名前に変更します。
Stellaris本体の同フォルダ内に存在する他の名前も避けるようにしてください。

なお、変更する名前は、名前順でソートしたときに「00_opinion_modifiers.txt」より
先になるか後になるかどちらになるかを考慮する必要があります。

これは、フォルダによって異なります。
今回対象になるファイルは、common/opinion_modifiers以下にあります。

英語WikiのOverwriting specific elements[stellaris.paradoxwikis.com]の項目を確認してみましょう。
opinion_modifiersの欄にはLIOSと記載があるのがわかります。
LIOSは注釈を読むと「Last in, only served 」とのことです。
つまり最後に読み込んだファイルの定義が優先されると言う意味です。
FIOSはその逆で最初に読み込んだファイルの定義が優先されます。

これを込みでファイル名をつけるなら、「00_opinion_modifiers.txt」より
順番が後になるようなファイル名をつけると良いでしょう。
元が数字開始なのでアルファベット開始なら確実ですね。

私は今回は以下のように名前を変更しました。
・change_opinion_trade_gift.txt


2. ファイルに残すのは修正に関わる定義の固まりのみとし、それ以外は削除する
change_opinion_trade_gift.txtをテキストエディタで開き、不要な定義を全て削除しましょう。
# ここより上の記述は全て削除する # Favorable trade deal opinion_trade_gift = { opinion = { base = 1 } accumulative = yes max = 10 decay = { base = 2 } } # ここより下の記述についても全て削除する


3. Modを反映した状態でゲームを起動し、動作確認をする
さて、改めて以下a)~e)の順に軽く動かして、動作確認してみましょう。

a) 今回作成したModをプレイリストに加える
b) プレイリスト内でModが「有効」になっていることを確認する
c) 当該プレイリストが選択されている状態でゲームを起動する
d) ゲーム起動時(タイトル画面が表示されている状態の時)に
 以下のエラーログに余計なエラーコードが出ていないことを確認する
 C:\Users\(ユーザー名)\Documents\Paradox Interactive\Stellaris\logs\error.log
e) 実際に貿易協定を結んで、最大値が10に変わっていることを確認する

これで上手く動けば、Modの完成です。
自力で修正箇所に見当をつけてModを作成することができましたね。
3. 例2)AIのゲートウェイの建造条件を変更する
2章の例は、grepの結果が少なくて簡単すぎたので
結果が大量に出てくるちょっと探すのが大変になる例も合わせて載せておきます。

ただ、最終的にModを作るところまで行くと説明が大変なので
grep結果の確認の部分のみに解説を絞ります。
https://steamproxy.net/sharedfiles/filedetails/?id=2874290799
このModは、AI国家のゲートウェイの建造条件をセクターの首都のある星系のみに変更します。
できれば、先に進む前に自力で見当をつけてみてください。
3-1. 変更したい要素の「日本語」から、その要素の定義を探す1
例1)と同じく、まずは日本語を参考に定義を辿ってみましょう。

1) 要素の日本語を確認する
はい。「ゲートウェイ」ですね。



2) 要素の日本語を元に、定義名だと思われる名前を探す

$ grep -ri ゲートウェイ ./localisation/japanese/ ./localisation/japanese/apocalypse_l_japanese.yml: gateway_ruined:0 "稼働していないゲートウェイ" ./localisation/japanese/apocalypse_l_japanese.yml: gateway_ruined_DESC:0 "亜空間に繋がっていた古代文明の遺跡。 修復された場合、 この構造物を通過する宇宙船は、 稼働しているほかのゲートウェイへ瞬間的に移動できる。" ./localisation/japanese/apocalypse_l_japanese.yml: HAS_NOT_NUM_ACTIVE_GATEWAYS:0 "銀河内の有効なゲートウェイの数が $NUM|Y$ $COMPARATOR$ ではない" ./localisation/japanese/apocalypse_l_japanese.yml: HAS_NUM_ACTIVE_GATEWAYS:0 "銀河内の有効なゲートウェイの数が $NUM|Y$ $COMPARATOR$ である" ~以下略~
数え切れないぐらい出てきました。
ゲートウェイという単語が含まれる検索結果はかなり多いようです。
一旦、「ゲートウェイ」に完全一致するものだけに絞ってみましょう

$ grep -ri \"ゲートウェイ\" ./localisation/japanese/ ./localisation/japanese/apocalypse_l_japanese.yml: gateway_final:0 "ゲートウェイ" ./localisation/japanese/apocalypse_l_japanese.yml: NAME_gateway_final:0 "ゲートウェイ" ./localisation/japanese/concepts_l_japanese.yml: concept_gateway:0 "ゲートウェイ" ./localisation/japanese/concepts_l_japanese.yml: concept_gateways:0 "ゲートウェイ" ./localisation/japanese/l_japanese.yml: GATEWAY_GALACTIC:0 "ゲートウェイ" ./localisation/japanese/name_lists/name_list_HUMAN1_l_japanese.yml: HUMAN1_SHIP_Gateway:0 "ゲートウェイ"
それでも色々出てきました。
「GATEWAY_GALACTIC」がなんとなくそれっぽい気がするので
「GATEWAY_GALACTIC」で更にgrepしてみましょう。

$ grep -ri GATEWAY_GALACTIC ./common/ ./common/bypass/00_bypasses.txt:# name = GATEWAY_GALACTIC # the localization key used in triggers and effects for the type ./common/bypass/00_bypasses.txt:# galactic_map_tooltip_header=GATEWAY_GALACTIC ./common/bypass/00_bypasses.txt:# galactic_map_tooltip_desc=GATEWAY_GALACTIC_DESC ./common/bypass/00_bypasses.txt: name = GATEWAY_GALACTIC ./common/bypass/00_bypasses.txt: galactic_map_tooltip_header=GATEWAY_GALACTIC ./common/bypass/00_bypasses.txt: galactic_map_tooltip_desc=GATEWAY_GALACTIC_DESC
バイパスのファイルが見つかりました。
ゲートウェイは銀河の移動経路に関わる要素なのでバイパスで間違いはないですね。
試しに中身を見てみましょう。

gateway = { name = GATEWAY_GALACTIC is_pathfind = yes uses_action = no requires_exploration = no always_active = no windup_time = 0 winddown_time = 0 ftl_multiplier = 0 # 0 means instant icon_frame = 25 remember_instances = no # whether countries remember meeting a specific instance of that type, or if they just remember seeing the type in general galactic_map_tooltip_header=GATEWAY_GALACTIC galactic_map_tooltip_desc=GATEWAY_GALACTIC_DESC connection_type = any_other animation_time = 1 ftl_ship_effect = "gateway_ftl_ship_effect_entity" ftl_bypass_effect = "gateway_ftl_bypass_effect_entity" prerequisites = { tech_gateway_activation } on_pre_explore = { activate_gateway = fromfrom if = { limit = { num_active_gateways = 1 } random_megastructure = { limit = { is_megastructure_type = gateway_ruined } upgrade_megastructure_to = gateway_restored finish_upgrade = yes } } } respect_closed_borders = yes block_access_if_hostile = yes on_action = "on_entering_gateway" }
どうでしょうか。確かにゲートウェイに関する定義はありました。
しかし定義内のコードを見ても、英語WikiのBypassの説明ページ[stellaris.paradoxwikis.com]
を見てもAIのゲートウェイの建造に関わる条件はないように見えます。
どうやらこのファイルではないようです。
3-2. 変更したい要素の「日本語」から、その要素の定義を探す2
「GATEWAY_GALACTIC」が違ったので他のgrepの結果
「gateway_final」や「concept_gateway」についても見て回れば結果は見つかると思います。

なのでそれで地道に探すのも一つの手ですが、今回は別のアプローチで調べ直してみましょう。
どういうことかというとこういうことです。


定義名ではなく、説明の方で検索してみたら良いんじゃないかということです。
この説明文でgrepしてみます。
$ grep -ri ほかのゲートウェイへの瞬間的移動を可能にする ./localisation/japanese/ ./localisation/japanese/apocalypse_l_japanese.yml: gateway_final_DESC:0 "ほかのゲートウェイへの瞬間的移動を可能にする、 亜空間そのものを貫通する通路。"

1件見つかりました。「gateway_final_DESC」ですね。
ちなみにこれでgrepしても直接はヒットしません。
Stellarisでは定義名の後ろに「_desc」などとつけると
自動的に説明文として扱うみたいな仕様が所々にあります。
これもそのケースです。
つまり「gateway_final」という定義がどこかにあるはずです。
これをgrepして探してみましょう。

$ grep -ri gateway_final ./common/ ./common/anomalies/95_anomaly_categories_distant_stars.txt: is_megastructure_type = gateway_final ./common/megastructures/05_gateways.txt: has_megastructure = gateway_final ./common/megastructures/05_gateways.txt: has_megastructure = gateway_final ./common/megastructures/05_gateways.txt:gateway_final = {

これまた複数見つかりました。
定義名は大抵 「○○ = {」という形式になっているので、
恐らく「gateway_final = {」と記載されている最後の行の内容が該当すると思われます。

フォルダ名を見るとmegastructures、英語Wiki[stellaris.paradoxwikis.com]のフォルダの説明を見ると
巨大建造物の定義ファイルの置き場所になっていますね。

gateway_final = { entity = "gateway_entity" construction_entity = "construction_platform_entity" portrait = "GFX_megastructure_construction_background" place_entity_on_planet_plane = no # build_outside_gravity_well = yes # indicates this will use "free" placement between the system's inner and outer ring # if this option is active, the placement_rules will be completely ignored show_galactic_map_icon = no show_in_outliner = no potential = { has_technology = tech_gateway_activation } possible = { custom_tooltip = { fail_text = "requires_technology_gateway_construction" from = { has_technology = tech_gateway_construction } } } upgrade_from = { gateway_0 } build_time = 1800 resources = { category = megastructures cost = { alloys = 2500 energy = 6000 } } construction_blocks_and_blocked_by = self_type bypass_type = gateway on_build_complete = { activate_gateway = fromfrom if = { limit = { num_active_gateways = 1 } random_megastructure = { limit = { is_megastructure_type = gateway_ruined } if = { limit = { exists = solar_system.starbase } solar_system.starbase.owner = { set_country_flag = did_not_repair_gateway } } upgrade_megastructure_to = gateway_restored finish_upgrade = yes } } from = { country_event = { id = apoc.13 } country_event = { id = apoc.11 } } } }
コードを見てもAIの動作に関わりそうな記述が見つかりません。
ただ、英語Wiki[stellaris.paradoxwikis.com]にはそれらしい記述がありました。
ai_weightがそれっぽいですよね。
3-3. 変更したい要素の「日本語」から、その要素の定義を探す2
はい。ということでですね、実はこれgrep条件が違いました。


建設船で建造した直後は「ゲートウェイ」ではなく
「ゲートウェイ建設拠点」なんですね。
これで改めてgrepします。

$ grep -ri gateway_0 ./localisation/japanese/ ./localisation/japanese/apocalypse_l_japanese.yml: gateway_0_MEGASTRUCTURE_DETAILS:2 "ほかの§Yゲートウェイ§!への瞬間的移動を可能にする、 亜空間と繋がったポータル。" ./localisation/japanese/apocalypse_l_japanese.yml: gateway_0:0 "ゲートウェイ建設拠点" ./localisation/japanese/apocalypse_l_japanese.yml: gateway_0_DESC:0 "この建設拠点は、 ゲートウェイ建設のための基盤になるだろう。"
見つかりました。gateway_0ですね。これで再度grepします。

$ grep -ri gateway_0 ./common/ ./common/ai_budget/00_energy_budget.txt: is_megastructure_type = gateway_0 ./common/megastructures/05_gateways.txt:gateway_0 = { ./common/megastructures/05_gateways.txt: has_megastructure = gateway_0 ./common/megastructures/05_gateways.txt: has_megastructure = gateway_0 ./common/megastructures/05_gateways.txt: gateway_0
はい。megastructuresフォルダ以下に定義にあることがわかります。

gateway_0 = { entity = "construction_platform_entity" construction_entity = "construction_platform_entity" portrait = "GFX_megastructure_construction_background" place_entity_on_planet_plane = no build_outside_gravity_well = yes # indicates this will use "free" placement between the system's inner and outer ring # if this option is active, the placement_rules will be completely ignored show_galactic_map_icon = no show_in_outliner = yes overlord_can_upgrade = yes build_time = 1080 resources = { category = megastructures cost = { alloys = 2500 influence = 75 } } construction_blocks_and_blocked_by = self_type potential = { has_technology = tech_gateway_construction } possible = { exists = starbase custom_tooltip = { fail_text = "requires_inside_border_or_subject" OR = { is_inside_border = from AND = { exists = owner owner = { is_subject = yes overlord = { is_same_value = from } } } } } custom_tooltip = { fail_text = "requires_surveyed_system" # or is in my subject's territory OR = { NOT = { any_system_planet = { is_surveyed = { who = prev.from status = no } } } AND = { exists = owner owner = { is_subject = yes overlord = { is_same_value = from } } } } } custom_tooltip = { fail_text = "requires_no_existing_gateway" NOR = { has_megastructure = gateway_0 has_megastructure = gateway_ruined has_megastructure = gateway_restored has_megastructure = gateway_final } } custom_tooltip = { fail_text = "requires_technology_gateway_construction" from = { has_technology = tech_gateway_construction } } } placement_rules = { # those would be ignored since the gateway is being "free-placed" between the inner and outer radius of the system } # root = system # from = country ai_weight = { factor = 5 modifier = { factor = 0 starbase = { NOT = { has_starbase_size >= starbase_starfortress } } } modifier = { factor = 0 any_neighbor_system = { OR = { has_megastructure = gateway_0 has_megastructure = gateway_ruined has_megastructure = gateway_restored has_megastructure = gateway_final } } } } on_build_start = {} on_build_cancel = {} on_build_complete = { from = { country_event = { id = apoc.14 } } } }
ai_weightの記述があるので、恐らくここがAIの建造条件であると見当をつけることができました。
本当にこれかどうかは、例1)同様にModを作って確認してみましょう。

こちらは本題ではないので今回は割愛します。
4.終わりに
ということで、ひたすらgrepして、対象かどうかを確認していくことで
目的のコードを見つけることが可能なことがわかります。

基本的にModderはこの地道な作業をこなしています。
新しくMod開発を考えているあなたも
まずはこれを身につけるところから始めると良いんじゃないでしょうか。

コンソールコマンドなんかも同様です。
よく日本語Wikiでは「コンソールコマンド実行のための特定の技術のIDを教えて欲しい」
みたいな質問が飛び交っていますが、それ自分で調べられるんですよ。調べましょう。

そして日本語で情報がまとまっていないと嘆くあなた。
今ない資料を作るのはあなた自身です。ないものはないので誰かが作るしかありません。
人に頼っていても誰も作ってくれることはありません。まずは自分で動きましょう。

他の人と被ってもいいので、私と同じようにSteamガイドを作るなり、
GitHubにドキュメントを書くなりしてはいかがでしょうか。
まだ綺麗にまとめるなんて段階ではないんですよ。
各人が各々で作った資料をかき集めるという段階ですらないんです。
そもそも資料がないので。いっそ私のガイドとだだかぶりした内容でもいいんです。
私は書いたぞ。

はい、うざくなってきたので以上です。