Искусственная эволюция
Это маленький развлекательный проект, симулятор эволюции ботов. Каждая маленькая клеточка на экране(бот) имеет свою нейросеть из 30ти нейронов. Бот совершает действия в зависимости от активации нейронов выходного слоя. Он может вырабатывать энергию фотосинтезом(просто стоя на месте выше уровня воды), атаковать других ботов, двигаться и делиться. При делении бот создает свою копию, отдавая ей часть энергии, но есть шанс что потомок слегка мутирует и его нейросеть изменится.
-
Автоматическая адаптация! Просто нажмите "Adapt winds/divers" и компьютер сам сделает магию! Правда результат до сих пор зависит от выбранных вами параметров, для того, чтобы всё получилось нужно как минимум выставить ширину мира равную 2м экранам для ветров и >10 экранов для дайверов иначе им будет слишком тесно.
-
Сохранённых миров в этой версии нет, по причине слишком больших размеров файлов.
- SDL
- DearImGUI
- ImPlot
Сборку можно выполнить используя файл CMakeLists.txt в Visual studio.
Содержит информация о симуляции (номер шага, сид и т.д.)
- Кнопка старт/стоп
- награда за фотосинтез - сколько бот получает энергии за фотосинтез
- skip - это сколько кадров просчитывать перед прорисовкой (прорисовывать можно не каждый кадр, так как прорисовка гораздо дольше делается)
- brush - размер кисти для стирания ластиком
Информация о выбраном боте, кнопки разные чтобы посмотреть его мозг и т.д.
Метод прорисовки
- Естествевнный цвет (просто цвет бота)
- Режим отрисовки хищников (хищные красные, травоядные зеленые, поедатели органики или яблок синие и те кто пока не ел серые)
- Режим демонстрации энергии (желтый мало энергии, красный - много)
- Без отрисовки - в этом режиме симуляция идет очень быстро, смотрите по окошку Main window
Выбор функции мыши
Другие окошки. Нажимаете на кнопку окошко появляется, снова нажимаете - исчезает.
Использовать клавиатуру для управления лучше, потому что при симуляции, особенно в несколько потоков, интерфейс лагает
- Пробел - Старт/Пауза
- Знак плюс рядом с нам падом (справа) - сделать один шаг симуляции
- Кнопка F1 - Создать группу случайных существ
- Кнопка F2 - Создать вертикальную стену в начале координат
- Нампад от 1 до 4 - Выбор режима отрисовки
- "Home" - Установить камеру на X = 0
- Arrow keys (left, right) - Двигать камеру
- "Page Up", "Page Down" - Двигать камеру быстро
- "End" - Найти первого бота на поле
Сначала необходимо настроить ваше разрешение экрана, иначе вы не увидите интерфейс. Далее установите область отрисовки при помощи "FieldRenderCellsWidth" и "FieldCellsHeight", чтобы они соответствовали вашему экрану. Мир сам по себе может быть шире, чем ваша область отрисовки, но его ширина должна делиться на 16 без остатка, это нужно для многопоточной работы. Другие настраиваемые параметры также в этом файле, кроме тех, которые в окошке Адаптация.