爆発物処理の方法 〜派手にぶちまけろ!〜


											2年H科 Nidhoggr




0.最初に

 どうもNidhoggrです。去年めちゃめちゃ作りかけのゲームを展示して生き恥を晒したNidhoggrです。
そこ名前読めないとか言うな。ちゃんと北欧の読み方で「ニズヘグ(※1)」と読みなさい。間違っても「にどほげ」とか読まないように。
今回はゲーム作っていないので展示はないですが、この一年間培った技術の片鱗を少しばかり晒すことにしました。参考にしていた
だければ幸いです。

 で、タイトルがとてもアレゲですが別に今からどこかの地下鉄を爆破しにいくとかそういうことではないです。(※2)
今回はゲームに於いて結構大事な「爆発エフェクト」についての話をしていこうと思って居ます。そんなに高度なことを話すわけでは
ないので気楽に読んでください。



1.爆発エフェクト

 爆風エフェクトは主にシューティングやアクションゲーム等、動きのあるゲームに用いられることが多いです。最近ではRPGなどでも
視覚エフェクトとして利用されることが多いです。ゲームで使われるエフェクトで最もオーソドックスで、ゲームエフェクトプログラミング
の入門のような存在だと筆者は思っています。(※3)
 そんな爆風エフェクトですが、重要な割にエフェクトを作る際に悩む人が割と多いです。その理由の一つに、爆発エフェクトは無形な
ためにスプライトがうまく作れない、作り方が分からない等あると思われます。そんな爆風エフェクトの種類とその表現の仕方を解説
して行きたいと思います。



2.爆発レベル1

 とりあえずお手軽簡単に作れる爆風から。これはスプライトが1枚だけで済み、しかも簡単です。試して見てください。
まず、下のようなドーナツ型の画像を用意します。紙面版では色が見えないですが、色はプログラム中で変えられるので白黒で結
構です。



これをプログラムで、高速で拡大するだけです。円が広がり、あたかも敵が弾け飛んだように感じます。色は適当に頂点色をいじって
ください。(※4)
「なんだこれだけか」と言わないように。これだけでも十分視覚的に敵が死んだことを知らせる効果を出すことが出来ます。
円描画が使える場合はもっと手軽にこれと同じ効果を円描画で代用することが出来ますが、円描画は描画コストが大きく、あまり多
く表示させると重くなる原因になってしまうため、あまりお勧めできません。(※5)
 尚、この例は本当にお手軽なので、小さなミニゲームで使う程度の方がいいでしょう。もう少し凝ったエフェクトを出したい場合は次
の方法を使いましょう。ただしそれなりに手間はかかります。



3.爆発レベル2

 実際2Dでそれなりのゲームを作るとしたらこの方法が主に使われるでしょう。この場合は少し手間の面で大変になります。
今度は下のような連続になってる画像を用意します。今回はここが一番大変でしょう。色が付いているので紙面版は見にくいと思い
ますが・・・



これを順番に切り替えて表示します。丁度パラパラ漫画のノリで速度を調節してアニメーション(※6)させます。今回は拡大をしなくて
いいので、内部の負担は少し軽くなります。内部の負担で大きくなるところがあると言えば、画像を格納しておく領域でしょうか。最も
負担がかかるのが画像を用意するところだと思います。画像については自分でドットを打っても、爆風の絵を作ってくれるフリーソフ
ト等(※7)を利用してもどちらでもよいでしょう。これを発展させて、なるべく小さな爆風を爆発対象の数箇所で起こすようにしてもよい
爆風が作れると思います。(※8)
 しかし、この方法だと今度は画像を作るまでの手間がかかります。更に同じような爆風が多くなるので、バリエーションを増やすた
めにその手間が倍増するということもよくある話(※9)です。そこで、マシンパワーは多少必要にはなりますが、手間が少なく、更に見
栄えも良くなるエフェクトの作り方が次になります。「企業が作るゲームみたいにカッコイイエフェクトが欲しい!」と言う方はこれを参
考にしてみると良いでしょう。(流石に程遠い話ですが・・・)



4.爆発レベル3

 今度は割りと本格的な爆発です。使う画像は下の一つだけ。パーティクル(※10)というものを使って表現します。



この画像をパーティクル、つまるところ一つの粒子と考えて飛び散らせる方法です。それなりに知識がないとコストパフォーマンスを
考えて生成するのが難しい手法でもあります(※11)が、爆風の他にも様々なエフェクト(※12)に応用が出来て、汎用性の広く使いや
すい方法です。加算合成(※13)という手法と一緒に使うとより効果的に爆風エフェクトを作り上げることが可能です。具体的なソース
コードは長くなるので載せませんが、上の画像を、頂点色を赤から黒に変えながら、適当な方向に適当な速度で大量に飛ばしてや
るとうまく爆風が出来ます。


5.熱と煙  さて早足で解説してきましたが、もう一つ重要なことを。 爆発で重要なのは飛散の仕方より何より「色の変化」です。大抵爆発は飛散すると燃えている炎が冷めて黒い灰になります。 炎というのは温度で色が違います。高温部になればなるほど白く、低温であるほど黒くなっています。爆風を作る際にもこの点に留 意して爆風の画像を作成したり、頂点色を変えていかなければなりません。真っ白になるほどの高温で燃えた爆発も、最後には黒 い煙になるわけです。 6.最後に  ゲームに於いてエフェクトというものはかなり重要です。たとえ三角丸四角だけで出来ているゲームでも、ゲームのテンポを作る意 味合いでも、エフェクトは必要だと思います。STGなどのリアルタイム性のあるゲームに於いては特に爆風エフェクトなどが重要な要 素を持っていて、それをうまく使えるかどうかがゲームの良さを決定する要因の一つになるとも言えるでしょう。 これからゲームを作ろうとしている人、今現在作っている人も、上手なエフェクトの作り方を今一度考えてみてはどうでしょうか。 ------注釈-------------------------------------------------------------------------------------------------------------- ※ 1 : Nidhoggr = 北欧神話で世界樹の根っこをかじっている竜。「怒りに燃え蹲る者」の意。 ※ 2 : 本当にありそうな話。物騒な世の中です。 ※ 3 : ゲームエフェクトの解説書には結構この手の話が載っています。 ※ 4 : 頂点色とは、ポリゴンの色のことです。詳しくはぐぐるさんに聞いてください。表示する画像の色を変えることができます。 ※ 5 : 円描画は三角関数を使ったりするので物凄く重くなるときがあります。 ※ 6 : アニメーション。静止画を人間の目の残像効果によって動いているように見せる技術です。 ※ 7 : 結構探せば色々ありますのでぐぐるさんに聞いてください。 ※ 8 : 連鎖爆発というやつですね。 ※ 9 : 人手が多い企業ゲームとかでは普通にやってるようです。個人で作っている場合はちょいときついですが。 ※10 : 「小さな粒子」という意味です。マシンスペックが高くなってる現在ではよく用いられる常套手段です。 ※11 : DirectXを使ったことがある人なら分かると思いますが、主にLockとUnlockのコストの問題です。 ※12 : 水飛沫とか雪とか様々なエフェクトに使えます。 ※13 : 重なっている画像の色を足し合わせて合成する方法。エフェクトがめちゃめちゃハデなゲームは大抵これです。