ゲーム作製の風景
特に書くこともないので、どのようにゲームを作製しているかを書くことにします。
ゲームエンジン
まず、ゲームエンジンは吉里吉里Zを使用しています。
これまでの3作(東方ブロック崩し、東方ブロック崩しR、東方ふくやぶり)については、ネイティブプラグインの自作はほとんどしていません。
東方ふくやぶりのみ、攻撃した範囲を透過させる処理と、敵弾位置の更新処理のためプラグインを自作しています。
正直に言うと、東方ふくやぶりの敵弾処理はイマイチです。私の環境だと、敵弾が1000発を超えたあたりから処理落ちし始めます。
位置の更新は本来であれば並列化が可能なのですが、楽をするためにロバスト性重視でTJS式による指定をするようにしたので並列化できませんでした。
マルチスレッドで tTJSVariant
や iTJSDispatch2*
をうまく扱う方法を知っている人がいたら教えて欲しいです。おそらく参照カウントが不正な状態になっているためだと思うんですが、アクセス違反で落ちるんですよね……。
着せ替えの実装方法
白濁液(♡♡♡)モードの着せ替えは、PSDファイルを使って実装しています。パーツごとにレイヤ分けしたPSDファイルを作成し、吉里吉里のPSD読み込みプラグインを使って表示する形です。記事冒頭の画像が着せ替え用のPSDファイルで、別途用意したJSONファイルで部位ごとのレイヤ名を指定しておくと、スクリプト側でそれを読み込んで表示する仕組みになっています。
UIの設定
PSDファイルと言えば、東方ふくやぶりではUIの設定にも使っています。東方ブロック崩し、東方ブロック崩しRではKAGのシナリオファイルにべた書きしていたのですが、やっぱり辛かったので。
こんな感じで作成したPSDファイルを読み込み、各レイヤをいい感じで並べて表示しています。「他のレイヤ名-selected」というレイヤがあるときはボタンとして扱い、カーソルキーで移動できるように自動で設定しています。
ステージ作成
東方ふくやぶりはSTGなので、ステージを作成しなければなりません。敵の出現位置の設定にはTiledを使用しています。
↑のように敵や障害物の位置、KAGシナリオの発火タイミングなどを設定します。その設定ファイル(*.tmx)
を自作のRubyスクリプトでJSONファイルに変換したものをゲームに組み込んでいます。
Tiled自身でもJSONファイルを吐けるのですが、ゲームで使いやすい形で出力したかったので、間に変換処理を挟んでいます。
敵を撃破したりイベントの処理が完了すると progress
が進行して次のイベントが発火する、という仕組みです。
思ったより長くなったので、今日はここまでにします。
次回はせっかくなので(?)今回の続きとして、STGの敵キャラをどのように制御しているかを描きたいと思います。
今回はこんなところです。こういう話、興味を持つ人はどの程度いるんでしょうね?
何かあればコメント欄まで。
よろしくお願いします。