ゲームプログラムめも日記 このページをアンテナに追加 RSSフィード


けんもほろろ  / オススメゲームプログラム本  / 作ったもの置き場  
ゲーム開発のデザパタまとめ  / めも日記まとめ  

2006-02-28

[]「えぐぜりにゃ〜」ソース解説4 「えぐぜりにゃ〜」ソース解説4を含むブックマーク

最後に「敵の生成ロジック」を見ていきます

(※バージョンは「exelinya_0214.zip」です)

 

geneenemy

敵の生成はgeneenemyですね。(1128〜1182行目)

まあ、そんなに長くないです。

(最新バージョンでは、生成ロジックが強化されているようですが、、)

 

敵の生成を構成する要素としては、

  • 生成条件
  • 開始座標
  • 移動量

という3つの要素があります。

 

これらの要素を意識すると理解が早いと思います。

 

 

ザコ(なす・たこ焼き)

では、まず、ザコ敵である「なす・たこ焼き」です。

 

ザコ敵であるからには、ゲームバランス上、

「生成されやすい」

とするのが素直なゲームデザインです。

 

それが、1135行目の

	play_timer \ 20 == 0 & enemy_count < 2

という条件式です。

 

「enemy_count」というのは、画面内の敵の数です。

つまり、画面内に敵がいない場合、サクサク生成されるようになっています。

 

次に「開始座標」と「移動量」です。(1137〜1143行目)

			rr = double(rnd(64)) / 32.0 * MATH_PI
			vx = 6.0 * sin(rr)
			vy = 6.0 * cos(rr)
			xxx = 320.0
			yyy = 240.0
			xxx -= vx * (352.0 / 6.0)
			yyy -= vy * (352.0 / 6.0)

処理の流れとしては、

  1. 「移動量」を決める
  2. 画面の中心から「移動量」を差し引くことで「開始座標」を求める

となっています。

 

つまり、「移動量」から「開始座標」を逆算する、という面白い手法をとっています。

これだと、自然な開始座標が求められていいですね〜。なるほど。

 

箱(5箱・X箱)

箱の生成ロジックは、ランダム性が強いものとなっています。(1153〜1159行目)

 

というのも生成の条件式がこうなっているからです。

	play_timer \ 60 == 0 & rnd(8) < 1

12.5%の確率でしか発生しないので、

出るときはガンガン出ますが、出ないときは全然出ないです。

 

これは、箱は「特殊アイテム」的な要素が強いためかもしれません。

 

特に超強力なX箱は、「12.5%×20%=2.5%」という低確率です。

このランダム性の強さのため、後半ピンチになったとき、

「やべ〜、やられるーー!」

「やべーよ、やべーよ〜」

というギリギリのときにX箱が出ると、

「キター!!!コロニー落としアイテムキターー!!!おまえら、ぶっ殺し!!!」

というように、絶妙なギャンブル性が生まれています。(´Д`;

 

あと、箱は「開始座標」と「移動量」が固定なので、

「掴みやすい」

というのも特徴です。

 

 

ボス

1161〜1181行目がボス(牛乳・プリン)です。

ボスは生成条件に二重のガードをかけています。

 

1つ目の条件は、この式です。

	play_timer \ (295 - level) == 0

このため、レベルが低いうちは全然出てきません。

 

もう1つの条件は

	t < (level + 6) / 10

という式です。

「t」は画面内にいるボスの数です。

 

ボスが多く出過ぎないための配慮ですね。

 

 

と、ここでの重要ポイントは、

「生成に乱数を使っていない」

ということです。

 

ボスは、出過ぎたり出なさすぎると、

大いにゲームバランスを崩してしまいます。

 

そこで、乱数によるランダム性を排除しているわけです。

 

「開始座標」と「移動量」については、

ザコとほぼ同じロジックなので省略です。

 

 

終わりに

kenmoは、ゲームプログラム本をよく買って読んだりするのですが、

ゲームのバランスや敵の動きなどのアルゴリズムに関する本は、あまりありません。

 

そして、サンプルゲームは、「ゲームを分かってない人」が作った「つまらない」ものがほとんどです。

(つまり、面白いゲームを作るための参考にならない)

 

今回、OMEGAさんのソースを読んだわけですが、

それは、ゲームプログラム本よりも何百倍も参考になりました。

 

 

ということで、まとめとしては、

「面白いゲームを作りたかったら、面白いゲームを作っている人のソースを読め!」

ということです。

 

以上でーす。おちかれでした〜。