イメージ 1

イメージ 2

久々のお盆休み!
たまにはActiveBasicも触っていないと忘れてしまうので・・・
夏休みの宿題ではないですが、つまらないプログラムを一つ書いてみました。
(当初はFlashで書いてみましたが遅過ぎて使い物にならなかったので)

ここ数年「コサックス」というゲームにどっぷりはまっています。
かなり古いゲームですがなかなか面白いRTSで、何より動作が非常に軽いのが助かります。
現在でもフリー体験版がダウンロードできますので是非遊んでみてください。
(体験版ですが、ランダムマップにて永久に遊べます。これっていいの?)

さて前置きはこれくらいにして、本題ですが・・・
コサックスでは、生産から進化、戦闘という具合に、最終的には戦闘を行い相手を負かすことがゲームの目的ですが、もっと根本的に生存競争をプログラムし眺めて見たかったというプログラムになっています。
といっても、まだまだ描画動作のテスト段階ですが・・・

今回のプログラムのポイントは群れです。
複雑な社会システムを持つ人間の世界は、群れなくして生存し続けることは不可能です。
もっと解りやすくは、蟻とか蜂なんかはなかなかの社会システムを持った生物といえます。

さらに内面的には、私たちの体も無数の生物体の集まりで、それを構成している細胞も複数の素体の組み合わせで機能しています。
おそらくは、それをさらに突き詰めると宇宙的な像と一致すると思われますが、ある種の目的を持った郡がどう機能するかを見てみたかったのが今回のプログラムの目的です。
ただしやっていることは非常に単純です。

・1つの素体は同種と接近する。(引力)
・同種とある程度間隔を保つ。(同化しない個体である)
・これらの群に種というものを与える。(複数のグループ化)
・グループ同士は引き合う。(グループ引力)
・絶対的な領域からは出られない(画面の外には行けない)
・接近するグループは敵対する。(勝敗により死滅する場合もある)

最後の要素はプログラム2として実験しています。
(接近する素体のグループ力を計算し乱数により死滅)
引力と反発は単純なベクトル加算で処理しています。

プログラム1では死滅しませんので、永久に群れを作ろうとします。
この時群れ全体が自然と運動します。まるでアメーバーのようです。(群れの中心に集まろうとする)

プログラム2では各グループは接近しつつも反発もします。また勝敗により死滅し続け最終は一種しか生存できません。異種のライフゲームのようなものです。

不思議なことに、一つのグループはその素体が多い場合に正三角形に類似し、数が減少すると二分されます。外的な要素は何も無い中では、これが安定した形なのかもしれません。

更なるテスト項目としては、これらに資源を与え増殖する様子を眺めてみようかと思います。
夏休みの宿題としては落第でしょうが・・・

プログラムはココに置いておきます。
http://www6.plala.or.jp/TimeTripper/ab/gun.lzh