メインコンテンツまでスキップ

モンスターの作成

このガイドでは、MCE でモンスターの種を作成・設定するために必要なことをすべて取り上げます。フォーム、バリアント、高度な設定を含め、MonsterEntry ScriptableObject を詳しく説明します。

MonsterEntry の概要​

MCE のすべてのモンスターの種は、MonsterEntry ScriptableObject で定義されます。これは種の正式なデータ定義で、基礎ステータス、タイプ、特性、習得できる技、進化の経路、ビジュアルアセットを含みます。

MonsterEntry は_種_(例:「Flameleon」)を表し、MonsterInstance は特定の_個体_(例:「このIV、EV、性格、技を持つ、プレイヤーのレベル 25 の Flameleon」)を表します。

Monster Creator Wizard

ウィザードは、このガイドと同じ 6 つのステップを同じ順序で進みます。基本情報、基礎 ステータス、特性と技、進化、アート、そしてディスクに何かが書き込まれる前の最終確認です。 最後のステップまで何も作成されないため、間違って始めた種を、孤立したアセットを残さずに 取りやめられます。

MonsterEntry を作成する​

ウィザードを使う(推奨)​

モンスターを作る最速の方法はウィザードです。OpenMon Hub(Tools > MCE > OpenMon Hub)→ Art Studio タブ → Monster Creator を開きます。

ウィザードのステップごとの手順については、最初のモンスター ガイドを参照してください。

手動で作成する​

  1. Project ウィンドウで右クリックします:Create > MCE > Monster Database > Monster。
  2. アセットに種の名前を付けます(例:Flameleon)。
  3. 選択して、Inspector ですべてのフィールドを設定します。

MonsterEntry の構造​

MonsterEntry は種レベルのコンテナーです。実際のステータス、タイプ、ビジュアルのデータは、フォームごとのエントリの中にあります。

種レベルのフィールド(MonsterEntry)​

フィールド型説明
DexNumberuint一意の全国図鑑番号
AvailableFormsList<Form>この種が取りうるすべてのフォーム
DataByFormList<DataByFormEntry>フォームごとの非公開の設定データ(インデックス 0 = ベースフォーム)

フォームごとのフィールド(DataByFormEntry)​

非公開の DataByForm リストの各フォームは、以下の独自の完全なコピーを保持します。フォーム間に継承はありません。リストは AvailableForms と同期され、エントリは monsterEntry[form] で読み取ります。

基本情報​

フィールド型説明
CatchRatebyte基本捕獲率(0-255)。低いほど捕まえにくい
BaseExperienceuint倒されたときに与える経験値
GrowthRateGrowthRate経験値曲線:Fast、MediumFast、MediumSlow、Slow、Erratic、Fluctuating

タイプ​

フィールド型説明
FirstTypeMonsterType第 1 タイプ(必須)
SecondTypeMonsterType第 2 タイプ(単タイプなら None を設定)

基礎ステータス​

Stat enum をキーとする辞書として保存されます。Inspector で設定します。

フィールド型説明
BaseStatsSerializableDictionary<Stat, byte>ステータス → 値の辞書

努力値の獲得量​

この種が倒されたとき、勝者はどの努力値を得るか?

フィールド型説明
EVYieldList<StatByteValuePair>ステータスごとの努力値の付与

特性​

フィールド型説明
AbilitiesList<Ability>通常の特性(ウィザードは最大 2 つを設定)
HiddenAbilitiesList<Ability>隠れ特性

性別と育成​

フィールド型説明
HasBinaryGenderboolオス/メスの区別があるか
FemaleRatiofloatメスである確率(0-1)
EggGroupsList<EggGroup>育成の互換グループ
EggCyclesbyte孵化までの歩数(基本歩数に掛ける)

DataByFormEntry の構造​

MCE は、1 つの種に複数のフォーム(例:アローラのすがた、メガフォーム、季節のバリアント)をサポートします。各フォームは、ベース種のデータの一部またはすべてを上書きできます。

MonsterEntry の非公開の DataByForm リストは、フォームごとに 1 つのエントリを保持します。

[Serializable]
public class DataByFormEntry
{
public Form Form; // The form identifier
public MonsterType FirstType; // Type 1
public MonsterType SecondType; // Type 2
public SerializableDictionary<Stat, byte> BaseStats; // Dictionary keyed by Stat enum
public List<Ability> Abilities; // Regular abilities of this form
public List<Ability> HiddenAbilities; // Hidden abilities of this form
public Material Front; // Battle visuals (materials)
public Material Back;
// ... plus male/shiny material overrides, evolutions, breeding data
}

フォームの設定​

  1. Form ScriptableObject を作成します:Create > MCE > Monster Database > Form。
  2. わかりやすい名前を付けます(例:MegaFlameleon、AlolanDiglett)。
  3. MonsterEntry の AvailableForms リストに追加します。対応する DataByFormEntry が DataByForm に現れます。
  4. そのエントリを埋めます。ゼロからではなく既存のフォームから始めるには、MonsterEntry の Copy Data From Form To Form ボタン(種に複数のフォームがあるときに表示されます)を使い、違う部分だけを変更します。
ベースフォーム

AvailableForms の最初のフォームがベースフォームです(GetFirstAvailableForm())。色違いのフォームをリストに追加しないでください。色違いのバージョンは、Form の ShinyVersion フィールドを通じてベースフォームから導かれます。

フォームとバリアント​

MCE は、いくつかの一般的なフォームのパターンをサポートしています。

パターン実装
メガシンカ戦闘フォームとして設定された Form(IsCombatForm、CombatFormType = Mega)が、独自の DataByFormEntry(強化されたステータス、専用スプライト)を持つ。ベースフォームの MegaEvolutions 辞書が、必要な Item をメガの Form に対応づけ、バトルの BattleManagerMegaModule が変化を実行する。
地方のすがた独自の DataByFormEntry(異なるタイプ、ステータス、スプライト)を持つ Form。エンカウントのエントリが、その Form Calculator で出現するフォームを選ぶ(SingleFormEncounter は常に 1 つのフォームを返す)。
性別による違いHasBinaryGender を有効にした 1 つのフォームエントリ、FemaleRatio、マテリアルとアイコンのオス版(FrontMale、BackMale、IconMale、…)。
バトル限定のフォーム戦闘フォーム(CombatFormType が Mega、Max、Other)。エンジンが贈り物やタワーの対戦相手のためにランダムなフォームを選ぶときは除外される。

それ以外のもの -- たとえば季節フォーム -- は、単なる追加の Form です。モンスターがそれになるタイミングは、独自のグラフやスクリプトが決めます。

進化チェーン​

フォームごとのエントリ(DataByFormEntry)には、EvolutionData エントリの Evolutions リストがあります。組み込みのタイプの多くは、進化先を持つ TargetSpeciesAndFormEvolutionData から派生しています。

[Serializable]
public abstract class TargetSpeciesAndFormEvolutionData : EvolutionData
{
[SerializeField] protected MonsterEntry TargetSpecies; // What it evolves into
[SerializeField] protected Form TargetForm; // Form it evolves into
[SerializeField] protected bool KeepShinyIfItIs; // Preserve shininess
// Trigger conditions are defined by the concrete class
}

進化タイプは、[SerializeReference] でポリモーフィックにシリアライズされる単純な [Serializable] クラスで、独立した ScriptableObject アセットではありません。Inspector で適切な進化タイプ(例:EvolveByLevel)を選び、そのパラメーター(例:TargetLevel = 16)を設定します。

サポートされている 37 種類すべてについては、進化ガイド を参照してください。

スプライトとマテリアル​

各モンスターにはビジュアルアセットが必要です。バトル用の顔は Material です(MCE のバトルモデルは、フリップブックシェーダーでスプライトを描画します)。アイコンとオーバーワールドのフレームは、通常の Unity の Sprite 参照です。

アセットフィールド用途備考
FrontFront(Material)バトル(相手側の視点)ピクセルアート、ポイントフィルタ
BackBack(Material)バトル(プレイヤー側の視点)ピクセルアート、ポイントフィルタ
IconIcon(Sprite)メニュー、PC、パーティ小さなアイコン、通常 32x32
OverworldWorldIdleSprite*、WorldWalkingSprite*(Sprite)フォロワーシステム方向ごとに 1 セット
色違いのバリアントFrontShiny、BackShiny、IconShiny、…上記すべて色を変えたバージョン

ピクセルアートのインポート設定​

すべてのモンスターのスプライトには、次のインポート設定を使います。

  1. Texture Type:Sprite (2D and UI)
  2. Sprite Mode:Single(スプライトシートを使う場合は Multiple)
  3. Pixels Per Unit:ゲームのタイルサイズに合わせる(通常は 16 または 32)
  4. Filter Mode:Point (no filter)
  5. Compression:None
  6. Max Size:実際の解像度のままにする
フィルターモード

Point 以外のフィルターモードを使うと、ピクセルアートがぼやけて見えます。これは、モンスターのスプライトを設定するときに最もよくある見た目の問題です。

モンスターのテスト​

MonsterEntry を作成した後:

  1. Database Browser -- OpenMon Hub → Database タブ → Database Browser を開き、名前または図鑑番号でモンスターを検索します。
  2. Validate Database -- OpenMon Hub → Database タブ → Validate Database を開き、参照の欠落を確認します。
  3. ゲーム内の図鑑 -- ゲームを起動して、MonsterDex でモンスターのエントリを確認します。
  4. 野生エンカウント -- モンスターを WildEncountersSet に追加し、フィールドで遭遇します。

一括作成​

多数のモンスターを一度に作成するには、いくつかの方法があります。

  • Essentials Importer(Indie・Pro・Source・Studio エディション) -- Pokemon Essentials の PBS データから種を直接インポートします。
  • スクリプトによる作成(Source・Studio エディション) -- MonsterEntry SO をプログラムで作成するエディタースクリプトを書きます。

ベストプラクティス​

  1. 個別のモンスターにはウィザードを使う。入力を検証し、よくあるミスを見つけてくれます。
  2. 図鑑番号を一意に保つ。重複すると検索の失敗を引き起こします。
  3. 適切なステータスの範囲を設定する。最初のモンスター の BST の目安を使ってください。
  4. 常にスプライトを割り当てる。スプライトがないと、バトルやメニューでピンク/マゼンタに表示されます。
  5. 進化チェーンを最初から最後までテストする。チェーン内のすべての種がデータベースに存在することを確認します。
  6. フォームは控えめに使う。フォームごとに、スプライトアセットによるメモリのオーバーヘッドが増えます。