[npm] 経験値とレベルを管理する rpglevel モジュール
2013年7月10日
RPG で良くある概念である「経験値とレベル」を管理するための npm モジュールです。
例えば、ドラクエや Wizardry の各キャラの経験値とレベル、
今で言うならパズドラのランクや各モンスターの経験値とレベル、
そういった「経験値とレベル」の関係を表現するために使います。
ダウンロードやインストール方法は、GitHub – rpglevel を参照して下さい。
なお、"npm" と書いてはありますが、
もちろん .js を直DLして単なる JavaScript ファイルとして
ブラウザで使用することもできます。
Usage
// node.js の場合
//var RPGLevel = require('rpglevel');
var lv = new RPGLevel();
//
// 関数で経験値テーブルを作成する
// 各レベルアップに必要な経験値の差分を return する
// 配列で直接定義してもいい、e.g. [0, 4, 6, 8, 10]
//
// Lv1 = 0
// Lv2 = 4
// Lv3 = 6 (Total = 10)
// Lv4 = 8 (Total = 18)
// Lv5 = 10 (Total = 28)
//
lv.defineExpTable(function(level){
return level * 2;
}, {
maxLevel: 5
});
// 経験値 10 獲得、レベルは獲得時点で 3 に上がってる
// レベルアップ処理をする場合は、この返り値で判定して処理を入れる
lv.gainExp(10);
// レベルを返す、下記のショートカット
console.log(lv.getLevel()); // -> 3
// レベルを含むその他の情報を返す
// 次のレベルアップに必要な経験値などが含まれる
console.log(lv.getStatuses()); // -> { level:3, .. }
技術的・開発的な話
前回 に続いて今回やったこと:
- サポート環境に node.js を加えて、ブラウザと両方で動くようにした
- npm パッケージとして登録した。
ちなみに npm adduser で要求される Email は外部に公開されるので注意して下さい。
テストの話
Testem でHTMLをホストしたり、testem ci でもそこまで不便では無いのですが
やっぱり、node.js で直接行うのと比べると実行速度が遅いです。
やっぱり、node.js で直接行うのと比べると実行速度が遅いです。
可能な限り node.js 上で行った方が気持良く開発できるので、
設計面で、ブラウザ依存とそうじゃない部分の分割は、
多少手間を掛けても細かくやった方がいいと思いました。
mocha 上での実行の分岐には、skipIf みたいな仕組みがあるのかなー?
・・・パッと見た感じ、無さそうな気もするけど。
参考リンク
あざざざざざざーす!