enchant.jsとm3scriptに刺激されてやってみたJavascriptでゲーム開発。
sunflower.js
というのを作っています。
enchant.js、m3scriptなどの新しいJavascriptゲームライブラリに刺激されて作り始めました、
Javascriptのゲームライブラリです。
作り始めてみると、これが面白い。
enchant.jsのソースを読んだりして、目からウロコしつつ、開発を続けています。
やっぱJavascript、面白い!
そこで、現在の実装段階とどの程度まで作りたいか、ちょっと途中経過をまとめてみました。
構造
現在のsunflower.jsの大まかな構造と機能です。
enchant.jsとだいぶ考え方が異なります。
enchant.jsのようにCoolにはまとまっていません。
enchant.jsを読むたびに勉強になります。
sunflower.jsもMITライセンスです。
改変、改造、参考、引用、すべて自由にする予定です。
☆まだどこでも配布してません。配布するときはGoogle codeとGithubの予定
コンセプト
- 「ゲームループを意識してプログラミング出来る。」
→オブジェクト的ですが、ゲームループを意識してプログラミングする要素が大きいです。
- 「複雑な処理もパックを使えば簡単に出来る。」
- 「複雑な処理を覚えればガチにプログラミングできる伸びしろを持つ。」
- 「シンプルな実装」
対象プラットフォーム
webkit系ブラウザ、及び、iphoneのみ(Androidでも動くとは思われる)
IE,FireFoxでもHTML5をサポートしていれば動くとは思いますが、完全サポートを目指してはいません。
クロスブラウザは最高だと思いますが、その部分は敢えて切りました。
ゲームループ
ゲームループは、FPSなどは指定しません。
そのブラウザの最適速度でアニメーションさせるようにしています。
実際問題、これでiphoneでシューティングとかやると結構動かないんじゃないかと思っています。
ちょっとできてきたら試してみます。
いま現在は多少遅いものの、普通に動きます。
描画
描画には現在DOMのみを用いています。
まだcanvasはサポートしてないです。
基底ライブラリ
基底ライブラリにjQueryを用いています。
すべてオブジェクトはjQueryのエレメントに直接アクセス可能なので、
jQueryでできる操作は全て出来ます。
アニメーション、fadeIn,fadeOut,Ajax、すべてjQueryを通して使用できます。
sunflower 本体
sunflowerオブジェクト本体は、様々な便利メソッドや基本メソッドを内蔵する、このライブラリのネームスペースです。
オブジェクト
ゲーム中に出てくるすべてのオブジェクトは
sunflower.makeElement()
というメソッドで生成、登録されます。
sunflower.add()
というメソッドでフィールドに追加されます。
すべてのオブジェクトには、以下の登録ができます。
start:起動条件。このメソッドがtrueを返すときに、このオブジェクトが起動します。
end:消滅条件。このメソッドがtrueを返すときに、このオブジェクトが消滅します。
init:初期化処理。このメソッドが起動するときに、一度だけ実行されます。
loop:ループ処理。起動されると、メインのゲームループにこのオブジェクトが組み込まれ、このメソッドが毎回実行されます。
destroy:消滅処理。消滅時にこのメソッドが一度だけ実行されます。
すべてのオブジェクトは、その操作に便利なメソッドをいくつも保持しています。
オブジェクト間通信
オブジェクト間は簡単に起動、消滅等の通信を行うことができます。
あるオブジェクトをトリガーにして、あるオブジェクトを消したりすることが簡単に出来ます。
また値も渡すことができます。
入力取得
クリックとタッチの入力を取得します。
キーボードの入力は取得しません。
計算メソッド
sunflower.mにいくつかの計算メソッドを備えています。
タッチされた部分への角度取得
角度→X,Y
度数→ラジアン変換
など。