ライフゲーム?のチラシの裏

気がついたらコミケから五日が経っていました。惚けるのもいい加減にしないとな。

今日は、コミケ前に作ったライフゲームっぽいゲームの製作秘話というかチラシの裏な話です。自己満足な内容なので興味のある方だけ読んでください。

まず始めに製作にあたって参考にしたサイトのご紹介。本当は前の記事に載せるつもりだったんですが、忘れていたのでここで紹介します。

Javaでゲーム作りますが何か?

Javaで作成した正真正銘のライフゲームを公開しているサイト。ライフゲーム?の雛形にさせていただきました。ボタンとかウィンドウサイズとか名残がいっぱいあります。コメントが丁寧で分かりやすいです。他にもJavaでゲームやら人工知能やら色々と参考になりそうなことが載っています。

はい。ここからは本当にチラシの裏。盤面をクリックすると見ることの出来るステータスとか細かい仕様の話です。

ライフゲーム?では名前を入力すると勝手にステータスが決定されますが、内部では入力された名前から、128bitのMD5ハッシュ値を作成し、それをバイト毎に区切ってステータスの計算に利用しています。これはMD5バトルとかから思いつきました。ステータスは全部で5種類あります。それぞれの役割は以下の通りです。

  • hp:体力
    無くなると死滅し、周囲の他の勢力のセルに置き換わる(体力が少し回復するが基本的にはそのままコピー)。
  • str:攻撃力
    これが高いと他勢力のセルのhpを大きく減らす。
  • def:防御力
    これが高いと他勢力の攻撃を軽減する。ちなみに攻撃範囲は周囲8セル。あんまり役に立たない。
  • vit:回復力
    セルは何もしてないとき自然回復する(めっちゃ遅い)。そのときの回復量。あとセルが置き換わったときの回復量が大きくなる(むしろこっちの方が重要かも)。
  • pot:潜在能力
    これが高いと突然変異しやすくなる(後述)

もっとも重要なのは体力と潜在能力。攻撃力と防御力は内部で平方根にして計算しているので、小さすぎない限り影響は少ないです。体力は2倍違えばそのまま2倍長持ちするので、影響力大です。vitによる自然回復は、雀の涙程度のモノなので戦力にはほとんど影響しません。セルが置き換わったときの回復量も体力に対するパーセントなので、これもやっぱり体力が高い方が有利です。

最後に潜在能力について。実際にゲームを起動してステータスを見てみた人は不思議に思ったかもしれませんが、ステータスが場所によって違っています。実はセルが生まれ変わるときに、低い確率で突然変異が起こります。具体的にはMD5で作成した128bitのうち1~3bitが反転します。初期ステータスが低くても、potが高くて突然変異が起こりやすければ逆転できるかもしれません。さらに、突然変異が起きると体力全快の状態で生まれるので生き残りやすくなります。

以下、細々としたこと

  • 盤面データは白黒のbmpファイルを使用している
  • 任意の画像ファイルを読み込ませて・・・とか考えたけど、セルの初期位置の設定とかが面倒くさいので放棄
  • 同じ名前、同じ配置なら何回やっても結果は変わらない
  • 128bitをバイト毎(8bit)に区切って管理しているが、突然変異の時に超低確率で1bit増える(超肉体登場の予感)
  • プレイヤー名をgaer、gae、dg、sgにすると、すげー時間掛かった。逆転に次ぐ逆転

以上、チラシの裏でした。