燻丸のメモ帳

インディーゲームのMODとか

<Aseprite> Enter the gungeonスキンMOD支援ファイル

いろいろ書いてたら長くなってしまったので、ファイルの使い方から見たい方はbatファイルの使い方にお進みください。

注意 未クリアの方は多少のネタバレとなりますのでご注意下さい

はじめに

 生存報告並びに、Enter the kiritanの進捗報告。そしてMOD制作をする上でAsepriteの出力を自動化するbatファイルを作ったので配布&使い方の説明をします。

本ファイルはAsepriteを用いてのMOD製作を助けます。

Enter the kiritanの今後の予定

パンチアウトの制作
・CCMODへの対応

 以上二つの更新をガンジョンきりたんMODの最終アップデートとさせていただきます。今後海外のMOD制作にさらに動きがあれば更新するかもしれませんが、Enter the gungeonは最終アップデートを迎えだいぶ熱も収まってきました。公式で今後新しいモーションが追加されることはないとおもわれるので、本当にきりたんMODの最終アップデートになると思います。

 パンチアウトは前々回の大型アップデートAG&Dの際に追加された3.5チェンバーのボス戦のスキンを東北きりたんに差し替えるものとなります。多少のネタバレとなりますのでご注意下さい↓


 進捗は90%まで仕上がってきました。
f:id:Ibushi_maru:20190920051849g:plain:w300



 Custom Character Mod、通称”CCMOD”はガンジョン内のスキンを上書きするのではなく、別のキャラクターとしてガンジョンロビー内で表示させるMODです。日本では琴葉MODと京町セイカMODを作ってくださったkioさんが率先的に導入してくださってます。だいぶ前に公開されたMODですが、パンチアウトを完成させてから公開したかったため、長くなってしまいました。パンチアウトともに、導入記事と一緒に公開したいと思います。

スキン制作支援ファイルの概要

 今回の記事を書いた本題となるAseprite を用いたスキンMOD制作支援ファイルの紹介です。パンチアウトのモーションを作る際に、面倒な手順を踏まなければいけなかったため、その手間を減らすために作ったファイルです。

 ガンジョンのMOD製作をする際、モーションをAsepriteと呼ばれるドットエディタに読み込ませて製作しております。モーションを読み込ませる際、数字の連番で読み込んで一つのアニメーションとする事ができます。その際、キャンバスのサイズが全フレームで共通となってしまいます。そのままレイヤー増やしてスキンを差し替えることで単一の絵ではなく“動き”を意識してスキン差し替えることができます。

 しかし、pngで保存する際にキャンバスのサイズが元のスキンデータと異なってしまうため、ガンジョンに実装した際に拡大・圧縮して正しく表示されなくなります。

 これを防ぐためには、元のデータと同じキャンバスサイズにするために、1枚毎に書き換えるもしくは、アニメーションで書き換えた後に一枚毎に調整をしてく必要があります。
 書き換え、実装確認までのフローが余りにもめんどくさいのでコマンドラインでフレーム分割・トリム・レイヤー除去・png出力をしてくれるbatファイル製作しました。

batファイルの使い方
rem hogeの部分に好きな保存ファイル名を入力
set file=hoge

set /p frame="最大フレームを入力 フレーム数="

mkdir %file%
setlocal enabledelayedexpansion
set /a num=%frame%-1

for %%1 in (%*) do (
for /L %%i in (0,1,!num!) do (
set /a a=%%i+1
Aseprite -b "%%~f1" --frame-range %%i,%%i --save-as "%file%\%%~n1_00!a!.ase"
)
)

cd %file%

for %%2 in (*.ase) do (
Aseprite -b --trim  "%%~f2" --save-as "%%~nx2"
)


for %%3 in (*.ase) do (
Aseprite -b  --ignore-layer "Layer" "%%~f3" --save-as "%%~n3.png"
)

今回紹介するのは上記のbatファイルとなります。こちらのテキストをbatファイルにコピーするか、下記のリンクからダウンロードしてください。
drive.google.com



まず初めに、Aseprite.exeのPATHを通す必要があります。
デフォルトのAsepiteは、steamからダウンロードした場合であれば”C:\Program Files (x86)\Steam\steamapps\common\Aseprite”となります
それをPC内の環境変数PATHに加えてください。


f:id:Ibushi_maru:20190921033355p:plain
1.Windowsの設定で「環境変数の編集」と検索。



f:id:Ibushi_maru:20190921033534p:plain
2.PATHと書かれた部分をダブルクリック



f:id:Ibushi_maru:20190921033632p:plain
3.列に”C:\Program Files (x86)\Steam\steamapps\common\Aseprite”とフルパスを入力してください。バスが異なる場合は、Aseprite.exeが格納されているフォルダの名前を指定してあげてください。exeそのものを指定するとうまくいかない可能性あります。

一連の項目が一切何をやっているかわからない方は、お手数ですがBatファイルのAsepriteと記述された部分を”C:\Program Files (x86)\Steam\steamapps\common\Aseprite\Aseprite.exe”に書き換えてください
PATHを手順通りに記述したけどうまくbatで出力できなかったよって人は一度PCを再起動をして試してください。それでも無理だったらbatをフルパスに書き換えるか、私にご連絡ください。

書き換える場合はこんな感じを3行に適応してください。

”C:\Program Files (x86)\Steam\steamapps\common\Aseprite\Aseprite.exe” -b "%%~f1" --frame-range %%i,%%i --save-as "%file%\%%~n1_00!a!.ase"


次にAsepriteでデータを作る際に少し手を加える必要があります。


f:id:Ibushi_maru:20190921023336p:plain:w300

1.ガンジョンの元データをAsepriteに連番で読み込んだ際、名前を"Layer"のままにして保存してください。最終的な出力結果においてLayerを省く処理をしています。透過を処理を行う必要はありません




f:id:Ibushi_maru:20190921023804p:plain:w300

2.保存するファイル名の_00*を削除し、拡張子.aseで保存してください。





最後にbatを用いた出力です。


f:id:Ibushi_maru:20190921024035p:plain:w300

f:id:Ibushi_maru:20190921024134p:plain

3.G_master.batに拡張子.aseのファイルをドラッグ&ドロップ(複数毎をまとめてドロップしたらバグります)したのち、最大フレームをコマンドプロントに数字で記述してください。同じフォルダ内に作られたhogeフォルダにフレーム分割したファイルとpngが出力されます。


使い方はこんな感じ。最終的に保存されたpngファイルと元データのキャンバスサイズが同じであれば出力はうまくいっています。もし違う場合は元データをはみ出して書き換え後のレイヤーを保存しているので修正が必要となります。


今後パンチアウトの書き換えを行いたい場合や、初期4キャラ以外を書き換えたい場合にぜひお使いください。
自分の作業を効率化するために書いたbatなので、ほかの人が使いやすいかはわかりませんが、圧倒的に作業量が減るのでぜひ試してみてください。





batファイルの技術解説

こっからは備忘録的なお話になりますのですっ飛ばしてください。

www.aseprite.org
参考にしたのはAseprite Command Line Interface。これを駆使すればかなりいろんなことが可能です。もし今後ゲーム制作とかするんだったらAsepriteでデータ作ってJSONに出力してそのままアセットに組み込めたりするのかな。

Windowsバッチまとめ - Qiita
それとbatの参考として様々なQiitaの記事にお世話になりました。一番お世話になったのはこの記事。だいたいここ見れば必要な事書いてあるってくらいbatファイル作るのはお世話になってます。

技術解説としては、batの部分は雰囲気で売っているので割愛。今回のbatで使用したAseprite Command Line(以下ACに略する)のいくつかを紹介します。
空白入れずに10行目の箇所

Aseprite -b "%%~f1" --frame-range %%i,%%i --save-as "%file%\%%~n1_00!a!.ase"

asepriteは環境変数にexeを指定してPATHを通してあります。あっ。他の人PATH通してないから直接指定してあげなきゃじゃん!!!!!!!え~と、ちょっと記事修正します
aseprite -bはAsepriteを起動せずに出力を自動でやってくれる便利なコマンドです。
"%%~f1"はbatのフルパス指定ですね。
フレーム処理 --frame-rangeはAC。%%1,%%1は数値を入力しています。この場合だと%%1から%%1(for文で0からインクリメンタルしてる)までを結果として出力、つまり単一フレームだけを抜き出すコマンドがここになります。
ファイル保存 --save-asはACでそのまま意味。出力形式を決定します。フレームが配列のごとく0が1番目の出力になるため、forの%%1を読み込ませると名前_00*との差が生じてしまいます。そのためsetlocalのおまじないをかけて数値足した値を!a!でフレームの名前を作っています。

Aseprite -b --trim  "%%~f2" --save-as "%%~nx2"

15行目では--trimでトリムの処理を行っています。これは一番大きいレイヤーのサイズにキャンバスを小さくトリムすることが可能です。この自動化プログラムを用いなくてもかなり有用な機能なので知っておいて欲しいです。
f:id:Ibushi_maru:20190921031406p:plain:w300
Aseprite上では、スプライト、トリムから実行することができます。

Aseprite -b  --ignore-layer "Layer" "%%~f3" --save-as "%%~n3.png"

18行目では--ignore-layer "Layer"で残っているガンジョンの元データを省いてpngに出力します。最後に省いて出力した理由としては、元データを残していないとトリムをした際に元データよりも小さいキャンバスで出力されることを防ぐためです。

備忘録的技術解説はこんな感じ。

あとがき

Exit the gungeonが楽しい。眠い。