2015年9月28日月曜日

HSPで画像の重ね合わせをしてみた

あいにくの曇り空だったが、スーパームーンを少し見ることができた。
なんとなくだが、月明かりがいつもよりも強い気がする。
中秋の名月とほぼ同時に月が地球に
接近するのは稀らしいので何かありがたい(-人-)

先週ブログを書いていたときに、
ハロウィンにちなんだゲームを作りたいなー
と思っていて、ふわっとした企画を考えて、少し作り始めた。
まだできるかどうかわからないけど、初めてHSPで絵を出せたのがうれしいのでブログを書いてみる。

HSP自体はだいぶ前から知っていて、ちょっとしたGUIのツールを作ったりしていた。
GUIアプリケーションをここまで短く実装できる言語は自分の中ではこれが一番だと思う。
もっと短くできるかもしれないが、ビギナーな私でもこのくらい短くかける。

screen 0, 160, 64 // ウィンドウ作成
button "greet", *OnGreet // ボタン作成&イベント関連付け
stop
*OnGreet // イベント
dialog "Hello!"
stop

バージョンアップして今では WebGL  iOS Android でも実行できる。
そのときは HSP3Dish という環境を使うために #include "hsp3dish.as" でスクリプトを読み込む。
 参照:HSP3Dish プログラミングマニュアル・基本仕様ガイド
制限として、拡張プラグインやCOM/Variant型や外部DLL呼び出しやモジュール変数については未サポートのようだ。

ゲームでスプライトを用いるため es_set などのスプライト用の関数を使いたかったが、これは hspdx という拡張プラグインなので HSP3Dish には対応していないと思う。
そんな理由から、スプライト系の処理を自作しようと思う。
先週ちまちまとドット絵を描いたので、それを HSP のウィンドウに描画してみた。


なんかドット絵を作っている最中は、わりと良く思えたのに、
ウィンドウに出してみると何か微妙(´・ω・`)
ちなみに、キャラは4コマにも描いている大砲ゲーム「お団子キャノン」に出てくるキャラクターだ。
キャラの並び方は、Wolf RPG Editor に同梱されているグラフィック合成器のフォーマットにあわせている。
寄らば大樹の陰。仕様に悩むこともなく説明もしやすい。助かります。


キャラの描画手順

さきほどの画像は1枚の絵ではなく、帽子、頭、肌、服上、服下、靴のパーツにわけて作成している。
作成は有名なドット絵のエディタ Edge を使っている。
これもレイヤーごとに描画ができて、重ね合わせ・アニメーションの確認も簡単にできてとても便利だ。
作ったパーツ画像を複数のバッファに読み込み、それを重ねて表示するプログラムをHSPで作成した。

パーツ画像の読み込み

まずは、パーツ画像をバッファに読み込む。
for i, 0, 8, 1
buffer i + 1
picload imagePath(i)
next

今回は8つのパーツ画像を読み込むため8回処理を繰り返している。
buffer 命令で直後の picload の画像読込先をスクリーンではなくバッファに切り替えている。
引数の番号がバッファの番号だ。

パーツ画像の重ね合わせ描画

読み込んだパーツ画像を、バッファからスクリーンに繰り返しコピー転送する。
gsel 0
for i, 0, 8, 1
pos 0, 0
gmode 2, 320, 480//24, 32
gcopy i + 1, 0, 0
next

gsel 命令で 0 番目のバッファを gcopy の転送先に指定している。
0 番目は screen 命令で作られたウィンドウのバッファだ。
buffer 命令だとウィンドウのないメモリ上だけのバッファになるが、 screen ではウィンドウに表示する画像データを扱うバッファになる。
gmode でコピー転送の方法を指定する。
今回は重ね合わせの際に黒(0, 0, 0)の色を透明色として扱って転送するために、第1引数に 2 を指定した。
これは黒から変えられないようで、 edge で最初白を透明色にしていたのを黒に変更して対応した。
edge のイメージのメニューに特定の色を置き換える項目があってすごく助かった。

今後の予定

単純な処理かもしれないが、右往左往したのできちんと重ねて表示されたときはすごいうれしかった。
作りたいゲームのイメージでは、もっとたくさんのキャラを動かす予定だ。
しかし、1つのキャラでさえも8つのパーツを組み合わせて作り、それを333ミリ秒ごとにアニメーションさせるとなると、実際に処理時間が足りなくなるかもしれない。
次は、アニメーションを手動でやってみる。

こんな出だしで、ハロウィンのころまで間に合うのかわからないが、だめもとでやってみよう。
あと、口調を意図的に変えてみたのだが、これもいつまで続くかわからない。



0 件のコメント:

コメントを投稿