※ これはバージョン 1.00.00 の記事
「 RPG Maker Unite(※) を 2023年5月8日に 1万3000円ほどで買った」
※ 略してRMU
「 作ってないわよ。こんなソフト 論外 よ。
早々に RMUの開発を打切り、 開発実績のあるプログラマーのチームを編成し
アーキテクチャーから見直さなければ 希望は無いと言えるでしょう」
「 👆 PC版の RMUの推奨スペックは どこに書いてあるのか見つからず ユーザーの気持ちとしては 論外 なんだが
代わりに まだ発売されていない Steam版の記述を参考にすると、主記憶装置は 4 GB が利用可能であることが推奨と書いてあるぜ」
「 次に Unity Asset Store を見てみよう」
「 👆 プロダクト名に 長い注釈入れるの ユニティ・アセットの界隈じゃ 習慣的にあるの?
(Please Read the Description about Early-Bird Bonus!)
って プロダクト名に書くことじゃないわよねえ」
「 その長い文言、何だろうと思っていたが、プロダクト名だったのか……」
👆 Unity Asset Store > RPG Maker Unite (Please Read the Description about Early-Bird Bonus!)
「 👆 Unity アセット・ストアによると PC版のファイルは 2.3 GB で、これは事実だぜ」
👆 C:\Users\むずでょ\AppData\Roaming\Unity\Asset Store-5.x\Gotcha Gotcha Games\Textures MaterialsGUI Skins\RPG Maker Unite Please Read the Description about Early-Bird Bonus.unitypackage
「 👆 RPG Maker Unite を アセット・ストアから ダウンロード すると、
どこに何をダウンロードしているかというと、
Windows でお馴染みの 📂 C:\Users\{ユーザー名}\Downloads
フォルダー ではなく、
📂 C:\Users\むずでょ\AppData\Roaming\Unity\Asset Store-5.x\
フォルダーの下に 📂 Gotcha Gotcha Games\Textures MaterialsGUI Skins
フォルダーが作られて、
その中に 📄 RPG Maker Unite Please Read the Description about Early-Bird Bonus.unitypackage
ファイルが作られる。これ 2.25 GB」
「 👆 つまり、これが、お金と引き換えに 受け取った物かだぜ」
「 .unitypackage
というのは、カスタム・パッケージというもので、
Unity の開発者なら誰でも作れるだろう、アセットの保存形式だぜ」
「 RMUが アプリケーションではなく アセットで提供されるっていうのは、こういうことよね」
「 これが ダウンロード な。 ここまでで 2.25 GB。 では次へ」
「 👆 RMUは Unityの上で動くから、
Unityプロジェクトを 2D テンプレートを選んで作成しておこうぜ。
上図左下を見ての通り、けっこう色々 最初から載っているぜ」
「 👆 このUnityプロジェクトだけで 1.22 GB ほどあるぜ」
「 既に .unitypackage
が 2.25 GB を占有してるから、
それに加えて 1.22 GB 増えるということよね」
「 👆 次に、RMUのカスタム・パッケージを インポート するというのは、
Unity プロジェクトの中へ .unitypackage
ファイルを 解凍するという感じだぜ」
「 📂 Assets
フォルダーの中に 📂 RPGMaker
フォルダーが作られる」
「 既にトータル 3.47 GB ほどを占有しているところへ、
解凍されたファイルが加わるということよね」
👆 調査用のプログラム込み
「 👆 わたしは 調査用に いじったので ファイル数や 容量などなどが 元より増減してしまったが、
サンプル・ゲーム、言語対応 込みで、
まあ だいたい、普段使いの RMU の Unity プロジェクトは 10 GB(※) ある。
とにかく 重すぎる」
※ 10 GB のうち、 1.22 GB は 2D テンプレートを選んだ Unity プロジェクトによるもの
「 解凍されたファイルは 約 8.78 GB か。何でこんなに大きいんだぜ?」
「 インポートが終わったら、もう
📄 RPG Maker Unite Please Read the Description about Early-Bird Bonus.unitypackage
ファイルは消していいの?」
「 👇 アセット・ストアから 再びダウンロードできるとの 報告があるぜ」
「 クラウド上のものが 扱い止めました、とかなったら 資産の紛失だぜ」
「 じゃあ 実質、主記憶装置には 12.25 GB の空きスペースが必要なのね」
「 ここまでの合計は 12.25 GB だな。まだ続きがある」
「 👆 サンプル・ゲームは どこに入っているかというと……」
「 👆 📂 Assets/RPGMaker/Storage/System/Archive
フォルダーに
4月27日に作られた デフォルト・ゲーム を .zip 圧縮した 1GB の アーカイブ・ファイルなど 合計2.28GB分が 入ってるぜ」
「 重たいわねえ。
常識的に考えて .zip ファイルは 📂 Assets
フォルダーではなく、
Windows の 📂 Download
フォルダーにでもダウンロードされるべきで、
デフォルト・ゲームの解凍が終わったのなら .zip ファイル は 削除してよくない?」
「 じゃあ 2.25GB + 10 GB + 2.28GB で、合計 14.53 GB だ」
「 こんな書庫ファイル いつまでも 📂 Assets
フォルダーの下に 要るのかだぜ?」
「 👆 2.28 Giga Byte の書庫ファイルは、 Unity Editor の初回起動時に点検され、
📂 C:\Users\{ユーザー名}\AppData\LocalLow\.RPGMaker
フォルダーに
同じ名前のアーカイブ・ファイルが無いことが検知されると、そこへ複製される。
ローカルPCにはさらに 2.28 GB の書庫ファイルが置かれるわけだぜ」
👆 📖 公式 > FAQ
「 公式のFAQの 分けわからん説明は、そもそも RMUが 分けわからん仕様であることに 起因するのねえ」
「 ユーザー・データ のための 📂 AppData
フォルダーに、プログラムを圧縮して置いておく ゲーム・メーカー、および ゲーム・サークルは
今までに存在したのだろうか?
じわる」
「 👇 📂 AppData
フォルダーの説明は、以下の記事で十分だろう」
📖 What Is the AppData Folder in Windows?
「 👆 上の DiskInfo のレポートを見れば、 RPGMaker
の ディスクの使い方が
ぶっちぎっているのが 一目瞭然だろう」
「 お父んの PC の中では、 Docker で 14 GB 使ってる例もあるから、決して 2 GB は 特筆するほどの大きさではないが」
「 2DのRPGのサンプル・ゲーム の ユーザー・データ で 2GBは 何に使ってんだって感じ。
サンプルじゃないRPG作ったら どんなけ でかくなんの?」
「 👆 cn
、 en
、 jp
と、言語別の書庫があることに 賢明な読者の皆さんなら お気づきだろう」
「 わたしは日本人だが、
このRMUのローカライズ・システムでは 所定の書庫ファイルが欠けていると複製されるので 中国語も必ず置いておくことになる」
「 ここに フランス、ドイツ、イタリアと増えていけば さらに重くなりそうねえ。
200か国ぐらいなら 定数倍で済むので 今どきのハードディスクなら スケールはするんだろうけど、
それでも ツクールで作ったサンプル・ゲーム1作分で 2.28 GB でしょ?」
「 富豪的プログラミングをしてしまう Gotcha Gotcha Games のデザイナーの思惑なんか蹴飛ばしてでも
ハードディスクに 要らないものは入れたくないわねえ」
👆 C:\Users\むずでょ\Documents\Unity Projects\RMU-1-00-00-Research\Assets\RPGMaker\Codebase\Editor\Common\Helpers\TemplateInstallHelper.cs
「 👆 わたしは 購入したRMUからインポートできる 587個の C#スクリプト・ファイルに コメントを付けて回っているが……」
「 上のソースコードを見て分かるように Unity Editor の使用言語 に従って 日本語か、中国語か、英語かが 選ばれるぜ」
「 あれっ? おかしいぜ。
サンプル・ゲームの使用言語は コンボ・ボックスの 日本語、中国語、英語から 選んだはずでは?
Unity Editor の使用言語は関係無いだろ?」
「 👆 言語別の書庫ファイルには、 📂 Assets/RPGMaker
フォルダーの直下に置くための 📂 Storage
が入っていて、
さらにこの中の 📂 Initializations
フォルダーには各種 JSON形式ファイルが入っている」
「 この 📂 Initializations
フォルダーの存在の無いことが、
📂 C:\Users\{ユーザー名}\AppData\LocalLow\.RPGMaker
フォルダーから
📂 Assets/RPGMaker/Storage/
フォルダーへの上書き複製を行うトリガーになっているから、
Unity Editor の2回目以降の起動時には この複製はスキップされるぜ」
「 じゃあ その1回目の時点で デフォルト・ゲームが 何言語かは 固定されるわけだ」
「 📂 Initializations
フォルダーを消したら どうなんの?」
この 📂 `Initializations` フォルダーの存在の無いことが、
📂 `C:\Users\{ユーザー名}\AppData\LocalLow\.RPGMaker` フォルダーから
📂 `Assets/RPGMaker/Storage/` フォルダーへの上書き複製を行うトリガーになっているから、
👆 📖 公式 > FAQ
「 👆 ゲーム・データが消えるということは 公式も認知してるぜ」
「 破壊的な操作は、する前に ユーザーの確認を取るもんじゃないの?」
Assets/RPGMaker/Storage/System/Archive
フォルダー内の 2.28 Giga Byte のファイルは消すことができる
「 👇 Assets/RPGMaker/Storage/System/Archive
の方の 2.28 ギガバイトの書庫は消してもいいそうだぜ」
📄 I need a 2.28 GIGABYTE .zip archive folder removed from the Assets/RPGMaker/Storage/System. #26
「 新規プロジェクトを作成した場合は、こんなでかいフォルダー 入ってないらしいけど」
「 Gotcha Gotcha Games は、ローカライズのプログラミング 覚え直してきた方がいいと思うけどな」
「 こんな リソースのエコに無頓着なインフラ、
たとえ Unity を使っていて マルチプラットフォームに移植できます、と言っても
容量がボトルネックになるだろうから ややもすると 携帯ゲーム機に入らないかもしれない、
展開できないかもしれないだろ?」
「 公式が ソース読め、と言い逃れしたときの対策として、 587個の C# ファイルを読んだので
👇 目録を グーグル・ドライブに まとめておいたぜ」
📖 RMU 1.00.00 Research Project
「 ただ、ソースを読んでも 資料がなければ 分からない。 そこで……」
「 公式のドキュメント(※)も論外なので 資料を作るところから始めることにする」
※ 仕様書ではなくて、ガイド
「 👆 RMUは、アプリケーション・ソフトウェアではなく、Unityの アセット だぜ。
見たところ その説明通りで 特別なところは何も見当たらない」
「 その アセット だということが 致命傷の遠因となって RMU は ストアで評価2以下になったんだと思うが、
Gotcha Gotcha Games の開発者は恐らく アセットなのが良いんです~ と主張するだろうから
永遠に理解し合うことはないだろう」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
├── 📂 Addon
├── 📂 Data
├── 📂 Images
├── 📂 Materials
├── 📂 Movies
├── 📂 Prefabs
├── 📂 Scenes
├── 📂 Scripts
├── 📂 Sounds
└── 📂 Text
「 👆 例えば、こういう風に分かれていれば、すぐに作業しよかな、とも思えるだろ」
👆 📂 C:\Users\むずでょ\Documents\Unity Projects\RMU-1-00-00-Research\Assets\RPGMaker
[現実]
📂 Assets
└── 📂 RPGMaker
├── 📂 3rdParty
├── 📂 Codebase
├── 📂 DLC
├── 📂 InputSystem
└── 📂 Storage
「 👆 Assets
ディレクトリーの下に RPGMaker
というディレクトリーがあり、
基本的に その中に 探したいものが入っている」
「 Unity でこれから さあ、ゲームを作りましょう! と思ってる人たちが最初に
今日は InputSystem
から いじりましょう~」
「 って思うことは 金輪際無いか、
1回あるか無いかぐらいよね」
「 3rdParty
の中を いじることは一生無い。この中は サード・パーティーがいじる」
「 じゃあ InputSystem
や 3rdParty
は どこにあるんだったら 良かったんだぜ?」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
├── 📂 Addon
├── 📂 Data
├── 📂 Images
├── 📂 Materials
├── 📂 Movies
├── 📂 Prefabs
├── 📂 Scenes
├── 📂 Scripts
├── 📂 Sounds
👉 ├── 📂 System
│ ├── 📂 3rd Party
│ └── 📂 Input
└── 📂 Text
「 👆 System
という名前のディレクトリーでも切って、その中で息してればいいんじゃないか?」
「 System
という名前にでもしておけば、ユーザーは、自分には関係ないと思うでしょうから
よっぽどのことがないと 触らないし、
その中がどうなっててもいいのよ。 これが名前付けの センス というものよ」
「 では もう1回 RMU のディレクトリー構成を見てみましょう」
[現実]
📂 Assets
└── 📂 RPGMaker
├── 📂 3rdParty
├── 📂 Codebase
├── 📂 DLC
├── 📂 InputSystem
└── 📂 Storage
「 Gotcha Gotcha Games は なんでこんな フォルダー階層にしてしまったんだぜ?」
「 センス が無いのだから どういうフォルダー構成でも してくるわよ」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
├── 📂 Addon
├── 📂 Animation
├── 📂 AssetManage
├── 📂 Character
├── 📂 Encounter
├── 📂 Event
├── 📂 Flags
├── 📂 Images
├── 📂 Initializations
├── 📂 Item
├── 📂 Map
├── 📂 Migration
├── 📂 Movies
├── 📂 Outline
├── 📂 SaveData
├── 📂 Sounds
├── 📂 System
├── 📂 Ui
└── 📂 Word
「 👆 ほう。ここに お父んが思ったような 並びがあったんじゃないか?
System
フォルダーもあるぜ」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
├── 📂 Addon
├── 📂 Data
👉 │ └── 📂 AssetManage
├── 📂 Images
👉 │ ├── 📂 Animation
👉 │ └── 📂 Map
├── 📂 JSON
👉 │ ├── 📂 Character
👉 │ ├── 📂 Encounter
👉 │ ├── 📂 Event
👉 │ ├── 📂 Flags
👉 │ ├── 📂 Initializations
👉 │ ├── 📂 Item
👉 │ ├── 📂 Map
👉 │ ├── 📂 Migration
👉 │ ├── 📂 Outline
👉 │ ├── 📂 SaveData
👉 │ └── 📂 UI
├── 📂 Materials
├── 📂 Movies
├── 📂 Prefabs
👉 │ └── 📂 Map
├── 📂 Scenes
├── 📂 Scripts
├── 📂 SO
👉 │ └── 📂 Initializations
├── 📂 Sounds
├── 📂 System
│ ├── 📂 3rd Party
│ └── 📂 Input
└── 📂 Text
└── 📂 Localizations
👉 └── 📂 JSON (📂 Word)
「 👆 プロダクト・ディレクトリー(📂 RPG Maker Unite)直下を ファイル・タイプ別に分ける、という 意志 を通した方がマシよ」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
├── 📂 Addon ■中ぐらい
├── 📂 Data ■中ぐらい
├── 📂 Images ■重い
├── 📂 JSON ■軽い
├── 📂 Materials ■中ぐらい
├── 📂 Movies ■重い
├── 📂 Prefabs ■中ぐらい
├── 📂 Scenes ■軽い
├── 📂 Scripts ■軽い
├── 📂 SO ■軽い
├── 📂 Sounds ■重い
├── 📂 System ■中ぐらい
└── 📂 Text ■軽い
「 毎週とか、毎月とか、ゲームを丸ごと圧縮して バックアップ残したいときに、
音楽フォルダーの中身とか そう変わるものでもないし 取り除いて保存するとか マウス操作だけで できる」
「 パソコンって 音も立てずに 『あっ、電源が付かない!』 みたいな臨終の仕方をするのよ。
絵描きは 今まで描いたすべての絵が パソコンと共に消えるまで バックアップを取らないのよ」
「 じゃあ、 📂 lightweight
、 📂 middle
、 📂 heaviy
で分けたらどうだぜ?」
「 大作なら そうしたいけど、 そんな大作にもならんだろ。 やりすぎ。
そのさじ加減は 難しいところだぜ」
「 では もう1回 RMU のディレクトリー構成を見てみましょう」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
├── 📂 Addon
├── 📂 Animation
├── 📂 AssetManage
├── 📂 Character
├── 📂 Encounter
├── 📂 Event
├── 📂 Flags
├── 📂 Images
├── 📂 Initializations
├── 📂 Item
├── 📂 Map
├── 📂 Migration
├── 📂 Movies
├── 📂 Outline
├── 📂 SaveData
├── 📂 Sounds
├── 📂 System
├── 📂 Ui
└── 📂 Word
「 📂 Animation
と、 📂 Sounds
と、 📂 Movies
だけ 選択から外せばいいんじゃないか?」
「 📂 Map
の中に マップのでかいプレビュー画像や、
👇 マップのタイル・セットの中のタイルを 1枚1枚分解した画像が入っていたりして いらいら するぜ」
参考動画:📺 偶然重い原因が分かって悶絶するひろはす【RPG MAKER UNITE】
👆 📂 C:\Users\むずでょ\Documents\Unity Projects\RMU-1-00-00-Research\Assets\RPGMaker\Storage\Images
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Images
├── 📂 Animation
├── 📂 Background
├── 📂 Characters
├── 📂 Enemy
├── 📂 Faces
├── 📂 Objects
├── 📂 Parallaxes
├── 📂 Pictures
├── 📂 SV_Actors
├── 📂 System
├── 📂 Titles1
├── 📂 Titles2
└── 📂 Ui
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
└── 📂 Images
├── 📂 Battle Background
├── 📂 Battle Characters
├── 📂 Battle Effect
├── 📂 Battle Monsters
├── 📂 Battle Weapons
├── 📂 Cut in
├── 📂 Character Faces
├── 📂 Character Standing
├── 📂 Eye Catch
├── 📂 HUD
├── 📂 HUD Battle
├── 📂 HUD Camp Menu
├── 📂 HUD Map
├── 📂 HUD System Menu
├── 📂 Illust
├── 📂 Map Characters
├── 📂 Map Tiles
└── 📂 Map Objects
「 バックアップは 1つ上のフォルダー階層での仕分けで十分。 それが戦略というものだぜ」
「 進捗 を知りたいのよ。
📂 Map Tiles
フォルダーを開けたら マップ・タイル できてきてる、みたいな」
「 では もう1回 RMU の 📂 images
ディレクトリー構成を見てみましょう」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Images
├── 📂 Animation
├── 📂 Background
├── 📂 Characters
├── 📂 Enemy
├── 📂 Faces
├── 📂 Objects
├── 📂 Parallaxes
├── 📂 Pictures
├── 📂 SV_Actors
├── 📂 System
├── 📂 Titles1
├── 📂 Titles2
└── 📂 Ui
「 📂 Titles1
と 📂 Titles2
とか 分かんないと思いますけどね」
「 勝手 に入れておいてくれないフォルダーなんか デザインの敗北だぜ」
[回想]
└── 📂 Images
├── 📂 Battle Background
├── 📂 Battle Characters
├── 📂 Battle Effect
├── 📂 Battle Monsters
├── 📂 Battle Weapons
[回想]
└── 📂 Images
└── 📂 Battle
├── 📂 Background
├── 📂 Characters
├── 📂 Effect
├── 📂 Monsters
└── 📂 Weapons
「 フォルダー 開けたり 閉じたりするの めんどくさいだろ」
「 4Kディスプレイ買って ウィンドウを広げて 大きな画面で一覧できるのよ。
小さなフォルダーアイコンなんか クリックしてられなくない?」
「 フォルダーに入れるということは、視界から隠れるということだぜ。
探し物をしたいときの 敵だぜ。
フォルダーを深く掘るやつは 今日から あだ名は テレスドンな」
「 👆 📂 Animation
フォルダーの中身は プレファブだぜ」
「 画像リソースが見たくて 📂 Images
フォルダー開けたのに なんで プレファブが入ってるんだぜ?」
「 👆 📂 Background
フォルダーの中身は 📂 Battle
フォルダーだぜ」
「 👆 📂 Background/Battle
フォルダーの中身は 📂 01
フォルダーと、📂 02
フォルダーだぜ」
📖 公式 > RPG Maker Unite 初心者講座 > データベースの基礎・後編 > 敵キャラと敵グループの設定
「 👆 直接の説明は無いが、 戦闘テストの個別指定の下が 01、上が 02 だな」
「 👆 📂 01
フォルダーには、フロント・ビュー戦闘、サイド・ビュー戦闘の区別なく
戦闘背景画像が入っているようだな」
「 いやあ、どれも 地面の画像よ これは サイドビュー戦闘用ねえ」
「 👆 📂 02
フォルダーには、背景画像が入っているから、
これを上に重ねて使うわけだな」
「 📂 Characters
フォルダーには、乗り物、人々、アクター といった規格の異なるものが入っている」
「 上向き、右向き、左向き、下向き の4つがあって、それぞれ 3コマのアニメーションみたいだな」
「 上向き、右向き、左向き、下向き、倒れ込む 5つがあって、それぞれ 6コマのアニメーションみたいだな」
「 👆 これは デミ・ヒューマン(Demi Human;亜人)だな」
「 あれっ、アニメーションのコマ数が 6 だったり 8 だったりするぜ」
「 📂 Enemy
フォルダーには、雑魚とボスの画像が入っている」
「 👇 ユニティーなんだから ピクセル・アートの色替えぐらい
画面で確認しながら ダイアグラムをマウス操作でいじって
ピクセル・シェーダーを組み立てれば 色 変わるだろ」
📺 https://www.youtube.com/watch?v=9--Q6I57w_4
「 👇 RPGツクールの前作の MZ でも、カラーパレットの 色替えできたそうなのよね」
📺 How to Add Custom Colours to the Character Generator // RPG Maker MZ In 100 Seconds
「 では もう1回 RMU の 📂 Enemy
ディレクトリー構成を見てみましょう」
「 👆 ファイル名の末尾の 01、 02、 03 が カラー・バリエーションを表していそうね」
「 有って欲しくない テクニック だった~ これを バッドノウハウ と言う~」
「 そのような テクニックが存在するということは
因果関係をさかのぼって類推すると、
RMUには 色調を変更するスライダーのようなものが 無いのかだぜ?」
「 それが 有るのか 無いのか 資料が存在しないから
資料集を作ろう、というのが 本記事の趣旨だろ」
「 👆 色変えのない単品物のモンスターもいれば、 _boss
というサフィックス(Suffix;接尾辞)が付いている画像もあるぜ」
「 _boss
と付いている画像には 何か 特別な機能が働くのかだぜ?」
「 👆 📂 Faces
フォルダーの中には顔画像が入ってるぜ」
「 表情差分が入ってない、と言っている人もいるが、トピックは それぐらいだぜ」
「 ファイル名の末尾に _Actor
、 _Demihuman
、 _Evil
、 _People
という
4つのサフィックスが付いているけど、なんでその違いを推すの?」
「 自作の顔素材を新たに追加しようという人は、
charaface_071_Demihuman.png
みたいな命名規則を踏襲する必要はあるの?」
「 普通に考えると 無いと思うが、
👇 公式の資料では 触れられていない……。
それも資料作りの調査対象か……」
📖 公式 > RPG Maker Unite 初心者講座 > 主人公アクターの設定 > アクターを作ろう > 顔アイコンの設定
「 👆 📂 Objects
フォルダーの中には 多様な規格が入っている。
総じて マップ上に置くものなのだと思う」
「 👆 Add_
というプレフィックス(Prefix;接頭辞)が付いている画像がある。
何なんだろうか?」
「 読んだ、というレベルでは 見かけないわねぇ。
熟読、精読したら あるのかも知れないけど」
「 それを調べるのが お父んなのに……
調査し終わってから この記事を書けばいいのに」
「 👆 BigMonster_
というプレフィックス(Prefix;接頭辞)が付いている画像がある。
マップ上で 1つのタイルに収まらない敵シンボルといった感じだぜ」
「 下向きで アニメーションは3コマかだぜ? これは固定なのかだぜ?」
「 👆 Chest_
というプレフィックス(Prefix;接頭辞)が付いている画像がある。
箱だな」
「 4枚1組で、箱が少しずつ開いていくアニメーションになってると思うが、
なぜ1枚の画像に まとまってないんだぜ?」
「 知らないわよ。
Gotcha Gotcha Games は 2Dゲームのスプライト描画は どうやって行ってるか知らないんじゃないの?」
「 ディスプレイに表示されている画像は グラフィック・カードが伝送してるんだけど、
グラフィック・カードの中に入ってる ブイ・ラム(VRAM;Video Random Access Memory)という
記憶領域に置いてある、アニメーションのコマをまとめた画像から 矩形領域をコピーするように伝送してるのよ。
そこは ファイル名ではなくて座標の世界なのよ」
「 Gotcha Gotcha Gams が せっせと画像を1コマずつ分解しても、
コンピューターの内部では 結局、1枚の画像に アニメーションのコマを レイアウトし直している」
「 その VRAM に画像を送るには、
👇 バス(Bus)という電気回線の上を データが伝送していくんだけど、
ここが遅いのよ」
「 このバスの太さを バス幅 と呼んで、 192 bit だったり、 256 bit だったりするのは、
1ピクセルが 赤のR、緑のG、青のB の、
それぞれ 8bit の3つのチャンネル 24 bit で表されているからで、
だから 24 bit の倍数なのが 自然なのよ」
「 ディスプレイの解像度が 例えば 1920 x 1080 だったら、
画素数は 2,073,600 pixels、
これに 3 byte を掛けると 6,220,800 byte、
1 キロが 1024 のとき、 6075 KiB (キビバイト)、
およそ 5.93 MiB (メビバイト)
まあ だいたい 6メガ・バイトの画像が 60分の1秒の間に 描画されているわけよ」
「 今お前が見ている画面も VRAM に伝送されている画像か、
グラフィック・カード上で 再計算された画像を見ているかも知らん」
「 2D画像を伝送するより、
グラフィック・カード上で ポリゴンを使ったコンピューター・グラフィックスを
ディスプレイに描画した方が 動作が軽いかもしれない、
その正確な比較は シェーダーの専門家の検証に任せるけど、
2D画像のデータ伝送は それだけで ネックなのよ」
「 使い回せる画像は VRAM からコピーして ディスプレイに描画してくれれば
VRAM に伝送しなければいけない画像は 少なくて済みそうだな」
「 それが タイル・マップ であり、
スプライトのアニメーションは 時間軸の方向で 未来を先読みして
VRAM に伝送するテクニックであり、
RPGツクールが それをよく利用していたな」
「 RPG Maker Unite は 自分の強みを忘れて、 論外な 画像の扱い方をしているのを
これから 見ることになるでしょう」
「 では もう1回 RMU の 📂 images
ディレクトリーの下の Chest_
画像を見てみましょう」
「 宝箱のアニメーションのコマの画像が 4枚のファイルに分かれているぐらい
大きな問題は無いんじゃないか?」
「 ちりつも(散りも積もれば山となる)だぜ。 のちのち 地獄を見ることになるだろう」
「 配色は美術の領域だから 美術の人が16個ぐらい作って 入れておいてくれたのかしらね」
「 Enemy の おっさんだって 美術の人が配色してくれたのに……」
「 クリスタルの アニメーションの順番は一方向で、ループは有りで良さそうだよな」
「 👆 例えば わたしは こういう風に 設定するものだと思うが、
ツクールでは どうだぜ?」
「 公式のドキュメントは 初心者向けの 利用ガイド であって
仕様ではありませんからね」
「 👆 ドア(Door;扉)は、
閉まっているところから、空いているところまでで 別々のファイルに分かれていて 1組のようだぜ」
「 👆 4枚一組で アニメーションを為してないドアもあるんだけど」
「 👆 ダンジョン(Dungeon;地下牢)は、
A4
とか B
とか書いてあるが、これはRPGツクールの マップ・タイル の慣習のようだぜ」
📖 公式 > RPG Maker Unite 初心者講座 > マップの作成・基礎1 > マップの編集 > オートタイルとは
「 A4 が壁として使われるオート・タイルで、
B は家具らしいが 何のことか分からん」
「 RPGツクール MVや、MZを使ったことなく、かつ 仕様書を書こうという人には
つらいガイドだぜ」
「 👆 フレイム(Flame;炎)は、
燭台だったり、炎そのものだったりするな」
「 アニメーションのコマ数が 1つのものや、3つのものがあるな」
「 そういえば ループ速度 も設定できるはずよ。
ドアの開閉のアニメーション速度と、炎の揺らめきのアニメーション速度は違うもの」
「 👆 ゲート(Gate;炎)は、
タイル何枚か分の でかいドアだぜ」
「 タイル・サイズと等しいか、それとも、タイルより大きいかで
何か 注意しなければならない違いがある の?」
「 👆 アザー(Other;他人)は、
もう分類するのが嫌になったのか、こまごまとした色々なものだぜ」
「 ファイル名から中身を想像できないなら 名付け の意味とは……」
「 『アザー2の ゼロゼロななのファイルください』みたいに
現場で意思疎通することになるんじゃない?」
「 👆 スイッチ(Switch;切り替える)は、
レバー型のもあれば」
「 レバーは ループが正順のものと 逆順の物がありそうだな」
「 あと、通行可、通行不可もありそう。そのマスに入れるかどうかよ」
「 それらの仕様も 他にどんなものがあるのか 調査が要るな」
「 👆 ビークル(Vehicle;乗り物)は、
船や 馬車や 馬など いろいろありそうだな」
「 乗り物は キャラクターじゃなくて マップ上のオブジェクト扱いなの?」
「 それより 昔のRPGツクールの キャラクターの 左向き、右向きとか
1枚の画像に まとまってなかったか?」
「 それなら ビークルは キャラクターとしたいぜ。
フォーマットの形式名としての キャラクター」
「 RMUのファイル構成には、システマチックな規則性が 有ったり無かったり するのよねえ」
「 👆 なんだか分からないが、ウォーターリファ(Water Ref;水参照)というのがあるぜ」
「 星が描かれている。
これは 上に重ねると 川に見える 半透明の水流なんじゃないか?」
「 👆 マップ上に突き立ってる剣みたいなのが ウェポン(Weapon;武器)だぜ」
「 サイドビュー戦闘で キャラクターが振る剣じゃなくて、突き立ってるのね」
「 📂 Objects
という名前のフォルダーだが、
総じて マップ上のオブジェクトが入っているフォルダーなんで」
「 逆立ちしてる斧とか、弓とか いろいろある。 アイコンという感じだぜ」
「 👆 ワールド(World;世界)というのもある。
ファミコン版などの ドラクエ・マップ風の町とか塔じゃないか?」
「 ワールド・マップと ダンジョンは 縮尺が違うから
フォルダーを分けてもいいと思うんだけどなあ。
👇 例えば、こんな風に」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
└── 📂 Images
├── 📂 Battle Background
├── 📂 Battle Characters
├── 📂 Battle Effect
├── 📂 Battle Monsters
├── 📂 Battle Weapons
├── 📂 Cut in
├── 📂 Character Faces
├── 📂 Character Standing
├── 📂 Eye Catch
├── 📂 HUD
├── 📂 HUD Battle
├── 📂 HUD Camp Menu
├── 📂 HUD Map
├── 📂 HUD System Menu
├── 📂 Illust
├── 📂 Map Characters
👉 ├── 📂 Map Decorations of House (※ 📂 Objects)
👉 ├── 📂 Map Decorations of Street (※ 📂 Objects)
👉 ├── 📂 Map Decorations of World (※ 📂 Objects)
👉 ├── 📂 Map Tiles of House
👉 ├── 📂 Map Tiles of Street
👉 └── 📂 Map Tiles of World
「 ぜったい ド素人の わたしたちの ワン・アイデア より
プロの Gotcha Gotcha Games の方が 深い考えがあるんだ! と思ってる ツクラー原住民がいて
受け入れられないんじゃないか?」
「 多分、RPGツクールのMZなら そうであったはずなのよ。
ユナイトがおかしいだけで」
真理は 避けられず、
真実は 踏み込んだ者にしか見えず、
真相は 勝手なものである」
「 👆 パララクシズ(Parallaxes;視差)には
ウォール・ペーパー(Wall Paper;壁紙)みたいなものが入っているぜ」
「 パララクシズと言われて 空中ダンジョンの遠景みたいな背景画像が
入ってると分かる人 いるの?」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
└── 📂 Images
├── 📂 Battle Background
├── 📂 Battle Characters
├── 📂 Battle Effect
├── 📂 Battle Monsters
├── 📂 Battle Weapons
├── 📂 Cut in
├── 📂 Character Faces
├── 📂 Character Standing
├── 📂 Eye Catch
├── 📂 HUD
├── 📂 HUD Battle
├── 📂 HUD Camp Menu
├── 📂 HUD Map
├── 📂 HUD System Menu
├── 📂 Illust
👉 ├── 📂 Map Background (※ 📂 Parallaxes)
├── 📂 Map Characters
├── 📂 Map Decorations of House
├── 📂 Map Decorations of Street
├── 📂 Map Decorations of World
├── 📂 Map Tiles of House
├── 📂 Map Tiles of Street
└── 📂 Map Tiles of World
「 守ってるとこと、守ってないとこが 分かんないんだよな。
やはり ツクラー原住民の配信動画の様子を見ないと」
「 では、次に ピクチャーズ(Pictures;作られた絵たち)フォルダーの中身を見ていこうぜ?」
「 いままで 散々 ピクチャー(絵)を見てきたじゃない。
なんで 📂 Images
フォルダーの中に 📂 Pictures
が有るの?」
[言葉]
📂 Words
├──📂 Nature
│ └── 📂 Images
└──📂 Art Work
├── 📂 Fonts
├── 📂 Movies
├── 📂 Pictures
└── 📂 Sounds
「 まあ、コンピューター業界自体、言葉は ぐちゃぐちゃ で、伝統の濃い口ソースだが……」
「 📂 Pictures
フォルダーには 何の絵が入ってるんだぜ?」
「 それだったら 📂 Map Decorations of House
フォルダーとかに入れたい」
「 では RMU の 📂 Pictures
フォルダーの中身を見てみましょう」
「 いや、スタンディング・ポーズ(Standing Pose;立ち絵)だろ」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
└── 📂 Images
├── 📂 Battle Background
├── 📂 Battle Characters
├── 📂 Battle Effect
├── 📂 Battle Monsters
├── 📂 Battle Weapons
├── 📂 Cut in
├── 📂 Character Faces
👉 ├── 📂 Character Standing
├── 📂 Eye Catch
├── 📂 HUD
├── 📂 HUD Battle
├── 📂 HUD Camp Menu
├── 📂 HUD Map
├── 📂 HUD System Menu
├── 📂 Illust
├── 📂 Map Background
├── 📂 Map Characters
├── 📂 Map Decorations of House
├── 📂 Map Decorations of Street
├── 📂 Map Decorations of World
├── 📂 Map Tiles of House
├── 📂 Map Tiles of Street
└── 📂 Map Tiles of World
「 👆 📂 Character Standing
に入れたいわねえ」
「 RPGを作るエディターを調べているというより、
The RPG Maker Unite を調べている感じだよな」
「 では、次に 📂 SV_Actors
(エス・ブイ・アクターズ)フォルダーの中身を見ていこうぜ?」
📖 公式 > RPG Maker Unite 初心者講座 > 主人公アクターの設定 > アクターを作ろう
「 RMUでは バトラー(Battler;戦う人)という用語も 推したいようだな」
「 📂 Battle Characters - Side View
というフォルダー名にしたらダメなの?」
「 Gotcha Gotcha Games のデザイナーが システマチックじゃないんだぜ。
わたしと そのデザイナーとは 不倶戴天だぜ」
「 クリエイターは アクターという概念で
パーティーに加わるキャラクターの素材はアクター、
敵はエネミー、
というように グルーピング してるんじゃないか?」
「 ドッターと イラストレーターが 同じ人じゃないケースがある。
発注を考えれば 立ち絵と 戦闘時のドット絵は 別の提出フォルダーになるのが 自然な流れ。
まあ 時代が違うか」
「 Gotcha Gotcha Games から 創作 技術を指南されて叩き込まれたら
制作 進行の効率 悪くならない?」
「 向こうは 無いものを創る頭を使う人だろ。 こっちは 有るものを使う手を使う人だぜ。
立場が対立している。 話しが合うわけがない」
cast_delay
critical_health
damage
dead
escape
evasion
general_skill
guard
items
magic
move_forward
projectile
sleep
standard_delay
status_ailment
swing
thrust
victory
「 昔、サラリーマンを辞めて 格闘ゲームを自作しようとして 1体のキャラを描こうとして
1か月 ドット絵を打っても ちっとも終わらないんで 結局、サラリーマンに再就職したことがある」
「 こういう絵の素材作るの 思っているより時間がかかるから
プロ精神のあるやつに任せた方がいい」
「 主に 絵が描き終わらない原因としては
このアクション もっと動きを付けたら 良くなるよな、とか欲が沸いて
画像サイズを大きくしたり、アニメーションのコマ数を増やして
際限無く 仕様が拡大していくからだぜ」
「 自分をマネジメントができない分野では 戦い続けることはできないのよ。
だから 適当に戦い続けていれば 自分をマネジメントできる分野を 自動的に見つけることができるのよ」
「 次に 📂 System
(システム)フォルダーの中身を見ていくが、
テレスドン している」
「 では RMU の 📂 System
ディレクトリーの中身を見てみましょう」
👆 C:\Users\むずでょ\Documents\Unity Projects\RMU-1-00-00-Research\Assets\RPGMaker\Storage\Images\System
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Images
└── 📂 System
├── 📂 Animation
├── 📂 Balloon
├── 📂 Damage
├── 📂 IconSet
├── 📂 Menu
├── 📂 Route
├── 📂 Status
└── 📂 Weapon
「 恐らく
Gotcha Gotcha Games は、ツクラーが 全ての画像を 発注して用意するという想定に立ってない。
わたしは
全ての素材を把握し、どんな依頼がきてもなるべく対応できるよう間口を広く持つ というスタンスを取る」
「 お父んは ツクラーの客じゃないんだぜ。
Gotcha Gotcha Games は お父んの言うことを無視して ツクラーに向けて売ればいいんだぜ」
「 👆 📄 arrow
ファイルは、下向きの アロー(Arrow;矢印)だぜ」
「 カーソルは メニュー画面レイアウト担当が描きますかねえ」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
└── 📂 Images
├── 📂 Battle Background
├── 📂 Battle Characters
├── 📂 Battle Effect
├── 📂 Battle Monsters
├── 📂 Battle Weapons
├── 📂 Cut in
├── 📂 Character Faces
├── 📂 Character Standing
├── 📂 Eye Catch
👉 ├── 📂 HUD
├── 📂 HUD Battle
👉 ├── 📂 HUD Camp Menu
├── 📂 HUD Map
├── 📂 HUD System Menu
├── 📂 Illust
├── 📂 Map Background
├── 📂 Map Characters
├── 📂 Map Decorations of House
├── 📂 Map Decorations of Street
├── 📂 Map Decorations of World
├── 📂 Map Tiles of House
├── 📂 Map Tiles of Street
└── 📂 Map Tiles of World
「 👆 キャンプ・メニュー 描いてる人に やらせたら
勝手に 📂 HUD Camp Menu
放り込んでおいてくれるんじゃないの?」
「 バトル・メニューと キャンプ・メニューで 同じ矢印使うときは
どっちに入れておけばいいんだぜ?」
「 フォルダーのファースト・ビューの建付けだけ 決めとけば、
そのフォルダーの下をどう使うかは 絵描きが賢いから ほっとけば 勝手にやってくれるよな」
「 お父んは 納品物をフォトショップで開いて確認して
受領確認の返信するだけの 事務マンだから 知らないだけで
クリエイター側に 何か 意見があったかも知らん。
あのアホ 何も仕事してない、とか」
「 仕組みを作ったあとは 仕事してない。
勝手に回っててくれれば 結構なんで」
「 あんたのお父んには 事務用品を管理させとけばいいのよ。
ガムテープ寄こせとか、 梱包しろとか、 郵便物送れとか、
クリエイターからレシートを回収する速度とか」
「 ゲームを作る才能はなくて 資材管理の才能があったんだな。
戦い続けていれば 自動的に 適材適所に収まるか……」
「 👆 📄 Balloon
ファイルは、バルーン(Balloon;吹出し)だぜ。
マンガのようにセリフが入っているものではなく、
感情表現のアイコンとして ポップアップしてくるやつだな」
「 このファイルには 様々なバルーンがタイル上に収められている……。
なんで他のファイルも そうしないのか……?」
「 Gotcha Gotcha Games が新たに作ったファイルは バラバラに分解されてて、
既存のシリーズからそのまま持ってきた画像は タイル上に収められているという
仮説を立てたいわね」
「 バルーンは 理想的には どのフォルダーに置いておきたいんだぜ?」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
└── 📂 Images
├── 📂 Battle Background
├── 📂 Battle Characters
├── 📂 Battle Effect
├── 📂 Battle Monsters
├── 📂 Battle Weapons
├── 📂 Cut in
├── 📂 Character Faces
├── 📂 Character Standing
├── 📂 Eye Catch
├── 📂 HUD
├── 📂 HUD Battle
├── 📂 HUD Camp Menu
├── 📂 HUD Map
├── 📂 HUD System Menu
├── 📂 Illust
├── 📂 Map Background
👉 ├── 📂 Map Characters
├── 📂 Map Decorations of House
├── 📂 Map Decorations of Street
├── 📂 Map Decorations of World
├── 📂 Map Tiles of House
├── 📂 Map Tiles of Street
└── 📂 Map Tiles of World
「 バルーンは 画面上にベタっと張り付いているものじゃなくて、
マップ上を走り回るキャラクターに付随するものだろ。
ヘッド・アップ・ディスプレイ(Head Up Display;視界上表示)じゃないしな。
📂 Map Characters
に入れるよう指示したらどうだぜ?」
「 Gotcha Gotcha Games は バルーンを System
だと思っていて、
お父んは バルーンを Map Characters
だと思うのは
どういう違いから そう分かれてしまったと思うかだぜ?」
「 向こうさんは ゲーム・システム だと思ってんじゃないか?
感情表現のバルーンが出てくるシステムですよ、みたいな。
そんな考えをしていたら 多くの物が 📂 System
フォルダーの下に 詰め込まれてしまうだろう」
「 わたしは単に フォルダーをダブルクリックして ウィンドウを開いたら
そのファースト・ビューで どこに何があるか
資材の場所を 把握しておく必要があるから そうするだけだぜ」
「 ぜったい クリエイターが 助手として欲しい人材なのよ。
本人は クリエイターじゃなくて」
「 納得できないスキル・ツリーだよな。
後衛の魔法使いかと思って育成していたら だんだん防御力の固い前衛の肉壁に育ってきたぞ、みたいな」
「 多くのクリエイター志望のタマゴが聞きたくない真実だよな」
真理は 避けられず、
真実は 踏み込んだ者にしか見えず、
真相は 勝手なものである」
「 👆 📄 ButtonSet
ファイルは、ボタンだぜ。
上だの 下だの 戻るだの、ハンバーガー・メニューだの」
「 タイル・セット状にしておいてくれれば ファイル1枚に収まるのだから、
タイル・セット状にしておいて欲しいよな、歩行キャラクター画像とか」
「 📂 System
フォルダーの下は 感覚的には まともね」
「 Gotcha Gotcha Games には まともには 見えてないんだろ。
やり残したことがある……、 📂 System
フォルダーの下の画像も ばらばらに分解せねば……、
とか思っていて 次のバージョン更新で
ボタンも1つずつ ばらばらのファイルになってるかも知れないぜ?」
「 知見がない人は がんばってはいけないよな。
何が合っていて、何が合ってないか 分からない内は」
「 👆 ゲームオーバー(Game Over;ゲームは以上です)には
画面を覆いかぶさる一枚絵が入っているぜ」
「 そう言えば ゲームクリア―後の The End もこの類だよな」
「 これはお父んなら どのフォルダーに入っていることを期待するんだぜ?」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
└── 📂 Images
├── 📂 Battle Background
├── 📂 Battle Characters
├── 📂 Battle Effect
├── 📂 Battle Monsters
├── 📂 Battle Weapons
├── 📂 Cut in
├── 📂 Character Faces
├── 📂 Character Standing
👉 ├── 📂 Drama Background
├── 📂 Eye Catch
├── 📂 HUD
├── 📂 HUD Battle
├── 📂 HUD Camp Menu
├── 📂 HUD Map
├── 📂 HUD System Menu
├── 📂 Illust
├── 📂 Map Background
├── 📂 Map Characters
├── 📂 Map Decorations of House
├── 📂 Map Decorations of Street
├── 📂 Map Decorations of World
├── 📂 Map Tiles of House
├── 📂 Map Tiles of Street
└── 📂 Map Tiles of World
「 👆 今考えた。
一般的ではないが、 📂 Drama Background
というディレクトリーを切ったんで
ここに入れてくれだぜ」
「 ぜったい 📂 System
なんてフォルダーは作らないぞ、という意志を感じるわね」
「 なんで 📂 System
フォルダーを作っちゃいけないんだぜ?」
「 📂 System
フォルダーの中は 勝手に触んな、という感覚が わたしの中で強い。
しかし わたしは ゲームの中に存在する 全ての画像素材を 丸投げしたいので
どのフォルダーの中も勝手に触って欲しい。
だから 誰が このフォルダーをいじるのかを考えて フォルダー構成を デザインしたい」
「 じゃあ Gotcha Gotcha Games は、
勝手に触ってほしくないフォルダーに どんな名前を付けてるんだぜ?」
「 案外 他の人は フォルダーの中に入っているものを 調べないのかも知れないし、
配布する方も 調べられると思って 入れてるわけじゃないと思うわよ」
「 RMUに不具合がなければ RPGを ちょろっと作って
遊んで 飽きて 終わりだったんだぜ。
なんで不具合が起きてるのか お父んが調べ始めると 部品を全部 点検し始めたんだぜ」
「 👆 アイコンセット(Icon Set)は、
戦闘中の状態異常の表示や、キャンプ・メニューのステータス表示などのアイコンだぜ」
「 まさに このように作れという お手本のような タイル・セットだぜ」
「 でも 64×64ピクセル・サイズのアイコンの四方に 1px の透明のパディングが入っていて、
タイル1つ分のサイズは 66×66 よ?」
「 なんで Gotcha Gotcha Games の人は 1pxの パディング 入れたがるんだろうな?」
「 フォトショップの使い方が ヘタクソ なんじゃないか?
グリッド機能や スナップ機能 使ったこと 無いんだろう」
「 8は 2の3乗なんで 64 から数えて3つ目は 128、 256、 512 と
そらんじて 512 よ」
「 6×8=48 と、 60×8=480 を足すだけだから
528 よ」
「 わたしは Gotcha Gotcha Games とは 合わない!」
「 面白かったゲームソフトの続編買ったら くそゲーだったときの気分だよな」
「 もう 期待したRPGツクールは 戻ってこないのよ。
諦めなさい」
「 👆 シャドウ(Shadow)だぜ。
多分、マップ上の歩行キャラクターの足元に付いているやつだな」
「 👆 ステータス(Status)だぜ。
戦闘中のキャラクターの状態異常を表すんじゃないかな?」
「 このようなタイル・セットの配置だと、
毒を納品しました、感電を納品しました、というように 1個ずつ 納品を確認するのが
やりにくいから、
poison.png
とか electric_shock.png
のように分けた方がいいのでは?」
「 新人バイトのくせに 会社の冷蔵庫の食べ物 全部食べて怒られる あんた ぐらいの 非常識さを、
よくできた社会人は 失っているのよ」
「 アニメーションのコマ 1枚1枚 分解して ファイルにするのは やりすぎだが、
納品の単位で 分解して ファイル1つ分に まとる指示を出せる センス を
Gotcha Gotcha Games から感じられないのは そもそも RPG Maker Unite のポリシーではないから
期待をする方が 見当違いだが、
だいたい お父んが言う 論外のパターンが 分かってきたぜ」
「 あんたのお父んから見れば Gotcha Gotcha Games は 論外 だし、
Gotcha Gotcha Games から見れば あんたのお父んは 対象外 なのよ」
「 クリエイティブ畑 VS 事務方畑 の全容が見えてきたぜ」
「 👆 ウィンドウ(Window)だぜ。
そのまんま、サイズ調整可能な ウィンドウ のようだな」
「 このウィンドウのサイズは 設定できるのかどうかと、
横に何文字、縦に何文字 表示 できるんだぜ?」
「 👆 アニメーション(Animation)だぜ。
画像ではなく、それを使ってシーケンスを組んだ設定データのようだな」
「 📂 Images
フォルダーの下を見ているはずなのに、
画像以外のものを置いていたら、
アニメーション設定ファイルを探している人が 見つけられないのでは?」
「 そういう資材管理の意志が感じられないディレクトリー構成は これから よく見ることになるわよ」
「 Gotcha Gotcha Games は クリエイティブ業界だろうし、
クリエイティブをやりたい人は 内容物の点検を やりたいわけじゃないでしょうしね」
「 こんなけ 管理に無頓着なだけある 製品の品質してるだろ RMU は。
彼らの会社は 優れた事務方によって回り、
パソコンのフォルダーの中までは 事務方は掃除してくれないから 開発が回ってないのだろう」
「 自分から ぐちゃぐちゃに してんじゃないの? 1pxの パディング 入れたり」
「 これから ユナイトの規格が一般的になって
1pxの パディング を入れることが デファクト・スタンダード になっていくわよ」
「 あれっ? さっき こいつら 見たような……?
なんで さっき タイル・セット にまとまっていたものが
ばらばらにして ここにあるんだぜ?」
「 しかも ファイル名が Balloon_000.png
だから ファイル名を見ても
内容を想像できないわよ?」
「 これは Damage
ではなく Number
なんじゃないの?」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
└── 📂 Images
├── 📂 Battle Background
├── 📂 Battle Characters
├── 📂 Battle Effect
├── 📂 Battle Monsters
├── 📂 Battle Weapons
├── 📂 Cut in
├── 📂 Character Faces
├── 📂 Character Standing
├── 📂 Drama Background
├── 📂 Eye Catch
👉 ├── 📂 Font
├── 📂 HUD
├── 📂 HUD Battle
├── 📂 HUD Camp Menu
├── 📂 HUD Map
├── 📂 HUD System Menu
├── 📂 Illust
├── 📂 Map Background
├── 📂 Map Characters
├── 📂 Map Decorations of House
├── 📂 Map Decorations of Street
├── 📂 Map Decorations of World
├── 📂 Map Tiles of House
├── 📂 Map Tiles of Street
└── 📂 Map Tiles of World
「 👆 Font
なんだったら ファースト・ビュー に合ってもいいなあ」
「 ハサミや クリップの置き場の感覚で フォルダーを切ったわね」
「 お父んは 新座市役所のオープンなフロント・オフィスの棚に
秩序立って並んでいるフォルダーを見て ニコニコしているしな」
「 それが本当の フォルダー だぜ。 テレスドンとは わけが違う」
「 RMUの異世界にも 慣れてきたわね~。今後も この芸風が続くわよ~」
「 Gotcha Gotcha Games の開発者が Web系しか知らんという可能性は?」
「 2000年の 00年代の HTMLタグを打ってた頃のWebだよな。
今どき CSSでも タイル・セットから スプライトを作れるぜ」
「 274個のタイルに分割されてるから、ファイル読込が273回分 増えてるぜ。
外部記憶装置へのアクセスは遅いから、読込は遅くなるぜ」
「 知ってりゃ こんなことはしない。
知らないんだったら
何を言っても 話しは通じないぜ、 ワハハハハ!」
「 👆 📂 Menu
の下は 📂 Dark
と 📂 Light
に分かれているぜ。
レイアウトの テーマ というやつだな」
「 これは ユーザーが ゲームをプレイ中に ダーク・モードと ライト・モードを
切り替えることがあると 想定しているの?」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
├── 📂 Images (※ Light Thema)
│ ├── 📂 Battle Background
│ ├── 📂 Battle Characters
│ ├── 📂 Battle Effect
│ ├── 📂 Battle Monsters
│ ├── 📂 Battle Weapons
│ ├── 📂 Cut in
│ ├── 📂 Character Faces
│ ├── 📂 Character Standing
│ ├── 📂 Drama Background
│ ├── 📂 Eye Catch
│ ├── 📂 Font
│ ├── 📂 HUD
│ ├── 📂 HUD Battle
│ ├── 📂 HUD Camp Menu
│ ├── 📂 HUD Map
│ ├── 📂 HUD System Menu
│ ├── 📂 Illust
│ ├── 📂 Map Background
│ ├── 📂 Map Characters
│ ├── 📂 Map Decorations of House
│ ├── 📂 Map Decorations of Street
│ ├── 📂 Map Decorations of World
│ ├── 📂 Map Tiles of House
│ ├── 📂 Map Tiles of Street
│ └── 📂 Map Tiles of World
👉 └── 📂 Images Themes
👉 └── 📂 Dark
├── 📂 Font
├── 📂 HUD
├── 📂 HUD Battle
├── 📂 HUD Camp Menu
├── 📂 HUD Map
└── 📂 HUD System Menu
「 こうやって 仕様変更していくことで 時間と資金が無くなり
脱サラ・マンは再就職に戻っていく……」
「 点検しておいてよかったな。
あとで見つかると 手戻りが発生する案件だぜ」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
├── 📂 Images (※ Light Thema)
│ ├── 📂 Battle Background
│ ├── 📂 Battle Characters
│ ├── 📂 Battle Effect
│ ├── 📂 Battle Monsters
│ ├── 📂 Battle Weapons
│ ├── 📂 Cut in
│ ├── 📂 Character Faces
│ ├── 📂 Character Standing
│ ├── 📂 Drama Background
│ ├── 📂 Eye Catch
│ ├── 📂 Font
│ ├── 📂 HUD
│ ├── 📂 HUD Battle
│ ├── 📂 HUD Camp Menu
│ ├── 📂 HUD Map
│ ├── 📂 HUD System Menu
│ ├── 📂 Illust
│ ├── 📂 Map Background
│ ├── 📂 Map Characters
│ ├── 📂 Map Decorations of House
│ ├── 📂 Map Decorations of Street
│ ├── 📂 Map Decorations of World
│ ├── 📂 Map Tiles of House
│ ├── 📂 Map Tiles of Street
│ ├── 📂 Map Tiles of World
👉 │ └── 📂 System
└── 📂 Images Themes
└── 📂 Dark
├── 📂 Font
├── 📂 HUD
├── 📂 HUD Battle
├── 📂 HUD Camp Menu
├── 📂 HUD Map
└── 📂 HUD System Menu
「 System
って、アンタッチャブル ぐらいの用途で使うんだな」
「 👆 📂 Active
フォルダーは、イネーブル(Enable;活性)なものが入ってそうだな。
要は 押せるボタン とかだぜ。
アクティブじゃなくて イネーブルな、覚えておけだぜ」
「 タイル・セットを 1タイルずつ分解して、
さらに 活性、不活性かで仕分けて テレスドン したのね」
「 👆 📂 Disable
フォルダーは、ジッセーブル(Disable;不活性)なものが入ってそうだな。
要は 押せないボタン とかだぜ」
「 Unity の GUI が、画像は1ファイルずつ 分けろという要求を
していたりしないか だぜ?」
「 それは 良い視点だな。
普通に考えて スプライトぐらい使えると思うけど、
調査が必要だな」
「 Unity Editor に画像コンポーネントみたいなのがあって、
画像を表示するのに 1ファイルずつ指定する方法しか知らなかった としたら、
Gotcha Gotcha Games が 1タイルずつ ファイルを分割する の理由の説明になるわね」
「 👆 📂 Down
フォルダーは、プレスド(Pressed;押した)ボタンが入ってそうだな。
マウス・ボタンは Down
するが、押下された方のボタンは Pressed
だぜ 覚えておけだぜ」
「 Unity Editor のボタン・コンポーネントが 活性時、不活性時、押下時の
3つの画像ファイルへのパスを テキスト・ボックスに入れるように 要求 していることは
無いかだぜ?」
「 もし そうであるのなら、
この Dark
、 Light
というのは ゲーム中のテーマではなくて、
Unity Editor 用のテーマなの?」
[理想]
📂 Assets
└── 📂 Gotcha Gotcha Games
└── 📂 RPG Maker Unite
├── 📂 Addon
├── 📂 Data
👉 ├── 📂 Editor
│ ├── 📂 Images (※ Light Theme)
👉 │ │ └── 📂 Buttons
│ └── 📂 Images Themes
│ └── 📂 Dark
👉 │ └── 📂 Buttons
├── 📂 Images
├── 📂 JSON
├── 📂 Materials
├── 📂 Movies
├── 📂 Prefabs
├── 📂 Scenes
├── 📂 Scripts
├── 📂 SO
├── 📂 Sounds
├── 📂 System
└── 📂 Text
「 もし そうであったなら、
ゲームに乗せる画像でないんだったら、
プロダクトのファースト・ビューに 📂 Editor
フォルダーを切りたいわねえ」
「 ゲームの実行ファイルからは Unity Editor でしか使わない画像とかは
取り除かれているのか だぜ?」
「 👆 📂 Status
には、状態異常のタイル・セットを 状態ごとに
ばらばらにしたものが入ってるぜ」
「 これで ラスター画像の 縦幅、横幅を 8 の倍数にして
余計なパディングを付けず
ファイル名は poison.png
のような 読んで分かるものにしてくれて
テレスドンを止めてからが
ゲーム制作の話しだよな」
「 そこらへん 全部分かってる人が RPGツクールを作ってくれるから
ツクラーは その上で ゲーム制作に専念できるのだと 思っていた……」
「 👆 📂 Weapon
には、サイド・ビュー戦闘で キャラクターが振ったり
投げたりするような 武器のアニメーションが入ってるぜ」
「 📂 System
フォルダーの中に 武器画像が入っているって 気づくかなあ?」
「 やっぱ ゲーム・システム という意味の システム なんだ」
「 👆 📂 Title1
には、タイトル画面の背景が入ってるぜ」
「 📂 Title1
と、 📂 Title2
に分かれてるのが 気になるのよ。
調べてちょうだい」
「 👆 📂 Title2
には、フォト・フレームみたいな 装飾が入ってるぜ」
👆 📂 C:\Users\むずでょ\Documents\Unity Projects\RMU-1-00-00-Research\Assets\RPGMaker\Storage\Images\Ui
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Images
└── 📂 Ui
├── 📂 Bg
├── 📂 Button
├── 📂 TitleName
└── 📂 Window
「 👆 📂 Ui
の下にも いろいろ ファイルが入ってるぜ。
それより Ui
という名前は UI
にして欲しいよな」
「 👆 ゲーム画面内で見かけた、マウスでクリックするボタンが入ってるな」
「 ここにボタンが置いてるんだったら、 📂 Button
フォルダーには何が入ってんの?」
「 👆 なんだか分からないが 四角形の画像が入っている ぜ」
「 👆 なんだか分からないが 四角形の画像が入っている ぜ」
「 👆 なんだか分からないが 四角形や、フォト・フレームみたいな画像が入っている ぜ」
「 お父んが言うには 📂 Map
フォルダーの下にも画像があるらしい。
見せてくれだぜ」
👆 📂 C:\Users\むずでょ\Documents\Unity Projects\RMU-1-00-00-Research\Assets\RPGMaker\Storage\Map
[現実]
📂 Assets
└── 📂 Storage
└── 📂 Map
├── 📂 BackgroundImages
├── 📂 JSON
├── 📂 SampleMaps
├── 📂 SavedMaps
├── 📂 ThumbnailImages
├── 📂 TileAssets
├── 📂 TileCollisionAssets
└── 📂 TileImages
「 👆 なんか ごちゃごちゃ してるよな。
これらは ゲーム中でマップを開いているときや、
Unity Editor を使っているときに アウトライン・エディターを開いて使うものなのか 分からない が、
マップの前景のような でかい画像が入っているぜ」
「 👆 フォルダーの名前には サムネイル(Thumbnail;親指の爪)と付いているが
思っているより大きいマップの画像が入っているぜ」
「 それは メモリーも 処理速度も もったいないんじゃないかなあ?」
👆 C:\Users\むずでょ\Documents\Unity Projects\RMU-1-00-00-Research\Assets\RPGMaker\Storage\Map\TileAssets
「 👆 そして 📂 TileAssets
フォルダーは……」
「 👇 ひろはす という人がRMUの素材を見ていたときに 偶然見つけた 伝説のフォルダーだぜ」
📺 偶然重い原因が分かって悶絶するひろはす【RPG MAKER UNITE】
「 フォルダーの数より .asset
ファイルの方が 6個多い その差が気になる」
「 👆 そして .asset.meta
ファイルと、.meta
ファイルのペア、
合わせて 25,256 個」
「 2で割ると 12,628 だが、 12,631 個と 12,625 個の半分地点にあるの 気になる」
「 👆 適当なフォルダーを1つ開けると、
マップ・タイルの PNG画像が1枚と、 t.meta
ファイルが入っているぜ」
「 フォルダーの数と、 .meta
ファイルの数と、 .asset
ファイルの数と、 .asset.meta
ファイルの数が
ぴったり全部一致しないのは なぜなの?」
「 👆 フォルダーと、 .meta
ファイルはあるけど、 .asset
ファイルと .asset.meta
ファイルが
無いパターンがあるな」
「 空フォルダーがあると .meta
ファイルは作られるのか、
それとも 最初は中身があったけど 後から中身を消して フォルダ―と .meta
が残ったのか、
それとも別の理由なのか、どうなのかしら?」
「 👆 また同様のケースで 別の内容だったものとして、
shape1.png
のような キラキラと星が出ている画像が入っているものがあった」
「 defaultSprite.png
も、 defaultSpring.png.meta
も入っているのに、
.asset
ファイルと .asset.meta
ファイルは作られなかったの?」
5a1a3c8f-3894-42c3-b632-1f77fe6a38af
- フォルダーの中が空っぽ494c6001-cd03-455c-ab62-e8380d62bbd1
- shape0.-png など他のファイルが入っていた82f9e5ca-2772-44d6-82d5-cef1601448fb
- shape0.-png など他のファイルが入っていたb296b207-8cc9-4210-b5f3-1361ee0e129c
- フォルダーの中が空っぽ5cdd9590-e9ef-418e-9774-48b8fcc9f751
- フォルダーの中が空っぽ9dc69ebf-51d9-429e-8fb5-28988485ece3
- フォルダーの中が空っぽ
「 👆 フォルダー、 .meta
ファイル、 .asset
ファイル、 .asset.meta
ファイルの
4つが揃ってないのは 上記の6つだけど」
「 フォルダーの中身が必ずしも defaultSprite.png
と defaultSprite.png.meta
の2ファイルだけとは、
限らないよな」
👆 006cc76f-7c96-4d01-86e7-c641c5d4aa99
folder
「 👆 そして調べたところ、上記のフォルダーには 海岸線のタイルが入っていた。142枚」
👆 018a364b-995c-4ec7-8012-429afb8c8ed6
folder
「 これらは アセットだから、 アセットを保存したり 再更新したりするとき、
これらの アセットも 保存したり、 再更新したり してるの?」
👆 04c3acde-2d86-4828-b399-85df5bec5567
folder
👆 1b2fb1b7-c31f-4985-aa13-809411ae955f
folder
👆 2c044f95-e968-42e8-a939-e6513568ebe2
folder
「 これらは リソース・リーク してんの?
それとも これらのタイル画像は 必要があって 置いてあんの?」
「 👆 次は 📂 Movies
フォルダーを開けてみましょう!」
「 👆 次は 📂 Sounds
フォルダーを開けてみましょう!」
👆 📂 C:\Users\むずでょ\Documents\Unity Projects\RMU-1-00-00-Research\Assets\RPGMaker\Storage\Sounds
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Sounds
├── 📂 BGM
├── 📂 BGS
├── 📂 ME
└── 📂 SE
「 👆 📂 BGM
フォルダーには .wav
ファイルが入っているぜ」
「 .wav
って 無圧縮の音声ファイルだからサイズがでかいんじゃないの?
.ogg
にしないの?」
「 音楽をやっている 音に自信があるサークルなら .wav
は十分にありだろうけど、
わたしには オーバースペック だぜ。 容量が小さい方がいい」
「 .wav
を .ogg
に変換したら、そのあと RMU側のどこを どう いじったらいい んだぜ?」
「 👆 あと 音量がでかすぎる
5分の1にして ちょうどいいぐらいだ
音屋が納品した音楽ファイルを そのまま フォルダーに放り込んだんじゃないか
音量を調整してほしい」
「 上の階層に ループ という名前を含んだ JSON形式ファイルがあった。
多分 なんとかなるだろ」
「 これって サンプル・ゲームのBGMだろ。
この音楽ファイルは 再利用、再配布 できるのか だぜ?」
「 👆 📂 BGS
フォルダーに入っているのは .ogg
だ!
環境音だぜ。街中の自動車の音とか、水滴の聞こえる場所の音とか いろいろ入っているぜ」
「 あれっ? 画像ファイルに比べると BGMや BGSは 比較的 内容を表す名前になってるぜ」
「 ファイル名でしか 内容を想像する手段のない コンピューターのファイル管理システムが
イケてないのよ」
「 👆 📂 ME
フォルダーに入っているのは ジングルだぜ。ファイル形式は .ogg
だ!
アイテムを獲得したときとか、謎を解いたときに流れるような短い曲だぜ。
ME は Music Effect の略なんだろうが、これは RPGツクールの方言かだぜ?」
「 👆 📂 SE
フォルダーに入っているのは サウンド・エフェクト(Sound Effect;効果音)だぜ。
ファイル形式は .ogg
だ!
物理攻撃がヒットしたときの音とか、エネルギーを吸収したときの音とか、
状況を説明する短い音が入っているぜ」
「 武器を沢山作ると、それに効果音を当てていく作業が 必要になってくるわよね」
「 音に こだわりのあるやつが 自ら進んで 勝手にやっててくれるから 大丈夫だぜ」
「 お父んは なーんにも しなかったなー。 どこで 何やってたんだぜ?」
「 RMUは リレーショナル・データベース(Relational DataBase)や、CSV(Comma Separated Value)ではなく、
JSON(Java Script Object Notation)形式でデータを保存している」
「 RPGツクールは 昔、ゲーム・スクリプトとして Java Script を採用していたらしく、
JSON ファイルは Java Script から生まれたデータ記録形式なので、 JSON と Java Script の相性は最高だぜ」
「 RMUには ゲーム・スクリプト自体が見当たらないから Java Script も無いわよ。
Unityで利用できるプログラム言語は C# よ」
「 👇 ひとまず、 JSONファイルが どのディレクトリーに置いてあるのか まとめておこう」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
├── 📂 Addon
│ ├── 📂 JSON
│ │ ├── 📄 addonInfos.json ※ソースに無い? 要調査
│ │ └── 📄 addonSettings.json ※ソースに無い? 要調査
│ └── 📂 Resources
│ ├── 📄 addonInfos.json
│ └── 📄 addonSettings.json
├── 📂 Animation
│ └── 📂 JSON
│ └── 📄 animation.json
├── 📂 AssetManage
│ └── 📂 JSON
│ ├── 📂 Assets
│ │ └── 📄 0ada6636-f27d-4d74-9e0d-5b868d86ed2b.json ※他多数。 UUID.json
│ ├── 📄 assetsData.json
│ └── 📄 orderManager.json
├── 📂 Character
│ └── 📂 JSON
│ ├── 📄 characterActor.json
│ ├── 📄 class.json
│ ├── 📄 enemy.json ※ソースに無い? 要調査
│ ├── 📄 troop.json ※ソースに無い? 要調査
│ └── 📄 vehicles.json
├── 📂 Encounter
│ └── 📂 JSON
│ └── 📄 encounter.json
├── 📂 Event
│ └── 📂 JSON
│ ├── 📂 Event
│ │ └── 📄 00c9f537-ca39-46da-bc69-a7f1b67dcedb-0.json ※他多数。 UUID-数字.json
│ ├── 📄 eventBattle.json
│ ├── 📄 eventCommon.json
│ └── 📄 eventMap.json
├── 📂 Flags
│ └── 📂 JSON
│ └── 📄 flags.json
├── 📂 Initializations
│ └── 📂 JSON
│ ├── 📄 armor.json
│ ├── 📄 autoGuide.json
│ ├── 📄 skill.json
│ ├── 📄 skillCustom.json
│ ├── 📄 state.json
│ ├── 📄 stateTest.json
│ ├── 📄 system.json
│ ├── 📄 title.json
│ ├── 📄 weapon.json
│ └── 📄 weaponTest.json
├── 📂 Item
│ └── 📂 JSON
│ └── 📄 item.json
├── 📂 Map
│ └── 📂 JSON
│ ├── 📂 Map
│ │ └── 📄 00b34276-2c8a-4599-b325-4bc607ba5f5e.json ※他多数。 UUID.json
│ ├── 📂 MapSample
│ │ └── 📄 0e73b46a-fbef-4cb7-b56a-b3aade29a47a.json ※他多数。 UUID.json
│ ├── 📄 tileAssets.json
│ ├── 📄 tileCollisionAssets.json
│ └── 📄 tileGroup.json
├── 📂 Migration
│ └── 📄 MigrationHistory.json
├── 📂 Outline
│ ├── 📄 chapter.json
│ ├── 📄 connection.json
│ ├── 📄 section.json
│ └── 📄 start.json
├── 📂 SaveData
│ └── 📂 JSON
│ ├── 📄 actors.json
│ ├── 📄 config.json
│ ├── 📄 party.json
│ └── 📄 system.json
├── 📂 Sounds
│ ├── 📄 bgmLoopInfo.json
│ └── 📄 bgsLoopInfo.json
├── 📂 Ui
│ └── 📂 JSON
│ └── 📄 ui.json
└── 📂 Word
└── 📂 JSON
└── 📄 words.json
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Event
└── 📂 JSON
└── 📂 Event
└── 📄 00c9f537-ca39-46da-bc69-a7f1b67dcedb-0.json ※他多数
「 👆 📂 Event
フォルダー開けて、📂 JSON
フォルダー開けたら
また 📂 Event
フォルダー 出てくる。 マトリョーシカ かな」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 AssetManage
└── 📂 JSON
└── 📂 Assets
👉 └── 📂 Storage
「 👆 📂 Storage
フォルダーも、📂 AssetManage
フォルダーを開けていくと また出てくる 。
今は中身は 空フォルダーと .meta
ファイルしか入っていないが、
何に使うのかな。 マトリョーシカ かな」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Addon
├── 📂 JSON
👉 │ └── 📄 addonInfos.json ※ソースに無い? 要調査
└── 📂 Resources
└── 📄 addonInfos.json
「 👆 わたしが アドオン をまだ作ってないからか、ファイルの中身は []
だけで、
アドオン を作ったら 何が書かれるのか 分からない ぜ」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Addon
├── 📂 JSON
│ └── 📄 addonInfos.json ※ソースに無い? 要調査
└── 📂 Resources
👉 └── 📄 addonInfos.json
「 👆 隣の 📂 JSON
ディレクトリーに同じ名前のファイルがある。
何が違うのか分からない ぜ」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Animation
└── 📂 JSON
👉 └── 📄 animation.json
Dammy:
[
{
"expansion": 100,
"flashList": [
{
"color": "255,255,255",
"flashId": 0,
"flashType": 1,
"frame": 1,
"time": 30
},
...
],
"id": "54b168ea-5141-48ed-9e42-4336ac58755c",
"offset": "0;0",
"particleId": "f6bad097-a340-4fe8-b90e-9676c577cfeb",
"particleName": "None",
"particlePos": 0,
"particleType": 0,
"playSpeed": 100,
"rotation": "0;0;0",
"seList": [
{
"frame": 1,
"seId": 0,
"seName": "Blow1.ogg"
},
...
],
"targetImageName": ""
},
...
]
「 画像のアセットと 1対1対応させて アニメーションを指定すんじゃないの?
seList
は、指定のフレームで効果音を鳴らすように見えない?」
「 じゃあ flashList
は同様に 閃光じゃないか?」
「 アニメーションとは別に 画像の方が持ってんじゃないの?」
「 アニメーションというより、音付け、エフェクト付けに思える」
「 じゃあ そうなんじゃないか?
アニメーションというファイル名が、アニメーションに関する物とは限らないぜ 覚えろだぜ」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 AssetManage
└── 📂 JSON
└── 📂 Assets
👉 └── 📄 0ada6636-f27d-4d74-9e0d-5b868d86ed2b.json
Dammy:
{
"id": "0ada6636-f27d-4d74-9e0d-5b868d86ed2b",
"sort": 154,
"name": "Object 155",
"type": 0,
"weaponTypeId": 0,
"assetTypeId": 1,
"imageSettings": [
{
"path": "Other2_001.png",
"sizeX": 294,
"sizeY": 194,
"animationFrame": 3,
"animationSpeed": 30
},
...
]
}
「 👆 sizeX
って、 width
じゃないのか? sizeY
って、 height
じゃないのか?」
「 👆 同じものが 5つ 並んでいる気がする んだが、わたしの目の錯覚かだぜ?」
真理は 避けられず、
真実は 踏み込んだ者にしか見えず、
真相は 勝手なものである」
「 weponTypeId
という文字が見えるから、サイド・ビュー戦闘の 武器の振りなどに
設定を付与しているのかも知らん」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 AssetManage
└── 📂 JSON
👉 └── 📄 assetsData.json
dammy:
[
{
"assetTypeId": 0,
"id": "01ae0cea-fd48-4944-814c-9deabcb43b54",
"imageSettings": [
{
"animationFrame": 6,
"animationSpeed": 40,
"path": "037_Demihuman_walk_down_6.png",
"sizeX": 0,
"sizeY": 0
},
...
],
"name": "Skeleton",
"sort": 36,
"type": 0,
"weaponTypeId": 0
},
{
"assetTypeId": 1,
"id": "008229ae-3500-45a0-be9b-4ae020c4c2b7",
"imageSettings": [
{
"animationFrame": 3,
"animationSpeed": 30,
"path": "Other2_029.png",
"sizeX": 294,
"sizeY": 194
},
...
],
"name": "Object 174",
"sort": 173,
"type": 0,
"weaponTypeId": 0
},
{
"assetTypeId": 2,
"id": "22f678a7-f8ae-4334-8a00-7feca3b44057",
"imageSettings": [
{
"animationFrame": 8,
"animationSpeed": 15,
"path": "Balloon_004.png",
"sizeX": 0,
"sizeY": 0
}
],
"name": "Angry",
"sort": 5,
"type": 0,
"weaponTypeId": 0
},
{
"assetTypeId": 3,
"id": "0003c951-f75e-47d0-a8d1-b8fb82cae285",
"imageSettings": [
{
"animationFrame": 6,
"animationSpeed": 20,
"path": "017_Actor_move_forward_6.png",
"sizeX": 0,
"sizeY": 0
},
...
],
"name": "Amazon (Male)",
"sort": 16,
"type": 0,
"weaponTypeId": 0
},
{
"assetTypeId": 4,
"id": "002a2ac8-e582-4310-b054-651c5bdf75cd",
"imageSettings": [
{
"animationFrame": 8,
"animationSpeed": 20,
"path": "weapon_swing_012_8.png",
"sizeX": 1920,
"sizeY": 200
}
],
"name": "Scythe",
"sort": 11,
"type": 0,
"weaponTypeId": 0
},
{
"assetTypeId": 5,
"id": "4132981d-b0a6-4f8d-bfcf-535350a6caea",
"imageSettings": [
{
"animationFrame": 8,
"animationSpeed": 15,
"path": "States_007.png",
"sizeX": 2048,
"sizeY": 256
}
],
"name": "Paralysis",
"sort": 7,
"type": 0,
"weaponTypeId": 0
},
{
"assetTypeId": 6,
"id": "01f310cb-791d-4bf3-8c9b-0b65739c5fdd",
"imageSettings": [
{
"animationFrame": 0,
"animationSpeed": 0,
"path": "ClawFire.asset",
"sizeX": 0,
"sizeY": 0
}
],
"name": "Claw/Fire",
"sort": 17,
"type": 0,
"weaponTypeId": 0
},
...
]
「 👆 assetTypeId
が少なくとも 0 ~ 6 あって、これが マップの構成に影響を与えるかと思った が、
特に違いはなく 見当違いかだぜ」
「 imageSettings
の要素数が変わったりするんじゃない?」
「 複数のアニメーション・フレームを持つタイル・セット画像に 設定を付与するのかな?」
「 さっきの Assets/UUID.json
ファイルと働きが 被ってると思うんだよな」
「 画像みたいに 1つの JSON形式ファイルだったものを、
アセット毎に1つ1つ JSON形式ファイル に分割したんじゃないの?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 AssetManage
└── 📂 JSON
👉 └── 📄 orderManager.json
Dammy:
{
"orderDataList": [
{
"assetTypeId": 0,
"idList": [
"78a965c8-7400-432e-a17f-93432f6b9ff5",
"02c771b2-247a-42d5-b6dd-ad398d3c6557",
"60cc7e88-f27a-4608-9152-06ca3704de2a",
"d6b49430-02b5-41fa-95b1-47d8574f2df8",
...
]
},
{
"assetTypeId": 1,
"idList": [
"510f4d1b-986d-444b-9d38-61454ffe898b",
"d9200020-672a-4f11-b1f9-ce327262470a",
...
]
},
{
"assetTypeId": 2,
"idList": [
"26b2219f-43b7-4c48-b05f-77312da9075f",
...
]
},
{
"assetTypeId": 3,
"idList": [
"e7c8511c-dda2-4812-9ddb-03a8674ce085",
...
]
},
{
"assetTypeId": 4,
"idList": [
"e47f074e-92e7-4c73-88e9-238bd8fd9116",
...
]
},
{
"assetTypeId": 5,
"idList": [
"eafa135e-b529-45ae-b9d5-8f5c1ec45731",
...
]
},
{
"assetTypeId": 6,
"idList": [
"f6bad097-a340-4fe8-b90e-9676c577cfeb",
...
]
}
]
}
「 👆 assetTypeId
別の UUIDのリストかな」
「 assetTypeId
が 0 ~ 6 しか無いということは、アセットって 6種類しかないの?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Character
└── 📂 JSON
👉 └── 📄 characterActor.json
Dammy:
[
{
"basic": {
"classId": "39450ee1-598b-4a2e-b249-b615cd2a2ea5",
"initialLevel": 1,
"maxLevel": 99,
"memo": "",
"name": "Craft",
"profile": "A young boy hailing from the Frontier Town, Starterton. He dreams of becoming a Royal Knight in the Capital.",
"secondName": ""
},
"charaType": 1,
"element": 0,
"equips": [
{
"type": "48254f68-178f-448e-98fd-60a0bb616a28",
"value": "661cb624-e856-494e-94b8-0e41064e90b0"
},
{
"type": "7832ae68-aecc-4724-8765-e8e04e3cb64f",
"value": ""
},
{
"type": "312419fb-bc20-44b4-bb2b-0c28c7c3a987",
"value": ""
},
{
"type": "c557c358-d63e-4992-b7a2-f8dadd9eeb71",
"value": "2f1bced4-122a-4ee2-98fa-bd80f381036d"
},
{
"type": "5ae4faaf-5561-4420-9eb6-81b6b1d3eeb4",
"value": ""
}
],
"image": {
"adv": "charaupperbody_001_Actor",
"battler": "e7c8511c-dda2-4812-9ddb-03a8674ce085",
"character": "78a965c8-7400-432e-a17f-93432f6b9ff5",
"face": "charaface_001_Actor"
},
"initialLevel": 1,
"maxLevel": 99,
"name": "クラフト",
"nickname": "",
"profile": "",
"traits": [
],
"uuId": "a8230358-b349-4687-aaf9-e3ccb8d55479"
},
...
]
「 👆 "name": "Craft",
というのを見ると、
サンプル・ゲームの主人公の Craft
のプロフィールだと思うぜ」
「 じゃあ Character Profiles.json*
みたいな名前にしてほしい」
「 👆 "profile"
が英語で 記録されているのが気になる。
固定のテキストには 文字列リソースId を振って、
ローカライズしたファイルを切り替えれば 英語でも 日本語でも 読めるように作っておかないと
ゲームの途中で 英語から日本語に変えようと思ったら、
ファイルの該当箇所 全部アップデートしなくちゃいけないぜ?」
「 上の方の profile
は英語で書かれているが、下の方の profile
は空だぜ」
「 う~ん、なんで日本語のプロフィールが入ってないんだぜ?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Character
└── 📂 JSON
👉 └── 📄 class.json
Dammy:
[
{
"abilityAdd": {
"criticalRate": -1,
"evasionRate": -1,
"hitRate": -1
},
"abilityScore": {
"attack": {
"enabled": 0,
"growType": 0,
"paramMax": 2250,
"paramOne": 102,
"paramPeakLv": 60
},
"defense": {
"enabled": 0,
"growType": 0,
"paramMax": 1380,
"paramOne": 63,
"paramPeakLv": 60
},
"luck": {
"enabled": 0,
"growType": 0,
"paramMax": 770,
"paramOne": 35,
"paramPeakLv": 60
},
"magicAttack": {
"enabled": 0,
"growType": 0,
"paramMax": 985,
"paramOne": 45,
"paramPeakLv": 60
},
"magicDefense": {
"enabled": 0,
"growType": 0,
"paramMax": 1000,
"paramOne": 50,
"paramPeakLv": 60
},
"maxHp": {
"enabled": 0,
"growType": 0,
"paramMax": 4250,
"paramOne": 235,
"paramPeakLv": 60
},
"maxMp": {
"enabled": 0,
"growType": 0,
"paramMax": 900,
"paramOne": 54,
"paramPeakLv": 60
},
"speed": {
"enabled": 0,
"growType": 0,
"paramMax": 1420,
"paramOne": 64,
"paramPeakLv": 60
}
},
"abilitySp": {
"targetedRate": 100
},
"armorTypes": [
"1",
"5d44ec7b-6494-4e4c-b18f-b552a8500fd6",
"c01b25d3-bdb5-4c23-a375-dcfdc05abad6",
"1bd115d3-72d1-40d6-a6c8-aa8d49c0d594"
],
"autoGuide": {
"attack": 8,
"defense": 6,
"luck": 5,
"magicAttack": 4,
"magicDefense": 4,
"maxHp": 2,
"maxMp": 0,
"speed": 3
},
"baseHpMaxValue": 5000,
"basic": {
"abilityEnabled": {
"luck": 1,
"magicAttack": 1,
"magicDefense": 1,
"mp": 1,
"speed": 1,
"tp": 1
},
"expMax": -1,
"hpMax": -1,
"id": "ce89f973-6ed6-41fc-99d7-e3ca5fc1ce8c",
"level": {
"levelGameClear": -1,
"levelMax": 99
},
"maxLevel": -1,
"name": "Hero"
},
"clearLevel": 60,
"element": "0",
"expGainIncreaseValue": 1000000,
"expScore": {
"growType": 10,
"increaseValueA": 10,
"increaseValueB": 10
},
"id": "39450ee1-598b-4a2e-b249-b615cd2a2ea5",
"maxLevel": 99,
"parameter": {
"attack": [
0,
102,
...
],
"defense": [
0,
63,
...
],
"luck": [
0,
35,
...
],
"magicAttack": [
0,
45,
...
],
"magicDefense": [
0,
50,
...
],
"maxHp": [
0,
235,
...
],
"maxMp": [
0,
54,
...
],
"speed": [
0,
64,
...
]
},
"skillTypes": [
{
"level": 2,
"skillId": "cbc13df7-48ab-4d6c-a562-72a852dc53a4"
},
...
],
"traits": [
{
"categoryId": 2,
"effectId": 0,
"traitsId": 2,
"value": 1000
},
...
],
"weaponTypes": [
"94e410c8-ecd3-4c9e-a844-c978fc6e21f2",
"fe2c539e-10df-4d32-8103-b06ee37a157d",
"bf7300f0-c155-492d-a171-6325d2677819"
]
},
...
]
「 👆 でかいファイルで、このレベルのとき、ステータスはこうなる、みたいな設定だと思う」
「 じゃあ Level Up Tables.json*
みたいな名前にしてほしい」
「 ステータスは ハードコーディング されてるのかだぜ?
食欲 というステータスを増やしたかったら、ソースコードから改造するしかないのかだぜ?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Character
└── 📂 JSON
👉 └── 📄 enemy.json ※ソース不明、要調査
Dammy:
[
{
"actions": [
{
"conditionParam1": 0,
"conditionParam2": 0,
"conditionType": 0,
"rating": 5,
"skillId": "1"
}
],
"autoGuide": {
"attackTurn": 5.0,
"guardTurn": 2.0,
"level": 2,
"magicGuardSetting": 0,
"magicPowerSetting": 0
},
"battlerHue": 0,
"deleted": 0,
"dropItems": [
{
"dataId": "cd8fab08-5b93-4d99-afb2-1ce3c114b68e",
"denominator": 8,
"kind": 1
},
...
],
"elements": [
2
],
"exp": 4,
"gold": 149,
"id": "0b783c13-a4df-4876-88c5-82604c677501",
"images": {
"autofit": 1,
"autofitPattern": 0,
"battleAlignment": 1,
"high": 0,
"image": "039_enemy_Goblin_01",
"scale": 80,
"wide": 0
},
"level": 1,
"memo": "",
"name": "Goblin",
"param": [
125,
0,
...
],
"traits": [
{
"categoryId": 2,
"effectId": 0,
"traitsId": 2,
"value": 950
},
...
]
},
...
]
「 👆 ソースコードで使っているか分からないが、フォルダーに入っていたファイルだぜ。
戦闘に出てくる敵のデータではないだろうか?」
「 画面上の位置とか、倒したときの 取得経験値や ドロップ・アイテムを
設定するんじゃないか?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Character
└── 📂 JSON
👉 └── 📄 troop.json ※ソース不明、要調査
Dammy:
[
{
"backImage1": "battlebacks1_nature_008",
"backImage2": "battlebacks2_nature_008",
"battleEventId": "0",
"deleted": 0,
"frontViewMembers": [
{
"appearanceTurn": 0,
"conditions": 0,
"enemyId": "0b783c13-a4df-4876-88c5-82604c677501",
"position": 1
}
],
"id": "8e5f99c4-70cb-4772-b4c8-6e00adac6ba1",
"name": "Goblin",
"sideViewMembers": [
{
"appearanceTurn": 0,
"conditions": 0,
"enemyId": "0b783c13-a4df-4876-88c5-82604c677501",
"position1": 0,
"position2": 1
}
]
},
...
]
「 👆 ソースコードで使っているか分からないが、フォルダーに入っていたファイルだぜ。
戦闘画面の背景とか、敵配置の設定データではないだろうか?」
「 リソース管理という観点では、背景画像のファイル名ではなく、
画像は Id で指定するといいと思うのよね」
「 リレーショナル・データベースの知見 全然 採用されてないんで」
「 敵データを 1万件 作ることもないだろ。
enemyId` に UUID を使っているが、そんな精度の高いもの ここで なぜ使う? int型で十分では?」
「 知らね。リレーショナル・データベースの知見が 無いからなんじゃないか?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Character
└── 📂 JSON
👉 └── 📄 vehicles.json
Dammy:
[
{
"bgm": {
"name": "U_Ship_01",
"pan": 0,
"pitch": 100,
"volume": 90
},
"id": "1",
"images": "e98773c9-6bcf-4687-880a-0589cc5c3d8c",
"initialPos": [
0,
0,
0
],
"mapId": "",
"moveTags": [
1,
0,
0,
0,
0
],
"name": "Boat",
"speed": 40
},
...
]
「 👆 船に乗ってるときのBGMとか、
船が最初に置いてある場所とか 設定するのかな?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Encounter
└── 📂 JSON
👉 └── 📄 encounter.json
Dammy:
[
{
"backImage1": "",
"backImage2": "",
"bgm": {
"name": "",
"pan": 0,
"pitch": 100,
"volume": 90
},
"deleted": 0,
"enabled": 1,
"enemyList": [
],
"enemyMax": 1,
"lowestHighestLevel": 1,
"mapId": "8a1d06ec-2133-4cce-b60c-e9ddb63dc0db",
"minimumAssumedLevel": 1,
"name": "#0006",
"region": 0,
"step": 30,
"troopList": [
{
"troopId": "8db87180-464d-41e2-92be-919ea6eb6e36",
"weight": 60
},
...
],
"troopPer": 1
},
...
]
「 👆 どのマップでは、どの トループ と遭遇するかといった設定じゃないか?」
「 backImage1
とか、トループの方の設定じゃないの?
遭遇で設定して どっちが戦闘の背景になんの?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Event
└── 📂 JSON
└── 📂 Event
👉 └── 📄 00c9f537-ca39-46da-bc69-a7f1b67dcedb-0.json
Dammy:
{
"eventCommands": [
{
"code": 241,
"indent": 0,
"parameters": [
"U_Theme_02.wav",
"90",
"100",
"0"
],
"route": [
]
},
{
"code": 223,
"indent": 0,
"parameters": [
"0",
"0",
"0",
"0",
"60",
"1",
"0"
],
"route": [
]
},
{
"code": 101,
"indent": 0,
"parameters": [
"0",
"0",
"0",
"1",
"1",
"2",
"",
"",
"",
"1",
"1",
"0",
"0",
"-1",
"",
"",
"",
"",
""
],
"route": [
]
},
{
"code": 401,
"indent": 1,
"parameters": [
"And so Craft and his friends set out\non their journey, bearing the king's\nsecret orders!\nNow, the story of this adventure is\nyours to make!",
"0"
],
"route": [
]
},
{
"code": 354,
"indent": 0,
"parameters": [
],
"route": [
]
},
{
"code": 0,
"indent": 0,
"parameters": [
],
"route": [
]
}
],
"id": "00c9f537-ca39-46da-bc69-a7f1b67dcedb",
"page": 0,
"type": 0
}
「 👆 シーケンスに並んだ関数のリストだぜ。
多分、マップのイベントのプログラムみたいなやつに対応してると思うぜ」
「 C# スクリプトを直接 読み書きした方が 話しは早くないか?」
「 RMUのコードを綺麗に書き直しても ダメで、
アーキテクチャーを設計し直した上で 作り直した方がいいのよ」
「 開発に 予算 回さなかったんじゃないか?
ファイルの読み書きができます、レベルの人しか 受け手が いなかったとか」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Event
└── 📂 JSON
👉 └── 📄 eventBattle.json
Dammy:
[
{
"eventId": "b4a4ea3d-aa44-4f6b-9139-ea31e26cf6ca",
"pages": [
{
"condition": {
"actorHp": {
"actorId": "a8230358-b349-4687-aaf9-e3ccb8d55479",
"enabled": 0,
"value": 0
},
"enemyHp": {
"enabled": 1,
"enemyId": "0",
"value": 50
},
"run": 0,
"span": 0,
"switchData": {
"enabled": 0,
"switchId": ""
},
"turn": {
"enabled": 0,
"end": 0,
"start": 0
},
"turnEnd": 0
},
"eventId": "9ca94411-2ae2-43b3-8dde-7f953c6778d7",
"page": 0
},
...
]
},
...
]
「 👆 敵のHPとかあるし、
負けイベントとか、そういう戦闘イベントじゃないかな」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Event
└── 📂 JSON
👉 └── 📄 eventCommon.json
Dammy:
[
{
"conditions": [
{
"trigger": 0,
"switchId": "d1d4f32a-c00d-4783-8cbd-63c0f8584a28"
}
],
"eventId": "d8e2bbf4-5155-4181-a32a-332eed2c581a",
"name": "Church Resurrection"
},
...
]
「 👆 何かの条件を満たしたときに、
何かのイベントが発動するような、設定だろうか? 分からんな」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Event
└── 📂 JSON
👉 └── 📄 eventMap.json
Dammy:
[
{
"eventId": "5dc8a1ed-165e-4bb3-9bb2-9395d3a4b1f1",
"mapId": "00146731-7002-48e1-8f11-4fd0e75ebd5c",
"name": "Hero's Bed",
"note": "",
"pages": [
{
"chapterId": "",
"condition": {
"actor": {
"actorId": "",
"enabled": 0
},
"image": {
"enabled": 1,
"imageName": ""
},
"item": {
"enabled": 0,
"itemId": ""
},
"selfSwitch": {
"enabled": 0,
"selfSwitch": ""
},
"switchItem": {
"enabled": 0,
"switchItemId": ""
},
"switchOne": {
"enabled": 0,
"switchId": ""
},
"switchTwo": {
"enabled": 0,
"switchId": ""
},
"variables": {
"enabled": 0,
"value": 0,
"variableId": ""
}
},
"eventTrigger": 0,
"image": {
"direction": 0,
"faceName": "",
"name": "",
"pictureName": "",
"sdName": ""
},
"move": {
"frequency": 2,
"moveType": 0,
"repeat": 0,
"route": [
],
"skip": 0,
"speed": 3
},
"page": 0,
"priority": 1,
"sectionId": "",
"walk": {
"direction": 4,
"directionFix": 1,
"stepping": 1,
"through": 1,
"walking": 1
}
}
],
"temporaryErase": 0,
"x": 12,
"y": -5
},
...
]
「 👆 このファイル、2 Mega Bytes あるんだけど」
「 他のファイルを分割するより、このファイルを分割するべきよね」
「 ベッドの前で 決定ボタンを押すと 寝る、みたいな やつかだぜ?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Flags
└── 📂 JSON
👉 └── 📄 flags.json
Dammy:
{
"switches": [
{
"events": [
],
"id": "caa9981e-f67a-49cd-a381-a5352fce02ec",
"name": ""
},
...
],
"variables": [
{
"events": [
],
"id": "13108098-3aaf-4935-8d44-130f7c7e1c07",
"name": ""
},
...
]
}
「 👆 switches
のリストと、 variables
のリストの2つが入ってるぜ。
2つしか無いんだったら ファイルを分けたらどうだぜ?」
「 JSON形式を止めて CSV形式にして
Idをキーにした キー・バリュー型のデータベースに入れた方が よくない?」
「 もっと 根本的に 作り直した方がいいだろうから リファクタリングしたところで 無駄になる可能性が大だぜ」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Initializations
└── 📂 JSON
👉 └── 📄 armor.json
Dammy:
[
{
"basic": {
"animationId": "",
"armorTypeId": "5d44ec7b-6494-4e4c-b18f-b552a8500fd6",
"canSell": 0,
"description": "[Light] A vest crafted out of animal hide.",
"equipmentTypeId": "c557c358-d63e-4992-b7a2-f8dadd9eeb71",
"iconId": "IconSet_135",
"id": "261f4871-4cf2-4aeb-94cb-87821c1534f8",
"name": "Leather Vest",
"price": 220,
"sell": 132,
"switchItem": 0
},
"memo": "",
"parameters": [
3,
0,
0,
39,
0,
0,
0,
0,
0
],
"traits": [
{
"categoryId": 2,
"effectId": 1,
"traitsId": 2,
"value": 0
}
]
},
...
}
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Initializations
└── 📂 JSON
👉 └── 📄 autoGuide.json
Dammy:
[
{
"id": "",
"baseParameterRatio": [
{
"maxHp": 1.0,
"maxMp": 0.6000000238418579,
"attack": 0.0625,
"defense": 0.04500000178813934,
"magicAttack": 0.05000000074505806,
"magicDefense": 0.03999999910593033,
"speed": 0.05000000074505806,
"luck": 0.029999999329447748
}
],
"weaponRatio": [
{
"maxHp": 0.0,
"maxMp": 0.0,
"attack": 0.6000000238418579,
"defense": 0.0,
"magicAttack": 0.0,
"magicDefense": 0.0,
"speed": 0.0,
"luck": 0.0
}
],
"armorRatio": [
{
"maxHp": 0.0,
"maxMp": 0.0,
"attack": 0.0,
"defense": 0.4000000059604645,
"magicAttack": 0.0,
"magicDefense": 0.0,
"speed": 0.0,
"luck": 0.0
}
],
"delete": 0
}
]
「 👆 武器の性能とか レベルアップのステータスの成長曲線とか 自動的に計算してくれるやつじゃないかなあ?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Initializations
└── 📂 JSON
👉 └── 📄 autoGuide.json
Dammy:
[
{
"damage": {
"magicAttack": {
"aMag": 0.3499999940395355,
"bMag": 0.6000000238418579,
"cDmg": 10.0
},
"normalAttack": {
"aMag": 1.0,
"bMag": 1.0
},
"specialAttack": {
"aMag": 2.0,
"bMag": 0.0,
"cDmg": 30.0
}
},
"id": ""
}
]
「 👆 スキルの何かだと思うんだが、ファイルが小さすぎるぜ」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Initializations
└── 📂 JSON
👉 └── 📄 skillCustom.json
Dammy:
[
{
"basic": {
"assumptionLevel": 0,
"canUseTiming": 1,
"costMp": 0,
"costTp": 0,
"description": "",
"id": "1",
"message": "%1 attacks!",
"name": "Attack",
"requiredWTypeId1": 0,
"requiredWTypeId2": 0,
"skillType": 0,
"iconId": "IconSet_076"
},
"memo": "Skill #1 corresponds to the Attack command.",
"targetEffect": {
"activate": {
"animationId": "111419c2-2152-4b18-901d-4465c6771d4f",
"continuousNumber": 1,
"correctionSpeed": 0,
"hitType": 0,
"successRate": 100
},
"damage": {
"attackType": 0,
"autoguide": {
"aMag": 0.0,
"bMag": 0.0,
"calc": "",
"critical": 0,
"distribute": 0,
"distributeEnabled": 0,
"fix": 0.0,
"level": 1,
"max": 0.0,
"min": 0.0,
"mp": 0,
"targetRange": 0
},
"autoguideEnabled": 0,
"critical": 1,
"damageType": 1,
"distribute": 20,
"distributeEnabled": 1,
"elements": [
1
],
"max": 0,
"maxEnabled": 0,
"min": 0,
"minEnabled": 0,
"value": "a.atk * 2 - b.def * 2"
},
"heal": {
"hp": {
"calc": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 1,
"max": 0,
"maxEnabled": 0,
"value": ""
},
"enabled": 0,
"fix": {
"enabled": 0,
"value": 0
},
"perMax": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 0,
"max": 0,
"maxEnabled": 0,
"value": 0
}
},
"mp": {
"calc": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 1,
"max": 0,
"maxEnabled": 0,
"value": ""
},
"enabled": 0,
"fix": {
"enabled": 0,
"value": 0
},
"perMax": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 0,
"max": 0,
"maxEnabled": 0,
"value": 0
}
},
"tp": {
"calc": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 1,
"max": 0,
"maxEnabled": 0,
"value": ""
},
"enabled": 0,
"fix": {
"enabled": 0,
"value": 0
},
"perMax": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 0,
"max": 0,
"maxEnabled": 0,
"value": 0
}
}
},
"otherEffects": [
],
"randomNumber": 0,
"targetRange": 0,
"targetStatus": 0,
"targetTeam": 1,
"targetUser": 0
},
"userEffect": {
"activate": {
"animationId": "",
"continuousNumber": 0,
"correctionSpeed": 100,
"hitType": 0,
"successRate": 100
},
"damage": {
"attackType": 0,
"autoguide": {
"aMag": 0.0,
"bMag": 0.0,
"calc": "",
"critical": 0,
"distribute": 0,
"distributeEnabled": 0,
"fix": 0.0,
"level": 1,
"max": 0.0,
"min": 0.0,
"mp": 0,
"targetRange": 0
},
"autoguideEnabled": 0,
"critical": 0,
"damageType": 1,
"distribute": 0,
"distributeEnabled": 0,
"elements": [
1
],
"max": 100,
"maxEnabled": 0,
"min": 0,
"minEnabled": 0,
"value": "0"
},
"getTp": 5,
"heal": {
"hp": {
"calc": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 1,
"max": 0,
"maxEnabled": 0,
"value": ""
},
"enabled": 0,
"fix": {
"enabled": 0,
"value": 0
},
"perMax": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 0,
"max": 0,
"maxEnabled": 0,
"value": 0
}
},
"mp": {
"calc": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 1,
"max": 0,
"maxEnabled": 0,
"value": ""
},
"enabled": 0,
"fix": {
"enabled": 0,
"value": 0
},
"perMax": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 0,
"max": 0,
"maxEnabled": 0,
"value": 0
}
},
"tp": {
"calc": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 1,
"max": 0,
"maxEnabled": 0,
"value": ""
},
"enabled": 0,
"fix": {
"enabled": 0,
"value": 0
},
"perMax": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 0,
"max": 0,
"maxEnabled": 0,
"value": 0
}
}
},
"otherEffects": [
],
"randomNumber": 0,
"targetRange": 0,
"targetStatus": 0,
"targetTeam": 0
}
},
...
]
「 👆 スキル・カスタムという名前からは想像付かないが、
何だろうな?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Initializations
└── 📂 JSON
👉 └── 📄 state.json
Dammy:
[
{
"autoRemovalTiming": 0,
"iconId": "IconSet_001",
"id": "8fd93d41-fb58-401b-8d6b-f7d5396d3fec",
"inBattleRemoveDamage": 0,
"inBattleRemoveProbability": 0,
"inBattleRemoveRestriction": 0,
"maxTurns": 0,
"message1": "%1 collapsed!",
"message2": "%1 was defeated!",
"message3": "",
"message4": "%1 was revived!",
"minTurns": 0,
"motion": 3,
"name": "Dead",
"note": "State No. 1 is applied when an actor or enemy's HP hits 0.",
"occurrenceFrequencyStep": 0,
"overlay": "",
"priority": 100,
"removeAtBattleEnd": 0,
"removeAtBattling": 0,
"removeByDamage": 0,
"removeByRestriction": 0,
"removeByWalking": 0,
"removeProbability": 0,
"restriction": 4,
"stateOn": 2,
"stepGeneration": 0,
"stepsToRemove": 0,
"traits": [
{
"categoryId": 2,
"effectId": 9,
"traitsId": 3,
"value": 0
}
]
},
...
]
「 👆 戦闘中の強化や弱体化の状態かな? 睡眠とか、毒とか……。
知らんけど」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Initializations
└── 📂 JSON
👉 └── 📄 stateTest.json
Dammy:
[
{
"id": 1,
"iconId": 1,
"priority": 100,
"motion": 3,
"overlay": 0,
"stateOn": 1,
"restriction": 4,
"name": "Test",
"note": "State #1 will be automatically added when\nHP reaches 0.",
"autoRemovalTiming": 0,
"removeAtBattleEnd": 0,
"maxTurns": 1,
"minTurns": 1,
"removeByDamage": 0,
"removeByRestriction": 0,
"removeByWalking": 0,
"stepsToRemove": 100,
"traits": {
"categoryId": 0,
"traitsId": 0,
"effectId": 0,
"value": 0
},
"message1": " has fallen!",
"message2": " is slain!",
"message3": "",
"message4": " revives!"
}
]
「 👆 Unity Editor でテストするのか、 Visual Studio でテストするのか、
知らんけど」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Initializations
└── 📂 JSON
👉 └── 📄 system.json
Dammy:
{
"armorTypes": [
{
"delete": 0,
"id": "1",
"name": "General Armor"
},
...
],
"battleScene": {
"frontEnemyPositionY": 670,
"frontMiddleStartFlag": 1,
"sideActorSpace": 2,
"sideEnemyInclined": 10,
"sidePartyInclined": -5,
"sidePartyPosition": [
1400,
450
],
"viewType": 1
},
"bgm": {
"battleBgm": {
"name": "U_Battle_01.wav",
"pan": 0,
"pitch": 100,
"volume": 90
},
"defeatMe": {
"name": "Gameover1",
"pan": 0,
"pitch": 100,
"volume": 90
},
"gameOverMe": {
"name": "Gameover1",
"pan": 0,
"pitch": 100,
"volume": 90
},
"title": {
"name": "U_Theme_01.wav",
"pan": 0,
"pitch": 100,
"volume": 90
},
"victoryMe": {
"name": "Victory1.ogg",
"pan": 0,
"pitch": 100,
"volume": 90
}
},
"displaySize": 0,
"DisplaySize": [
{
"x": 1920,
"y": 1080
},
{
"x": 1280,
"y": 720
}
],
"elements": [
{
"advantageous": [],
"delete": 0,
"disadvantage": [],
"icon": "",
"id": "6dd648fd-fe18-4003-8927-bb6d7e88c755",
"sameElement": 0,
"value": "None"
},
...
],
"equipTypes": [
{
"delete": 0,
"id": "48254f68-178f-448e-98fd-60a0bb616a28",
"name": "Weapon"
},
...
],
"initialParty": {
"party": [
"a8230358-b349-4687-aaf9-e3ccb8d55479"
],
"partyMax": 1,
"startMap": {
"mapId": "227cd9d6-e13b-4a86-80b3-bdd6d67ba0d9",
"position": [
6,
-5
]
}
},
"isController": 0,
"optionSetting": {
"enabledAutoSave": 0,
"locale": "",
"optDisplayTp": 0,
"optExtraExp": 0,
"optFloorDeath": 0,
"optFollowers": 1,
"optSlipDeath": 0,
"optTransparent": 0,
"showKeyItemNum": 0,
"windowTone": []
},
"skillTypes": [
{
"delete": 0,
"id": "7955b088-df05-461c-b2e3-7d9dfc3941f6",
"motion": 0,
"value": "None"
},
...
],
"soundSetting": {
"actorDamage": {
"name": "Damage5",
"pan": 0,
"pitch": 100,
"volume": 90
},
...
},
"uiPatternId": "4",
"weaponTypes": [
{
"delete": 0,
"id": "57d8fa5d-f169-47e1-8bb1-4241de04756b",
"image": "c9b1d31b-72bb-45d6-a771-1119f4325c5b",
"motionId": 0,
"value": "Unarmed (Nothing)"
},
...
]
}
「 👆 system.json
という名前のファイルに 入れるのが適切なのか 分からない雑多な設定とか 入ってる。
メニュー・システム、 戦闘システム とかいうつもりで 何でもかんでも 放り込んだのかもしらん 」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Initializations
└── 📂 JSON
👉 └── 📄 title.json
Dammy:
{
"bgm": {
"name": "Title1",
"pan": 0,
"pitch": 100,
"volume": 900
},
"gameTitle": "Unite Quest",
"gameTitleCommon": {
"gameTitleType": 1,
"position": [
960,
320
]
},
"gameTitleImage": {
"image": "",
"scale": 100.0
},
"gameTitleText": {
"color": [
255,
255,
255
],
"font": "mplus-1m-regular",
"size": 150
},
"note": "",
"startMenu": {
"menuContinue": {
"enabled": true,
"value": "Continue"
},
"menuFontSetting": {
"color": [
255,
255,
255
],
"font": "mplus-1m-regular",
"size": 45
},
"menuNewGame": {
"enabled": true,
"value": "New Game"
},
"menuOption": {
"enabled": true,
"value": "Options"
},
"menuUiSetting": {
"color": [
],
"frame": "",
"position": [
960,
680,
0
],
"scale": 1.850000023841858,
"window": ""
}
},
"titleBackgroundImage": "titleBG_004",
"titleFront": {
"image": "titleFlame_001",
"position": [
960,
540
],
"scale": 100.0
}
}
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Initializations
└── 📂 JSON
👉 └── 📄 weapon.json
Dammy:
[
{
"basic": {
"animationId": "3f2d2acb-5b0e-44e1-9808-3e5eacf6f74d",
"canSell": 0,
"description": "[Sword] A light and wieldy sword with a short blade.",
"equipmentTypeId": "48254f68-178f-448e-98fd-60a0bb616a28",
"iconId": "IconSet_097",
"id": "661cb624-e856-494e-94b8-0e41064e90b0",
"name": "Shortsword",
"price": 280,
"sell": 168,
"switchItem": 0,
"weaponTypeId": "94e410c8-ecd3-4c9e-a844-c978fc6e21f2"
},
"memo": "",
"parameters": [
1,
0,
56,
0,
0,
0,
0,
0,
0
],
"traits": [
{
"categoryId": 3,
"effectId": 2,
"traitsId": 1,
"value": 0
},
{
"categoryId": 2,
"effectId": 0,
"traitsId": 2,
"value": 0
}
]
},
...
]
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Initializations
└── 📂 JSON
👉 └── 📄 weaponTest.json
Dammy:
[
{
"basic": {
"id": 1,
"name": "",
"description": "",
"equipmentTypeId": 1,
"weaponTypeId": 2,
"price": 500,
"sell": 50,
"canSell": 1,
"switchItem": 1
},
"parameters": [
0,
0
],
"traits": {
"physics": 1,
"hitRate": 100
},
"memo": "",
"deleted": 0
}
]
「 📂 Initializations
というフォルダー名が間違っていて、
📂 views
ぐらいの名前の方が 合ってんじゃないの?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Item
└── 📂 JSON
👉 └── 📄 item.json
Dammy:
[
{
"basic": {
"canSell": 1,
"canUseTiming": 3,
"consumable": 1,
"description": "0",
"iconId": "IconSet_000",
"id": "db56b1eb-5c6e-42a3-915f-c2ec4d9c7290",
"itemType": 0,
"name": "-----Reserve",
"price": 0,
"sell": 0,
"switchItem": 1
},
"memo": "",
"targetEffect": {
"activate": {
"animationId": "0",
"continuousNumber": 0,
"correctionSpeed": 0,
"getTp": 0,
"hitType": -1,
"successRate": 0
},
"damage": {
"critical": 0,
"damageType": 0,
"distribute": 0,
"distributeEnabled": 0,
"elements": [
],
"max": 0,
"maxEnabled": 0,
"min": 0,
"minEnabled": 0,
"value": ""
},
"heal": {
"hp": {
"calc": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 1,
"max": 0,
"maxEnabled": 0,
"value": "0"
},
"enabled": 0,
"fix": {
"enabled": 0,
"value": 0
},
"perMax": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 0,
"max": 0,
"maxEnabled": 0,
"value": 0
}
},
"mp": {
"(※翻訳者追記)", "上の hp と同様の項目名が並ぶ"
},
"tp": {
"(※翻訳者追記)", "上の hp と同様の項目名が並ぶ"
}
},
"otherEffects": [
],
"randomNumber": 0,
"targetRange": 0,
"targetStatus": 0,
"targetTeam": 0,
"targetUser": 0
},
"userEffect": {
"activate": {
"animationId": "",
"continuousNumber": 0,
"correctionSpeed": 0,
"getTp": 0,
"hitType": 0,
"successRate": 0
},
"damage": {
"critical": 0,
"damageType": 0,
"distribute": 0,
"distributeEnabled": 0,
"elements": [
],
"max": 0,
"maxEnabled": 0,
"min": 0,
"minEnabled": 0,
"value": ""
},
"heal": {
"hp": {
"calc": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 1,
"max": 0,
"maxEnabled": 0,
"value": ""
},
"enabled": 0,
"fix": {
"enabled": 0,
"value": 0
},
"perMax": {
"distribute": 0,
"distributeEnabled": 0,
"enabled": 0,
"max": 0,
"maxEnabled": 0,
"value": 0
}
},
"mp": {
"(※翻訳者追記)", "上の hp と同様の項目名が並ぶ"
},
"tp": {
"(※翻訳者追記)", "上の hp と同様の項目名が並ぶ"
}
},
"otherEffects": [
],
"randomNumber": 0,
"targetRange": 0,
"targetStatus": 0,
"targetTeam": 0,
"targetUser": 0
}
},
...
]
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Map
└── 📂 JSON
└── 📂 Map
👉 └── 📄 00b34276-2c8a-4599-b325-4bc607ba5f5e.json
Dammy:
{
"mapId": "00b34276-2c8a-4599-b325-4bc607ba5f5e",
"index": 54,
"displayName": "",
"name": "0040111_Limitana_Home 3",
"width": 21,
"height": 18,
"deleted": 0,
"encounter": [
],
"layers": [
{
"type": "DistantView",
"tileIdsOnPalette": [
]
},
{
"type": "Background",
"tileIdsOnPalette": [
]
},
{
"type": "BackgroundCollision",
"tileIdsOnPalette": [
"063744d8-c66f-4aca-9512-b2cccbe3abd7",
"292fbe51-1ca2-4d26-8e5a-de652b1248ba",
...
]
},
{
"type": "A",
"tileIdsOnPalette": [
]
},
{
"type": "A_Effect",
"tileIdsOnPalette": [
]
},
{
"type": "B",
"tileIdsOnPalette": [
]
},
{
"type": "B_Effect",
"tileIdsOnPalette": [
]
},
{
"type": "Shadow",
"tileIdsOnPalette": [
]
},
{
"type": "C",
"tileIdsOnPalette": [
]
},
{
"type": "C_Effect",
"tileIdsOnPalette": [
]
},
{
"type": "D",
"tileIdsOnPalette": [
]
},
{
"type": "D_Effect",
"tileIdsOnPalette": [
]
},
{
"type": "ForRoute",
"tileIdsOnPalette": [
]
},
{
"type": "Region",
"tileIdsOnPalette": [
]
}
],
"scrollType": 0,
"autoPlayBGM": false,
"bgmID": "",
"bgmState": {
"pan": 0,
"pitch": 100,
"volume": 90
},
"autoPlayBgs": false,
"bgsID": "",
"bgsState": {
"pan": 0,
"pitch": 100,
"volume": 90
},
"forbidDash": false,
"background": {
"imageName": "",
"imageZoomIndex": 0,
"showInEditor": true
},
"Parallax": {
"loopX": false,
"loopY": false,
"name": "",
"show": true,
"sx": 0,
"sy": 0,
"zoom0": true,
"zoom2": false,
"zoom4": false
},
"memo": ""
}
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Map
└── 📂 JSON
└── 📂 MapSample
👉 └── 📄 0e73b46a-fbef-4cb7-b56a-b3aade29a47a.json
Dammy:
{
"mapId": "0e73b46a-fbef-4cb7-b56a-b3aade29a47a",
"index": 43,
"displayName": "",
"name": "GrasslandRuins",
"width": 26,
"height": 25,
"deleted": 0,
"encounter": [
],
"layers": [
{
"type": "DistantView",
"tileIdsOnPalette": [
]
},
{
"type": "Background",
"tileIdsOnPalette": [
]
},
{
"type": "BackgroundCollision",
"tileIdsOnPalette": [
]
},
{
"type": "A",
"tileIdsOnPalette": [
]
},
{
"type": "A_Effect",
"tileIdsOnPalette": [
]
},
{
"type": "B",
"tileIdsOnPalette": [
]
},
{
"type": "B_Effect",
"tileIdsOnPalette": [
]
},
{
"type": "Shadow",
"tileIdsOnPalette": [
]
},
{
"type": "C",
"tileIdsOnPalette": [
]
},
{
"type": "C_Effect",
"tileIdsOnPalette": [
]
},
{
"type": "D",
"tileIdsOnPalette": [
]
},
{
"type": "D_Effect",
"tileIdsOnPalette": [
]
},
{
"type": "ForRoute",
"tileIdsOnPalette": [
]
},
{
"type": "Region",
"tileIdsOnPalette": [
]
}
],
"scrollType": 0,
"autoPlayBGM": false,
"bgmID": "",
"bgmState": {
"pan": 0,
"pitch": 100,
"volume": 90
},
"autoPlayBgs": false,
"bgsID": "",
"bgsState": {
"pan": 0,
"pitch": 100,
"volume": 90
},
"forbidDash": false,
"background": {
"imageName": "",
"imageZoomIndex": 0,
"showInEditor": true
},
"Parallax": {
"loopX": false,
"loopY": false,
"name": "",
"show": true,
"sx": 0,
"sy": 0,
"zoom0": true,
"zoom2": false,
"zoom4": false
},
"memo": ""
}
「 👆 さっきの 📂 Map
フォルダーにも似たようなファイルが合った。ファイル名は違う」
「 📂 Map
フォルダーと、 📂 MapSample
フォルダーが 何で分かれてんの?
サンプルを入れたのなら、📂 Map
フォルダーを上書きすりゃ いいんじゃないの?」
「 サンプル・ゲーム用のハード・コーディングがあるのは 確認しているが……、
サンプル・ゲームは 本来のゲームではできない動きができるように 何かやってるのでは?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Map
└── 📂 JSON
👉 └── 📄 tileAssets.json
Dammy:
[
"Assets/RPGMaker/Storage/Map/TileAssets\\0006181c-b598-4d7c-8ebe-0195235c429f.asset",
"Assets/RPGMaker/Storage/Map/TileAssets\\0006181c-b598-4d7c-8ebe-0195235c429f.asset.meta",
"Assets/RPGMaker/Storage/Map/TileAssets\\0006181c-b598-4d7c-8ebe-0195235c429f.meta",
"Assets/RPGMaker/Storage/Map/TileAssets\\001f7509-20c4-4684-b755-ad37dd3f8668.asset",
"Assets/RPGMaker/Storage/Map/TileAssets\\001f7509-20c4-4684-b755-ad37dd3f8668.asset.meta",
"Assets/RPGMaker/Storage/Map/TileAssets\\001f7509-20c4-4684-b755-ad37dd3f8668.meta",
...
]
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Map
└── 📂 JSON
👉 └── 📄 tileCollisionAssets.json
Dammy:
[]
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Map
└── 📂 JSON
👉 └── 📄 tileGroup.json
Dammy:
[
{
"id": "e48fd666-fd65-4a13-85bb-649f0ebd8649",
"name": "World_A1",
"tileList": [
{
"id": "e94cf3bf-dfac-48b7-8621-e8eae26bcede",
"type": "AutoTileA"
},
{
"id": "78dfd98d-31d7-4ea9-8364-32e74412fbc3",
"type": "AutoTileA"
},
...
]
},
...
]
「 👆 タイル・グループのリストで、
そのタイル・グループは タイルのリストを持っているようだぜ。
マップ・エディターの下部のタイル・パレットに対応しているんじゃないか?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Migration
👉 └── 📄 MigrationHistory.json
Dammy:
[
{
"executedAt": "2023-05-28 17:43:11",
"executionClassIdentifier": "SampleExecutionClass1",
"id": "abcf095f-9e02-4b34-bc32-7d1dbf56617f"
},
{
"executedAt": "2023-05-28 17:43:11",
"executionClassIdentifier": "SampleExecutionClass2",
"id": "129e8958-176c-4b0b-98d6-d90b44c4bd56"
}
]```
「 👆 サンプル・ゲームを入れた記録だろうか?
クラス1、 クラス2 って何か知らんけど」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Outline
👉 └── 📄 chapter.json
Dammy:
[
{
"beforeChapterId": 0,
"chapterId": "5859b122-61b3-9a58-b886-2483b495803b",
"deleted": 0,
"description": "",
"image": "",
"levelHigh": 4,
"levelLow": 1,
"mapId": "369bb76a-77d6-472a-8b17-a8e3a37c572a",
"nextChapterId": 0,
"position": [
382.0001220703125,
38.0
],
"title": "Starterton"
},
...
]
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Outline
👉 └── 📄 connection.json
Dammy:
[
{
"id": "a692d568-c8f2-4687-8499-856e16e7d177",
"lPortDirection": 2,
"lPortOrientation": 1,
"lUuid": "5859b122-61b3-9a58-b886-2483b495803b",
"rPortDirection": 1,
"rPortOrientation": 1,
"rUuid": "413c26da-944f-4996-9347-bce0f4f7796e"
},
...
]
「 👆 接続って何か分からないが、グラフ理論で言うところのエッジのことじゃないだろうか?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Outline
👉 └── 📄 section.json
Dammy:
[
{
"chapterId": "5859b122-61b3-9a58-b886-2483b495803b",
"clearFlag": [
],
"deleted": 0,
"description": "",
"image": "",
"mapIds": [
"65ff8a91-3d15-48bf-b4e7-f8d109d3f6da"
],
"memo": "\t",
"position": [
382.00018310546877,
388.5712585449219
],
"sectionId": "413c26da-944f-4996-9347-bce0f4f7796e",
"startFlag": [
],
"title": "Trying one's ability"
},
...
]
「 👆 アウトライン・エディターの章の下にぶら下がっている要素が セクション だぜ」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Outline
👉 └── 📄 start.json
Dammy:
[
{
"beforeStartId": 0,
"deleted": 0,
"description": "ラダドーム~ガライの町\nメルキド\n竜王の白",
"nextStartId": 0,
"position": [
56.571510314941409,
44.000003814697269
],
"startId": "4514da87-c3d4-4ce3-bd2d-6113edaa4c84",
"title": "チャプターA123"
}
]
「 👆 ドラクエ1の町の名前が入っているし、魔王の白は 魔王の城の誤字だろう
こんなファイル、使っているのだろうか?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 SaveData
└── 📂 JSON
👉 └── 📄 actors.json
Dammy:
[
{
"actorId": 1,
"name": "Harold",
"nickname": "",
"classId": 1,
"level": 1,
"characterImage": "Actor1",
"faceImage": "Actor1",
"battlerImage": "Actor1_1",
"advImage": "Actor1_1",
"exp": [
{
"classId": 1,
"value": 100
}
],
"hp": 389,
"mp": 90,
"tp": 0,
"hidden": 0,
"paramPlus": {
"maxHp": 100,
"maxMp": 100,
"attack": 100,
"defense": 100,
"magicAttack": 100,
"magicDefence": 100,
"speed": 100,
"luck": 100
},
"states": [
{
"id": 1,
"walkingCount": 1
}
],
"skills": [
1,
2,
3
],
"equips": [
{
"equipType": 1,
"itemId": 1
}
],
"lastMenuSkill": {
"dataClass": "",
"itemId": 0
},
"lastBattleSkill": {
"dataClass": "",
"itemId": 0
}
},
...
]
「 セーブデータのスロットとは どう対応してんの?
セーブデータが100個あるとき、セーブデータ1と、セーブデータ2のアクターはどう区別するの?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 SaveData
└── 📂 JSON
👉 └── 📄 config.json
Dammy:
{
"alwaysDash": 0,
"commandRemember": 0,
"bgmVolume": 100,
"bgsVolume": 100,
"meVolume": 100,
"seVolume": 100
}
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 SaveData
└── 📂 JSON
👉 └── 📄 party.json
Dammy:
{
"inBattle": 0,
"gold": 0,
"steps": 10,
"lastItem": {
"itemId": 0
},
"menuActorId": 0,
"targetActorId": 0,
"actors": [
1,
2,
3,
4
],
"items": [{
"itemId": 1,
"value": 2
}],
"weapons": [{
"weaponId": 1,
"value": 2
}],
"armors": [{
"armorId": 1,
"value": 2
}]
}
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 SaveData
└── 📂 JSON
👉 └── 📄 system.json
Dammy:
{
"saveEnabled": 1,
"menuEnabled": 1,
"encounterEnabled": 1,
"formationEnabled": 1,
"battleCount": 0,
"winCount": 0,
"escapeCount": 0,
"saveCount": 0,
"framesOnSave": 0,
"bgmOnSave": {
"name": "",
"pan": 0,
"pitch": 0,
"volume": 100
},
"bgsOnSave": {
"name": "",
"pan": 0,
"pitch": 0,
"volume": 100
},
"windowTone": [
0
],
"battleBgm": {
"name": "",
"pan": 0,
"pitch": 0,
"volume": 100
},
"victoryMe": {
"name": "",
"pan": 0,
"pitch": 0,
"volume": 100
},
"defeatMe": {
"name": "",
"pan": 0,
"pitch": 0,
"volume": 100
},
"savedBgm": {
"name": "",
"pan": 0,
"pitch": 0,
"volume": 100
},
"walkingBgm": {
"name": "",
"pan": 0,
"pitch": 0,
"volume": 100
},
"chapterId": 0,
"sectionId": 0
}
「 👆 📄 config.json
より細かいな……、じゃあ 📄 config.json
って何だったんだ……?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Sounds
👉 └── 📄 bgmLoopInfo.json
Dammy:
[
{
"name": "U_Battle_01.wav",
"start": -1,
"end": -1
},
...
]
「 👆 BGMのループの開始地点と、終了地点を指定するんじゃないかな?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Sounds
👉 └── 📄 bgsLoopInfo.json
Dammy:
[
{
"name": "City.ogg",
"start": 341689,
"end": 1533320
},
...
]
「 👆 環境音のループの開始地点と、終了地点を指定するんじゃないかな?」
「 環境音が1万個あったら、1万個の設定が1つのファイルに入るの?」
「 ファイルパスではなく、ファイル名で指定すんの?
じゃあ環境音のファイルは、フォルダー整理できないの?」
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Ui
└── 📂 JSON
👉 └── 📄 ui.json
Dammy:
{
"battleMenu": {
"menuHp": {
"enabled": 0
},
"menuMp": {
"enabled": 0
},
"menuTp": {
"enabled": 0
}
},
"commonMenus": [
{
"backgroundImage": {
"color": [
254,
254,
254,
0
],
"image": "UI_bg_01",
"type": 0
},
"buttonFrameImage": {
"color": [
0,
0,
0,
0
],
"image": "UI_window_frame_01",
"type": 0
},
"buttonImage": {
"color": [
0,
0,
0,
80
],
"image": "UI_button_bg_01",
"type": 0
},
"buttonImageHighlight": [
38,
175,
255,
83
],
"characterType": 2,
"id": "1",
"menuFontSetting": {
"color": [
255,
255,
255,
255
],
"font": "mplus-1m-regular",
"size": 40
},
"windowBackgroundImage": {
"color": [
0,
0,
0,
128
],
"image": "UI_window_bg_01",
"type": 0
},
"windowFrameImage": {
"color": [
245,
249,
252,
0
],
"image": "UI_window_frame_02",
"type": 1
},
"windowFrameImageHighlight": [
234,
143,
199,
0
]
}
],
"gameMenu": {
"categoryArmor": {
"enabled": 1
},
"categoryImportant": {
"enabled": 1
},
"categoryItem": {
"enabled": 1
},
"categoryWeapon": {
"enabled": 1
},
"menuEquipment": {
"enabled": 1
},
"menuFontSetting": {
"color": [
100,
150,
200
],
"font": "AAA",
"size": 16
},
"menuGameEnd": {
"enabled": 1
},
"menuItem": {
"enabled": 1
},
"menuOption": {
"enabled": 1
},
"menuSave": {
"enabled": 1
},
"menuSkill": {
"enabled": 1
},
"menuSort": {
"enabled": 1
},
"menuStatus": {
"enabled": 1
}
},
"talkMenu": {
"characterMenu": {
"characterEnabled": 1,
"nameEnabled": 1,
"nameFontSetting": {
"color": [
255,
255,
255
],
"font": "002",
"size": 100
},
"talkFontSetting": {
"color": [
255,
255,
255
],
"font": "AAA",
"size": 100
}
},
"itemSelectMenu": {
"menuFontSetting": {
"color": [
0,
0,
0
],
"font": "002",
"size": 100
},
"positionItemWindow": 2
},
"numberMenu": {
"menuFontSetting": {
"color": [
0,
0,
0
],
"font": "002",
"size": 100
},
"numberEnabled": 0,
"positionNumberWindow": [
0,
0
]
},
"selectMenu": {
"menuFontSetting": {
"color": [
246,
229,
229
],
"font": "002",
"size": 100
}
}
}
}
[現実]
📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Word
└── 📂 JSON
👉 └── 📄 words.json
Dammy:
{
"basicStatus": {
"exp": {
"enabled": 1,
"initialValue": "EXP",
"value": "EXP"
},
"expShort": {
"enabled": 1,
"initialValue": "EXP",
"value": "EXP"
},
...
},
"commands": {
"alwaysDash": {
"enabled": 1,
"initialValue": "Always Dash",
"value": "Always Dash"
},
"armor": {
"enabled": 1,
"initialValue": "Armor",
"value": "Armor"
},
...
},
"messages": {
"actionFailure": {
"enabled": 1,
"initialValue": "There was no effect on %1!",
"value": "There was no effect on %1!"
},
"actorDamage": {
"enabled": 1,
"initialValue": "%1 took %2 damage!",
"value": "%1 took %2 damage!"
},
...
},
"status": {
"attack": {
"enabled": 1,
"initialValue": "Attack",
"value": "Attack"
},
"evasion": {
"enabled": 1,
"initialValue": "Evasion Rate",
"value": "Evasion Rate"
},
...
},
"runtimeShop": {
"buy": {
"enabled": 1,
"initialValue": "Buy",
"value": "Buy"
},
"sell": {
"enabled": 1,
"initialValue": "Sell",
"value": "Sell"
},
...
}
}
「 ローカライズを考えると、こんなファイル作るより
en、jp、kr、ch、fr、de のようにフォルダー分けして、その下に文字列リソースを入れるべきなんじゃない?」
「 ここだけでなく、 ソースコードに 日本語、中国語、英語 がハードコーディングされていた
二次元配列も気になるぜ」
[現実]
📂 Assets
├── 📂 Resources
│ ├── 📄 EventSystem.prefab
│ ├── 📄 EventSystemDefault.prefab
│ ├── 📄 EventSystemNon.prefab
│ └── 📄 InputSystem.prefab
└── 📂 RPGMaker
├── 📂 Codebase
│ └── 📂 Runtime
│ ├── 📂 Battle
│ │ ├── 📂 Asset
│ │ │ └── 📂 Prefab
│ │ │ ├── 📄 BattleScenePreviewCanvas.prefab
│ │ │ ├── 📄 GameOver.prefab
│ │ │ └── 📄 SpriteSetBattle.prefab
│ │ ├── 📄 Windows01.prefab
│ │ ├── 📄 Windows02.prefab
│ │ ├── 📄 Windows03.prefab
│ │ ├── 📄 Windows04.prefab
│ │ ├── 📄 Windows05.prefab
│ │ └── 📄 Windows06.prefab
│ ├── 📂 Common
│ │ └── 📄 TforuUtility.prefab
│ ├── 📂 Map
│ │ └── 📂 Asset
│ │ ├── 📂 Prefab
│ │ │ ├── 📄 DebugToolWindow.prefab
│ │ │ ├── 📄 Description.prefab
│ │ │ ├── 📄 Display.prefab
│ │ │ ├── 📄 DisplayByScene.prefab
│ │ │ ├── 📄 GameTimer.prefab
│ │ │ ├── 📄 InputNameCanvas.prefab
│ │ │ ├── 📄 MapChangeName.prefab
│ │ │ ├── 📄 MapClickHighlight.prefab
│ │ │ ├── 📄 MenuPreview/Background.prefab
│ │ │ ├── 📄 MenuWindow01.prefab
│ │ │ ├── 📄 MenuWindow02.prefab
│ │ │ ├── 📄 MenuWindow03.prefab
│ │ │ ├── 📄 MenuWindow04.prefab
│ │ │ ├── 📄 MenuWindow05.prefab
│ │ │ ├── 📄 MenuWindow06.prefab
│ │ │ ├── 📄 MessageInputNum.prefab
│ │ │ ├── 📄 MessageInputSelect.prefab
│ │ │ ├── 📄 MessageInputSelectItem.prefab
│ │ │ ├── 📄 MessageInputSelectText.prefab
│ │ │ ├── 📄 MessageScroll.prefab
│ │ │ ├── 📄 MessageWindow.prefab
│ │ │ ├── 📄 Movie.prefab
│ │ │ ├── 📄 Picture.prefab
│ │ │ ├── 📄 ScrollPreview.prefab
│ │ │ └── 📄 ShowIcon.prefab
│ │ └── 📂 Shop
│ │ └── 📂 Asset
│ │ └── 📂 Prefab
│ │ ├── 📄 ItemPrefab.prefab
│ │ └── 📄 ItemShopCanvas.prefab
│ └── 📂 Title
│ ├── 📄 OptionMenu.prefab
│ ├── 📄 SaveItem.prefab
│ ├── 📄 SaveLoadWindow.prefab
│ ├── 📄 TitleCanvas.prefab
│ ├── 📄 UI_01.prefab
│ └── 📄 UI_02.prefab
└── 📂 Storage
├── 📂 Images
│ └── 📄 Animation/Flash.prefab
├── 📂 Map
│ ├── 📂 SampleMaps
│ │ └── 📄 056ef20f-8df6-40f4-8c95-ee9696e1ebec.prefab ※UUID.prefab。他多数
│ └── 📂 SavedMaps
│ └── 📄 00146731-7002-48e1-8f11-4fd0e75ebd5c.prefab ※UUID.prefab。他多数
└── 📂 System
└── 📄 Animation/PreviewObjs.prefab
「 プレファブは Unity 側の画面に出てくる物体のコピー元みたいなものだが、
どこに 何が置いてるかぐらい すぐ点検できるようにしてほしいよな」
「 👆 インスペクターに Input System と書いてるな。何か入力と関係があるのか……?」
「 👆 これが Input System ? さっぱり分かんね」
「 👆 この マトリョーシカ・フォルダーに入っているのは、戦闘シーンをプレビューするキャンバスだそうだぜ。プレビューって何だ?」
「 👆 ゲーム・オーバー画面は 実行時用の戦闘フォルダーの中に有るんだな。そんなカテゴリーで見つけやすいのか?」
「 👆 何だか分からない白いキャンバスだ。これは戦闘画面か?」
「 👆 Windows02.prefab で右にあったメニューが左に来てるぜ」
「 👆 Windows01.prefab から顔画像を省いたような画面だぜ」
「 👆 Windows02.prefab から顔画像を省いたような画面だぜ」
「 👆 Windows01.prefab の顔画像を全身像に差し替えたような画面だぜ」
「 👆 Windows02.prefab の顔画像を全身像に差し替えたような画面だぜ」
「 👆 ファイル名からすると名前入力画面だと思うが、これは各国語対応してるのかだぜ?」
「 👆 上辺に mapname
という文字が置いてあるが、何なのか分からん」
「 👆 これはメニュー画面だろうか? セーブ画面のようにも見えるし」
📂 Assets
└── 📂 RPGMaker
├── 📂 Codebase
│ └── 📂 Runtime
│ └── 📂 Map
│ └── 📂 Asset
│ └── 📄 MapClickHighlightAnimation.anim
└── 📂 Storage
├── 📂 Animation
│ ├── 📄 Attack1.anim
│ ├── 📄 Attack2.anim
│ ├── 📄 Damage.anim
│ ├── 📄 die.anim
│ ├── 📄 Escape.anim
│ ├── 📄 GameOver.anim
│ ├── 📄 Move.anim
│ ├── 📄 Wait.anim
│ ├── 📄 Win.anim
│ └── 📄 WindowArrow.anim
└── 📂 Images
└── 📂 System
└── 📂 Animation
├── 📄 Blinking.anim
├── 📄 ClearButton.anim
├── 📄 CloseWindow.anim
├── 📄 OpenWindow.anim
└── 📄 TintButton.anim
「 フォルダーを全部 開け回ることを前提とした収納は
コンピューターの探索によって 見つかることによって 片づけの能力が劣化したのかしらね。
なんで もっと 簡単に アニメーション・ファイルは ここに置いてある、という置き方 をしないのか、
少し足りないとかではなくて、 センスが 一切 無いのよ」
└── 📂 Assets
└── 📂 RPGMaker
├── 📂 Codebase
│ └── 📂 Runtime
│ └── 📂 Map
│ └── 📂 Asset
│ └── 📄 MapClickHighlight.controller
└── 📂 Storage
├── 📂 Animation
│ ├── 📄 Controller.controller
│ └── 📄 GameOver.controller
└── 📂 Images
└── 📂 System
├── 📄 Animation/Blinking.controller
├── 📄 Animation/Button.controller
└── 📄 Animation/Frame.controller
「 📂 Assets
フォルダーの中に 📂 Asset
がまた出てきて マトリョーシカ よね~」
└── 📂 Assets
├── 📂 RPGMaker
│ └── 📂 Codebase
│ └── 📂 Runtime
│ └── 📂 Map
│ ├── 📂 Asset
│ │ ├── 📄 Blur.mat
│ │ └── 📄 UI-SoftMask.mat
│ └── 📄 DistantViewMaterial.mat
└── 📂 TextMesh Pro
└── 📂 Resources
└── 📂 Fonts & Materials
├── 📄 LiberationSans SDF - Drop Shadow.mat
└── 📄 LiberationSans SDF - Outline.mat
「 📂 Assets
フォルダーの中に 📂 Asset
がまた出てきて マトリョーシカ よね~」
└── 📂 Assets
├── 📂 RPGMaker
│ ├── 📂 3rdParty
│ │ └── 📂 Effekseer
│ │ └── 📂 Materials
│ │ ├── 📄 EffekseerFixedShader.shader
│ │ ├── 📄 FakeShader.shader
│ │ ├── 📄 GrabDepthShader.shader
│ │ ├── 📄 Texture2DArrayBlitShader.shader
│ │ └── 📄 Texture2DBlitShader.shader
│ └── 📂 Codebase
│ ├── 📂 Editor
│ │ ├── 📂 Common
│ │ │ └── 📂 Asset
│ │ │ └── 📂 Shader
│ │ │ └── 📄 UnilitTransparent.shader
│ │ └── 📂 MapEditor
│ │ └── 📂 Asset
│ │ └── 📂 Shader
│ │ ├── 📄 test.shader
│ │ ├── 📄 UI-DefaultAdd.shader
│ │ ├── 📄 UI-DefaultMultiply.shader
│ │ ├── 📄 UI-DefaultNormal.shader
│ │ └── 📄 UI-DefaultScreen.shader
│ └── 📂 Runtime
│ └── 📂 Map
│ ├── 📄 Asset/Blur.shader
│ └── 📄 Asset/UI-SoftMask.shader
└── 📂 TextMesh Pro
└── 📂 Shaders
├── 📄 TMP_Bitmap-Custom-Atlas.shader
├── 📄 TMP_Bitmap-Mobile.shader
├── 📄 TMP_Bitmap.shader
├── 📄 TMP_SDF Overlay.shader
├── 📄 TMP_SDF SSD.shader
├── 📄 TMP_SDF-Mobile Masking.shader
├── 📄 TMP_SDF-Mobile Overlay.shader
├── 📄 TMP_SDF-Mobile SSD.shader
├── 📄 TMP_SDF-Mobile.shader
├── 📄 TMP_SDF-Surface-Mobile.shader
├── 📄 TMP_SDF-Surface.shader
├── 📄 TMP_SDF.shader
├── 📄 TMP_Sprite.shader
├── 📄 UI-Addtive.shader
├── 📄 UI-Multiply.shader
├── 📄 UI-Screen.shader
└── 📄 UI-Tint.shader
「 📂 Assets/RPGMaker/Codebase
くん 以外 は分かってるの わらう」
「 Effekseer さんは 📂 Assets/RPGMaker/3rdParty/Effekseer/Materials/
フォルダーへ、
TextMesh Pro さんは 📂 TextMesh Pro/Shaders
フォルダーへ、
きちんと .shader
ファイルの置き場が決まっていますもんね」
「 シェーダーの中身見ても 画像処理の難しいプログラムが書いてあって 説明できないんで、説明はスキップするぜ。
こういうのは 視覚的ツールを使って 編集しろだぜ」
└── 📂 Assets
└── 📂 RPGMaker
└── 📂 Codebase
└── 📂 Runtime
└── 📂 Map
└── 📂 Component
└── 📂 Character
└── 📄 ShaderVariants.shadervariants
「 じゃあ プロジェクトに含まれてないんだぜ。 ファイル・エクスプローラーで開けてみろだぜ」
「 もういい閉じろ。 プロジェクトに含まれてないから 使われてないの ほぼ確定だぜ」
└── 📂 Assets
├── 📂 RPGMaker
│ └── 📂 3rdParty
│ └── 📂 Effekseer
│ └── 📂 Materials
│ ├── 📄 EffekseerShaderAdCommonPS.cginc
│ ├── 📄 EffekseerShaderAdDistortionPS.cginc
│ ├── 📄 EffekseerShaderAdLitUnlitPS.cginc
│ ├── 📄 EffekseerShaderAdVS.cginc
│ ├── 📄 EffekseerShaderCommon.cginc
│ ├── 📄 EffekseerShaderDistortionCommonPS.cginc
│ ├── 📄 EffekseerShaderDistortionPS.cginc
│ ├── 📄 EffekseerShaderLitUnlitPS.cginc
│ ├── 📄 EffekseerShaderSoftParticlePS.cginc
│ ├── 📄 EffekseerShaderVS.cginc
│ └── 📄 EffekseerShader_Linear_sRGB.cginc
└── 📂 TextMesh Pro
└── 📂 Shaders
├── 📄 TMPro.cginc
├── 📄 TMPro_Mobile.cginc
├── 📄 TMPro_Properties.cginc
└── 📄 TMPro_Surface.cginc
「 📂 Assets/会社名/Effekseer/Materials
のように並べると もっと いいんじゃないかな」
「 .shader
ファイルから利用されている C言語のファイルなんで、無視しましょう」
└── 📂 Assets
└── 📂 RPGMaker
└── 📂 Codebase
└── 📂 Editor
└── 📂 Layouts
├── 📄 DatabaseLayout.wlt
├── 📄 DatabaseLayout2.wlt
├── 📄 DatabaseLayout_Mac.wlt
├── 📄 MapEditorLayout.wlt
└── 📄 Your Layout.wlt
「 👆 これらのファイルは、プロジェクトには含まれていなくて、ファイル・エクスプローラーからは見えるぜ」
「 プロジェクトに含まれてないから 使われてないの ほぼ確定だぜ。 無視しろ」
└── 📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Animation
└── 📂 Effekseer
├── 📄 Absorb.efkefc
├── 📄 ArrowSpecial.efkefc
├── 📄 BallsOfLight.efkefc
├── 📄 Bind.efkefc
├── 📄 Blind.efkefc
├── 📄 Bodyslam.efkefc
├── 📄 Breath.efkefc
├── 📄 ClawEffect.efkefc
├── 📄 ClawFire.efkefc
├── 📄 ClawIce.efkefc
├── 📄 ClawPhysical.efkefc
├── 📄 ClawSpecial.efkefc
├── 📄 ClawThunder.efkefc
├── 📄 Confusion.efkefc
├── 📄 CureAll1.efkefc
├── 📄 CureAll2.efkefc
├── 📄 CureOne1.efkefc
├── 📄 CureOne2.efkefc
├── 📄 DarknessAll1.efkefc
├── 📄 DarknessAll2.efkefc
├── 📄 DarknessAll3.efkefc
├── 📄 DarknessOne1.efkefc
├── 📄 DarknessOne2.efkefc
├── 📄 Death.efkefc
├── 📄 EarthAll1.efkefc
├── 📄 EarthAll2.efkefc
├── 📄 EarthAll3.efkefc
├── 📄 EarthOne1.efkefc
├── 📄 EarthOne2.efkefc
├── 📄 FireAll1.efkefc
├── 📄 FireAll2.efkefc
├── 📄 FireAll3.efkefc
├── 📄 FireOne1.efkefc
├── 📄 FireOne2.efkefc
├── 📄 Flash.efkefc
├── 📄 Fog.efkefc
├── 📄 GeneralSpecial1.efkefc
├── 📄 GeneralSpecial2.efkefc
├── 📄 HealAll1.efkefc
├── 📄 HealAll2.efkefc
├── 📄 HealOne1.efkefc
├── 📄 HealOne2.efkefc
├── 📄 HitEffect.efkefc
├── 📄 HitFire.efkefc
├── 📄 HitIce.efkefc
├── 📄 HitPhysical.efkefc
├── 📄 HitSpecial1.efkefc
├── 📄 HitSpecial2.efkefc
├── 📄 HitThunder.efkefc
├── 📄 IceAll1.efkefc
├── 📄 IceAll2.efkefc
├── 📄 IceAll3.efkefc
├── 📄 IceOne1.efkefc
├── 📄 IceOne2.efkefc
├── 📄 LaserAll.efkefc
├── 📄 LaserOne.efkefc
├── 📄 LightAll1.efkefc
├── 📄 LightAll2.efkefc
├── 📄 LightAll3.efkefc
├── 📄 LightOne1.efkefc
├── 📄 LightOne2.efkefc
├── 📄 LightPillar1.efkefc
├── 📄 LightPillar2.efkefc
├── 📄 NeutralAll1.efkefc
├── 📄 NeutralAll2.efkefc
├── 📄 NeutralAll3.efkefc
├── 📄 NeutralOne1.efkefc
├── 📄 NeutralOne2.efkefc
├── 📄 Paralyze.efkefc
├── 📄 PierceEffect.efkefc
├── 📄 PierceFire.efkefc
├── 📄 PierceIce.efkefc
├── 📄 PiercePhysical.efkefc
├── 📄 PierceSpecial1.efkefc
├── 📄 PierceSpecial2.efkefc
├── 📄 PierceThunder.efkefc
├── 📄 Poison.efkefc
├── 📄 Pollen.efkefc
├── 📄 Powerdown1.efkefc
├── 📄 Powerdown2.efkefc
├── 📄 Powerdown3.efkefc
├── 📄 Powerup1.efkefc
├── 📄 Powerup2.efkefc
├── 📄 Powerup3.efkefc
├── 📄 Radiation.efkefc
├── 📄 Revive1.efkefc
├── 📄 Revive2.efkefc
├── 📄 ShootAll.efkefc
├── 📄 ShootBarrage.efkefc
├── 📄 ShootNormal.efkefc
├── 📄 ShootSpecial.efkefc
├── 📄 Shout.efkefc
├── 📄 Silence.efkefc
├── 📄 SlashEffect.efkefc
├── 📄 SlashFire.efkefc
├── 📄 SlashIce.efkefc
├── 📄 SlashPhysical.efkefc
├── 📄 SlashSpecial1.efkefc
├── 📄 SlashSpecial2.efkefc
├── 📄 SlashSpecial3.efkefc
├── 📄 SlashThunder.efkefc
├── 📄 Sleep.efkefc
├── 📄 Song.efkefc
├── 📄 SonicWave.efkefc
├── 📄 Sweep.efkefc
├── 📄 ThunderAll1.efkefc
├── 📄 ThunderAll2.efkefc
├── 📄 ThunderAll3.efkefc
├── 📄 ThunderOne1.efkefc
├── 📄 ThunderOne2.efkefc
├── 📄 WaterAll1.efkefc
├── 📄 WaterAll2.efkefc
├── 📄 WaterAll3.efkefc
├── 📄 WaterOne1.efkefc
├── 📄 WaterOne2.efkefc
├── 📄 WindAll1.efkefc
├── 📄 WindAll2.efkefc
├── 📄 WindAll3.efkefc
├── 📄 WindOne1.efkefc
└── 📄 WindOne2.efkefc
└── 📂 Assets
└── 📂 RPGMaker
└── 📂 Storage
└── 📂 Animation
└── 📂 Effekseer
└── 📂 Model
├── 📄 Ball.efkmodel
├── 📄 NightHand1.efkmodel
├── 📄 NightHand2.efkmodel
├── 📄 NightHand3.efkmodel
├── 📄 NightHand4.efkmodel
├── 📄 Shield.efkmodel
└── 📄 Skull.efkmodel
└── 📂 Assets
└── 📂 RPGMaker
├── 📂 3rdParty
│ └── 📂 Effekseer
│ ├── 📂 Editor
│ │ └── 📄 EffekseerEditor.asmdef
│ ├── 📂 External
│ │ ├── 📂 HDRP
│ │ │ └── 📄 Effekseer.HDRP.asmdef
│ │ ├── 📂 PostProcessing
│ │ │ └── 📄 Effekseer.PostProcessing.asmdef
│ │ └── 📂 URP
│ │ └── 📄 Effekseer.URP.asmdef
│ └── 📂 Scripts
│ └── 📄 Effekseer.asmdef
└── 📂 Codebase
├── 📂 CoreSystem
│ └── 📄 RPGMaker.CodeBase.CoreSystem.asmdef
└── 📂 Editor
└── 📄 RPGMaker.CodeBase.Editor.asmdef
「 👆 Unity が作っている .meta ファイルに似たもので、分からないぜ」
└── 📂 Assets
└── 📂 RPGMaker
├── 📂 3rdParty
│ └── 📂 SimpleJSON
│ └── 📄 RPGMaker.CodeBase.CoreSystem.asmref
└── 📂 Codebase
├── 📂 Add-ons
│ └── 📄 RPGMaker.CodeBase.CoreSystem.asmref
└── 📂 Runtime
└── 📄 RPGMaker.CodeBase.CoreSystem.asmref
「 👆 .json ファイルに似たもので、分からないぜ。Unity が作っている」
└── 📂 Assets
├── 📂 RPGMaker
│ └── 📂 Codebase
│ └── 📂 Runtime
│ ├── 📂 Battle
│ │ ├── 📂 BattleSceneTest
│ │ │ ├── 📄 BattleScenePreviewTest.unity
│ │ │ └── 📄 BattleSceneTest.unity
│ │ └── 📄 Battle.unity
│ ├── 📂 GameOver
│ │ └── 📄 GameOver.unity
│ ├── 📂 Map
│ │ └── 📄 SceneMap.unity
│ └── 📂 Title
│ └── 📄 Title.unity
└── 📂 Scenes
└── 📄 SampleScene.unity
「 👆 YAML形式ファイルに似たもので、分からないぜ。Unity が作っている**」
<書きかけ>
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント