mitsuyoshi-yamazaki / ALifeGameJam2019

ALife Art "BlindPainter"
https://mitsuyoshi-yamazaki.github.io/ALifeGameJam2019/
MIT License
9 stars 3 forks source link

なんでも #1

Open mitsuyoshi-yamazaki opened 5 years ago

mitsuyoshi-yamazaki commented 5 years ago

具体的になってきたら独立issueにしてください

ayu-mushi commented 5 years ago

進化的に安定な戦略 https://ja.wikipedia.org/wiki/%E9%80%B2%E5%8C%96%E7%9A%84%E3%81%AB%E5%AE%89%E5%AE%9A%E3%81%AA%E6%88%A6%E7%95%A5

ayu-mushi commented 5 years ago

余談ですが主流の進化生物学者は局所最適みたいな概念をあまり説明に使ってない(割と全体最適で説明できる)という話が載ってたやつです("進化理論の実像 "の部分) https://cruel.org/krugman/evolutej.html (とはいえ均衡が複数のケースとかは扱うのでしょうけど)

ayu-mushi commented 5 years ago

ドーキンス『盲目の時計職人』p.354に載っている性選択の説明 IMG_20190819_224631 ランナウェイ説と呼ぶらしいです https://en.wikipedia.org/wiki/Fisherian_runaway 性選択のランナウェイ説は、シグナリングを使う性選択のモデルとはまた別なのかもしれなかったです(健康アピールに使うシグナルは何でも恣意的ということはないので)。 https://en.wikipedia.org/wiki/Handicap_principle

ayu-mushi commented 5 years ago

「chromium-browser --disable-web-security --user-data-dir="/tmp/someFolderName" &」 でsame origin policyを回避できました(Linux) https://www.thegeekstuff.com/2016/09/disable-same-origin-policy/

ayu-mushi commented 5 years ago

エラーメッセージを親切にするにはjsじゃないProcessingも入れたほうが良いですか

mitsuyoshi-yamazaki commented 5 years ago

Processingjs API リファレンス http://processingjs.org/reference/ Processing API リファレンス https://processing.org

mitsuyoshi-yamazaki commented 5 years ago

Avida visualization https://avida-ed.msu.edu/app/AvidaED.html

ayu-mushi commented 5 years ago

みんな雑食で肉食は居ないとかんがえられますね。それで2種だけ+突然変異なしでやってもロトカヴォルテラみたいなグラフにならなかったのかも (いや、エサの遺伝子が合わなくすれば実質肉食にできるのか)

mitsuyoshi-yamazaki commented 5 years ago

エサの遺伝子を固定でAとする Aを食べる種族B Aを食べずBを食べる種族C

とすれば

ayu-mushi commented 5 years ago

それですね!

ayu-mushi commented 5 years ago

やってみましたが死体を食べれるので肉食が大量に増えますね

ayu-mushi commented 5 years ago

死体を食べれなくしても肉食じゃないやつは同じ場所に集中してるとすぐ全滅するっぽいです

mitsuyoshi-yamazaki commented 5 years ago

フィールドを広くとって個体数も多くしたらどうでしょう 現実でも肉食動物と草食動物の比率は1:100とか1:1000とかですし

ayu-mushi commented 5 years ago

フィールドを広く取れば草食も生き残りました!

ayu-mushi commented 5 years ago

密集してる限りは、草食の個体数がいくら多くても食べ尽くせると思います

ayu-mushi commented 5 years ago

草食肉食はこんなかんじです https://vimeo.com/355136966 (赤が肉食 青が草食) どっちかが滅亡パターンが多そうです 肉食は繁殖力低いけど寿命長いみたいにすればそうならなそうですが

ayu-mushi commented 5 years ago

ランダムウォークなので、離れている草食二匹の間にもう一匹草食が居ることで食われ絶滅しやすさが上がるという性質がありそうです

ayu-mushi commented 5 years ago

ニコニコ動画とかにあげるのはどうでしょう

mitsuyoshi-yamazaki commented 5 years ago

いいと思います! ニコ動はこういったものに親和性ありそうですしね

ayu-mushi commented 5 years ago

ところで、『利己的な遺伝子』増補新装版第13章「遺伝子の長い腕」p.364〜には生物種だけでなくおのおの別々のものとしての生物個体も有性生殖(など)の存在によって存在可能になった、という話が載ってて面白いです (読んでませんが、たぶん『延長された表現型』にも載っています。第13章は延長された表現型のまとめらしいので)

追記: 正確には有性生殖というより精子や卵子、胞子といった、1細胞にまとまったところから発生する生活環が明確な個体を生じさせた、というような話でした

ayu-mushi commented 5 years ago

他チームの作品も公開されていました https://github.com/Jaystified/ChangingBlocks/tree/1.0.1

mitsuyoshi-yamazaki commented 5 years ago

生物種だけでなくおのおの別々のものとしての生物個体も有性生殖(など)の存在によって存在可能になった

へえー面白いですね

人工生命を実装するときは同種の別個体をどう表現するか悩みます つまり、そういうもの同士で、共通するものとしないものをどのように区分するか、ということ

とはいえ交配しない種にも、多少の遺伝子の差異はあるのではないかと思っていて、そういうものが生物学ではどう扱われているか気になります。 クローンでなければ別種なのか、同種とカウントする場合があるならどこまで歳が出たら別種になるのか…

mitsuyoshi-yamazaki commented 5 years ago

関係ないですが棄却された昔の仮説にはユニークなものがあって、そういうものをゲーム上で再現するのも面白そうです

こないだダヴィンチ手稿を見たのですが、造山モデルの仮説がありました 現在の理解でいうところの地殻の内側に水が満ちていて、その流れによって地殻の一部が重力中心に降りていくと重心がずれ、それによって海水の満ち欠けが変わって、今まで海だったところが陸になったり、陸だった部分が海に沈んだりする、というモデルでした

生物学だとラマルキズムとか、前成説とかでしょうか

ayu-mushi commented 5 years ago

とはいえ交配しない種にも、多少の遺伝子の差異はあるのではないかと思っていて、そういうものが生物学ではどう扱われているか気になります。

もしかするとですが、種という概念がなくても分類学としては困らないのかもしれません。単に個体を並べた巨大な家系図として生物分類を作るとかもできるでしょうし。

mitsuyoshi-yamazaki commented 5 years ago

なるほど、確かに

そして個体同士の交配可能性だけがあると

mitsuyoshi-yamazaki commented 5 years ago

Picotachi#67 memo

ayu-mushi commented 5 years ago

場所ごとにコロニー形成する仕組み(らしい) https://www.nicovideo.jp/watch/sm32061352

mitsuyoshi-yamazaki commented 5 years ago

走性をもたせるということですね 組み込むことはできそう

mitsuyoshi-yamazaki commented 5 years ago

memo

手書きの絵をベースに油絵にする →油絵フィルター

結果を画像で保存できるように

ランダムウォークを音楽のテンポに合わせるようにしたら(ミュージックビジュアライザー

ayu-mushi commented 5 years ago

友達とU22というコンテストに出そうと思って生態系シミュレータの中の生物に憑依するゲームを作ってみました https://ayu-mushi.github.io/KorogaruGame/index.html

mitsuyoshi-yamazaki commented 5 years ago

面白いですね 現地のエージェントになって介入するというのはゲームではよくありますが生態系シミュレータだとそんなにない気がします 大体は神の視点をもっているので、プレイヤーが直接エージェントとコミュニケーションできるのは新しいですね

mitsuyoshi-yamazaki commented 5 years ago

昔のRelicsというゲームを思い出しました あれは憑依するとその種族の能力を使える + 経験値を得ることで能力を強化できる というゲームシステムでした

同じ世界でも憑依する種族によって見えるもの、できることが全く異なるというところがうまく作ってありました

https://ja.wikipedia.org/wiki/RELICS_-The_recur_of_%22ORIGIN%22

ayu-mushi commented 5 years ago

一定の線分や円周上でしか動けないようにして世界を一次元化し、単純化するのを作ろうかと思っています (接触確率が上がりそうです) (肉食草食だけでそれをやると少数の肉食で草食を絶滅させられそう)

ayu-mushi commented 5 years ago

フィールドが狭いと生物が動かない設定でも偶然エサと重なって増殖して生態系が生じることを確認しました

ayu-mushi commented 5 years ago

生物の動きを一次元にするモードを追加してみました https://github.com/mitsuyoshi-yamazaki/ALifeGameJam2019/commit/112752bedd8cf7234f3a0808ea752104f47b31a3 https://github.com/mitsuyoshi-yamazaki/ALifeGameJam2019/commit/8e15930c11fa8e015c01cd309221906c7bf8728f https://vimeo.com/359481483

ayu-mushi commented 5 years ago

円周バージョンも作りました https://github.com/mitsuyoshi-yamazaki/ALifeGameJam2019/commit/a38962571717000576957a5f6ace28ae59525700
https://vimeo.com/359502627 https://vimeo.com/359503854

全部: https://github.com/mitsuyoshi-yamazaki/ALifeGameJam2019/commit/3725550fb0df937ce47d1daf57455b5255bd2007 https://vimeo.com/359514392

ayu-mushi commented 5 years ago

生物の表示サイズをsize*energy/10にしてみましたが、すぐ単為生殖で半分になるのでチカチカしますね 蓮コラ感もあります https://vimeo.com/360995318 https://vimeo.com/360996976

ちょっとなめらかにしたもの: https://vimeo.com/361000248

ayu-mushi commented 4 years ago

https://vimeo.com/368481765 (等加速度運動は老いるほど速度が上がってエネルギー消費が増える(エネルギー消費が位置の変化に比例する場合)ので共食いにより新陳代謝が早い青白有利?)

ayu-mushi commented 4 years ago

流れるプールみたいなものを作りました https://vimeo.com/368522299 https://vimeo.com/368525413 アートモードだと組紐かリースみたいです

mitsuyoshi-yamazaki commented 4 years ago

面白いですね これどちらのブランチで実装してるんですか?

ayu-mushi commented 4 years ago

ayu‐mushiブランチです

ayu-mushi commented 4 years ago

今は生物クラスを継承してmoveメソッドのオーバーライドで新しい動きの世界にしているのですが、設計上どの方法がいいのかが気になります。生物というより物理法則な動きも一緒くたになっていますし。可能な動きを高階関数として渡すとかの方が良いのでしょうか。

mitsuyoshi-yamazaki commented 4 years ago

ふむー どんなコードなのか、場所教えてください masterに対してPull Request出してもらってコードの場所にコメント入れてもらうのがいいかな

コーディングの思想としてはいろいろな方向があるのですが、上で書いているように「生物」「物理法則」とレイヤーで分割するのは、責任範囲が分かれるのと、作っているものが人工生命であるので生命のふるまいと物理のふるまいを分けられるという点で重要です

物理法則はそれ単体で常に稼働していて、生物は物理法則に対して何らかの働きかけができる、というインターフェースにするのが筋がいいでしょうね 現実を例に取るなら、「箱をこれこれの力で押す」ところまでが生物の仕事で、「これこれの力で押された箱がどう動くか」を計算するのが物理法則の仕事


一方で、コードはあくまで手段なので、自分で実験をする際は簡単に高速に実装して、発展させたくなったらがっつりリファクタリングするのが早いです 今がそんな感じですね

mitsuyoshi-yamazaki commented 4 years ago

そういえば今日はこれに行ってきます

https://peatix.com/event/1319320

長期間の活動の意思決定をするゲームAI

ayu-mushi commented 4 years ago

どんなコードなのか、場所教えてください masterに対してPull Request出してもらってコードの場所にコメント入れてもらうのがいいかな

プルリクしました!

コーディングの思想としてはいろいろな方向があるのですが、上で書いているように「生物」「物理法則」とレイヤーで分割するのは、責任範囲が分かれるのと、作っているものが人工生命であるので生命のふるまいと物理のふるまいを分けられるという点で重要です

物理法則はそれ単体で常に稼働していて、生物は物理法則に対して何らかの働きかけができる、というインターフェースにするのが筋がいいでしょうね 現実を例に取るなら、「箱をこれこれの力で押す」ところまでが生物の仕事で、「これこれの力で押された箱がどう動くか」を計算するのが物理法則の仕事

一方で、コードはあくまで手段なので、自分で実験をする際は簡単に高速に実装して、発展させたくなったらがっつりリファクタリングするのが早いです 今がそんな感じですね

なるほど。ありがとうございます。Unityとかでもそういうふうに分かれていましたね。

mitsuyoshi-yamazaki commented 4 years ago

memo

最初のコンセプトは「他者との関係性により淘汰圧が変わることで収束しない進化をする」というもので、それはある程度(※)実現できたが、それにしてもそんなに目新しいものがたくさん出てくるわけではないので、世界や環境を実装して、それにより組み合わせ爆発が起きるようにしたらどうか

※ 遺伝子のビット数を増やしてふるまいが変わるか実験してみる


また、収束しないにしても安定した生態系ができていない

ayu-mushi commented 4 years ago

淘汰圧が場所によって変わるには、移動コストの高い仕切りや沼みたいなのがあったほうがよさそうですね

mitsuyoshi-yamazaki commented 4 years ago

そうですね それか単純に距離をおおきくとれるようにするか

と、いうか、

移動コストの高い仕切り

これは現行のコードに簡単に入れられますね

mitsuyoshi-yamazaki commented 4 years ago

👉 https://github.com/mitsuyoshi-yamazaki/ALifeGameJam2019/pull/43

ayu-mushi commented 4 years ago

大きさが進化で変わるようにしてみましたが、とくにいじらずにやると、小さいやつが大量に発生しますね: https://vimeo.com/372035412 いっぽう、回転の場合は必ずしもそうとはならないかもしれません: https://vimeo.com/372036677?activityReferer=1