トリガーエディターと共に散りぬ

ゲームに関する、日本語の記事が出回ってなさそうな小ネタなど

Barotraumaに関するメモ

Barotrauma

Barotrauma on Steam

がめちゃくちゃ面白いので

これからこのゲームに出会うかもしれないクルー諸氏のために

遊んだ中で得た知見とかを書き溜めていきたいと思います。

1回キャンペーンを遊んで基本的な仕組みがわかった人向けの記事です。

新人クルーの方は有志が作ってくれている日本語wikiを参照してください。

Barotrauma日本語wiki

ゲーム内にチュートリもありますので、手探りでやるのも良いかと思います。

 

 

艦内配線マスターになりたい人は日本人Discordに参加して

そこにいらっしゃる神々にお伺いするのが良さそうです。

 

 

 

使ってみたMODの感想

コンテンツ追加系

Steam Workshop::Into The Abyss: Campaign Overhaul for Seaworthy Men

おすすめ度 ★★★★★

キャンペーンを大改造するMod。

新規アイテム、新規ダンジョン、新規ミッションと盛り沢山。

グラップリングフック実装、

そして燃料棒がガチで取り扱い注意アイテムに昇格・・・。

これだけでキャンペーンがまるまるもう1回楽しめます。

このMODは有効化した後ゲーム再起動が必要な点に注意。

 

Steam Workshop::4x Stack 4倍堆叠上限

おすすめ度 ★★★★★

アイテムのスタック上限を8→32に増やしてくれるMod。

資材はすぐにパンパンになるので本当にありがたいです。手放せません。

 

Steam Workshop::EK : Armory

おすすめ度 ★★★★☆

武器種や、艦載武器の弾薬の種類が増えます。

見知らぬ武器を作った時のワクワク感は半端ないです。

ただし弾薬がバッテリー式の武器など若干使い勝手が良すぎると思うものもあるので、

バランスを気にする人は注意。

 

Steam Workshop::EK : Utility

おすすめ度 ★★★★☆

溶接工具やプラズマカッターの上位互換

枠が拡張されたバッグ、つよつよスーツなどが増えます。

上記の4倍スタックがあるとあまり意味ありませんが、

10個単位で資材を固めることもできるように。

めちゃめちゃ便利なものばかりなのでQoL向上間違いなしですが

よりシビアな環境に身を投じたい人には向いていないかも。

 

Steam Workshop::XanMonsters Creature Pack

Steam Workshop::XanMonsters Volume 2 Creature Pack
おすすめ度 ★★★☆☆

とにかくモンスターを追加するMOD。戦いたいあなたに

まだこのMODいれて2階層目なので、真価は体験できていないかもしれませんが

未知のモンスターがでてくるだけで楽しいです。

エンドワームもリメイクされているらしく、後半どうなることやら・・・

 

潜水艦

Steam Workshop::[VH] The Iroh
おすすめ度 ★★★★★

潜水艦。

公開されている潜水艦をいくつか試乗しましたが、

これが一番必要な機能が一通りコンパクトにまとまっている気がしました。

バラストフローラモードや

Into The Abyssの燃料棒を破棄するために作られたかのような構造など

痒いところに手が届いています。デザインもスタイリッシュ。

 

Steam Workshop::深渊之眼~the eye of abyss
おすすめ度 ★★☆☆☆

厨二病感満点の漆黒の潜水艦。

異常に明るい艦内、無限燃料や火力全振りの兵器などネタ満載です。

でもこれでゲーム本編すすめるのはヌルゲーすぎる気がして不採用

 

Steam Workshop::Kaskara-class Assault Cruiser (Goph Original Ship)

おすすめ度 ★★☆☆☆

作り込みが凄すぎる潜水艦。一度は試乗してみて欲しいです。

ただ、クソでかすぎて6−8人程度では運用はまったく手が回らないのと

パーツ多すぎて処理が非常に重たく

航海するにはしんどすぎて断念しました。残念

 

ネタ

Steam Workshop::Electric Guitar

おすすめ度 ★★☆☆☆

楽器追加。2曲しか引けませんが選曲が良いので癒しに

 

Steam Workshop::Piano man!
おすすめ度 ★★☆☆☆

楽器追加。曲数が多い。

一部で有名な「ばかみたい」が入っています。だめだね。

 

 

ロードが入るタイミングで接続が切れる事象

概要

バニラの時は快適に遊べていたのですが

調子乗ってMODを増やしていくと、

ロードの入るタイミングでホストから蹴られる人が続出しました。

復帰してもキャラが死んでいたりして非常にストレス。

同じ症状が出た人のために原因と対策を調べた範囲で書いておきます。

原因

Frequent Disconnect in Multiplayer Campaign. : Barotrauma
ホストの人とそれ以外の人でローディングの時間が違いすぎて

タイムアウトしてしまうのが原因と思われます

対策

手段1:自前でサーバを建てると解決するらしい

Hosting a Dedicated Server - Official Barotrauma Wiki

Enabling Mods on a Dedicated Server - Barotrauma Wiki

Steamを介さずに通信することでロードが速くなって解決、という仕組みでしょうか。

ルータの設定やサーバセッティングがいるのでちょっとハードルが高い。

試せてないので効果の程は不明。

 

手段2:ローディング中にタブ切り替えとかで他のことをしない

気休めですが。

ロード中はじっと待ちましょう

 

手段3:MODを入れすぎない

音楽系MODは特に曲データが重い。すっぱり諦めるだけでも改善します。

Modフォルダの中にあるデータを勝手に圧縮(品質を落とす)してしまうのも手ですが、自己責任で・・・。

 

手段4:切断されるのは諦めるとして、リカバリを快適にする

Friend keeps disconnecting :: Barotrauma Help & Technical Support

ホストの人がサーバを立てた後、準備画面などで

F3でコンソール画面を開き

killdisconnecttime 6000

と打ち込むことで、仮に接続が切れたとしても

魂の抜けたキャラクターが長時間生きたまま(立ったまま)になります。

したがって、再接続時に死んだ状態となりません。

 

ホスト以外の人が無事ロードが終わり入ったと思ったものの

キャラクターの操作ができず見渡しモードになっている時。

setclientcharacter [client name] [character name]

同じくホストがF3でコンソール画面だして、上記を打ち込むと

即時肉体に魂が返ってきて動けるようになります。

[client name]や[character name]は

おそらく後述のセーブデータの中を見れば判別可能と思うのですが、

自分の環境だとみんな同じ値だったので詳細は不明。

例えばキャラ名messerだと打ち込むコマンドは

setclientcharacter messer messer

といった具合。

 

 

各種ファイルのありか

セーブデータ

C:\Users\ユーザ名\AppData\Local\Daedalic Entertainment GmbH\Barotrauma\Multiplayer

セーブ名_CharacterData.xml

セーブ名.save

の2点と、潜水艦データを渡せばホスト移管も可能

潜水艦

steamのインストールフォルダ配下

\Steam\steamapps\common\Barotrauma\Submarines

MODもこの近くにあります。

マルチ行先ポータル

 

結構前に作った、行先が選べるポータルですが

なかなか使い道が決まらないままずるずる来てしまっているので

いったん内容を公開してしまおうと思います。

 

f:id:ms2messer:20191008230312j:plain

全景

 

その前に、ポータルの挙動に関するTipsをば。

 

最初考えたとき、こんな感じにポータルを配置しました

f:id:ms2messer:20191008232945p:plain

タワー上に配置したポータルをエディターでいったんすべてOFFにした後

タワーのうち1か所のみポータルをONにします。

次に、地面に置いたポータルからタワー最上段のポータルに移動する設定を施し、

落下しながらONにしたポータルに触れると特定の個所に飛べるのではと考えました。

しかし、簡単にはいかない謎の仕様が待ち構えていました・・・

 

一度アクションのポータルに触れると、タッチのポータルが機能しなくなる

f:id:ms2messer:20191008233044p:plain

ポータルの設定はデフォルトでアクションなので

仮建設したときは手抜きでいくつかアクションのポータルが混じっていたのですが

アクションのポータルに触れたとたん(アクションキーを押さなくても)

以降のタッチポータルが何故か全く機能しなくなります・・・。

 

これは、地面に置いた入口ポータルにも適用されてしまいます

f:id:ms2messer:20191008233526j:plain

 

よって、連続したタッチ移動のポータルをすべてうまく機能させたければ

体の触れる可能性のあるポータルはすべてタッチにしなければなりません。

 

また、タッチにしてももう一つ罠があります

キャラクターが速すぎるとタッチ移動が機能しない

f:id:ms2messer:20191008233948j:plain



これは所謂ラグというか、サーバ通信の問題でしょう・・・。

キャラクターの移動速度が速すぎると、タッチが反応しないことがあります。

反応することもありますが非常に不安定です。

確実に機能するのは、せいせい4ポータル分ぐらい。

 

これを踏まえて、マルチ行先ポータルはこんな感じで配置しました

f:id:ms2messer:20191008234343j:plain


だいぶごちゃごちゃになってしまいましたが・・・

3ブロックにわけて、落下は4ポータル分まで、すべてタッチ設定です。

行先を決めるためのレバーは、ブロック選択用に3個(ウォルナット)

ポータル選択用に12個(シルバー)配置する必要があります。

 

挙動としては、

①シルバースイッチを押すと

押した場所の床になっている店舗用ドアが開き、キャラクターが落下し、

その下に隠れているタッチポータルに触れます。

 

②左下にあるどのブロックに移動するかを決める3ポータルの一番上に移動します。

レバー入力にあわせて、3つのうち2つをOFF,1つをONにしておき、

落下&タッチで目的のブロックに移動します。

 

③移動した先のブロックにあるポータル1~12のうち、

レバー入力のあったポータルのみをONにし、他をOFFにしておくことで

落下とワープを繰り返しながら目的の番号のポータルまで数字の順に移動し

ONになっているポータルに触れるとタッチ移動で

あらかじめ設定された行先に飛びます。

 

 

 

ソースコードはこちらです。

なかなかややこしいので、興味ある人だけどうぞ・・・

 

f:id:ms2messer:20191009000327j:plain

いったん全部OFFにして、目的のポータルをONにする!

これの繰り返しで進んでいきます。

f:id:ms2messer:20191009000408j:plain

 

ここでちょっとテクいのは、

使っていないブロックのポータルも同時に制御している点です

キャラクターは目的のブロック内で移動するので

他ブロックの挙動がどうなろうと関係がないのですが

エディター的にはまとめて書けるのでオトクです。

 

f:id:ms2messer:20191009000732j:plain

これをどんどん繰り返して書いていきます。

 

f:id:ms2messer:20191009000832j:plain

だんだんめんどくさくなって、7、8、9、10、11、12番目の

ポータル設定をサボりました・・・ゴメンナサイ。

エディターだけならいいんですが、ポータルひとつひとつ設定するのがめんどくさい

 

最後に、店舗用ガラス自動ドアをONにして、キャラクターを移動させます。

2bitカウンターで少しだけ時間を稼いだ後は待ち受けに戻ります

 

ということでマルチ行先ポータルの紹介でした。

 

作ったはいいもののなかなか実用化が難しいです・・・。

一番みんなが家においてそうなボスポータルを設定してもよいのですが

あああもうすぐ沸く!!というときにレバーガチャガチャ操作するのうっとおしかったりして没。

フレンドポータルにしようかとも思いましたが

貴重な貴重なメイン垢のトリガーエディターを常時1つ占有するのは辛い・・・

ウーム、何かいい使い道はないものか

 

 

半自動採集機

 

いい加減日々の採集もめんどくさくなってきたので

ちょっとでも楽したい・・・ということで作りました。

アクションキーを連打しながらスマホいじいじしてたら

採集が大体終わる仕組みです

 

原理としてはそんなに難しいことはしておらず

店舗用ガラス自動ドアが閉じてたら透過しない、開いてたら透過する性質を利用して

ドアをタイマーで上から順番にゆっくり開いていけば出来上がり。

ドアの上に設置した作物を、下に落ちながら採集するだけです。

ちなみに、同時に制御できる数が3の都合上、1フロアにドアは3つずつ設置しています。

また、タイマー用にレバーを8つ設置します。

採取対象はスペースの都合上4マスとも同じものは配置しておらず、2マス2マスで配置しました。

畜産の牛だけ何故か透過しないので、一番下に配置しています。 

 

 

さて、ソースです

 まずは待ち受け。OnEnterは後述するのでいったん無視してください。

タイマーのレバー最後2つをONすることについても後述します

f:id:ms2messer:20190922200710j:plain

 

続いてタイマー。2bitカウンターを合計8個使いました。

ここは書いてあるまんま配置していただければ。

f:id:ms2messer:20190922200729j:plain

f:id:ms2messer:20190922200733j:plain

 

続いてドアの制御です。

上記のタイマーが終わるたびにドアの制御を呼び出して、

n番目のドアが3つ開いたらタイマーに戻るを繰り返します。

また、タイマー用レバーの最後の2つをあらかじめONにしておきます。

ONになっていると、その部分のタイマーがカウントされずにスキップされるので

採集の時間を短くすることができます

f:id:ms2messer:20190922200932j:plain

 

 

下のほうのドアにいくにつれ、さっきONにした最後2つのタイマーのレバーを

OFFに戻していきます

こうすることで、後半のタイマーを長くすることができます

f:id:ms2messer:20190922200934j:plain

 

最後は初期化です。ドアを閉めていきます

一部、入りきらなかったので待ち受けにも初期化を書きました。

f:id:ms2messer:20190922203313j:plain



以上で完成です。

 

・・・ところで、ここからもうちょい改良を加えました。

というのも、別にドア3つを1フロアにおかなくても

1ドアの角っこに立てば4マスの採取はできるし

それを2列建てたら野菜の採取もできるしでいいんじゃねってことで

最終形がこちら。タイマー用レバーは最下段の畳の陰に隠しました

f:id:ms2messer:20190922203538j:plain

 

こちらのソースものっけておきます。実質ドアが減ったのでソースもスッキリ

f:id:ms2messer:20190922203632j:plain

f:id:ms2messer:20190922203637j:plain

f:id:ms2messer:20190922203644j:plain

 

よくわからん!ってひとは実物が家にあるのでご自由にお越しください!

ダンシングおじさん

 

ギルサガ夏祭り用に作ったミニゲーム

ダンスをサボるおじさん(サボるとライトが消える)に

対応する位置のレバーを押して声援を送り、カツを入れるという

なんとも酷なモグラたたき系ゲームです。

 

 

もっかい作れと言われてももう無理なぐらいコードがぐちゃぐちゃなので

詳細な解説はしません(できません)が

ざっくりとした説明をば。

当然のごとくホームネットワークパソコンを3台使います

 

 

1つ目のPC

これが一番大事な、おじさんの動きを制御するPCです。

f:id:ms2messer:20190912214629j:plain

「時間経過」もしくは「プレイヤーが正解のレバーを押したとき」に

別のおじさんが動きを止めるようになっています。

f:id:ms2messer:20190912214640j:plain

conditionのザックリ解説

1行目の判定に使っているスイッチは、

後述するタイマーの隙間に仕込まれており、

一定間隔でスイッチがONとなります

これにより、時間経過で別のおじさんの動き制御に移ることになります

 

2行目のレバーはプレイヤーが押すレバーです。

レバーが押されたら別のおじさんの制御に移ります。

 

3行目がおじさんの動きを止める記載です。

f:id:ms2messer:20190912215114j:plain

f:id:ms2messer:20190912215133j:plain

ところどころ出てくるラグジュアリー飛行機械は、

得点の加算を記述したPCの動作トリガーになっています。

 

そのPCがこちら。

f:id:ms2messer:20190912215303j:plain

f:id:ms2messer:20190912215323j:plain

f:id:ms2messer:20190912215327j:plain

f:id:ms2messer:20190912215331j:plain

中はほとんど別記事で紹介した10進数カウンターです。

ラグジュアリー飛行機械がONになるたびに呼び出され、1ずつカウントされていきます。

 

最後のPCは制限時間となるタイマーカウンターです。中身は主に2進数カウンター。

f:id:ms2messer:20190912215435j:plain

f:id:ms2messer:20190912215438j:plain

f:id:ms2messer:20190912215442j:plain

タイマーは割と省スペースにかけるので、ほかのPCに詰め込み切れなかったスコア用スイッチの初期化処理などもこちらにいれています。

 

ということで、

おじさんの動きを制御するPC

タイマーカウンターPC

スコアカウンターPC

の3つで成り立っているのでした。

 

(エディター的には)大作ではありましたが、

同時公開したSASUKEのほうがゲームとしては面白かったのと

あとはやっぱり効果音がないと寂しいですね・・・。

 

そろそろ遊ぶ人もいなくなってきたので、解体しま~す!

複数レバーで開くドア

今回は複数レバーを押すと開くドアの紹介です。

 

 

 

 

ちなみにドアは手動で突破できないように2重ドアにしています。

2つ連続して置くと、奥のドアがタゲれなくて開けないという性質を利用しています

f:id:ms2messer:20190901184613j:plain

手前の3つのウォルナットレバーを隠してやることで
簡単には開かない秘密の扉に早変わり!

 

というわけで、

ウォルナットレバーを「隠しレバー」

右上のシルバーレバーは「時間稼ぎ用レバー」

扉の上のスイッチは今どのレバーが押されたのかを示す「進捗スイッチ」

と呼ぶことにします

 

ソースコードはこんな感じ。

f:id:ms2messer:20190901184402j:plain

 

f:id:ms2messer:20190901185803j:plain

f:id:ms2messer:20190901185816j:plain

f:id:ms2messer:20190901185819j:plain

f:id:ms2messer:20190901185821j:plain

 

 

さて、ここまでが簡単に作れる複数レバーで開くドアです。

 

もうちょい複雑ver

まずは4個目の隠しレバーを増やしてみます。

 

f:id:ms2messer:20190901213756p:plain

 

待ち受けがこんな感じになります。

二つの待ち受けをいったり来たりしながら4つのレバーの入力を待ちます。

 

レバーを4つに増やしたので、判定、初期化も4つ目を増やします

f:id:ms2messer:20190901213845p:plain

 

次に初期化ボタン(シルバースイッチで作りました)を増やしてみます

f:id:ms2messer:20190901213932p:plain

待ち受け3を作って、待ち受けループを1→2→3とぐるぐる回るようにします。

初期化するステートはすでに作ってあるので、そこに飛ばすだけで初期化ボタンは完成です。

 

完成後はこんな感じです。

youtu.be

 

さすがに待ち受けが3ステートをグルグル回していると

レバーおしてからスイッチが下がるまでの反応がまちまちになりますね・・・。

まあでもレバーは離して配置すると思うと許容範囲でしょうか。

 

スイッチで開閉を制御するver

youtu.be

 

タイマーで勝手に閉まるドアではなく、

条件が整っていれば開くスイッチを手動で制御するほうが

人によっては実用的かもしれません。

こちらもソースをあげておきます。

f:id:ms2messer:20190901221715j:plain

 

家具を駆使してレバーやポータルを隠す手法は

私はあまり詳しくないので紹介できませんが

迷路作る人とかが工夫を凝らして色々やられているので、

参考にしてみるといいかもしれません。

 

エレベーターの作り方。

友人宅にエレベータを設置したらよさそうだな~と思い

早速自分で作ってみました。

 

 

 

不要なブロックをはぎ取ったらこんな感じです

(下のほうがごちゃごちゃしててすみません)

f:id:ms2messer:20190830130925j:plain

 

ソースコードはこんな感じです。

f:id:ms2messer:20190830130956j:plain

 

3ステートに収まる量なので、丸パクリでもサクっとかけるはず!

 

以下、解説です。

f:id:ms2messer:20190830131800j:plain

f:id:ms2messer:20190830131809j:plain

f:id:ms2messer:20190830131818j:plain

 

時間稼ぎのところは、何も考えずにそのまま書いてくださいw

簡単に仕上がったと思いますので、どなたでもパクって導入してみてくださいね!

 

 

10進数のカウンター

2bit(2進数)のカウンターは便利なのですが

結局いま数字いくつなん?にすぐ答えるために

10進数のカウンターを作りました。

youtu.be

 

 

今回はこのカウンターを解説します。

・・・が、その前に宣伝。

これを活用して、ゲームをなんと2つも製作しました!!

そしてそのお披露目の舞台は・・・こちら!

題してギルサガ祭

f:id:ms2messer:20190808212514j:plain

 ↑自キャラがめっちゃでかでか載ってる!

ギルド以外の人もウェルカムらしいので、ぜひとも遊びに来てくださいね~!

 (そしてこれにPCを占有されていて、しばらくエディター実験ができませんw)

 

 

さて、解説に戻ります。

このカウンター、最初はすごい単純なコードで

---------------

IF 1つ目=OFF

  1つ目=ON

IF 2つ目=OFF

 2つめ=ON

IF 2つ目= ON

goto 次のステート

-------------

IF 3つ目=OFF

  3つ目=ON

IF 4つ目=OFF

 4つめ=ON

IF 4つ目= ON

goto 次のステート

-----------

 

てな感じに、1ステートで2カウント分ずつ1から9までIF文で繋げて、

10に行ったら1の位のレバーを初期化する

としました

動きとしては

1ON

1→2ON

1→2→3ON

1→2→3→4ON

という感じ。

 

すごく単純なんですが、これは問題があって

IF判定を重ねまくることになるので

1、2、3、4はまだしも、

5以降のスイッチの反応がむちゃくちゃ遅くなってしまいました。

これではカウントしているとは言えなくて没にしました。

 

で、試行錯誤してできたコードがこちら。

f:id:ms2messer:20190808202524j:plain

全景

どういうことかというと、1,2,3までカウントしたら

間に別の待ち受け処理を挟み込み、

次は直接4から判定していくように変更しました。

ようは判定のショートカットです

こうすることで

1ON

1→2ON

1→2→3ON

4ON

4→5ON

4→5→6ON

となり、スイッチのカウントアップが高速化しました。

 

ソースはこんな感じです。

f:id:ms2messer:20190808204216j:plain

「カウント待ち」ステートで123、もしくは456に直接飛ばすように設定

6のカウント後は「カウント待ち2」のステートに移動

「カウント待ち2」では789もしくは10以上に飛ぶようにしています。

 

また、カウント待ちステートでは鉱石おじさんの動きを監視しています。

隅っこにおいた鉱石おじさんをONにするとカウントアップが始まり、

OFFにするとカウントが止まります。

カウント待ち、カウント待ち2それぞれに

鉱石おじさんのONOFF判定を入れているので

いつでもカウントを止めることができます。

 

f:id:ms2messer:20190808204225j:plain

f:id:ms2messer:20190808204237j:plain

10の位をカウントアップするときも、

10,20,30なのか40,50,60なのかの判定を行うステートと

on condition等の隙間を使って1の位の初期化をしています。

 

 

カウントを終わらせたいときは全スイッチをOFFにする初期化が必要です。

今回は、初期化処理までもを1PCに詰め込むのがめんどくさくて

別のホームネットワークパソコンに初期化を作りました。

f:id:ms2messer:20190808204319j:plain

 

今は最大69カウントまでできますが、これを39カウントまで減らして1ステート空けるか、もしくはソースが汚くてもいいなら詰め込めばなんとか1PCに入るかもしれません。