mitsuyoshi-yamazaki / ALifeGameJam2019

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

Migratory #92

Closed iida-hayato closed 4 years ago

iida-hayato commented 4 years ago

http://localhost:8000/pages/machine.html?debug=0&test=1&art_mode=0&background_transparency=1&statistics_interval=500&friction=0.95&life_size=12&mutation_rate=0.03&initial_energy=100&birth_energy=100&mature_interval=200&reproduce_interval=100&p=1000&g=0

1593797746__00009476

mitsuyoshi-yamazaki commented 4 years ago

1593798125__00006704

iida-hayato commented 4 years ago

http://localhost:8000/pages/machine.html?debug=0&test=1&t=1&a=1&t=0&statistics_interval=500&friction=0.99&life_size=6&birth_energy=10&p=1000 1593799472__00021032

mitsuyoshi-yamazaki commented 4 years ago

アトラクタを連続的に円周上に並べる

  public next(): [Force, WorldObject[]] {
    this.previousPosition = this.position

    if (this.isAlive === false) {
      return [Force.zero(), []]
    }

    const max = 0.1
    const target = (this.gene.value / Gene.geneMask) * Math.PI * 2
    const targetPosition = new Vector(
      Math.cos(target),
      Math.sin(target),
    )
      .sized(size * 0.4)
      .add(world.size.div(2))

    const movingForce = targetPosition.sub(this.position).sized(max).add(Vector.random(max * 0.5, -max * 0.5))
    const force = new Force(movingForce)

    return [force, []]
  }

1593799906__00001004

Screen Shot 2020-07-04 at 3 14 12

mitsuyoshi-yamazaki commented 4 years ago

移動が高速なのでサイクルがわかる またmature intervalとreproduce intervalが等しいので世代もわかる

?d=1&t=1&a=0&t=1&si=500&f=0.92&g=1&p=400&l=12&m=0&e=100&be=100&mi=100&ri=100&af=1

const attractForce = parameters.float("attract_force", 0.1, "af")

...

  public next(): [Force, WorldObject[]] {
    this.previousPosition = this.position

    if (this.isAlive === false) {
      return [Force.zero(), []]
    }

    const target = (this.gene.value / Gene.geneMask) * Math.PI * 2
    const targetPosition = new Vector(
      Math.cos(target),
      Math.sin(target),
    )
      .sized(size * 0.4)
      .add(world.size.div(2))

    const movingForce = targetPosition.sub(this.position).sized(attractForce).add(Vector.random(attractForce * 0.5, -attractForce * 0.5))
    const force = new Force(movingForce)

    return [force, []]
  }

Screen Shot 2020-07-04 at 3 20 25

iida-hayato commented 4 years ago

1593800508__00003203

mitsuyoshi-yamazaki commented 4 years ago
const fieldSize = new Vector(size, size)
iida-hayato commented 4 years ago

1593800810__00009579

mitsuyoshi-yamazaki commented 4 years ago

https://twitter.com/vespid/status/1279120617237655552?s=20

iida-hayato commented 4 years ago

1593803539__00001724