# RPG Demo — 小さなタイルマップの世界 RPG Demo は短くて完成しているタイルマップの冒険です。灰色の森のそばの村、村長の家、そして洞窟に狼の住む森。キーボードで歩き、人と話し、宝箱を開け、森で物を集め、商人に売り、戦います。データファイルとシナリオだけでできていて、コードは一行もない。だからこそ、タイルマップのゲームがどう組み上がるのかを示す実際に動く例にもなっています。 このデモには自分のゲームカードがありません。**RPG Plus** ゲームの世界であり、RPG Plus がこの MOD を含んで、その上に作り上げています。開始は **プレイ → RPG Plus → ニューゲーム** から。RPG Plus の短い岐路のプロローグを過ぎると、この村に着きます。下のスクリーンショットは RPG Plus で撮ったものなので、そこに見える人や商品の一部はあちらのゲームが追加したものです。 ![夜の灰色の森のそばの村:家々、灯りのともった石畳の広場、村人たち、池、そして小道の上の勇者。](assets/village.jpg) ## 遊び方 - **歩く** は WASD か矢印キー、**走る** は Shift。 - **話す・開ける・読む** は、人や物に正面から向かって E か F。 - 扉や小道の端に足を踏み入れると、次のマップへ移ります。 物語:村長は、村の東にある洞窟のそばに住みついた狼を追い払ってほしいと頼んできます。池を過ぎ、森の小道を進み、道をふさぐスライムを片付けて、狼と対面します。狼を倒すと、村長がお礼を言います — その流儀で。 ## 世界の中身 - **マップは三つ。** 村(32×18 タイル)、村長の家、灰色の森。すべて Village Pack の村のタイルセットで描かれています。 - **人々。** 村長はクエストを出して終わらせ、村人は雑談し、看板が村の名を告げます。扉が一つ、鍵がかかっています。 - **宝箱。** 村長の家に一つ、森に一つ。開けた宝箱は開いたまま残ります。 - **森で集める。** 小道に沿って柴、石、森のキノコが落ちています。それぞれの場所は一度だけ採取できます。キノコは体力を 5 回復します。 - **商人。** エリクサー(体力を 20 回復)を硬貨 10 枚で売り、柴を 1 枚、石を 2 枚で買います。 - **戦闘。** 小道のスライムと洞窟の狼はマップ上に見えていて、話しかけると戦闘が始まります。森では、スライム一〜二匹とのランダムエンカウンターがおよそ 48 步ごとに起きます。 ![灰色の森:狼のいる洞窟への小道、宝箱、石、キノコ、そして道をふさぐスライム。](assets/forest.jpg) ![商人の店:左に商品、選択したエリクサーの価格と購入ボタン、右に自分のインベントリ。RPG Plus はこの店にさらに商品を追加します。](assets/shop.jpg) ![スライムとの戦闘:左下に勇者、上にスライム、右に戦闘ログ。](assets/battle.jpg) ## 作者向け:組み立て方 ```filestree rpg_demo_game/ ├── maps/ rpg_village.json、rpg_elder_house.json、rpg_forest.json ├── map_events//events.json 人、扉、宝箱、拾い物、モンスター ├── scenes/ マップごとに 1 つのシーン ├── scenarios/rpg_demo/ イントロ、マップ入り口、events/*.scenario ├── characters/ 勇者、スライム、狼 ├── items/rpg_demo/ 柴、石、キノコ、エリクサーとそのアイコン ├── shops/village_merchant.json └── locale/ 7 言語の名前とシナリオ翻訳 ``` **マップ**はタイルセットの上に層として重なるタイル番号の格子で、名前・サイズ・ズームを持ちます。森のマップはランダムエンカウンターも列挙します: ```json "Encounters": { "Steps": 48, "Groups": ["rpg_slime", "rpg_slime,rpg_slime"] } ``` **イベント**はタイルの上に置かれた何かです。`"Trigger": "Touch"` の扉はテレポートし、モンスターはシナリオを実行し、自分のフラグが立つと消えます: ```json { "Id": "wolf_boss", "X": 25, "Y": 8, "Sprite": "village/wolf", "Dir": "Left", "Scenario": "rpg_demo/events/wolf_boss", "Condition": "rpg_wolf_dead != 1" } ``` **シナリオ**が台詞を言い、戦闘を始めます。勝つとフラグが立ちます: ```scenario ptext "洞窟のそばに狼が座っている。村長のヤギを見るような目つきで、こちらを値踏みしている。" key=rpg_demo/wolf/line1 text "グルルル。" key=rpg_demo/wolf/line2 action rpg.battle enemies=rpg_wolf,rpg_slime win_flag=rpg_wolf_dead end ``` この MOD のシナリオの台詞はロシア語で書かれています。各行には `key=` が付き、翻訳は `locale/scenarios_.properties` から取られるため、ゲームはインターフェースの言語で表示します: ```properties rpg_demo/wolf/line1 = 洞窟のそばに狼が座っている。村長のヤギを見るような目つきで、こちらを値踏みしている。 ``` 他の部品も同じ仕組みです。宝箱は `action item.add` を実行してフラグを立て、逆の `Condition` を持つ「開いた宝箱」イベントに置き換わる。商人は `action trade.open shop=rpg_demo/village_merchant` を実行する。村へ初めて入るとイントロのシナリオが走り、`action party.add id=rpg_hero` で勇者をパーティに入れます。 マップやイベントを目で見て変えるには、RPG エディター道具のマップエディターを使います。 ## うまくいかないとき 1. **扉が何もしない。** `Touch` の扉は踏んだ瞬間に働きます。`Action` の扉は正面から E か F が必要です。 2. **モンスターや宝箱が戻ってきた。** その `Condition` は、シナリオが立てるのと同じフラグを見なければなりません。 3. **店が空いている。** trading MOD がゲームに必要です。また、シナリオの店 id は `shops/village_merchant.json` と一致しなければなりません。