jgame.jsで縦スクロールシューティング

昨日作った横スクロールシューティングに、以下の改変を加えてみた。

  1. スクロール方向を縦にする
  2. 画面サイズをwindowに強制フィットさせる
  3. タッチ対応する

これで、iPhoneのRATINAディスプレイでもなんとなく遊べるんじゃないだろうか、と思ったが、テスト出来んからわからんwなんとなくだがviewportいじらんと駄目な気もする。
まあ、動くかもしれないバージョンっつーことで。
http://jgame-js.sourceforge.jp/examples/vshooting.html


強制フィットさせてるから画質は悪いけどな。
一応enchant.jsも見たけど、enchant.jsはcanvas.style.transformでやってた。こっちは単純にcanvas.style.widthとcanvas.style.height。念のため比較したけど、transformだと画質よくなるとかは特になし。


ついでに横スクの方もタッチ対応は直してる。リンクは昨日の記事で。

jgame.js自体の修正内容

一応、シューティングゲーム作りながら、これはフレームワークだなぁ、これは個別だなぁってのを切り分けしつつjgame.jsを直したりはしてる。
直した箇所は俺もドキュメント保守があるため、changes.txtを作って変える度に書いてるんだけど。


2本シューティングゲームを作っただけで、まだこのくらいは余裕で出ちゃうね。

1. Game.setBgColorを追加
2. Rectangleクラスに諸々追加してcommon.tsから分離しRectangle.tsに
3. CommonSizeインターフェースのwとhをwidthとheightに修正
 → imageやentityなど、汎用的なクラスも指定可能とするためです
4. CommonOffsetとCommonSizeを継承したCommonAreaインターフェースを追加
5. Sceneクラスにrootフィールドを追加(scene.layers["root"]に対するショートカット)
6. EクラスにgetDistanceメソッドを追加
7. ShapeでShapeTypeがarcの場合のみ中央寄せ表示になっていたのを、他と同じように左上寄せ表示に修正
8. Game.endを追加。現在のシーンを残したまま、強制的にゲームを終了するメソッド
9. TimelineのwaitUntilが動作していなかったのを修正。またwaitUntil内でaction_startを呼ばないよう修正(tl.enchant.jsとの仕様差異)
10. Easing.RANDOM関数を追加。ランダムなイージング関数を返す
11. GameクラスにfitToWindow、getWindowSizeメソッドを追加。GameRendererにchangeFrontCanvasSizeメソッドを追加。強制スケールによるウィンドウフィットをサポート
12. CANVASまでをcontainer -> canvasの2層構造から、container -> handler -> canvasの三層構造に変更。containerにスタイルが設定されているとずれるため。
13. JGUtilクラスを追加。追尾処理、距離算出などのユーティリティ関数を格納


あんまりブクブク太らせるつもりはないんだけど、やっぱちょっとアクション系をやるには不親切すぎる点が多かったので、ぼちぼち拡充。
実際シューティング系の基本的な処理で今回も結構時間とられたし、この関数あったら楽出来たよねってのは追加した方がいいだろということで、JGUtil作ってぽちぽち追加。


最終的にjavascriptで5000ステップくらいで収まりゃいいんじゃねーのとは思う。今3000弱。まだ余裕はある。
ver0.3は早くて来月かなぁと思ってたんだけど、修正量がまだそれなりに出るので、予想よりちょっと早く出した方がいいかなって感じ。
なお今回までの修正分は全部trunkにコミット済み。

ver 0.3のリリース次期について

一つのバージョンアップでの修正項目は、最大でもせいぜい20くらいで済ませたいので、細かいのはシューティングで大体出たので、あと大きめ課題の一つをやっつけて0.3ってことにすればリリース出来るかなと。
出来ればモジュール。いいアイデアが思い浮かばなければサウンドサポートかな。


サウンドはそんなに面倒な事もないんだけど、昔は俺もゲームサウンド大好きだったのに、最近は人の迷惑気にして自分がサウンド鳴らさないから優先度下げがちなんだよね。
目安は来週頭くらいっすかねぇ。急がないと嫁の陣痛始まっちまうしな。