APC_devlog

kenshiのmoddingとか。

【kenshi FCS覚書】クロスボウの設定とmesh作るときの注意

最近なんとなく飛び道具ほしくなってこんなもん(ハープーンランチャー)こさえたので、そのとき気付いたこととかのメモ。

f:id:APCatheteR:20201110110458j:plain

一応解説の体では書くけど厳格な教科書って訳でもないので、のちのち修正とか入るかもしれません。あしからず。

でもこの工具の寄せ集めみたいなやつ作るのにかけた6時間くらいのノウハウがこれ読むだけ30分くらいで得られるので、たぶん役立つと思います。

 

◆必要なメッシュについて

ここではスプリングバットを例にとります。

クロスボウ1つ作るのに必要なメッシュは以下の4つ。

f:id:APCatheteR:20201110110639p:plain

上から、

クロスボウ本体

クロスボウのボルトのモデル(装填時に表示される&実際飛んでいくもの)

③本体に重ねて表示する装填時のモデル(弓と弦が引かれている状態)

④本体に重ねて表示する非装填時のモデル(弓と弦がゆるんでいる状態)

実際のモデルだとこんな感じ。

f:id:APCatheteR:20201110111303p:plain

f:id:APCatheteR:20201110111312p:plain

クロスボウ自体のモデルは全て原点をそろえておく必要があります。

ボルトのほうは、バニラの矢のメッシュはどれも若干Z座標がマイナスでしたが、普通にY軸上に正中軸が来るように作っても問題なさそうです。むしろそっちのほうが分かりやすそう。

 

メッシュ作成時にある程度分割して作成して、今の①~④のメッシュを別々に出力できるようにしておきましょう。

 

以下は実際の作例です。

f:id:APCatheteR:20201110112329p:plain

f:id:APCatheteR:20201110112341p:plain
今回は先込め式のハープーンランチャーでしたので、クロスボウのような弓の部品は作成していません。

①ランチャー本体

②´ランチャー本体と同時に作成しておいたボルト

②↑をもとにY軸に重心線が来るように移動したボルト

実質①と②のみを作成し、ゲーム内に実装しました。

 

例えばフリントロック銃を作る場合なら、ハンマーが起きているか倒れているかを表現するために③と④のモデルを作ったりするといいかもしれません。

 

また、ゲーム内に読み込んだ際に意図した場所とずれてしまったり、大きさがおかしくなる場合は、blender内でオブジェクトモード中にメッシュを移動させてしまったのが原因かもしれません。

ctrl + Aで適用を開き、位置、回転、拡大縮小を反映させましょう。

f:id:APCatheteR:20201110115223p:plain

ちょっとバージョン古いですけど、トランスフォームの欄がこんな感じになっていれば大丈夫です。

 

◆テクスチャについて

エクスポートしたmeshファイルにはテクスチャやマテリアルなどなどの色情報は一切含まれていません。kenshi内でテクスチャを使用するには、ddsファイルとして出力する必要があります。

ddsファイルはフリーならGIMP(要プラグイン)、年貢制ならphotoshopあたりで扱えるはずです。ここではGIMPを例に、ddsの出力時の注意だけ解説します。

ずばりこれ↓

f:id:APCatheteR:20201110113436p:plain

「dds出力時の圧縮(Compression)はBC1/DXT1」

「Mipmapsを必ずGenerate mipmapsにしておく」

「出力したい画像は必ず1枚のレイヤーにまとめておく(一度pngとかで出力したやつをもう一回レイヤーとして読み込んで、それを出力すればおk)」

テクスチャにアルファチャンネルを含まない場合はこれで大丈夫です。

このゲームどうやら拡散マップ(いわゆるテクスチャ)の透過がノーマルマップ(凹凸を表現するためのマップ)の透過性依存らしく、例えば板ポリで葉っぱ1枚を表現したいとかなった場合はNMを出力するときにちょっと変えなきゃならないっぽいんですよね。

詳しくはここのガイド参照。テクスチャまわりの仕様は共通なので参考になります。

steamcommunity.com

ゲーム内に読み込んだ時にテクスチャが真っ黒に表示されてしまうとかは、だいたいミップマップ作成してないせいです。出力時に必ず指差し確認しましょう。

 

FCS内での設定

※この記事は覚書なので、FCSの使い方をある程度理解していることを前提としています。アウトローmodの製作者である世紀末剣士マックス様が投稿したこの動画が分かりやすくておすすめです。

www.nicovideo.jp

 

スプリングバットを例にとって見てみましょう。

f:id:APCatheteR:20201110114453p:plain

わぁ、いろんな項目がありますねぇ。

どうすんのこれ、となる前に、1つ1つ簡単に解説していきますので、実際にFCSを確認しながら見てみるといいでしょう。

まず左側の項目の解説から。

◢ Base

Name・・・武器の名前。日本語入力可

Object typeはデータの種類、String IDはデータの処理のために自動で割り当てられるIDのようなので変更できません。ほっときましょう。

 

◢ammo

extra mesh loaded・・・武器の装填時に表示する追加メッシュ。上で解説した③

extra mesh unloaded・・・非填時に表示する追加メッシュ。上で解説した④

live ammo・・・装填時に表示&実際飛んでく矢のメッシュ。上の②

作例のハープーンランチャーのように、装填/非装填で変化するパーツがなければ、live ammoのみ設定すれば問題なさそうです。

 

◢Craft

Craft time hrs・・・製作時間。どう動いてるかは不明。

実際は作業するキャラクターのスキルとか作業台の設定とかいろんな要素が関与してきます。ちゃんと動いてるかは分かりませんが、たぶん設定する意味はあると思います。

 

◢Damage

breed mult・・・最高品質(傑作)時の出血係数補正

breed mult 1・・・最低品質(試作品)時の出血係数補正

この2つ、FCS内の説明文と実際の挙動が逆だったので気を付けましょう。

数値は1だと1.0倍(そのまま)で、1.2だと1.2倍になります。

pierce damage max 0・・・最低品質時の最大ダメージ

pierce damage max 1・・・最高品質時の最大ダメージ

pierce damage max 0・・・最低品質時の最低ダメージ

pierce damage max 1・・・最高品質時の最低ダメージ

これはクロスボウのダメージの最小ー最大を決めるパラメータでした。

個体差がけっこうある気もしますが、だいたいこの数値周辺の値になってくれていました。

 

◢files

ground mesh・・・地面に置いたときのメッシュ

これは設定しなくても大丈夫そうです。バニラでもしてないし。

has collision・・・メッシュの当たり判定があるか?

基本trueでいいと思います。

icon・・・アイコンの画像

pngファイルを指定できます。これは後述のauto icon imageを使用せずに自分でアイコンを作りたい人向けです。アイコンのサイズはインベントリの1マスが25 x 25 pxになってました。

mesh・・・クロスボウの本体のメッシュ。上で解説した①

physics file・・・xmlファイルを指定するところ。落とした時の物理演算用。

これは設定しなくていいと思います。もげた腕みたく落としたら転がるものとかそういうもの用かと。

sheath・・・鞘。つまるところケースのこと?

これは未確認です。背中に背負うケースみたいの作りたい場合は使うんだろうけど、どこのボーン基準で言ってる話なのかが不明。後日覚えてたらやってみるかも。

 

◢General

description・・・説明文を入れるところ。

欄をクリックすると右端に[…]みたいなのが出てくるので、それクリックすると別窓で編集できます。

equip offset・・・背中からどれくらい離して背負うかの数値

数値の単位が分からないので何とも言えませんが、バニラのクロスボウのメッシュ見ながら調整すればいいと思います。だいたい1.6くらい?

weight・・・重さ、だそうだけど不明。意味のない数値かも。

 

◢gun stuff

accuracy deviation at 0 skill・・・スキル0のときのばらつき(角度)上限

accuracy deviation at 0 skill 1・・・スキル0のときのばらつき(角度)下限

これは発射時にボルトが何度ずれるかの数値のようです。射手のスキルによる影響あり?

accuracy perfect skill・・・射手のクロスボウスキルがいくつのときに命中精度が100%になるか?

aim speed・・・照準時の回転速度。バニラではだいたい1。いじる必要はなさそう?

num shots・・・1回の装填で何発撃てるか。多分。

このへん未検証です。連発武器とか作りたいので近々いじってみます。

reload time max ・・・最小スキル時の最長リロード速度(秒)

reload time max 1・・・最小スキル時かつ最高品質時の最長リロード速度(秒)

reload time min・・・最小スキル時の最短リロード速度(秒)

reload time min 1・・・最小スキル時かつ最高品質時の最短リロード速度(秒)

この4つはスキル補正ゼロの場合のリロード速度のようです。

数値はゲーム内で多少ばらつきますが、だいたいこの通りになります。

shoot sound・・・射撃時の音の選択

これ追加できそうなもんですけど、その方法は未確認です。

shot speed・・・(最低品質時の)投射体の弾速

shot speed 1 ・・・最高品質時の投射体の弾速

弾速はここで設定するようですが、この数値通りにはならなかった気がします。いろいろ試してみてください。

 

◢inventory

auto icon image・・・アイコンをメッシュから自動生成するか?

アイコンのpngファイルを用意しないのであればtrueでいいと思います。ただ、後述のinventory iconの各項目でいじらないとだいたいは正しく表示されないので注意。

inventory footpoint height・・・インベントリの縦サイズ(マス数)

inventory footpoint width・・・インベントリの横サイズ(マス数)

インベントリ内での縦横のサイズです。たまに逆に設定しちゃうので注意。

slot・・・インベントリのどの装備スロットに入るかの設定

value・・・(最低品質時の)価格

value 1・・・最高品質時の価格

この2つもだいたい設定どおりくらいの数値になってくれました。

weight kg・・・インベントリ内での重量

なぜか設定値の半分の重さになります。ここで10kgとしたらゲーム内5kgとか。

 

◢inventory icon

この項目は全て未検証です。バニラのコピーでだいたい何とかなると思います。

 

◢misc

FCS内では今は使用していない数値って説明になってるので多分使われていないんだと思います。いじる必要多分なし。

 

◢positioning

barrel pos Y・・・銃身の末端の相対位置

barrel pos Z・・・同上

radius・・・半径。上で設定した相対位置からどれくらい離れるか?だと思う。

radiusは6連ハープーンみたいなやつで使う数値っぽいなので、基本0でよさそうです。

 

このbarrel pos X/Yは、武器の装填時にlive ammoのメッシュを本体のメッシュと同時に表示する際、本体の原点から見てどの位置にlive ammoの原点が来るように表示するか?というパラメータのようです。

もうちょい補足。

f:id:APCatheteR:20201110124304j:plain

ということでした。blender内で3Dカーソルの座標見ながらやればなんとかなると思います。

 

◢race damage

ここの3つの数値はそれぞれ、動物、人間、ロボットに対するダメージ倍率を設定するものです。1なら1.0倍(通常通り)、1.2なら1.2倍のダメージみたいな感じになります。ここもほぼ数値通り。

 

◢scale

ここはメッシュの数値の設定を行う場所です。特にいじる必要はないでしょう。こういう微調整はblenderのほうが直感的に行えると思います。

 

これで左半分の解説が終わりました。残りの右半分のウィンドウを見てみましょう。

f:id:APCatheteR:20201110125257p:plain

幸いこっちは割と直感的ですね

 

◢ammo

使用する弾薬をアイテムから指定します。バニラのボルトをコピーして持ってくればだいたい分かるはず。

◢ingredients

材料をアイテムから指定します。数値100=材料1個分です。

この表示だと鋼板地金6本+スプリングスチール2本でクロスボウが1本できることになります。

◢material

ここでテクスチャを指定します。ちょっと開いて見てみましょうか。

f:id:APCatheteR:20201110125609p:plain

なんかいろいろ書いてありますけど、基本いじるのは

・Name(必ず半角英数。ゲーム内でこの名前は表示されない)

・nomal map(ノーマルマップ読み込み)

・specular mult(反射係数。0が反射なし、1がテカテカ)

・texture map(拡散マップ読み込み、いわゆるテクスチャをここで指定する)

くらいなもんです。これは近接武器のカタンNO2とかと共通の枠を使ってるみたいですけど、基本的にこの4つ指定すれば動きます。ノーマルマップは最悪なくてもよし。作りたければ調べて作ってみるとちょっといい具合になります。

 

◢reload anim

リロードのモーションを指定できます。

バニラではreload 1~3 phaseの3つのバリエーションがあるようです。

つまようじは 1、スプリングバットは2、わし(53)の十字架は3みたく、リロード時間によって使い分けるといいかもしれません。

多分自分で追加とかできるんだろうけど、そのへん未知の領域なので割愛。

 

 

5500字くらい書いちゃったのでこれで終わり!閉講!以上!お疲れ解散!

なんかあればコメントかtwitterまでおねがいします。