Изначально проект PUBG (просим прощения у оригинальной PUBG за использование их аббревиатуры, мы всего лишь хотим использовать эту игру для развития навыков программирования и не планируем публиковать ее в Steam в будущем) был разработан как внутренний проект нашей студии для развлечения. Затем же мы подумали, что он может быть полезен другим студиям, компаниям и образовательным учреждениям, и опубликовали его под лицензией MIT.
Что это такое?
PUBG представляет собой автоматическое поле боя, на котором алгоритмы сражаются друг с другом в режиме реального времени. Каждый алгоритм контролирует существо (которое может быть быком, носорогом и т.д.) с целью собрать пули и атаковать ими своих противников. Каждая победа увеличивает коэффициент интеллекта каждого существа, самые умные из которых отображаются в единой таблице рекордов.
Посмотрите как это работает у нас.
Зачем это нужно?
- Если вы изучаете программирование, вы можете использовать PUBG для тренировки
навыка проекции абстрактных задач на конкретные элементы алгоритма. - Если вы работаете в команде, вы можете организовать еженедельные соревнования
и награждать победителя пиццей, пивом или iPhone X. - Если вы преподаете программирование, вы можете использовать PUBG как небольшую
лабораторию с целью демонстрации работы прикладных базовых алгоритмов. Создавать
мозг для существа зачастую гораздо интереснее чем рисовать параболу на экране.
Как создать своего бота?
- Скачайте последнюю версию игры.
- Откройте файл /brains/br_edmund.js для редактирования, прочитайте комментарии в нем и измените логику мозга до желаемого поведения существа.
- Откройте /index.html в браузере чтобы увидеть что у вас получилось. Это все.
- Вы можете изменить массив cfg_sources в файле config.js чтобы убрать из игры некоторых существ или добавить своих собственных.
- Вы можете редактировать другие переменные в файле config.js для изменения правил игры, например установить shuffleBrains в false чтобы начинать игру с вашего мозга, или изменить значение maxAliveCreatures чтобы сражаться с большим или меньшим количеством врагов.
- Попробуйте свои умения в сражениях с лучшими мозгами.
Материалы
По ссылке доступа подробная документация с описанием способностей животных, правил, порядка проведения соревнований и др. Исходные коды проекты доступны на GitHub, вы можете их использовать на свое усмотрение: форкнуть в свою версию для обучения, соревнований с друзьями и т.д. Удачных и веселых битв!
Комментарии (16)
prefrontalCortex
28.01.2018 21:11Откройте файл /brains/br_edmund.js для редактирования, прочитайте комментарии в нем и измените логику мозга до желаемого поведения существа.
Эх, вот бы была возможность писать на более других языках, нежели JS.
alphashooter
28.01.2018 21:30Всегда считал, что нормальному программисту примерно без разницы, на каком языке писать
Katsuko
28.01.2018 22:57Сходу, например, на лиспе сможете написать более менее осмысленное ПО, не изучив его? Сильно сомневаюсь.
alphashooter
28.01.2018 23:06Сходу, быть может, и нет. Я ж не имел ввиду, что можно просто сесть и начать на любом языке писать. К тому в комментарии и было слово "примерно", ещё и курсивом выделенное.
Неужто Вы будете отрицать, что любой программист, знакомый с C-подобным синтаксисом, не сможет писать на JS? Безусловно, не сходу, а затратив, быть может, может пару часов на изучение, но все же сможет, и довольно быстро. Я лишь хотел сказать, что выбор JS в этом плане не так уж и плох.
akryukov
29.01.2018 10:48Это не повод заставлять всех писать на JS.
В соревнованиях на codenjoy.com или даже на Russian AI Cup разработчики предоставили API, с которым можно работать любым языком.
potan
29.01.2018 14:47js давно практически выполняет роль ассемблера, почти все пишут хотя бы на typescript, а некоторые даже на Purescript.
Но, что бы можно было писать на высокоуровневых языках, они могли бы описать API — оставалось бы только биндинги написать.
Flakky
29.01.2018 00:37Такие игры очень классные, кстати, но нужно давать свой, более интуитивный интерфейс для задания поведения. Например графический редактор программирования существа. Давать разные события, вроде «Противник появился на экране» или «Вас атаковали» и функции «Идти туда» «Повернуться туда». Посмотрите Blueprint в Unreal Engine 4. Там правда это полноценный ООП графический, но идея та же, только чуть полегче.
Так и аудитория будет больше, и игра будет дружелюбнее к обычным пользователям, при этом развивая их логическое мышление. Особенно полезно будет детям и школьникам, которые смогут совмещать соревнование и развитие.
tmn4jq
29.01.2018 01:23+1У создателя PUBG был ник PlayerUnknown, отсюда и название PlayerUnknown's Battlegrounds. В вашем случае могло было быть Amoneron's Battlegrounds, или просто ABG :)
daemonhk
29.01.2018 06:55Эм… А почему я могу влиять на ход игры, двигая «персов» и предметы? Или я что-то не так делаю?
programmeraxel
29.01.2018 10:57Но это же арена codecombat и только одним ЯП. У codecombat логику можно описывать на python\js\coffeescript\lua\java.
nemilya
29.01.2018 10:58Спасибо за проект!
Тема игр и программирования — очень плодотворная) На Ruby кстати тоже можно делать web-игры :)
github.com/yeahrb/yeah, с помощью Opal компилируются в веб приложение, например asteroids (код игры)
igorgabby
О, это что-то новенькое.
Теперь появился отличный повод посидеть и позависать. Как раз хотелось скорость мышления увеличить.