image

Изначально проект PUBG (просим прощения у оригинальной PUBG за использование их аббревиатуры, мы всего лишь хотим использовать эту игру для развития навыков программирования и не планируем публиковать ее в Steam в будущем) был разработан как внутренний проект нашей студии для развлечения. Затем же мы подумали, что он может быть полезен другим студиям, компаниям и образовательным учреждениям, и опубликовали его под лицензией MIT.

Что это такое?


PUBG представляет собой автоматическое поле боя, на котором алгоритмы сражаются друг с другом в режиме реального времени. Каждый алгоритм контролирует существо (которое может быть быком, носорогом и т.д.) с целью собрать пули и атаковать ими своих противников. Каждая победа увеличивает коэффициент интеллекта каждого существа, самые умные из которых отображаются в единой таблице рекордов.

image

Посмотрите как это работает у нас.

Зачем это нужно?


  1. Если вы изучаете программирование, вы можете использовать PUBG для тренировки
    навыка проекции абстрактных задач на конкретные элементы алгоритма.
  2. Если вы работаете в команде, вы можете организовать еженедельные соревнования
    и награждать победителя пиццей, пивом или iPhone X.
  3. Если вы преподаете программирование, вы можете использовать PUBG как небольшую
    лабораторию с целью демонстрации работы прикладных базовых алгоритмов. Создавать
    мозг для существа зачастую гораздо интереснее чем рисовать параболу на экране.

Как создать своего бота?


  1. Скачайте последнюю версию игры.
  2. Откройте файл /brains/br_edmund.js для редактирования, прочитайте комментарии в нем и измените логику мозга до желаемого поведения существа.
  3. Откройте /index.html в браузере чтобы увидеть что у вас получилось. Это все.
  4. Вы можете изменить массив cfg_sources в файле config.js чтобы убрать из игры некоторых существ или добавить своих собственных.
  5. Вы можете редактировать другие переменные в файле config.js для изменения правил игры, например установить shuffleBrains в false чтобы начинать игру с вашего мозга, или изменить значение maxAliveCreatures чтобы сражаться с большим или меньшим количеством врагов.
  6. Попробуйте свои умения в сражениях с лучшими мозгами.

Материалы


По ссылке доступа подробная документация с описанием способностей животных, правил, порядка проведения соревнований и др. Исходные коды проекты доступны на GitHub, вы можете их использовать на свое усмотрение: форкнуть в свою версию для обучения, соревнований с друзьями и т.д. Удачных и веселых битв!

Комментарии (16)


  1. igorgabby
    28.01.2018 20:12

    О, это что-то новенькое.
    Теперь появился отличный повод посидеть и позависать. Как раз хотелось скорость мышления увеличить.


  1. Code_God
    28.01.2018 20:12
    -2

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


    1. mammuthus
      29.01.2018 08:15

      умные, но по жизни тупые

      Это как?


  1. prefrontalCortex
    28.01.2018 21:11

    Откройте файл /brains/br_edmund.js для редактирования, прочитайте комментарии в нем и измените логику мозга до желаемого поведения существа.

    Эх, вот бы была возможность писать на более других языках, нежели JS.


    1. alphashooter
      28.01.2018 21:30

      Всегда считал, что нормальному программисту примерно без разницы, на каком языке писать


      1. Katsuko
        28.01.2018 22:57

        Сходу, например, на лиспе сможете написать более менее осмысленное ПО, не изучив его? Сильно сомневаюсь.


        1. alphashooter
          28.01.2018 23:06

          Сходу, быть может, и нет. Я ж не имел ввиду, что можно просто сесть и начать на любом языке писать. К тому в комментарии и было слово "примерно", ещё и курсивом выделенное.
          Неужто Вы будете отрицать, что любой программист, знакомый с C-подобным синтаксисом, не сможет писать на JS? Безусловно, не сходу, а затратив, быть может, может пару часов на изучение, но все же сможет, и довольно быстро. Я лишь хотел сказать, что выбор JS в этом плане не так уж и плох.


      1. fatronix
        29.01.2018 07:41

        Странное мнение.


      1. akryukov
        29.01.2018 10:48

        Это не повод заставлять всех писать на JS.
        В соревнованиях на codenjoy.com или даже на Russian AI Cup разработчики предоставили API, с которым можно работать любым языком.


    1. potan
      29.01.2018 14:47

      js давно практически выполняет роль ассемблера, почти все пишут хотя бы на typescript, а некоторые даже на Purescript.
      Но, что бы можно было писать на высокоуровневых языках, они могли бы описать API — оставалось бы только биндинги написать.


  1. Flakky
    29.01.2018 00:37

    Такие игры очень классные, кстати, но нужно давать свой, более интуитивный интерфейс для задания поведения. Например графический редактор программирования существа. Давать разные события, вроде «Противник появился на экране» или «Вас атаковали» и функции «Идти туда» «Повернуться туда». Посмотрите Blueprint в Unreal Engine 4. Там правда это полноценный ООП графический, но идея та же, только чуть полегче.

    Так и аудитория будет больше, и игра будет дружелюбнее к обычным пользователям, при этом развивая их логическое мышление. Особенно полезно будет детям и школьникам, которые смогут совмещать соревнование и развитие.


  1. tmn4jq
    29.01.2018 01:23
    +1

    У создателя PUBG был ник PlayerUnknown, отсюда и название PlayerUnknown's Battlegrounds. В вашем случае могло было быть Amoneron's Battlegrounds, или просто ABG :)


  1. daemonhk
    29.01.2018 06:55

    Эм… А почему я могу влиять на ход игры, двигая «персов» и предметы? Или я что-то не так делаю?


  1. Eldhenn
    29.01.2018 08:34

    > абстрактных задач

    Ну-ну.


  1. programmeraxel
    29.01.2018 10:57

    Но это же арена codecombat и только одним ЯП. У codecombat логику можно описывать на python\js\coffeescript\lua\java.


  1. nemilya
    29.01.2018 10:58

    Спасибо за проект!

    Тема игр и программирования — очень плодотворная) На Ruby кстати тоже можно делать web-игры :)
    github.com/yeahrb/yeah, с помощью Opal компилируются в веб приложение, например asteroids (код игры)