Поиграть в создателя всего сущего

Введение


C тех давних пор, когда лучше ZX-Spectrum ничего не было, запомнилась игрушка, в которой надо было задать программу роботу, чтобы он в автономном плавании победил противника. И вот в свободное от работы и отдыха время я начал заниматься программой, которая при помощи настроек, считываемых из текстового файла в XML-формате позволяет:


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

Основное отличие от существующих игр — в модели нет предопределенного сценарием конца.


Мир модели


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


Рис.1


Для экономии расхода памяти количества вещества в каждой точке хранятся в вещественном типе float, что даёт 7 значимых разрядов. Для модели было задано в каждой точке воды 100 тыс. единиц, углекислого газа 20 тыс., водорода 10 единиц (то есть в десять тысяч раз меньше, чем воды), а кислорода и метана ноль. Пример, как выглядит описание веществ, вводимых в модель:


<Element name="CarbonDioxide" color="yellow" volatility="0.12" visibility="true">
    <rect left="0" top="0" right="max" bottom="max" amount="20000"/>
</Element>

<Element name="Oxygen" color="green" volatility="0.12" visibility="false">
    <rect left="0" top="0" right="max" bottom="max" amount="0"/>
</Element>
...

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


<Reaction name="CO2+4H2=CH4+2H2O" geothermalEnergy="0.00001" solarEnergy="0">
    <LeftReagent name="CarbonDioxide" amount="1"/>
    <LeftReagent name="Hydrogen" amount="4"/>
    <RightReagent name="Methane" amount="1"/>
    <RightReagent name="Water" amount="2"/>
</Reaction>

Внутрь одного из геотермальных источников был посажен первый протоорганизм LUCA с данной реакцией


<section name="Organisms">
    <item name="LUCA" author="DEMI" x="300" y="30" reaction="CO2+4H2=CH4+2H2O"/>
</section>

Далее в программе был включен фильтр на показ точек, содержащих метан и пятно метана стало распространяться вокруг организма. Первая клетка может получать вещества только из той точки, где она сама находится, а перенос веществ осуществляется за счёт диффузии. Если уменьшить количество доступных веществ, то скорость распространения продуктов реакции резко замедляется.


Рис.2


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


Рис.3


Отбор


Исходных веществ в изобилии, но рано или поздно все они будут исчерпаны. Если клетка успешно "переварила пищу", то она накапливает "жир" (внутреннюю энергию) и может размножиться делением, а при делении мутировать. Или погибнуть при истощении. Её поведение так же наследуется и подвержено мутациям, во время которых изменяется незначительная часть параметров клеточного автомата. Далее в модель будут введены управляемые мутации, когда пользователь будет лишь указывать, для какого вида какую мутацию он бы хотел получить. Ожидаемая мутация будет происходить с некоторой вероятностью и новый вид должен суметь выжить, чтобы мутировать дальше.


Итак, у нас есть вид протоорганизма-метаногена, которому нужна геотермальная энергия. Он расселяется в зоне действия геотермальной энергии, а те отдельные виды, которые диффузией выносит за её пределы — гибнут. Мертвые организмы некоторое время продолжают занимать место, а потом, если их никто не съел, исчезают. Расход минеральных веществ для роста организмов не реализован, соответственно при их распаде они просто исчезают. После запуска моделирования организмы бурно размножаются, занимая всю область вокруг геотермального источника. Через некоторое время появляются мёртвые клетки за пределами действия геотермальной энергии. Интересно, что иногда можно заметить, что умирают организмы в самом центре — это те, кому не хватило минеральных веществ, всё съели на подступах. На рисунке показаны живые организмы белым и мёртвые коричневым, синим цветом показана вода, розовой окружностью показана область, где ощущается геотермальная энергия (её интенсивность убывает по мере удаления от центра).


Рис.4


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


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


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


Рис.5


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


Рис.6


В файле Snapshoot2017.rar находится скомпилированный под Windows исполняемый файл и вспомогательные файлы к нему. Никакой установки не требуется, никаких следов от своей работы он не оставляет — для запуска достаточно просто разархивировать, а потом удалить. Для изменения параметров по-умолчанию — файл ThemeAero/template.demi можно открыть в простом текстовом редакторе. Элементы управления описаны в соответствующем разделе вики проекта.


Дальнейшие планы


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


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


Заключение


На текущий момент основная сложность это подобрать такое соотношение действующих объектов модели, чтобы она оставалась устойчивой и интересной. Это соотношение объёмов минеральных веществ, энергий, скоростей, метаболических реакций, а затем задачи из области "живой природы" — как обеспечить кодирование клеточных автоматов. Точнее нужны просто данные об окружающем мире в адаптированном виде. "ДНК" должна быть компактной, способной к атомарным неразрушительным мутациям, описывать как строение организма (набор клеток — нервная система, рецептор, мышца, броня и т.д.), так и алгоритм его действия.


В далеком будущем модель может стать распределённой — у каждого пользователя свой огород, где он разводит свои организмы, разбегающиеся по округе, и в который попадает живность от соседей. Крутизну можно измерять как распространённость вида.


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


В программе технически расчет модели выполняется в отдельном потоке, его скорость можно оценить по тому, как быстро идёт модельное время и, соответственно, не зависит от того, в каком масштабе и с какими подробностями отрисовывается картинка на экране. Так же ещё есть отдельный поток, который визуализирует картинку из мира модели. Его скорость тем выше, чем меньше точек модели отображается — например когда при сильном увеличении на экран помещается небольшое количество точек, fps выше, чем когда при максимальном отдалении на экране весь мир целиком на широком мониторе. В левом верхнем углу выводится именно скорость отображения, которая ограничена 60 fps, быстрее бессмысленно.


P.S.: Модель является open source под GNU GPL Version 3, 29 June 2007 и доступна для скачивания всем желающим для экспериментов или для создания форков. Собрана с кросс-платформенной бибилиотекой ClanLib на MS VSС2015. Бинарный файл под OS Windows лежит в архиве — он никак не устанавливается, а просто запускается после распаковки. Предполагаю, что компиляция под другие платформы не вызовет проблем. Template.xml можно править в подходящем текстовом редакторе, некоторая документация есть на гитхабе в разделе wiki.

Поделиться публикацией
Комментарии 21
    +2
    офф попадался некий рассказ как некую программу с эмулятором мира и жизни забыли на несколько лет работующей на сервере. Жизнь эволюционировала до разумной формы (для неё это были миллиарды лет), освоила всю «вселенную» и начала подозревать, что с этой вселенной и её законами что-то не так. Ни названия, ни точного сюжета не помню.
      +8
      Брудль был раздражен. Он уже десятки раз перебирал значения возможных физических констант, но его мир никак не хотел работать. Либо коллапс, либо безудержное расширение — ничего, что можно было бы показать руководителю и не получить при этом по шее. Друзья уже успешно справились с этим заданием, но делиться своими результатами не хотели, так как профессор был весьма суров к тем, кто списывает.

      Еще один эксперимент провалился. Мир загорелся яркой вспышкой — и тут же сжался в точку, с которой все началось. Но, кажется, это было чуть медленнее, чем в прошлый раз. В глазах Брудля появилась надежда. Изменив значение начальной плотности на чуть меньшее, он чуть дрожащими руками нажал на кнопку компиляции.

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

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

      Скачав необходимые программы и руководства из Сети, он запустил первую модель общества. В маленьком уютненьком мирке расположил большую пирамиду, вокруг которой немедленно собрались последователи Культа Великой Пирамиды. По-быстрому склепав отчет об этой супермегасложной лабораторке, Брудль задумался. Скачанные им программы имитировали искусственный интеллект, который также мог быть перенесен отдельным объектам-индивидуумам. Кафедра теологии рассматривала это только как способ имитировать поклонение богам, но ведь можно использовать этот продукт по-другому! Спустя час, загнав виртуальных обитателей на мир, где из законов действовала только гравитация, он через каких-то 10000 лет виртуальной симуляции получил от этих существ вывод закона обратных квадратов! Брудль ухмыльнулся.

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

      Поскольку задача перед ним стояла достаточно большая, Брудль не стал мелочиться. За 6 дней он создал планету, вращающуюся вокруг маленькой звезды, и населил ее разумными существами. Пока разум на планете только осознавал себя, Брудль продолжал настраивать этот уютный мир согласно своему заданию. Так, на расстояниях меньше 0.1 нанометра в этом мире преобладали случайные законы, правда, существа пока еще не могли этого заметить. Но они уже поняли, что их планета не плоская, так что, по примерным оценкам Брудля, скоро его работа завершится.

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

      Вовремя спохватившись, Брудль установил ограничение скорости света. Как только он это сделал, в мире тут же появилась теория кривизны пространства-времени. А спустя несколько десятков лет, прошедших для этого мира, он получил все необходимые значения констант от своих подопытных, которые, кстати, так и не перешли к единой теории всего. «И никогда не придут» — мрачно улыбнулся Брудль, ведь переход на квантовые эффекты был сделан простым условным оператором…



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

      — … итогом нашего исследования стало обнаружение точных границ так называемых сфер Шварценгольда, которые окружают нашу планету. Последняя из обнаруженных нами границ лежит на расстоянии 8 световых лет от Земли, что, по нашим прикидкам, дает прогноз на следующую сферу на расстоянии 32 световых лет. Если такая зависимость постоянна для всей Вселенной, это значит, что реликтовое микроволновое излучение есть ни что иное, как арифметическая погрешность округления на мировой сетке.

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

      — Подождите, неужели вы считаете, что Создатель допустил такое грубое создание Вселенной, законы которой дают разную погрешность на различных расстояниях от нашей планеты?

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

      — Может, еще скажете, что весь наш мир — это какая-то жалкая курсовая работа нерадивого студента?

      В зале для заседаний поднялся шум. Кто-то смеялся, кто-то с пеной у рта что-то доказывал, а кто-то в отчаянии воздел руки к небу…



      Брудль вернулся домой. Курсовую работу он с трудом, но все-таки сдал, так как не мог внятно (а тем более не мог честно) ответить на вопросы, как он вычислил правильные значения физических констант. Уставший, он оглядел свою машину. Он понял, что не выключил ее, и, должно быть, для цивилизации внутри ящика прошли тысячи лет. Брудля крайне заинтересовало то, узнали ли жители машины о том, что они не живут? Он стал вглядываться в экран. Обнаружив цивилизацию, которая к этому моменту расселилась по всей Галактике, Брудль крякнул.



      Когда последняя из сотен тысяч звезд заняла свое место в надписи и послание было закончено, Фредерик облегченно вздохнул. На этот безумный проект ушли сотни лет и просто сумасшедшее количество энергии. Наконец-то он был закончен, и перед Фредом стоял стандартный вопрос, который задает себе любой человек, убивший полжизни на одно-единственное дело. Вопрос «Зачем?».

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



      Брудль не верящими глазами смотрел на Галактику внутри своей машины. А потом он рассмеялся.



      — Знаешь, Фред, я живу уже более четырех тысяч лет. Я один из первых, кто переместил свой разум в машину… тогда немногие на это решались, но я подумал — раз уж я и так живу в машине, как и все люди и вся эта чертова Вселенная, тогда такой перенос мне точно не навредит. В тот день, когда вернулась Третья Звездная Экспедиция, обнаружившая точные границы Сфер Шварценгольда, я понял, что наш мир — не более чем фарс. Мы больше не нужны. Мы летаем в космос, двигаем звезды, мы можем делать все… но наша наука стоит на месте уже 4000 лет, а все из-за того, что нас криво спроектировали. Я просто в ярости от этого. Знаешь, я очень грею себя мыслью о том, что этот мерзавец прочтет наше послание. Надеюсь, ему будет стыдно.



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

      ТВОЙ БЫДЛОКОД НАС ОГОРЧАЕТ
        +1
        Спасибо. Пока искал, нашел интересное другое. Статья Эра роботов? Нет, эра людей. Огонёк. 15 сентября 1973

        КОРРЕСПОНДЕНТ. Искусственная эволюция— проблема, которая занимает писателей и ученых. У фантаста А. Днепрова, например, есть рассказ, где железные крабы совершенствуют сами себя в результате внутривидовой борьбы естественного отбора. В итоге рождается очень совершенный кибернетический краб. Нечто аналогичное было проделано в Институте кибернетики АН УССР — там в результате «естественного» отбора появились весьма совершенные автоматы. А вот американский ученый Ф. Розенблатт вообще считает, что автоматам нужно позволить развиваться независимо от людей. Но не утеряет ли человек власть над столь умными машинами! Эволюция Хомо сапиенс, в общем, закончена. Сможем ли мы всегда оставаться вровень и выше машин в умственном отношении)
        Э. А. ЯКУБАЙТИС. Кибернетика — еще очень молодая наука. Кривая ее развития еще так коротка, что мы не вправе очень сильно экстраполировать ее, продолжать в будущее. Вместе с тем не следует ставить пределы и для развития этой науки.
        фрагмент статьи
        Не потеряют ли люди контроль над мыслящими машинами будущих десятилетий? Во многом это зависит от самих людей, от общества, от его организации, от социального строя. Ведь сумели же мы совладать с джином, вылущенным из бутылки, предотвратить ядерную войну? Будем надеяться, что и при развитии кибернетики людям тоже не изменит разум.
        Мы вступили в эпоху научно-технической революции. Очень важно знать, как сложатся отношения человека и ЭВМ. Уходит в прошлое целая эпоха, когда между потребителями и вычислительными машинами стояли «переводчики» — программисты. Сами ЭВМ становятся более общительными, они уже могут выдавать информацию «человеческим» голосом, хотя еще очень плохо понимают человеческую речь.
        В. В. ЧАВЧАНИДЗЕ. Организует ли человек химический процесс, выращивает ли растение, выводит ли он новые формы животных — во всех случаях он управляет процессом, держит в руках ключи от узловых проблем. К созданию ЭВМ мы относимся, как, например, к созданию нового сорта пшеницы, только роль ДНК играют придуманные человеком программы. А то, что машины сами совершенствуются в процессе производства, то, что это осуществляют другие ЭВМ, не столь важно, на всех этапах процесс остается управляемым. Это — самое главное.
        Разумеется, можно создать серию самосовершенствующихся программ (в эволюторе «Киев» эволюционировали не сами автоматы, а их программы) и потом уже решать, каким из них дать путевку в жизнь. В этом смысле предложение Ф. Розенблатта имеет смысл. Но стоит ли плодить и совершенствовать ненужных (а может, и вредных) кибернетических чудовищ? Весьма сомневаюсь. Кибернетика существует для человека, а не наоборот.
        Вероятно, как вид человек больше не эволюционирует, но это вовсе не значит, что он не будет развиваться в умственном отношении. Наши потомки, вооруженные ЭВМ, будут умнее нас, подобно тому как мы, используя мощь машин, стали сильнее своих предков. Главное, что в обоих случаях техника выполняет роль «коня». «Всадником» же остается человек.
        Человек будущего будет лишен множества еще имеющихся необычайно живучих предрассудков по отношению к машине, к наукам, к возможностям живого мозга, к искусственному интеллекту. Предрассудки эти идут ведь не столько от невежества, сколько от подчас какого-то необъяснимого и, видимо, не всегда осознаваемого страха перед будущим местом человека в жизни. Вот почему кибернетики должны продумывать вопросы проектирования таких «интеллектов», «роботов», АСУ, которые могли бы быть совместимы с людьми, с их психологией, с их жизненными запросами. Тогда не будет необходимости вести борьбу с искусственной технической средой.
        КОРРЕСПОНДЕНТ. Вы хорошо сказали, что машины — «кони», а «всадник» — человек. Однако конь этот железный. Не затоскует ли наш потомок, окруженный бездушными автоматами! Или, быть может, он, как предсказывают некоторые ученые, отрешится от своего бренного тела, срастется с машиной и станет «киборгом»! Тоже участь незавидная. Вы не знаете, почему кибернетика вызвала к жизни так много пессимистических прогнозов!
        В. В. ЧАВЧАНИДЗЕ. На этот вопрос нельзя ответить вне связи с историей и социальными проблемами. Когда некогда в Англии луддиты обрушивали свой гнев на станки, которые, мол, лишали их работы, они просто неверно выбирали цель: виноваты были работодатели, которые эксплуатировали посредством машин одних рабочих и оставляли без хлеба других. А литература, в свою очередь, в том числе и фантастическая, проектировала болезни капиталистического общества на экран будущего.
        Научная мифология родилась много раньше кибернетики. Уже в прошлом веке читали и про Голема и про Франкенштейна, про механических чудовищ, оживленных чудесной силой. Роботы пришли к нам из пьесы Чапека «РУР», написанной еще до кибернетических работ Винера. Однако все это воспринималось как выдумка, фантазия. Только в конце пятидесятых годов, когда с появлением умных машин началась научно-техническая революция.
        старые мифы как будто начали обретать плоть. Хотя кибернетики предупреждали от недооценки и от переоценки ЭВМ — одна из книг видного западного ученого Таубе даже имеет подзаголовок «Миф о думающих машинах».
        Недавно вышла книга советского профессора Кобринского «Вот они — роботы». В ней в качестве примеров приводится и наш луноход, управляемый с Земли, и искусственная рука, действующая от биотоков мозга. Но кибернетика развивается так стремительно, что и эти чудо-аппараты становятся прошлым. А вы ведь спрашиваете о будущем кибернетики как науки?
        Известно, что мы изучаем прошлое, чтобы оно объяснило нам настоящее и намекнуло о грядущем. У кибернетики тоже есть своя история: за два десятилетия сменились три поколения ЭВМ. На смену электронным лампам пришла полупроводниковая техника, затем микроэлектроника, и, наконец, на наших глазах рождается четвертое поколение машин, отличающееся компактностью, высокой степенью интеграции, большой памятью машин и… общительностью.
        Ленинградский писатель Г. Гор наделяет ЭВМ эмоциями, чтобы человеку было легче с ними общаться. Однако эту фантастическую картину он относит к XXIII веку. Но жизнь обгоняет самую смелую фантазию. Американский кибернетик Лоуэллин создал кибернетическую модель «личность Олдос», имеющую свою биографию. Вернее, была создана целая серия Олдосов — пессимистов и оптимистов, решительных и осторожных, умных и глуповатых. Аналогичные работы, но на более высоком уровне, проводятся у нас, в Киеве.


          0
          Шикарно!
          Хм, а может быть, кто-то вспомнит рассказ, где миры создавались ради ответа на какие-то вопросы? Надо нам узнать, как лучше жарить некие продукты — нагревая постепенно, или сразу в кипящее масло — создается мир, который существует до того, пока кто-то из его обитателей не поймет, как вкуснее.
            0
            Цикл Дугласа Адамса про Артура Дента.
            0
            Спасибо, что нашли рассказ. Не видел такого (хотя, идея сама по себе очень интересна — на ту же тему помимо книг и рассказов есть еще и фильм 13 этаж).
            Поржал от души в конце. )))
            Кстати, на самом деле, очень странно, что до сих пор не используют виртульное программирование эволюции. Либо в варианте как автор изложил, либо в варианте самоизменяемой самокопирующейся программы (описано в дилогии Червь автора А. Лазаревича).
            +2

            Вот это, вероятно. http://www.gamedev.ru/flame/forum/?id=142109


            не успел

              +1
              Фильм «13-й этаж» напоминает.
              0
              Исходных веществ в изобилии, но рано или поздно все они будут исчерпаны. Если клетка успешно «переварила пищу», то она накапливает «жир» (внутреннюю энергию) и может размножиться делением, а при делении мутировать. Или погибнуть при истощении. Её поведение так же наследуется и подвержено мутациям, во время которых изменяется незначительная часть параметров клеточного автомата.


              Самое интересное-то где? По каким правилам живёт клетка, как реализовано поведение и наследственность и что изменяется при мутациях?
                0
                Это ещё не реализовано. У одноклеточного организма поведение представляется довольно примитивным — питаться и размножаться. Порог размножения наследуется, но может от поколения к поколению незначительно меняться и видимо он будет стремиться к оптимуму в условиях заданного мира. Но при этом все организмы остаются одного вида, также как кошки одной породы обладают разной окраской — это не мутация, а изменчивость.

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

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

                PS Я могу двигаться только наощупь, потому что как правильно наверное мало кто знает.
                +1
                Очень интересно, спасибо за статью. В вашу модель просто просятся автокаталитические процессы (например). Для демонстрации на клеточном автомате достаточно, чтобы жизнь потребляла ресурс и размножалась (это у вас есть) и происходило медленное восстановление ресурса, когда его никто не потребляет. Уже такая система может порождать очень интересные циклы и узоры. С некоторыми параметрами можно получать интересные деревья, кольцевые структуры и много чего ещё. Скорее всего это пригодится для многоклеточной жизни.
                  0

                  Закон сохранения?
                  Вещества исчерпаются и дальше что?
                  Лучше после смерти пусть оставляют то что накопили пока не появятся "сапрофиты".

                    +1
                    Очень, очень советую Permutation City. Там симуляция жизни по упрощённым правилам в Autoverse описана очень детально. Включая процесс наблюдения за мутациями, а так же набор необходимых упрощений для обсчёта модели, чтобы не решать квантовые уравнения постоянно. Зная автора этой книги, это не фантастика, а почти готовое руководство к действию.
                      0
                      Эххх, пока что еще слишком слабое железо для по настоящему глобальных, завораживающих симуляций, но тема интересная. А так даже вообразить не возможно сколько нужно вычислительной мощи и памяти для симуляции планеты с разумной жизнью на приемлимой скорости.
                        +1
                        а вот было уже. лет 20 назад в журнале Мир ПК popgun.ru/viewtopic.php?f=145&start=2730&t=219630
                        "… Дальнейшие размышления по поводу того, во что могла бы превратиться моя игра, привели меня к некоторым неожиданным религиозно-философским аналогиям. Я задавал себе вопросы и пытался отвечать на них. Итак:
                        — Зачем я создавал эту программу? Отчасти ради самого удовольствия от процесса ее создания и предвкушения удовольствия от дальнейшей «игры» с ней. Отчасти для расширения разнообразия окружающего меня мира. Отчасти для удовлетворения чувства созидания, живущего в каждом человеке. Отчасти просто из любопытства. И еще мне хотелось иметь возможность исследовать в деталях все время новый, постоянно меняющийся мир игры, сталкиваясь порой с неожиданными явлениями в рамках предварительно определенных мной законов этого мира.
                        — Почему я вынужден был искать для этой игры свой «Лучший из миров»? Потому, что вырожденная игра, хаос мне неинтересны. Мне нравится уменьшать энтропию, идти от хаоса к упорядоченности.
                        — Зачем «живут» мои персонажи? Для того, чтобы, изменяя в бесконечных сочетаниях и вариациях свой мир, доставлять мне постоянную радость исследования и познания этого изменяющегося мира.
                        — Как я отношусь к самоуничтожению своих персонажей? Резко отрицательно. Любое «самоубийство» персонажа, с моей точки зрения, есть невыполнение им возложенных мной на него надежд на участие в игре.
                        — Как я отношусь к персонажам своей игры? Ведь среди них есть «плохие» и «хорошие», «добрые» и «злые», «умные» и «глупые»… Конечно, субъективно, как участнику игры, мне приятней иметь дело с «хорошими», «добрыми» и «умными» персонажами, но без..."

                        очень жаль, что по ссылке есть только отрывок всей статьи из ПК, но общее впечатление о идее «бога»-программиста она даёт…
                          0
                          Это открывает простор для поиска багов реальности.
                          Хорошую религию придумали Индусы. Если предположить, что за симуляцию отдельного организма отвечает отдельный поток, то при перерождении возможны баги очистки памяти, и организм может иметь доступ к памяти/иметь темпераментные настройки от предыдущего экземпляра. Хотя это могли уже пофиксить.
                          Пропатчить и заапдейтить. Вносятся ли изменения в текущую симуляцию? Если да, то получается, что на религиозные трактаты можно взглянуть как на форум какой-либо игры, в котором описывается поведение, которое сейчас уже не воспроизводится.
                          We need to go deeper. Подобного рода размышления приводят к мысли, что, если все вокруг таки является симуляцией, то совершенно непонятно, на каком уровне вложенности мы находимся, и насколько «качественной» является наша симуляция относительно родительской.

                            +3
                            ага, а вот и начало: www.computer-museum.ru/games/owngame.htm часть «Компьютерная игра как вселенная»

                            "… Не устоял перед искушением написать свой собственный «Star Track» в свое время и я – и он оказался моей первой игровой программой, на которой я ощутил всю необыкновенную прелесть такой работы.

                            Дело в том, что эту игру я разрабатывал в первую очередь для самого себя. Все, что мне приходило в голову и хотелось видеть в готовой игре, можно было попытаться запрограммировать. Один из постоянно доступных мне компьютеров был очень неплох – HP-3000. Памяти, по тем временам, было более чем достаточно, быстродействия – тоже (к тому же я имел статус менеджера системы). Единственным ограничением, накладываемым на эту работу, являлось мое время, свободное от основной работы. Но программисту ли привыкать работать по ночам или съедать обед из термоса в выходные?

                            Одной из самых существенных концепций моей игры являлось вероятностное поведение объектов игры и всей вселенной в целом. Это гарантировало невозможность точного предсказания дальнейшего развития событий в любой игровой ситуации даже для автора, что и делало игру для меня наиболее привлекательной. Программа имела специальный генерационный файл данных, содержащий около 500 параметров, относящихся к различным объектам игры.

                            Звезды и планетные системы зарождались и умирали, подчиняясь сложным параметрическим законам с вероятностными критериями, сверхновые взрывались в определенных ситуациях и с предварительно заданной вероятностью, оборудование космического корабля и поведение его экипажа описывалось очень большим количеством параметров и, соответственно, могло оказаться совершенно различным в сходных ситуациях. Враги, обладая очень сложной и в целом детерминированной стратегией поведения, могли отклоняться от нее в рамках разрешенной вероятности их поведения. Каждый противник, таким образом, обладал своими склонностями и характером. Одни были агрессивны, другие – трусливы, третьи – склонны к компромиссам, переговорам и т. д. Если им удавалось договориться друг с другом, они могли в разной степени объединять свои усилия в борьбе со мной или наоборот – начать свою собственную внутреннюю войну. Враги рождались, жили и умирали по своим законам, нашу Галактику иногда посещали корабли из других галактик, команды которых могли присоединиться в зависимости от обстоятельств к той или иной враждующей стороне.

                            Наконец, на каком-то этапе разработки, игру стало возможно предоставлять самой себе на длительный промежуток времени, например, на ночь, и утром узнавать, к чему привело развитие событий в отсутствие автора. Если появлялось желание, можно было принять участие в игре или оставаться просто наблюдателем. (На нашем HP-3000 стояла мультизадачная операционная система с виртуальной памятью, и игра без участия человека выполнялась как задача с невысоким приоритетом, никому особенно не мешая). Примерно в это же время я решил добавить в игру возможность одновременной работы с нескольких терминалов для разных участников; и на этом этапе (примерно через год после начала работы) разработка игры собственно закончилась. Настало время наслаждаться своим «творением» и иногда отдыхать за дисплеем компьютера; можно было подвести некоторые итоги.

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

                            Итоги разработки «Star Track» были подведены мной значительно позже и, честно говоря, обрадовали и даже немного испугали одновременно. Я был рад, что написал такую большую и сложную программу и выполнил задачу, которую перед собой поставил, в полном объеме. Я гордился тем, что в очередной раз создал систему, способную к дальнейшему существованию без участия автора, и что моей игровой программой с удовольствием пользовались некоторые мои коллеги по работе. Но одновременно с этим я понял также и то, что на этот раз соприкоснулся с чем-то большим, чем обычное проектирование компьютерной программы. Некоторый неожиданный опыт заставил меня сделать некоторые выводы, не имеющие прямого отношения к программированию в общепринятом понимании этого слова.

                            Во-первых, мне довелось на практике убедиться в справедливости концепции, носящей название «Лучший из миров». Суть этой философской и физической концепции, как известно, заключается в том, что мы живем в «лучшем из миров» в том смысле, что наша Вселенная является устойчивой в силу вполне определенного соотношения значений таких физических констант, как скорость света в пустоте, постоянная Планка, заряд электрона и др. Соответствующими расчетами показано, что существует лишь очень небольшая область изменений мировых констант, обеспечивающая множеству возможность оставаться устойчивыми. И наша Вселенная принадлежит к этому небольшому множеству. В случае больших отклонений значений этих констант в ту или иную сторону материя начинает стремительно дезорганизовываться и превращается в хаос или, что то же самое, не может организоваться из первичного хаоса вовсе.

                            Как я уже говорил, моя игра имела около пятисот параметров, определяющих ее игровую вселенную, и правила поведения объектов, включая вероятностные характеристики отклонений параметров от их стандартных значений. В процессе проектирования и настройки игры с помощью этих параметров выяснилось, что возможные устойчивые игровые вселенные также занимают очень небольшой объем в многомерной области допустимых значений всех параметров. А при выходе одного или нескольких параметров за границы этого объема игровая вселенная начинает стремительно деградировать и становится однородной и неинтересной для играющего. Например, сверхновые звезды вспыхивают слишком часто и сжигают все вокруг себя, новые звездные системы зарождаются слишком редко или слишком часто, персонажи самоуничтожаются, вымирают или уничтожают друг друга в братоубийственных войнах, оборудование корабля становится слишком ненадежно, команда корабля постоянно бунтует и плохо выполняет приказания или, наоборот, проявляет излишнюю самостоятельность и делает то, что делать совсем не надо… Перечисление можно легко продолжить. Таким образом, понятие «Лучший из миров» для данной игры приобрело сугубо практическое значение, и мне пришлось выбирать этот «Лучший из миров» аналитически, интуитивно, а также методом проб и ошибок в процессе настройки программы. Более того, стало особенно важно попасть в один из «Самых лучших миров» для того, чтобы игровая вселенная могла самостоятельно существовать без моего участия.

                            Во-вторых, постепенно развивая игру и наделяя ее персонажей характерами с различными вероятностными характеристиками, я вовсе не думал о том, что, вообще-то, ничто не мешало мне запрограммировать у них интерес к познанию окружающего их мира и даже способность к рефлексии. Те «существа», которых я создавал, уже обладали некоторой, независимой от меня индивидуальностью. Они рождались и умирали помимо моего желания, имели свои собственные имена, которых я не знал до тех пор, пока не знакомился с каждым из них в отдельности, обладали достаточно сложным поведением, в большей или меньшей степени адекватным окружающему их миру, некоторым небольшим запасом слов и понятий (я с ними беседовал и иногда мог даже «убедить» в чем-то), они объединялись в группы с общими интересами или, наоборот, враждовали друг с другом. В моей модели не хватало совсем немногого: их собственной заинтересованности в продолжении игры и осмысления ими в этой игре своей роли. Кроме того, хотя они и «знали» о моем существовании, но не могли целенаправленно задавать мне вопросы о том мире, в котором существуют, и получать от меня соответствующие ответы.

                            Когда я впервые задумался над этим, я уже, к сожалению, не имел доступа к тому компьютеру, на котором создавал эту игру. Поэтому я не имел и возможности попытаться дополнительно запрограммировать эти черты их «личности» и посмотреть, что же из этого получится (а на сегодняшний день, работая с персональными компьютерами, я вынужден почти всю их память использовать под графику и в первую очередь думать о красивом и правдоподобном отображении информации на экране в ущерб программированию «личностных» характеристик персонажей игр, ведь иначе на эту игру никто и смотреть не захочет). Однако, чисто теоретически, эта задача не представляется мне особенно сложной, так как еще с очень давних времен у меня уже был опыт разработки обучаемых программ, синтезирующих связный русский текст с расширяемым в процессе обучения запасом понятий и оперирующих различными категориями (в том числе морально-этическими). А развитый язык понятий – один из основных критериев степени развития интеллекта и знаний об окружающем мире!"
                            0
                            Объясните пожалуйста, как запустить программу? Нужен компилятор?
                              0
                              Сорри, не учёл, что не все работают с гитхабом. Открываете ссылку в самом конце статьи и находите файл Snapshoot2017.rar, либо вот прямая ссылка github.com/ArtHome12/Demi/blob/master/Snapshoot2017.rar Там будет кнопка Download.
                              Скачиваете файл, этот RAR-архив, разархивируете его в какую-нибудь папку и запускаете exe-файл. Если не работает, пишите. А если работает — вносите изменения в xml-файл и смотрите на результат вашего мира.

                              А вообще все исходные коды выложены, при некотором желании можно скачать компилятор, скачать исходники и самому собрать программу.
                                0
                                В сам запускаемый файл я не планирую жёстко зашивать ничего важного, стремлюсь к тому, чтобы по-максимуму всё было в настроечном файле. Так как даже автору разобраться в коде довольно тяжело по прошествии времени, а содержимое xml — гораздо более дружественное для понимания.
                                В том числе и программы поведения сложных организмов будут лежать во внешних файлах, не вшитые в код, хотя это и снизит быстродействие.
                                  0
                                  Еще бы под MacOS как-нибудь собрать

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое