Искусственная эволюция
Это маленький развлекательный проект, симулятор эволюции ботов. Каждая маленькая клеточка на экране(бот) имеет свою нейросеть из 30то нейронов. Бот совершает действия в зависимости от активации нейронов выходного слоя. Он может вырабатывать энергию фотосинтезом(просто стоя на месте выше уровня воды), атаковать других ботов, двигаться и делиться. При делении бот создает свою копию, отдавая ей часть энергии, но есть шанс что потомок слегка мутирует и его нейросеть изменится.
-
Мир теперь шире чем экран, можно двигать камеру стрелками
-
Теперь можно сохранить в файл целый мир, включая параметры из окошка Адаптация
Пример мира ныряльщиков в папке "SavedObjects". Это только маленький кусочек мира, но вы можете загрузить его в более широкую область.
- Dear Im GUI
- SDL_ttf
- ImPlot
- Visual studio 2022 и всё что нужно для сборки под Windows на С++
-
Установить пакеты
cmake
для конфигурирования проекта- Компилятор С/С++, например
g++
илиclang++
/Visual studio 2022
для Windows.
-
Склонировать субмодули
$ git submodule update --init --recursive
- Создать каталог build и перейти в него
$ mkdir build && cd build
-
Сконфигурировать проект
- [Windows]:
$ cmake .. -G"Visual Studio 17 2022" -A x64
- [Linux]:
$ cmake ..
- [Windows]:
-
Собрать
$ cmake --build .
Содержит информация о симуляции (номер шага, сид и т.д.)
- Кнопка старт/стоп
- награда за фотосинтез - сколько бот получает энергии за фотосинтез
- skip - это сколько кадров просчитывать перед прорисовкой (прорисовывать можно не каждый кадр, так как прорисовка гораздо дольше делается)
- brush - размер кисти для стирания ластиком
Информация о выбраном боте, кнопки разные чтобы посмотреть его мозг и т.д.
Метод прорисовки
- Естествевнный цвет (просто цвет бота)
- Режим отрисовки хищников (хищные красные, травоядные зеленые, поедатели органики или яблок синие и те кто пока не ел серые)
- Режим демонстрации энергии (желтый мало энергии, красный - много)
- Без отрисовки - в этом режиме симуляция идет очень быстро, смотрите по окошку Main window
Выбор функции мыши
Другие окошки. Нажимаете на кнопку окошко появляется, снова нажимаете - исчезает.
Использовать клавиатуру для управления лучше, потому что при симуляции, особенно в несколько потоков, интерфейс лагает
- Пробел - Старт/Пауза
- Знак плюс рядом с нам падом (справа) - сделать один шаг симуляции
- Кнопка F1 - Создать группу случайных существ
- Кнопка F2 - Создать вертикальную стену в начале координат
- Нампад от 1 до 4 - Выбор режима отрисовки
- "Home" - Установить камеру на X = 0
- Arrow keys (left, right) - Двигать камеру
- "Page Up", "Page Down" - Двигать камеру быстро
- "End" - Найти первого бота на поле
Сначала необходимо настроить ваше разрешение экрана, иначе вы не увидите интерфейс. Далее установите область отрисовки при помощи "FieldRenderCellsWidth" и "FieldCellsHeight", чтобы они соответствовали вашему экрану. Мир сам по себе может быть шире, чем ваша область отрисовки, но его ширина должна делиться на 16 без остатка, это нужно для многопоточной работы. Другие настраиваемые параметры также в этом файле, кроме тех, которые в окошке Адаптация.