XnaBoids

XNAで作成したボイド。
書籍「ルーディ・ラッカーの人工生命研究室」を参考にしました。

ボイド(Boids)とは
1989年にクレイグ・レイノルズにより作り出された。渡り鳥のように群れをなして飛ぶ人工生命。
分離、結合、整列、の3つの動作を平行して行うことで、生物を思わせる動きをする。
・分離:衝突を避ける。
・結合:群れを作る。(見える範囲内の同チーム同タイプのボイドの中心に向かう。)
・整列:他のボイドと、向きと速度を合わせる。(群れを維持する。)

(「ルーディ・ラッカーの人工生命研究室」より)

タイトル画面

目次


XnaBoidsの特徴

ボイドタイプ
チームA、チームB、2つのグループが存在する。
チームA:軌跡(しっぽ)が白
チームB:軌跡(しっぽ)が黒

次のボイドタイプが存在する。
・羊(4面体):同チーム、同タイプのボイドとの距離が近い時に得点。得点範囲=ボイド間の距離が4〜8。
・狼(8面体):他チームの羊ボイドを攻撃(衝突)すると得点。
・犬(20面体、牧羊犬):他チームの狼ボイドを攻撃(衝突)すると得点。

衝突
他のボイドと衝突すると、減点となりHPが減少する。 衝突した時、赤い球が表示される。 (狼ボイドと犬ボイドの攻撃は除く)

開発環境

WindowsVistaで開発、動作確認。


動作環境


インストール・アンインストール

・インストール

setup.exeを実行してください。
setup.exeを実行するだけで、ゲームのインストール、そして実行までが自動的に行われます。
この時、setup.exeはゲームを実行するのに必要な以下のコンポーネントがインストールされているかをチェックします。
もし、インストールされていない場合は、自動的にネットからダウンロードし、インストールします。
.Net Framework 3.5をインストールしていない場合には、最初のインストールに時間がかかります。
インストールされたプログラムはスタートメニューに登録されます。
(ClickOnceを使用しています。電子証明書は発行していません。)

・アンイストール

 コントロールパネルの「プログラムのアンインストール」でアンインストールしてください。


操作方法

・起動方法

スタートメニューからXnaBoids.exe を実行。

・終了方法

Escキーで終了。
終了時にはボイド情報が保存され、起動時に読み込まれます。


メイン画面

メイン画面
ボタン (画面左上) マウスで左クリックすると、次の動作を行います。
設定 設定ダイアログを表示。
停止/進行 進行、停止を切り替え。
視点 表示切り替え。
ワールド表示:全体を表示。
チームA/チームB表示:選択したボイドを中心に表示。
性能 選択中ボイド性能設定ダイアログを表示。
角度 選択中のボイドへのカメラ連動を切り替え。

マウス
右ドラッグ カメラ回転
ホイールボタン回転 カメラ ズーム
ボイド左クリック(停止中のみ有効) ボイド選択、ボイド情報がテキスト表示。
チームA、チームB表示の場合 : クリックしたボイドを中心に表示。
ワールド表示の場合 : クリックしたボイドにマークとして球が表示

キーボード
スペースキー 進行、停止を切り替え。
Homeキー ゲーム初期化(座標と性能を初期化)
PageUp、PageDownキー チームA,B表示の時、選択ボイド変更
Escキー プログラム終了
カーソルキー ↑↓ カメラズーム
Tabキー ワールド表示 / チームA / チームB を表示切り替え。
Insertキー 選択中のボイドへのカメラ連動を切り替え。
Deleteキー 描画 on/off

ボイド情報テキスト表示。 画面右側に選択したボイドの情報が表示される。
チーム No. チームA、B。ボイドNo.
タイプ ボイドタイプ 羊/狼/犬
分離 分離対象となるボイドの数。
整列 整列行動の有無。
結合 結合対象となるボイドの数。
得点 減点 ボイドタイプ毎の得点と衝突による減点

ゲーム的動作 選択時には次の情報も表示。
Game:1:0/1024 ゲームの回数: ターン / 終了ターン
得点 A B チーム毎の得点
得点 / 減点 / HP 選択したボイドの得点、減点とHP

設定ダイアログ

設定ダイアログ
セーブ/ロード ボイド情報と、チーム性能設定内容を保存、読み込み。
座標初期化 円状、または、ランダムにボイドの位置を設定。
チーム性能/ボイド数設定 チーム性能 設定ダイアログを開く。
ワールド球の大きさ(半径) ボイドの動作範囲となる球。
ゲーム的動作 ターン数: ゲーム的動作:HP=0でボイドが消える。
指定のターン数でゲーム終了し、次のゲームが始まる。
球、ボイド表示の有無 描画 on/off
Log出力の有無 csv形式でLogファイルを出力 (表計算ソフトで開けます。)
各タイプの高得点のボイド情報を表示。
進化の有無 同チーム、同タイプのボイドが12体以上で有効。
高得点のボイドのパラメータを低得点のボイドにコピー。
この時、パラメータがランダムで+-4%の幅で上下。
Logフォルダを開く Logファイルが格納されているフォルダを開く。
背景色 背景色を設定

チーム性能/ボイド数設定ダイアログ

ボイドの数と性能を設定します。
チーム性能_ボイド数設定ダイアログ
ボイド数 ボイドの数。標準値マルチコアで合計256、シングルコアで合計128くらい。
視角(度) 前方0°後方180°の見える範囲の角度。
分離距離 この距離よりも近いボイドが分離対象となる。
整列距離 整列対象のボイドがこの距離よりも近い場合、速度を整列対象に合わせる。
整列対象のボイドがこの距離よりも遠い場合、
前方に在る場合加速、後方にある場合減速、して近づこうとする。
旋廻角度(度) 1ターンに旋廻可能な角度
速度 1ターンに移動可能な距離 (ボイドの大きさ 直径=4)
シングルコア用デフォルト値ボタン シングルコアCPU用デフォルト値設定
マルチコア用デフォルト値ボタン マルチコアCPU用デフォルト値設定

選択中ボイド性能設定ダイアログ

選択中ボイドの情報の表示と性能の設定を行います。
選択中ボイド性能設定ダイアログ
チームA No.9999 タイプ:羊 世代:9999 チームA、B。ボイドNo.。ボイドタイプ 羊/狼/犬。進化の世代。
視角(度) 前方0°後方180°の見える範囲の角度。
分離距離 この距離よりも近いボイドが分離対象となる。
整列距離 整列対象のボイドがこの距離よりも近い場合、速度を整列対象に合わせる。
整列対象のボイドがこの距離よりも遠い場合、
前方に在る場合加速、後方にある場合減速、して近づこうとする。
旋廻角度(度) 1ターンに旋廻可能な角度
速度 1ターンに移動可能な距離 (ボイドの大きさ 直径=4)

用語説明

用語説明
視角 前方0°後方180°。
視界 ボイドを中心とした半径48の球。
見える範囲 視界内の視角範囲内が見える(処理対象となる)範囲。
整列距離 整列行動時、速度調整(整列対象となるボイドが整列距離範囲内の場合、速度を合わせる。
範囲外の場合、前方:加速。後方:減速)
分離距離 分離行動を行う。
得点範囲 羊タイプボイド同士の距離が4から8の場合、得点。
衝突 ボイド同士の距離が4以下の場合衝突。減点。HP減少。

変更履歴

'2008.10.30 公開
'2008.11.07 更新 XNA 3.0対応
'2008.11.15 更新 XNA 3.0対応/Effect変更
'2008.11.17 更新 Effect変更


連絡先

不具合、ご意見等ありましたらお知らせください。
webページ: http://www.purple.dti.ne.jp/sslt/
メール: sslt@river.dti.ne.jp


戻る