とりあえず開発環境を整え、古いシューティングゲームのコードを修正し、動くようにした。 ES6をbabel + browserifyでbundle.jsでまとめていたが、これをrollupに変更した。するとimport周りが動かない。 どうもイレギュラーな書き方をしてしまっていたようで修正をした。 何がイレギュラーなのかというと、モジュールファイル中の変数にexportをつけていたのだが、この変数を参照するのことはできるが、代入ができない。つまり読み取り専用となっている。
//hoge.js
export var a = 0;
//モジュール内では代入可能
a=3;
//foo.js
import * as hoge from 'hoge.js';
hoge.a = 3;// エラー。rollup様に叱られる
変数が定義されているモジュール内では読み書きはできるのだが。たぶんそういう仕様なんだろうね。代入はしたいので、代入用のfunctionを定義して回避することにした。
//hoge.js
export var a = 0;
// 代入用関数
function seta(v){a = v;}
//foo.js
import * as hoge from 'hoge.js';
hoge.seta(3);
しかしなぜbabelでは問題なかったのかが疑問に残る。まあ、いいか。。
レポジトリも新しいものを作った。なぜか自分のレポジトリはforkできなかったので。。こういうときはブランチを作ればいいのかな。。
https://github.com/sfpgmr/www/tree/master/contents/dev/2dshooting2
画面はゲームバランスの崩れた、動きが硬いギャラガもどきのままだが。
縦スクロールのシューティングを作ろうとすると必要になるのが、
- 背景ビットマップ(マップチップ)およびキャラクタを作るエディタ
- マップチップを配置するエディタ(背景「あたり」情報付き)
- 地上敵・空中敵を配置するエディタ
- 空中敵の動きを作るエディタ
である。なくても作れないこともないが、面倒なことこの上ない。しかし作るのも面倒だ。なんとなならんかと思ったが私が思うようなエディタは見つからなかった。なのでelectron + d3 + riotで作りはじめている。 またしても途中で挫折しそうな雰囲気濃厚であるが。