Как стать автором
Обновить
43
0

Разработчик

Отправить сообщение

Обзор техник реализации игрового ИИ

Время на прочтение55 мин
Количество просмотров56K
image

Введение


Эта статья познакомит вас с широким диапазоном концепций искусственного интеллекта в играх («игрового ИИ»), чтобы вы понимали, какие инструменты можно использовать для решения задач ИИ, как они работают совместно и с чего можно начать их реализацию в выбранном движке.

Я буду предполагать, что вы знакомы с видеоиграми, немного разбираетесь в таких математических концепциях, как геометрия, тригонометрия и т.д. Большинство примеров кода будет записано псевдокодом, поэтому вам не потребуется знание какого-то конкретного языка.

Что же такое «игровой ИИ»?


Игровой ИИ в основном занимается выбором действий сущности в зависимости от текущих условий. В традиционной литературе по ИИ называет это управлением "интеллектуальными агентами". Агентом обычно является персонаж игры, но это может быть и машина, робот или даже нечто более абстрактное — целая группа сущностей, страна или цивилизация. В любом случае это объект, следящий за своим окружением, принимающий на основании него решения и действующий в соответствии с этими решениями. Иногда это называют циклом «восприятие-мышление-действие» (Sense/Think/Act):

  • Восприятие: агент распознаёт — или ему сообщают — информацию об окружении, которая может влиять на его поведение (например, находящиеся поблизости опасности, собираемые предметы, важные точки и так далее)
  • Мышление: агент принимает решение о том, как поступить в ответ (например, решает, достаточно ли безопасно собрать предметы, стоит ли ему сражаться или лучше сначала спрятаться)
  • Действие: агент выполняет действия для реализации своих решений (например, начинает двигаться по маршруту к врагу или к предмету, и так далее)
  • … затем из-за действий персонажей ситуация изменяется, поэтому цикл должен повториться с новыми данными.
Читать дальше →
Всего голосов 67: ↑66 и ↓1+65
Комментарии15

Авторы игры 0 A.D. — молодцы

Время на прочтение10 мин
Количество просмотров21K

PVS-Studio & 0 A.D.

0 A.D. — это трёхмерная игра в жанре исторической стратегии в реальном времени, разрабатываемая сообществом добровольцев. Размер кодовой базы маленький и я решил проверить игру в качестве отдыха от больших проектов, таких как Android и XNU Kernel. Итак, перед нами проект, содержащий 165000 строк кода на языке C++. Посмотрим, что интересного в нём можно найти с помощью статического анализатора PVS-Studio.
Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии20

Разработка нового статического анализатора: PVS-Studio Java

Время на прочтение19 мин
Количество просмотров18K

Picture 3

Статический анализатор PVS-Studio известен в мире C, C++ и C# как инструмент для выявления ошибок и потенциальных уязвимостей. Однако у нас мало клиентов из финансового сектора, так как выяснилось, что сейчас там востребованы Java и IBM RPG(!). Нам же всегда хотелось стать ближе к миру Enterprise, поэтому, после некоторых раздумий, мы приняли решение заняться созданием Java анализатора.
Читать дальше →
Всего голосов 111: ↑107 и ↓4+103
Комментарии87

Проверка исходного кода свободного графического редактора Krita 4.0

Время на прочтение17 мин
Количество просмотров15K
Не так давно состоялся релиз новой версии свободного графического редактора Krita 4.0. Самое время проверить этот проект с помощью PVS-Studio.

Picture 1

Читать дальше →
Всего голосов 45: ↑41 и ↓4+37
Комментарии22

Особенности настройки и запуска PVS-Studio в Docker на примере кода Azure Service Fabric

Время на прочтение10 мин
Количество просмотров2.7K


Технологии контейнеризации активно используются для сборки и тестирования программного обеспечения. С появлением PVS-Studio для Linux, пользователям стала доступна возможность добавить статический анализ к другим методам тестирования своего проекта на этой платформе, в том числе в Docker. В статье будут описаны особенности работы с анализатором PVS-Studio в Docker, которые повысят качество анализа и удобство использования. А также будут приведены ошибки, найденные в проекте Azure Service Fabric.
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии9

Состоялся релиз Krita 4.0, свободного графического редактора для художников

Время на прочтение3 мин
Количество просмотров36K
image

Новый релиз Krita принес кучу изменений. Традиционно, при изменении мажорной версии много где сломали обратную совместимость и разработчики предупреждают о необходимости бэкапов при пересохранении в новом формате. Особенно сильно была переработана работа с векторными сущностями и текстом. Разработчики признались, что у них не хватило сил тянуть отдельную реализацию встроенного текста в виде ODT, поэтому все перевели на распространенный SVG. Для оптимальной совместимости они напоминают о возможности установки двух веток одновременно. В Windows все реализовано достаточно привычно, а для Linux есть snap пакеты и другие варианты stand-alone установки.

Ниже под катом много трафика и картинок.
Всего голосов 98: ↑97 и ↓1+96
Комментарии58

31 февраля

Время на прочтение4 мин
Количество просмотров28K
31 февраля

Сейчас я изучаю отчёт очередной проверки проекта Chromium и используемых в нём библиотек, с помощью анализатора кода PVS-Studio. По итогам проверки у меня намечается цикл статей, посвященный разбору некоторых видов ошибок, и тому, как их можно избежать. Однако, одна ошибка так сильно понравилась, что я решил не откладывать её описание, а сразу написать маленькую заметку в блог.
Читать дальше →
Всего голосов 105: ↑103 и ↓2+101
Комментарии108

«При работе над инспекциями кода встречаешь Java-паззлеры каждый день»: Тагир Валеев о работе над IntelliJ IDEA

Время на прочтение10 мин
Количество просмотров11K


Одни знают Тагира lany Валеева по его докладам о Stream API, другие — по хабрапостам, третьи — по работе над статическим анализом кода (в проектах FindBugs и HuntBugs). А с августа он работает в JetBrains над IntelliJ IDEA, и это на многое повлияло: анализом кода он теперь занимается именно там, и его следующий доклад (на приближающихся JPoint и JBreak) будет как раз о создании инспекций кода в IDEA. Мы расспросили Тагира о том, каково разрабатывать проект, в котором разрабатывают всё остальное.
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии10

PVS-Studio 2018: CWE, Java, RPG, macOS, Keil, IAR, MISRA

Время на прочтение10 мин
Количество просмотров9.6K

PVS-Studio 2018: CWE, Java, RPG, macOS, Keil, IAR, MISRA

Приближается 2018 год и пора подумать о новых направлениях развития нашего статического анализатора PVS-Studio. Сейчас наибольший интерес для нас представляет поддержка языка Java. Дополнительно мы рассматриваем возможность поддержки языка IBM RPG. Не менее интересно развить анализ C, C++ C# кода в направлении выявления потенциальных уязвимостей. Ещё нам хочется поддержать анализ C и C++ кода на платформе macOS, и, наконец, доделать поддержку компиляторов от компаний Keil и IAR. Никуда мы не денемся и от поддержки стандарта MISRA. Перечислено много, и на всё одного 2018 года нам не хватит. Поэтому давайте вместе с нами пообсуждаем наши планы и выберем самые приоритетные направления.
Читать дальше →
Всего голосов 43: ↑39 и ↓4+35
Комментарии88

Пишем движок трёхмерного ретро-шутера с нуля

Время на прочтение15 мин
Количество просмотров34K

Мне всегда нравились классические шутеры от первого лица 90-х. Я часами просиживал за моим 386-м, играя Doom, потрясённый тем, как кому-то удалось написать код, отрисовывающий на моём экране 3D-графику в реальном времени с отличным разрешением 320x200. Я немного знал программирование (только что начал изучать BASIC), поэтому осознавал, что глубоко внутри это всего лишь куча математики и байтов, записываемых в видеопамять. Но в то время даже массивы для меня были довольно сложным понятием, поэтому я не мог даже начать постигать всю сложность 3D-рендеринга.

В то время все писали 3D-движки с нуля, потому что другого способа не было. Но сегодня написание логики 3D-рендеринга с нуля скорее всего окажется плохой идеей. Очень плохой. Почти как изобретение колеса! При наличии огромного количества 3D-движков и библиотек, намного более хорошо протестированных и оптимизированных, чем то, что вы можете сделать сами, нет никаких причин для разумного разработчика начинать писать собственный движок.

Если только…

Представьте, что вы можете вернуться в машине времени назад в 90-е, когда ещё не было OpenGL и DirectX, не было видеопроцессоров. Всё что у вас есть — ЦП и экран, заполненный пикселями. Вам всё придётся писать самому.

Если эта идея кажется вам интересной, то вы не одиноки: это именно то, что можно сделать на такой выдуманной консоли, как TIC-80.
Читать дальше →
Всего голосов 70: ↑70 и ↓0+70
Комментарии28

Введение в алгоритм A*

Время на прочтение10 мин
Количество просмотров178K
При разработке игр нам часто нужно находить пути из одной точки в другую. Мы не просто стремимся найти кратчайшее расстояние, нам также нужно учесть и длительность движения. Передвигайте звёздочку (начальную точку) и крестик (конечную точку), чтобы увидеть кратчайший путь. [Прим. пер.: в статьях этого автора всегда много интерактивных вставок, рекомендую сходить в оригинал статьи.]


Для поиска этого пути можно использовать алгоритм поиска по графу, который применим, если карта представляет собой граф. A* часто используется в качестве алгоритма поиска по графу. Поиск в ширину — это простейший из алгоритмов поиска по графу, поэтому давайте начнём с него и постепенно перейдём к A*.
Всего голосов 70: ↑69 и ↓1+68
Комментарии20

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность