Вход на сайт в состоянии починки, простите за сложности :(

Genes

Краткое резюме. Задачей игрока является создание логических схем развития и поведения  микроорганизмов, которые позволяют им выжить в заданных экологических условиях. Ключевая идея игры – способ передачи и обработки сигнала имитирует не алгоритмические схемы компьютеров, а биологические механизмы, основанные на регуляции работы генов. Пост на гейм деве тут: http://www.gamedev.ru/projects/forum/?id=199388

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

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

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

Если коротко, любая логическая схема в общем виде состоит из 1) переменных, 2) правил их взаимодействия, 3) их значений в каждый момент времени. В моем проекте каждая переменная - ген, взаимодействия переменных определяются промотерными (регуляторными) участками генов, значения переменной в настоящий момент - концентрация белка-продукта данного гена. Пользователь задает количество генов и свойства их регуляторных участков. Есть гены, которые оперируют с "внешними" переменными: влияют на скорость и направление движения, чувствительность к сигналам, скорость роста и т.д., а есть и такие, которые нужны чисто для логических операций. Физически игрок будет перетаскивать мышкой логические блоки. Например ген X будет выглядеть так: [позитивное влияние продукта гена Y - сила 3][негативное влияние продукта гена Z - сила 1][описание продукта гена X]. Два первых блока составляют регуляторный участок.

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

В приложении презентация - http://www.gamedev.ru/files/?id=105455 , (по-английски http://www.gamedev.ru/files/?id=105214), где все детально объяснено и еще пара примеров есть. Понятно, что в презе где-то 1/10 часть идей, а еще можно навернуть мультиплеер. Вообще резервы по части наворотов - Марианнская впадина, но при этом минимальная играбельная единица просматривается практически с самого начала.

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

Уровень 1. Рост и деление. Первые два уровня протекают в режиме 
"стендового испытания". То есть только один микроб на экране, все его 
параметры бегут кардиограммой, когда он делится, одна дочерняя клетка 
вылетает с экрана, вторая остается. Энергия не ограничена.
На этом уровне игрок должен с помощью подсказок собрать простейший 
минимальный алгоритм из трех генов, который способен к росту и делению. Эти 
три гена: базовый фактор транскрипции, фактор роста и циклин
Базовый фактор активирует все три гена, включая свой собственный. 
Физический  размер микроба - кубический корень из количества фактора роста. 
Размер определяет максимальные возможные количества белков в клетке. Когда концентрация циклина достигает определенного значения, клетка делится, все белки разделяются поровну между дочерними клетками. Энергия дочек становится меньше чем половина от энергии матери т.к. на деление ее много уходит, а весь циклин разрушается. 
На этом уровне пользователь познакомится с этими базовыми вещами должен освоить перетаскивание логических блоков и создание / редактирование генов. 
 

[file=105429]

http://www.gamedev.ru/files/?id=105429

Пример 1. Показывает как работает циклин. Размер кружка соответствует размеру микроба, прозрачность – концентрации циклина. Чем краснее кружок, тем больше циклина.

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

[file=105430]

http://www.gamedev.ru/files/?id=105430

Пример 2. Медленно делящиеся крупные микробы.

[file=105431]

http://www.gamedev.ru/files/?id=105431

Пример 3. Быстро делящиеся мелкие микробы.

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

[file=105432]

http://www.gamedev.ru/files/?id=105432

Пример 4. Микробы из примера 1, но теперь энергия ограничена: во-первых в правой половине экрана микробы не получают энергию вообще, а во-вторых при достижении высокой численности, количество энергии в левой половине тоже уменьшается пропорционально. Цветом теперь показан энергетический статус микробов, чем синее – тем он выше. Зеленые кружочки – трупики. Видно, как популяция раз за разом проходит через мальтузианскую катастрофу.

[file=105433]

http://www.gamedev.ru/files/?id=105433

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

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

Уровень 5. То же самое, что и 4, но добавляется ген,  ответственный за создание 
клеточной стенки, а также хищники, активные только ночью. Идея в том, что 
клеточная стенка разрушается когда клетка делится и пока дочки не успели 
восстановить ее-  они уязвимы для хищников. (Для простоты программирования - те, у кого есть клеточная стенка просто невидимы для хищников). Решение - поставить циклин под позитивный контроль фоторецептора и делится только днем. 
 

Уровень 6. То же самое, что 5, но хищники активны постоянно. Решение – DDOS-атака 
на хищников. Идея в том, чтобы вся колония наших водорослей делилась 
одновременно. Сожрать всех дочек у хищников не хватит времени, а потом, когда 
оставшиеся в живых водоросли обзаведутся клеточными стенками, у хищников 
наступят голодные времена, они передохнут, и к следующей волне деления 
выживут совсем немногие. Для решения этой задачи, игроку впервые приходится 
ввести чисто логический ген, способный только влиять на другие гены и 
подвергаться влияниям. Этот ген, назовем его фактор ритма, активируется 
фоторецептором. Циклин подавляется фоторецептором и активируется фактором 
ритма. То есть наша колония будет вся делиться в сумерках, когда фоторецептор уже не активен, а фактор ритма еще сохраняется. Клетки могут проделать в это время несколько очень быстрых делений. Вариант – деление на рассвете, тоже легко моделируется.

Уровень 7. То же самое, но нет смены дня и ночи. Полярный день. Появляется гормон, который клетки выделяют во внешнюю среду и белок- рецептор, замеряющий уровень гормона. Когда клеток станет много, количество гормона (это глобальная переменная) достигает критической отметки, рецептор гормона активирует циклин и вся колония синхронно делится. Скорее всего понадобится дополнительная логическая петля. Но это надо смоделировать и посмотреть. И еще продумать, как это должно работать с малым исходным кодичеством микробов. Скорее всего, просто боевой экран должен увеличиваться по мере роста колонии.

Уровень 8. Задача движения на свет при помощи ненаправленного фотодетектора. Фотодетектор подавляет работу двух генов, заставляющих микроорганизм двигаться быстрее и делать больше поворотов (эти гены активируются базовым фактором и подавляются фотодетектором). Таким образом, в темноте эти гены активны и организм быстро двигается, до тех пор, пока он статистически не окажется в освещенном пятне и эти гены не выключатся (научно это не совсем чистое описание, но баланс между достоверностью и играбельностью, все дела:). Поскольку мы играем группой-популяцией микроорганизмов, парочка сгинувших во тьме- не проблема.

Уровень 9. Делаем эвглен - хищников из уровня 5 (и по совместительству из презентации). Здесь появляются ген, ответственный за поглощение других организмов – ген фагоцитоза, а также детектор добычи и фактор, отвечающий за поворот по направлению к цели (раньше был только рандомный поворот). Идея сделать организм, который днем занимается фотосинтезом, а ночью – хищник. На этом уровне еда без клеточных стенок, и ее дают только ночью. Тут появляется ген-переключатель хищничество/ фотосинтез, который подавляется фоторецептором, и который в свою очередь активирует три вышеперечисленных гена. В это же организме присутствуют схемы из уровней 4 и 8.

Первая демка тут (эта версия не рассчитана на игрока-казуала, это скорее рабочий вариант чтобы самому пощупать возможности алгоритмов и движка). Для того, чтобы ее освоить, обязательно нужно прочитать презентацию. В рамках этой програмке можно воспроизвести практически все модели поведения из вышеприведенных уровней, которые не предусматривают взаимодействия между микробами: 
http://www.gamedev.ru/files/?id=105803

Это инструкция по использованию демки: 
http://www.gamedev.ru/files/?id=105804

Логотип проекта

Генетическая головоломка / программирование биороботов

Играть
0


Участие в джемах


blog comments powered by Disqus