Pull to refresh

Comments 25

UFO just landed and posted this here
Можно картинкой. А вообще — тут статья гораздо более качественная.
Ох если бы студенты, я почти 1 в 1 такое в школе писал на бейсике, только параметров меньше было.
У автора достаточно много проектов на github. Очень хорошее начало, сразу видно, что человеку действительно нравится программирование. Все мы когда-то были студентами =)
UFO just landed and posted this here
UFO just landed and posted this here
Абсолютно верно. Я и не позиционировал свою игру как клеточный автомат. У меня они действительно перемещаются по очереди. Но, ради более справедливой работы, эта очередь постоянно перемешивается в случайном порядке.
В своё время для решения подобной проблемы разбивал шаг на фазы: сначала смотрелись коллизии и т.д. Со случайным перемешиванием что-то у меня по опыту неважно получалось — и ещё это зависит от каких-то параметров генератора случайных чисел.
UFO just landed and posted this here
Не пробовал. Вы про рендеринг?
UFO just landed and posted this here
Ну так у них клеточный автомат, вроде. В моей программе намного больше расчетов, если сравнивать с игрой «Жизнь», к примеру. Для каждой клетки нужно узнать что находиться на соседних 14 ячейках и еще кучу модификаторов узнать. Потом считать еще кучу модификаторов, изменять состояния клетки и прочее.
UFO just landed and posted this here
UFO just landed and posted this here
Чтобы моделирование было ближе к реальности и интересней, поробуйте обратить внимание на следующие моменты.

Основные мысли:

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

2) Не обязательно делать уйму параметров — лучше меньше, но продуманней и сбалансированней.

3) Добалвять дополнительные параметры уже после того, как на текущих система ведет себя логично и сбалансированно.

По отдельным параметрам эмуляции:

1) Агрессия должна уравновешиваться параметром «силы» клетки.
Грубо говоря, у «агрессора» при нападении есть 3 варианта:
— мы сильней, мы победили, мы получили энергию
— мы равны, мы не победили, но потратили энергию на борьбу
— мы проиграли и потеряли много энергии.
Естетственно коэффициенты тут будут разные.
Сюда логино было бы как-то привязать модификатор от колониальности — если нас много, нас сложно одолеть.
И отдельный модификатор «защиты» — то есть если мы грубо говоря отрастили щипы и панцырь, то нас сожрать сложней, но мы на это тратим энергию — либо каждый тик, либо например требуем больше энергии на размножение.

2) Концепция яда была бы интересней не как пища, а типа «зараженности среды» и соответственно параметр клеток «резистентность», то есть устойчивость к яду.
На зараженных клетках энергия с каждым тиком теряется сильней.
Тогда получается развивая параметр резистентности мы можем жить на среде где мало конкуренции и агрессоров.

3) Спорная идея, но можно было бы попробовать:
При случайных мутациях и отборе как в реальном мире нужно слишком большое количество особей и генераций. Чтобы это обойтиь, можно объеденить элементы отбора с мутациями — грубо говоря если яда вокруг нет, то мутации резистентности для нас не актуальны и мы сразу их исключаем.

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

5) Колониальность должна давать преимущества:
— Когда мы вместе, мы сильней, нас сложней победить агрессору
— Когда мы вместе мы тратим меньше энергии на каждого, чем по-отдельности.
Но в ней есть и минусы, так как меньше пищи вокруг остается.

6) Пища появляется по отдельному алгоритму от развития клеток?
Или она не появляется после сотворения мира и он в итоге обречен на умирание?
Многие из ваших идей (про силу и агрессию, к примеру) я и сам обдумывал, но отбросил ради упрощения. Продолжать писать проект в ближайшее время я не планирую, увы. Но вы выдвинули интересные мысли, может кто-то другой ими воспользуется.
The strongest survives

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

Life is merely an orderly decay of energy states, and survival requires the continual discovery of new energy to pump into the system.

CEO Nwabudike Morgan
Тогда не растений, а солнца и геотермальных источников. Растения — лишь посредники.
Есть генерация «еды» в рандомных точках, и даже константа регулирующая частоту появления еды.
Я попробовал убрать с поля всю еду и весь яд. Запустив симуляцию с удивлением обнаружил что жизнь идет, а количество энергии только увеличивается. Как такое выходит?
Наверно, клетки создают колонии. Когда клетки одного цвета рядом друг с другом, то они получают EnergyLevel_MovesFriendly энергии за тик из ниоткуда. Или же вы поставили EnergyEntropyPerSecond в минус, тогда все клетки получают энергию просто так, а не теряют.
Тоже хочу сделать что-то подобное, только чтобы каждая клетка имела какую-то область данных кодов, которые управляют клеткой, и если некоторые подпрограммы кода используются и приносят пользу, они передаются по наследству. Можно обмениваться подпрограммами, пожирать их, накапливая, и что-то в этом роде.
Вы не читали книгу «Эндимион» Дэна Симмонса? рекомендую! В этой книге есть ваша идея…
Sign up to leave a comment.

Articles