Разработка симулятора эволюции одноклеточных организмов «The strongest survives» / Хабр

Игра «Жизнь» онлайн

Реализация знаменитой игры «Жизнь» — клеточного автомата, изобретённого английским математиком Джоном Конвеем.

Обратите внимание, что размер поля, скорость появления новых поколений и другие аспекты можно настраивать (кнопка ).

Loading Life…

Правила игры «Жизнь»

  • Игра «Жизнь» происходит на клеточном поле, которое, традиционно, называется «вселенная».
  • Каждая клетка может быть живой или мёртвой.
  • Поколения сменяются синхронно по простым правилам:
  • в пустой (мёртвой) клетке, рядом с которой ровно три живые клетки, зарождается жизнь;
  • если у живой клетки есть две или три живые соседки, то эта клетка продолжает жить; в противном случае (если соседей меньше двух или больше трёх) клетка умирает («от одиночества» или «от перенаселённости»).

Удивительные свойства игры «Жизнь»

Лично меня поражает, что такие простые правила могут породить великое разнообразие форм жизни. На этой странице я привожу лишь немногие из известных.

Значение слова антананариву

В основном, это движущиеся и осциллирующие фигуры. Разве они не удивительны!

Этим игра «Жизнь» похожа на фракталы, где замысловатые формы порождаются весьма небольшим набором правил.

Кстати

Этот движок поддерживает два метода отображения. Более приоритетный — canvas. Если браузер его не поддерживает, то используется простая HTML-таблица, которая работает значительно медленней. Кроме того, в таблице не так удобно редактировать картинку. Если вы видите красноватые квадраты, значит ваш браузер не поддерживает canvas. Я очень рекомендую использовать более современный браузер. Если квадраты тёмно-синие, значит вы используете самые передовые технологии.

Если у вас что-то не работает, — пишите, — буду очень признателен.



Игры симуляторы жизни

Несомненно, играть в симулятор жизни онлайн нужно всем, ведь это очень увлекательные и интересные игры, которые займут вас на несколько часов, к тому же они предоставляются без регистрации и абсолютно бесплатно.

Фотогалерея Антананариву

Это шуточная серия игр, которая привлечет как взрослых, так и самых маленьких. Каждая из флеш игр симуляторов жизни затрагивает различные истории, например, обычный день дома или тренировку в тренажерном зале. Вы можете играть в одну и ту же игру несколько раз и выбирать разные действия, что позволит вам получить различный результат. Вы можете работать, просто жить, ходить на вечеринки или же тренироваться, играя своим персонажем.


23 игры

Симуляторы3D симуляторыАварийАвтобусаАвтомобиляАвтошколыАкулыБаскетболаБизнесаБогаБомжаВелосипедистаВертолетаВирусаВыживанияГоночныеГрузовикаДинозавраДракиЖизниКамазаКафеКачкаКорабляКосмическиеКотаКранаЛеталкиЛучникаМагазинаМакдональдсаОперацийОтеляОхотыПарковкаПекаряПовараПогоняПодводной лодкиПоездаПыткиРазрушенияРесторанаСамолетаСвиданийСобакиСпортивныеСтрелялкиТаксиТанкаТрактораТуалетаТюрьмыУборщикаФермерФутболФутболаХирургаЧеловекаШкольникаЭкономические

Здравствуйте, товарищи.

Так уж сложилось исторически, что я люблю разного рода извращения. И вот к чему меня это привело в этот раз:
Я написал симулятор эволюции, используя Unity.

Суть происходящего:
В замкнутую среду помещается клетка, обладающая собственным геномом, состоящим из 64 случайных команд, расположенных в случайном порядке.

Антананариву

Клетка выполняет все свои действия в соответствии с геномом. В зависимости от результата выполнения очередной команды, заложенной в гене, клетка переключается на команду в другом гене. Клетки живут в аквариуме, на который светит солнце. Клетки могут фотосинтезировать, чтобы восстанавливать свою энергию. Когда клетка накопит достаточное количество энергии — она делится. Если клетке пора делиться, но она со всех сторон окружена (нет свободного места) — клетка умирает, превращаясь в питательный трупик, который могут сожрать другие клетки.
Если у клетки заканчивается энергия — она умирает, не оставляя за собой трупа.

Клетки могут жрать друг друга, и распознавать, родственник перед ними, или нет. При рождении каждой новой клетки есть 25% шанс, что один из её генов мутирует (одна из команд в алгоритме поведения изменится на другую случайную команду). Когда клетка фотосинтезирует — она зеленеет, когда жрёт органику — краснеет.

Всего клетка может выполнять 7 команд:
1 — смотреть прямо перед собой
2 — поворачиваться
3 — двигаться вперёд
4 — жрать объект перед собой
5 — фотосинтезировать
6 — проверять, сколько осталось энергии

7 — размножаться

На следующей гифке изображён аквариум, в котором живёт одна клетка, все гены которой заполнены одной командой — фотосинтез, поэтому она бесконтрольно размножается, оставляя за собой кучи задавленных трупов. Но в какой-то момент появляются клетки-мутанты, которые начинают двигаться и питаться органикой:

На следующей гифке изображён авариум, почти полностью заваленный трупами «веганов», которые бесконтрольно размножались, и почти довели популяцию до полного вымирания. Но, случайная мутация исправила ситуацию, и в аквариуме появились мясоеды:

На следующей гифке я поэкспериментировал с гравитацией, сделал так, чтобы трупы опускались на дно. От затеи пришлось отказаться, потому что fps, который и так довольно сильно проседал, сморщился ещё сильнее, как-будто его в ледяную воду опустили:

Ну и посделедняя гифка. На ней в аквариуме практически сразу появились хищники:

Как оказалось, наблюдать за развитием о поведением виртуальных клеток — очень увлекательное занятие. Для всех, кому это интересно — оставлю ссылку на репозиторий в комментариях.

Критика по поводу кода принимается. Особенно буду рад услышать советы по оптимизации от компетентных людей.

Смотреть пост полностью

программированиеразработка игрunityгифкадлиннопост

Добавить комментарий

Закрыть меню