Comments 91
Неплохо устранили недостаток :D
Нужна linux версия! :)
прекрасно под вайном работает
у меня под вайном машинки просто лежат и все :(
Забыл написать. Пробел включает/выключает паузу. Хотя, если лежат, значит упали, а значит пауза была выключена.
В любом случае, в ближайшее время соберу нативную версию.
В любом случае, в ближайшее время соберу нативную версию.
Сделайте, пожалуйста, изменение размера экрана, а то в мой рабочий 1600*900 ничего не вместилось
Меня во всех этих «симуляторах» смущает то, что машинки не тратят ресурсы на мутации, то есть, «выращивание» двух колес ничем не отличается от «выращивания» восьми, а «выращивание» маленького колеса — от «выращивания» большого. В реальном мире это не так — чем больше организм, чем больше (качественно или количественно) у него те или иные приспособления, тем больше ресурсов ему нужно затратить на развитие всего этого безобразия (у того же Докинза в «Эгоистичном гене» это очень хорошо описано).
В качестве костыля можно было бы добавить машинкам некоторое «топливо», часть которого расходуется на мутации, а часть — во время езды. Или придумать какую-то другую систему ресурсов.
В качестве костыля можно было бы добавить машинкам некоторое «топливо», часть которого расходуется на мутации, а часть — во время езды. Или придумать какую-то другую систему ресурсов.
В результате появится StarCraft 4.5, в котором юниты обзаводятся необходимыми «приспособлениями» для выживания.
Игроки будут смотреть за эволюцией своих юнитов в single режиме и выставлять лучшие популяции в мультиплеер ))
Игроки будут смотреть за эволюцией своих юнитов в single режиме и выставлять лучшие популяции в мультиплеер ))
Мысль интересная. Правда, большой корпус не обязательно дает машинке преимущество, скорее наоборот. То есть, если тратить ресурсы именно на рост, это еще более подстегнет тенденцию к уменьшению размеров.
Я из этой оперы думал о том, что, например, максимальный крутящий момент на колесах может зависеть от размера корпуса, например. Так станет не выгодно прятать тоненький корпус между колес.
Или сделать функцию приспособленности зависимой также от времени, которое взяло у машинки добраться до финальной точки. Этим можно сэмулировать то, что она успевает съесть больше травы по дороге за меньшее время, чем ее менее расторопные товарищи.
Я из этой оперы думал о том, что, например, максимальный крутящий момент на колесах может зависеть от размера корпуса, например. Так станет не выгодно прятать тоненький корпус между колес.
Или сделать функцию приспособленности зависимой также от времени, которое взяло у машинки добраться до финальной точки. Этим можно сэмулировать то, что она успевает съесть больше травы по дороге за меньшее время, чем ее менее расторопные товарищи.
Так у машинок же нет цели жрать друг друга, так что уменьшение размеров действительно логично.
С другой стороны, корпус можно как раз рассматривать как топливный бак, и давать машинке ограниченую «энергию».
С другой стороны, корпус можно как раз рассматривать как топливный бак, и давать машинке ограниченую «энергию».
Видео будет для ленивых?
А можете скомпилировать для winxp sp3 (32bit)?
А то пишет, что не является приложением Win32
А то пишет, что не является приложением Win32
всё равно не работает
При запуске:
«Assertion failed!
Program: C:\Games\Box2D\Engine.dll
File: auxFuncs.cpp
Line: 39
Expression: err == 0»
Если нажать «пропустить», то вроде работает, но шрифт, видимо, не прогрузился. Надписи отсутствуют
«Assertion failed!
Program: C:\Games\Box2D\Engine.dll
File: auxFuncs.cpp
Line: 39
Expression: err == 0»
Если нажать «пропустить», то вроде работает, но шрифт, видимо, не прогрузился. Надписи отсутствуют
Это значит, что OpenGL какую-то ошибку выдал. А что в файлах error.log и info.log?
По хорошему надо бы и dll пересобрать с этим тулсетом, раз уж экзешнику помогло. Но это смогу только вечером дома.
По хорошему надо бы и dll пересобрать с этим тулсетом, раз уж экзешнику помогло. Но это смогу только вечером дома.
info.log:
Tue Jul 09 12:54:00 2013 Application started. Hello, World!
Tue Jul 09 12:54:00 2013 Application version: 0.0.6.365 Release
Tue Jul 09 12:54:00 2013 Starting renderer initialization
Tue Jul 09 12:54:00 2013 SDL successfully initialized
Tue Jul 09 12:54:00 2013 Video mode set
Tue Jul 09 12:54:00 2013 OpenGL version: 1.5.0 — Build 6.14.10.4847
Tue Jul 09 12:54:00 2013 Loading textures…
Tue Jul 09 12:54:00 2013 Successfully loaded res/font2.png
Tue Jul 09 12:54:00 2013 Successfully loaded res/gui.png
Tue Jul 09 12:54:00 2013 Finished loading textures.
Tue Jul 09 12:54:00 2013 Initialization successfully completed
Tue Jul 09 12:54:00 2013 Switching to menu
error.log:
Tue Jul 09 12:54:00 2013 OpenGL error during main loop. Something bad happened OpenGL error: 1281
Tue Jul 09 12:54:00 2013 Application started. Hello, World!
Tue Jul 09 12:54:00 2013 Application version: 0.0.6.365 Release
Tue Jul 09 12:54:00 2013 Starting renderer initialization
Tue Jul 09 12:54:00 2013 SDL successfully initialized
Tue Jul 09 12:54:00 2013 Video mode set
Tue Jul 09 12:54:00 2013 OpenGL version: 1.5.0 — Build 6.14.10.4847
Tue Jul 09 12:54:00 2013 Loading textures…
Tue Jul 09 12:54:00 2013 Successfully loaded res/font2.png
Tue Jul 09 12:54:00 2013 Successfully loaded res/gui.png
Tue Jul 09 12:54:00 2013 Finished loading textures.
Tue Jul 09 12:54:00 2013 Initialization successfully completed
Tue Jul 09 12:54:00 2013 Switching to menu
error.log:
Tue Jul 09 12:54:00 2013 OpenGL error during main loop. Something bad happened OpenGL error: 1281
Эволюция остановилась на вот такой загогулине:

Минут 15 быстрые теряют там колёса, медленные просто застряют. Главное — все умирают на одной и той же дистанции, поэтому эволюция по сути практически остановилась.
Хабракат не сработал.

Минут 15 быстрые теряют там колёса, медленные просто застряют. Главное — все умирают на одной и той же дистанции, поэтому эволюция по сути практически остановилась.
Хабракат не сработал.
Всегда может произойти мутация, или несколько, которые помогут преодолеть загуголину. Рано или поздно на любой трассе появляется участок, непроходимый в принципе, но эта загогулина так не выглядит. Стоит подождать еще несколько раз по 15 минут :)
Какой seed вы использовали и на какой дистанции это произошло?
Какой seed вы использовали и на какой дистанции это произошло?
Нашлись уже смельчаки :) Seed не скажу (кстати — стоило бы выводить его и в режиме воспроизведения). Просто добил случайными символами после habrahabr, а остановить боюсь — все ведь заново придется начинать?
Дистанция — 420.
Кстати, хотел спросить — а надежность фиксации колес — это ген? Если нет, то стоило бы — очень продвинуло бы симулятор в плане достоверности.
Дистанция — 420.
Кстати, хотел спросить — а надежность фиксации колес — это ген? Если нет, то стоило бы — очень продвинуло бы симулятор в плане достоверности.
Мне кажется, что при ограниченной «вселенной» эволюция рано или поздной войдет в тупик, вопрос только во времени.
Похоже на апокалипсис в масштабе машинок.
Час пролетел незаметно…
Нужно ввести вирусы и горизонтальный дрейф генов.
При маленькой популяции (50/5) почему-то быстро вырвались вперёд вот такие «трёхколёсные» мобильчики:


Linux версию хотелось бы увидеть!
Можно было бы проводить отбор среди одной популяции сразу на нескольких трассах, «поощряя» универсальность.
Нет ни какой разницы между одной трассой и несколькими: Трасса — это совокупность (или множество) «пар сегментов» с разными углами и требованиями к особям. Особь преодолевает не трассу, а именно пары сегментов. Разные трассы фактически будут одинаковыми.
(Моя популяция застряла на 830.69 :)
(Моя популяция застряла на 830.69 :)
По-моему, тут вовсе не пары играют роль, а группы сегментов сильно большего размера. Потому что, например, у меня машинки в одном месте на три почти отвесных сегмента после равнинки взбираются без проблем, а в другом, где перед этим небольшая горка из двух сегментов, застряли на весьма продолжительное время.
Да, еще влияет скорость. А скорость зависит от того, как были пройдены предыдущие участки, так что я не прав.
Думаю, что когда происходит застревание на одном сегменте — эволюция тормозится, пока одна из мутаций не позволит преодолеть барьер.
Если же барьер сильно сложней предыдущих участков, машинки так его могут и не преодолеть, потому что единичные улучшения недостаточны, и не фиксируются.
Если же барьер сильно сложней предыдущих участков, машинки так его могут и не преодолеть, потому что единичные улучшения недостаточны, и не фиксируются.
Только у меня после запуска ничего не происходит? Вижу розовый восьмигранник и скачущие цифры FPS. И все.
Попробуйте нажать пробел.
Вииииии!!!


вечерело. а машинки всё падали и падали ©
Эти красавцы развились за час, на который я забыл о запущенной программе.
Отметка 1100, преграды преодолевают почти вертикально стоя на заднем маленьком колесе.
Быть может сделать режим в котором наследник рождается не на старте, а где-нибудь по пути (в зависимости от положения родителей).
Это, по идее, должно дать повышенную приспособленность к локальным условиям рельефа. Если при этом рельеф не «линейно повышает сложность вплоть до сумасшедших непроходимых колесами гор», а как-то чередуется, то на выходе будет интересная динамика смены приоритетов.
Отметка 1100, преграды преодолевают почти вертикально стоя на заднем маленьком колесе.
скрин

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

Стоило наверное рождать на месте кончины «аутсайдера». Т.о. «куча» не будет перемещаться «телепортами», а только своими силами.
Попробовал сейчас два варианта: рожать новых на месте, где умер самый неуспешный и на минимуме из текущих рекордов.
В первом случае всегда найдется уникум, который откатился чуть назад и помер, и вся популяция потихоньку двигается назад, пока не начинает рождаться как заведено в Спарте, прямо над пропастью.
Во втором вся популяция потихоньку движется вперед, потому что минимальный рекорд новой особи будет ее местом рождения, то есть не меньше, чем раньше. А может так случиться, что все, хоть понемногу, да прокатятся вперед.
В первом случае всегда найдется уникум, который откатился чуть назад и помер, и вся популяция потихоньку двигается назад, пока не начинает рождаться как заведено в Спарте, прямо над пропастью.
Во втором вся популяция потихоньку движется вперед, потому что минимальный рекорд новой особи будет ее местом рождения, то есть не меньше, чем раньше. А может так случиться, что все, хоть понемногу, да прокатятся вперед.
Лемминги?
Натолкнуло на мысль, было бы здорово иметь возможность автоматически сохранять gif с историей мутаций лидеров.
Интересно, а трехмерную версию реально создать?
Ввести «поведение» машинок, диктуемое так же генами. Например, снизить скорость на крутом уступе и так далее.По мне, так это очень интересный пункт. Наблюдая за машинками из прошлой статьи я обратил внимание, что есть препятствия, которые преодолевают чуть более чем 0% машинок. Если позволить машинкам ускоряться и замедляться и заложить это в гены, то можно выводить популяции, адаптированные под конкретную трассу. Очень грустно наблюдать, как превосходная по дизайну машина валится на какой-нибудь яме, которая в принципе (при разгоне-торможении) может быть пройдена, но из-за неудачного соотношения с размером машинки, оказывается непреодолимой.
По-моему мнению залог интереса здесь также наличие двух и более механизмов игры, успех по которым зависит от разных оптимальных сосояний машинки. То есть чтобы, например, большой размер был выгоден по одному параметру, но невыгоден по другому. Тут можно связать с реальным миром, что добавит интереса, хотя это и не обязательно.
За ночь машинки «отрастили» большое переднее колесо и почти смогли пройти сложный участок (некоторым даже удавалось).
Посмотреть



А у меня за ночь народ прошел очень подлую яму на 640, на которой постоянно отваливались колёса, но уперся в 777.57

Вот думаю останавливать или нет — вдруг родится кто-нибудь с парой дополнительных колес и выберется отсюда.

Вот думаю останавливать или нет — вдруг родится кто-нибудь с парой дополнительных колес и выберется отсюда.
Предлагаю динамически красить трассу. Например окрашивать красным плиты в зависимости от процента погибшего на них народа. Еще можно красить по «посещаемости» — красить плиты в зависимости от процента доехавших машинок.
Было бы очень наглядно.
Было бы очень наглядно.
У коллеги эволюция пошла по неожиданному пути :)


У меня нет дороги…
висит в таком состоянии и ничего не происходит:
Вентилятор видеокарты при этом бешено работает. W8 x64.
screenshot

Вентилятор видеокарты при этом бешено работает. W8 x64.
Возможно симуляция на паузе. Для снятия паузы — нажать «пробел».
Странно, вертикальная синхронизация должна быть включена, такой fps быть не должен с ней. Возможно, особенности драйвера под W8.
Насчет ничего не происходит, совет выше с пробелом помог? Пожалуй, стоит добавить виджет для скорости симуляции, чтобы было наглядно.
Насчет ничего не происходит, совет выше с пробелом помог? Пожалуй, стоит добавить виджет для скорости симуляции, чтобы было наглядно.
Про fps, на W8 при запуске с интегрированной видеокартой fps 400-600, с нвидией — 60
Да, симуляция, почему-то, на паузе при запуске и кнопка Follow the leader отжата, а камера выше трассы в этот момент находится. Всё теперь работает нормально.
Упало с такими параметрами:


Как конкретно упало?
Строку seed не разглядеть. Но слишком большие максимальная длинна ребра, скорость и крутящий момент.
Машинки будут рождаться наполовину в трассе и улетать с космической скоростью из-за огромных скоростей колес.
Да, на параметрах нет защиты от излишне изобретательного пользователя :)
Строку seed не разглядеть. Но слишком большие максимальная длинна ребра, скорость и крутящий момент.
Машинки будут рождаться наполовину в трассе и улетать с космической скоростью из-за огромных скоростей колес.
Да, на параметрах нет защиты от излишне изобретательного пользователя :)
Я смотрю, у вас в конце очень даже приличные экземпляры начали ездить)
«Шах и мат, креационисты!».
«Шах и мат, креационисты!».
Sign up to leave a comment.
Еще об эволюции гоночных автомобилей