tmlib-rpg の紹介のみ

クリスマスまであと１０日です！
=========================================================================
tmlib.js Advent Calendar 2014 と言う事で何かこうかな～？
と、考えていたら「まどマギ」フォントを見つけて、つい書いてしまったのが前の記事で、１５日はもともと予約していた枠です。

予定では、現状の tmlib-rpg でデモを作ろうと思ったのですが、思いのほかバグ（気になるところ）が多く… 最初からゲームを作るように RPGComplier とか作ってたら時間なくなってしまった。

なので、本日は、tmlib-rpg の現状とこれからの事とかを書きます。

tmlib-rpg って何？
=========================================================================
tmlib-rpg は、tmlib.js で、RPG を作成したい感じのプロジェクトです。まだまだ作成中。
（正確には、RPG を作るためのフレームワーク？）

将来的には、ゲームを作る人は、さまざまな素材(画像とか音)と、json のみを用意することで、JavaScript を触らずに RPG がブラウザで提供できるようになる予定。先は長い…

json で用意するのは、キャラクターやモンスターのデータや、アイテム、スキル、マップ、イベント等。で、これらを共有したり出来る仕組みがあると面白いかな～と。

なんで、tmlib.js で？
-------------------------------------------------------------------------
もともと RPGツクール系でRGSS(Ruby)を扱って作ってたんですが、Windowsバージョンとか上がるとツール自体のバージョンアップ対応とか、いろいろ問題があって、RPGの作成に時間がかかると、この辺がちょっとネックに…

そんなとき RPG.JS を見てブラウザ(JavaScript)でもここまでできるんだ～って思って、これで行こうと思っているときに、tmlib.js を見つけ、これをベースに自分でも作ってみることにしました。

tmlib.js はこれのみでほとんどそろってるのが、とても良いです。
いろいろそろってる感は、他の記事を見てもらうとして…tmlib-rpgな話

現状～
======
いまは、どこかで書いた気もしますが、イベントコマンドをコツコツと作りながら、アイテムの実装を見直しつつ、お店の処理をためしに実装しています。

お店の処理は、イベントコマンドの塊で、アイテムを選択／増減、お金の増減とか、選択しなかったときの処理や、買おうとしてやっぱりやめる～とか、ループや分岐もいっぱい使います。


これから～
======
さすがにモチベーションを保つために、戦闘シーンをそろそろ作ろうかと思っているところです。
そのために、スキルの実装ですね。

アイテムは、だいたい出来てるので…
同じ様にスキルも実装中。

アイテムやスキルの威力や効果は、ゲームを作る人が決めるので、tmlib-rpg では、出来るだけいろんなアイテムやスキルが作れるように設計中…（といっても予想は超えてくるだろうけれど）

戦闘シーンが出来たら、改めてデモゲームを作りたい。

ちょいちょい… HTML5 & JavaScript な RPG も出てきてるので、ゆっくりと＾＾

サンプル
====

まだまだゲームにはなってないです。準備が間に合わなかった…
[demo](https://static-ca462.firebaseapp.com/qiita/20141215a/)

説明
----
デモが間に合わなかったので、途中だけど今の system.json 説明です。

```json:system.json
{  
   "setting":{          // システムセッティング（ゲームオプション初期値？）
      "se":false,       // 効果音のON/OFF
      "bgm":false,      // BGMのON/OFF
      "messageSpeed":3  // メッセージの表示スピード
   },
   "start":{  // 開始時のデータ
      "actors":[  // 開始時のアクター（キャラクター）初期パーティ
         1
      ],
      "map":{
         "id":1, // 開始時のマップ
         "x":14, // 開始位置 x
         "y":5   // 開始位置 y
      }
   },
   "database":{  // データベース位置等の情報
      "path":{  
         "data":"001/"
      }
   },
   "main":{  // ゲームメイン
      "nextScene":"SceneTitle", // 最初のシーンクラス（ここではタイトルシーン）
      "param":[  // シーンクラスパラメータ
         "scene.title"
      ],
      "assets":{  // 初期アセット情報 （最初のシーンより前にロードされる）
         "scene.title":{  // タイトルシーンの初期化データ
            "type":"json",
            "src":{  
               "menus":[  
                  {  
                     "name":"NewGame (push enter key!)",
                     "action":"NewGame"
                  },
                  {  
                     "name":"Option"
                  }
               ]
            }
         },
         "system.se.menu_decision":"audio/se/fin.mp3",
         "system.se.menu_cursor_move":"audio/se/fon.mp3",
         "windowskin.image":"img/test_windowskin2.png",
         "character.hiyoko":{  
            "type":"tmss",
            "src":"001/spritesheet/hiyoko.json"
         },
         "character.object001":{  
            "type":"tmss",
            "src":"001/spritesheet/object001.json"
         },
         "character.object002":{  
            "type":"tmss",
            "src":"001/spritesheet/object002.json"
         }
      }
   }
}
```

実際には、json は大きくなると手で書くのは大変なので…
CoffeeScript でオブジェクト作って、json にする感じの RPGCompiler をとりあえず作成中

マップデータ等が特に大変で、この辺はツールが必要ですね。
tiled はあるんだけど、イベントとかはさすがに対応できれないので、エディタを作りたい…

https://github.com/fukuyama/tmlib-rpg/blob/develop/src/demo/001/map/001.coffee