Reassembly

Reassembly

Not enough ratings
Reassembly Modding 日本語ガイド
By でるた
Reassembly Docsページの一部の内容を日本語に翻訳したガイドです。
   
Award
Favorite
Favorited
Unfavorite
はじめに
こちらはReassembly Docsページの一部の内容を日本語に翻訳したガイドになっています。

筆者は英語、プログラミング共に詳しくない人間ですが、分かりやすい解説が欲しいなと思いこういったガイドの作成に踏み切ったのがきっかけです。
全て翻訳済みということでもなく、内容が分かりやすいように原語とは違う表現を一部使用しております。内容も間違えていることもあり得ますのでご了承ください。
何かありましたらコメントしてくださると幸いです。
・Modファイルの作成方法
二通りほどの作成方法があります。

1.既存のセーブデータから作成する。
ゲーム内で保存されたセーブファイルを右クリックすることで、メニューが開きます。
そこから「Modとしてエキスポートする(or +block.luaを作成する)」を押すことでそのセーブデータを基準としたModファイルが作成されます。
block.luaを作成した場合、セーブデータに存在するファクションのパーツなどが記述されたblock.luaファイルが生成されます。

2.エクスプローラからファイルを作成する。
以下のOSに合わせた場所に"mods"という名前のフォルダを作成します。
Windows...C:/Users/you/Saved Games(保存したゲーム)/Reassembly/
Mac.../Users/You/Library/Application Support/Reassembly/
Linux.../home/You/.local/share/Reassembly/

"mods"フォルダの中に好きな名前のフォルダを作成します。これでそのフォルダがModファイルとして検知されるようになります。

・Modデータの公開方法
Modsメニューから、Modの中に「公開」ボタンを押すことでSteamWorkshopへアップロードできます。
Modの更新を行う場合も「公開」ボタンを押すことで再アップロードされます。
更新前と互換性を無くさないように作成してください。
・ファイル解説
・データ構文
Reassemblyのデータファイルはすべて同じシステムが使われており、構文も同じになっています。
全てのデータファイルはUTF-8エンコードされています。

’#’と’--’を先端に配置すると、その行はコメントとなり読み込み無視されます。

データは厳密に型付けされており、対象外の値を入れてしまうとエラーとなります。
(例えば、int型のデータには"5.6"といった小数点を含んだ値を入れることができません。int型は整数のみ入れることが可能です。)
その他に、コンマや括弧の設置ミスによるエラーもよくあるため注意が必要です。
ゲームプレイ中はゲームログから構文エラーを確認できます。
・ブロック Blocks.lua
新しいブロックを作成したり、既存のブロックを変更することができます。
新しいブロックはデフォルトのファクションの一つに追加したり、新しいファクションに追加することもできます。

記述例
{ {1, group=21, name="ブロック", shape=SQUARE, scale=1, fillColor=0xaaaaaa, fillColor1=0x333377, lineColor=0xbbbbbb, }, {2, group=21, name="ブロック", shape=SQUARE, scale=2, fillColor=0xaaaaaa, fillColor1=0x333377, lineColor=0xbbbbbb, }, {3, group=21, name="キャノン", points=40 features=TURRET|CANNON, shape=OCTAGON, scale=1, fillColor=0xaaaaaa, fillColor1=0x333377, lineColor=0xbbbbbb, cannon={ roundsPerSec=4, roundsPerBurst=3, muzzleVel=1500, spread=0.02, power=10, damage=50, range=1000, color=0x8888aa} } }

・ブロック識別子
ブロックのデータの記述の最初に数字が割り当てられており、それがブロック識別子となります。
この番号がブロックの種類を判別しており、数字が被ると正しく読み込まれなくなります。
Mod間の競合による数字被りを避けるため、Steam Workshopから導入するとそのブロック識別子は適切な番号へ再設定されます。

ブロックを追加する際は、ブロック識別子を1~200の間で設定します。もし、200以上のブロックを追加する必要がある場合は17000~26000の数値を使用してください。
200~17000の範囲ではデフォルトのブロックデータが割り当てられており、そこの数値を当ててしまうとそのブロックを使用しているシップに影響を与える可能性があります。

・記述例のブロックデータ解説(詳細は後述)
データ名/データ型:説明

group(グループ)/int型:ファクションの識別子。同じ値のファクションにブロックが追加される。

name(名前)/string型:ブロックの名前。ダブルクォーテーションを入れ忘れないように("名前")。

points(ポイント)/int型:ブロックを使用した際にかかるポイント。

shape(形状)/Shape:ブロックの形状。定められた文字列を入れることで形を変更する。

scale(大きさ)/uint型:ブロックのサイズ。

fillColor,fillColor2(ブロックの色)/uint型:ブロックの色。fillColorとfillColor2の色が時間差で入れ替わる。

lineColor(縁の色)/uint型:ブロックの縁の色。

features(特徴)/FeatureEnum:ブロックの持つ特徴。定められた文字列を入れることでその特徴を取り入れることができ、特徴に応じたパラメータの指定が可能になる。features内のデータ解説は省略。

cannon(キャノン)/Cannon:FeatureEnumにCANNONを入れることで反映されるデータ。cannon内のデータ解説は省略。

・色指定
fillColorといった色の指定方法は16進数のRRGGBB形式です。その値の前に0xを付ける必要があります。
特定の色(例えばレーザーの色)によっては透明度の入ったアルファ値(AARRGGBB)で指定することもあります。

・パラメータの自動計算
ブロックのHPは耐久性、密度、面積によって計算されて割り出されます。
HPは指定可能ですが、計算された値に常時上書きされます。

ブロックのポイントは指定可能ですが、無指定だった場合は他のパラメータに基づいて計算されます。
ポイントのほかにも指定されていないデータは自動で計算されるものはいくつかあります。
キャノン、レーザーの威力、ジェネレータの能力、シールドとスラスターの色、ブロック単体の色、ブロックの再生速度、資源倉庫の容量、耐久性、密度など
・ファクション factions.lua
ファクションファイルでは、新たなファクションを作成するのに使用します。
最初からマップ上にファクションを出現させたい場合は、regions.luaで設定する必要があります。

記述例
{ 20={name="MyNewFaction", start="20_miniship1", color0=0xaaaaaa, color1=0x7777aa, aiflags=WANDER|TRACTOR_TRANSIENT|DODGES, playable=2, thrustSFX=1} }

ファクションのデータの記述の最初にブロック識別子と同じように番号を割り当てる必要があります。
ファクションの番号も、ブロック識別子と同じように適切な番号へ再設定されます。

・記述例のファクションデータの解説
データ名/説明

name:ファクションの名前。

start:最初に乗るシップの種類。未指定でも自動的に選ばれる。

color0,color1:デフォルトで設定されているファクションのカラー。プレイヤー側がカラーを変更すると、ブロックのカラーも変化する。

aiflags:ファクションのCPUのAI。入れる内容によって動きが変わる。aiflags内のデータ解説は省略。

playable:値が"1"であれば初期スタート時のファクション選択肢の中に表示される。"2"であれば、デフォルトでロックが解除された状態になる。

thrustSFX:スラスターの効果音。"0"であれば「テラン」といった一般的なスラスターサウンドになり、"1"であれば、「レッド」「クリスタライン」と同じスラスターサウンドになる。
・シップフォルダ ships/, エクストラシップフォルダ extra_ships/
シップフォルダは、ファクションにおいて使用されるシップのデータを保存する場所です。
エクストラシップフォルダにいれたシップはファクションID10(公式翻訳で"対戦相手")に追加されます。

記述例
{blocks={ {800, {-5.069, 5.069}, 0.000}, {805, {22.431, 35.069}, -3.142}, {805, {22.431, 5.069}, -3.142}, . . . {805, {-35.659, 10.069}, 1.107} } }

・blocksデータ解説
blocks={ {ブロック識別子,{x座標,y座標},角度} }
といった構造になっています。
しかし、座標の値は非常に複雑で、手動打ち込みでは大変だと思われます。

おすすめの方法はSandBoxモードで3キーを押してブロック操作が可能な状態にし、コマンド blocks "ブロック識別子の番号"と打ち込んで召喚し、組み立てる方法があります。
シップが完成したら全体を囲い、 ssave "好きな名前"とコマンドを実行して保存します。
保存されたデータは.luaとして出力されます。それをそのままshipフォルダに入れるだけで使用できます。



シップデータは、ブロック識別子と同じようにファイル名で判断されます。
存在するデータと同じ名前でシップデータを作成すると、そのデータに上書きされます。
他のModの船の名前とかぶらないように、ファイル名の中にModの名称や、製作者の名前を含めるといいでしょう。
・マップ regions.lua
regions.luaファイルはゲームを新規で始めた際の生成で参照されるデータです。
新たに作成されたファクションをマップ上に出現させるにはregions.luaファイルで定義させる必要があります。

記述例
{ ident=20, color=0xffffff, faction=20, count=2, radius={0.3, 0.4}, position={0.4, 0.5}, fleets={{20,{{0, 1000},{1, 600}}}}, ambient={0}, unique = {{"20_ship1","20_ship2"}{"20_ship3","40_bigship1"}}, fortress = {"20_fortress1","20_fortress2","20_fortress3"}, fortressCount = {0,2} }

identデータはセーブデータ内に保存されます。ブロックやファクションIDと同様に既存のセーブファイルを破損させる可能性があるため、むやみに変更しないでください。
regions.luaでのidentデータも、ブロック識別子と同じように再設定されます。

・記述例のマップデータの解説
データ名/データ型:説明

ident/int型:識別子。

color/uint型:マップ上でのファクションのマスの色。

faction/int型:ファクション識別子。

count/uint型:入れた値の数マップ上にファクション領域を生成する。

radius/float2:ファクション領域の範囲を表す。0~1の間の数字で指定する。一つのファクション生成につき、値分の半径の広さが設置される。{x,y}で例にすると、xから、yの間の数値がランダムで選ばれる。

position/float2:ファクション領域の位置を表す。0~1の間の数字で指定する。位置は0を中心とし、1はマップの縁側となる。{x,y}で例にすると、xから、yの間の数値がランダムで選ばれる。

fleets/List<Pair<int>,List<Pair<float, float>:生成されたファクション領域にシップを発生させる。{{20,{{0, 1000},{1, 600}}}}を例にすると、ファクションIDが20のシップを中心である0の位置に1000P分、一つの領域内で一番端の方に600P分のシップを精製させる。

ambient/List<int>:ファクション領域に生える植物の種類を指定する。1であれば緑色、2であれば青色、3であれば桃色の植物が生える。-1であれば植物は生えなくなる。

unique/List<list<string>>:生成されるシップの種類を指定する。

fortress/List<string>:生成される要塞の種類を指定する。

fortressCount/int2:一度に生成される要塞の数を指定する。例で言えば0~2基生成されることになる。
・シェイプ shapes.lua
オリジナルの形状(shape)を定義することができる。

記述例(Workshopにて公開されている"Shape Mod Example"を参照しています。)
{ {100, {{verts={{-8.507, 0}, {-2.629, 8.09}, {6.882, 5}, {6.882, -5}, {-2.629, -8.09} }, ports={{4, 0.5}, {0, 0.5}, {1, 0.5}, {2, 0.5, LAUNCHER}, {3, 0.5}}}}} {101, {{verts={{-8.507, 0}, {-2.629, 8.09}, {15, 5}, {6.882, -5} }, ports={{0, 0.5}, {1, 0.5}, {2, 0.5}, {3, 0.5}}}}}, {102, {}, mirror_of=101}, {103, {{verts={{-8.507, 0}, {-2.629, 8.09}, {6.882, 5}, {6.882, -5}, {-2.629, -8.09} }, ports={{4, 0.5}, {0, 0.5}, {1, 0.5, LAUNCHER}, {2, 0.5, LAUNCHER}, {3, 0.5, launcher}}}}} {104, {{verts={{-8.507, 0}, {-2.629, 8.09}, {6.882, 5}, {6.882, -5}, {-2.629, -8.09} }, ports={{4, 0.5}, {0, 0.5}, {1, 0.5, LAUNCHER}, {2, 0.5, LAUNCHER}, {3, 0.5, launcher}}}}, launcher_radial=true} }

・記述例のシェイプデータの解説
データ名:説明

verts:点の位置。{x, y}で座標を指定する。記述する順番は時計回りでないといけない。

ports:ポートの設定。ブロック同士をくっつけるポイントを設定するところ。{辺, ポートの位置, 特徴}というように記述する。記述が最初の点から二つ目の点の間の辺を"0"とし、以降カウント。ポートの位置は0~1で指定される。0.5で真ん中。特徴には"LAUNCHER"("launcher")を記述することでランチャーの特徴を持ったブロックが弾頭を設置する場所を指定する。記述無しでも問題無し。

mirror_of:反転した形状を指定する。vertsは指定せずに、どの形状を参照するかをこのデータに指定する。

launcher_radial:ランチャーの弾頭の向きを指定する。trueだと設置された場所を基準に前方を向き、無記述、falseの場合はブロックの向きを基準に前方を向く。
その他のファイル
・テキスト messages.lua, popups.lua, tips.lua, text.lua
これらのファイルは、メッセージやポップアップ、プレイヤー復活までのヒントやブロックの解説といった様々なテキストを定義します。

text.lua 記述例
{ "Start" = "Play" }

Startボタンのテキストを"Play"に変更する。



以下、全、または一部未翻訳、未解析
・Audio - audio.lua, audio/
サウンドに関するファイル。効果音や音楽を定義する。サウンドファイルの形式はOgg Vorbis。

・Shaders - shaders.lua, shaders/
シェーダーに関するファイル。演出エフェクトといったものを変更できる。

・Font - blockfonts/, *.ttf
フォントに関するファイル。ブロックフォントはタイトル画面で言うとブロックでできた「Reassembly」のことを指す。

・Misc - cvars.txt
変数に関するファイル。様々な変更が可能。
リンク
データ内容解説… Reassembly Modding 付録

参照元... 公式ページ Reassembly Docs [www.anisopteragames.com]
     shapes.lua記述例 Shape Mod Example