Стоим мы как-то раз в курилке с коллегами, обсуждаем новый полис в GOAP и планируем расход задач на неделю, пару тасок решили кинуть в обезьянку, две ноды вернуть из ада депрекейта и настроить для работы с новым бт, а одну вернуть мастеру — пусть сам свои фланкинги ковыряет, раз уж он их и заимплементил, а еще две сжечь, а еще надо выделить время, чтобы покопать TSA, потому что новый GD сломал пару вейтов, и теперь хуман ходит не в тот ковер. Еще одну придется собирать из г..на и палок частей других нод, потому что дизайнеру нужно вчера, а времени на инвестигейт нет, покрасим её в фиолетовый, чтобы в билд не пробралась. А программеры с соседнего проекта, не аишные, смотрят на нас круглыми глазами и иногда посмеиваются. И вот я сажусь заполнять таски в jira, и понимаю чему удивлялись мои коллеги, потому что придется все эти короткие термины разжевать в таске. Давайте я дам названия терминов, а вы их попробуете объяснить сами, до раскрытия спойлера? Интересный должен игродевовский квиз получиться 🙂 КДПВ просто прикольная, C++ тут нет.
Так сложилось, что большинство терминов разработки игрового искусственного интеллекта происходят из англоязычных, которые и сами по себе уже упакованы по смыслу, и при дополнительной адаптации и сжатии еще и славянской группой превращаются в аналог писка птичек. И без знания особенностей архитектуры AI, конкретного движка и даже версии фреймворка становится очень сложно выделить связную мысль из разговора. Начнем с чего-то простого из игростроя и возможно вам известного, а потом будет самая специализированная мякотка. Готовы?
AAA (ТриА), Indie (Инди), Сrunch (Кранч)
-
AAA (Triple-A) — Игра высокого качества с крупным бюджетом, большим временем разработки и многочисленным штатом программистов +- 30 человеков, если считать помидоров..
-
Indie — Независимые игры, разработанные небольшими командами или отдельными разработчиками..
-
Crunch — Время интенсивной работы перед дедлайном, которые сопровождающийся переработками, быстрым закрытием тасок, концентрацией внимания над определенными задачами или темами и повышенным багопроизводством команды..
Asset (Асет), Build (Билд), Bug (Баг), Patch (Пач)
-
Asset — Любой элемент игры, включая графику, звуки, модели, анимации и т.д.
-
Build — Собранная версия игры, готовая для тестирования QA и фокус группами.
-
Bug — ошибка логическая или программная, которая приводит к неожидаемому поведению в игре.
-
Patch — обновление, бывают (patchfix) исправляющее ошибки или *(contentpatch) добавляющее или убирающие новые функции, контент.
Engine (Энжин, Энджайн)
Engine — движок, основная технология, на которой строится игра (например, Unity, Unreal Engine), большой фреймворк (вроде симуляции физики, Physx), звука (Wwise) или навигации (Paramesh)
Loot (Лут)
Loot — Предметы, получаемые игроком в ходе игры, часто из сундуков или побежденных врагов..
NPC (нпс, непись, хуман)
NPC (Non-Player Character) — Персонаж в игре, управляемый программой, а не игроком..
OP, Imbalanced (ОПшка, Имба)
OP (Overpowered) — Чрезмерно сильный элемент игры, нарушающий баланс..
REG (рега, рандом)
REG (Random Event/Element Generator) — Механизм случайного распределения элементов или событий в игре..
Spawn (спаун, заспавнить)
Spawn — Появление игрового объекта, например, врага или предмета, в игровом мире..
AI (аишка, мозги)
AI (Artificial Intelligence) — Искусственный интеллект, управляющий поведением NPC..
Alpha, Alf, Elvis (альфа, альф, эльф, элвис)
Alpha — Ранняя версия игры, содержащая основные функции, но еще далеко не завершённая, тоже самое что или Elvis в терминах AI.
Alf, Elvis — первый элемент, персонаж в группе объектов или NPC. Обычно на него навешиваются дополнительные функции по отношению к группе.
Blending (блэнд, криво сблендилось, не блэндится)
Blending — Плавное переходное анимационное состояние между двумя анимациями, текстурами, моделями или объектами.
Ht, CBox, Hitbox (Хейта, Хитбокс, Клумба)
Hitbox — Невидимая область, определяющая границы объекта для быстрого детектирования коллизий и попаданий. Клумба — жаргонное для некоторых движков, например в Godot (вероятно от collision box)
Clipping, Noclip (Клип, Понокать)
Clipping — Проникновение одного объекта сквозь другой в игре, часто ошибка графики, физ движка или кривых ручек программеров.
Noclip — понокать, разрешить объектам проходить сквозь друг-друга.
Hit detection, Bullet hit (Хитить, Не хитует)
Hit detection — Определение попадания одного объекта в другой, например, пули в противника..
GDD, Desdoc (ГДД, ДД, Диздок)
GDD (Game Design Document) — Документ, описывающий все аспекты дизайна игры..
HUD (Худ, Хад, Ухо, Хадить)
HUD (Heads-Up Display) — Элементы интерфейса, показывающиеся поверх игрового мира (жизни, мана, карта и т.д.). Хадить — рисовать поверх UI, надоедать сообщениями или напоминать.
(Редко) UHD (User Headup Display) — Ухо, повесить на ухо, значит что-то нарисовать надоедливое на видном месте пользовательского UI.
LOD, Bake lods (Лод, лоды, плодить, кривой лод, отправить в печку)
LOD (Level of Detail) — Технология, уменьшающая детализацию объектов на дальнем расстоянии для улучшения производительности, относится не только для текстур, но и для игровой логики. Плодить — создавать упрощенную модель по изначальной. Bake lods — тоже самое.
Кривой лод — плохо адаптированная под дистанцию геометрия, на которой видны огрехи и ошибки.
FSM, State machine (фсм, стейты, сума, сумка)
(Final) State machine — Модель поведения, представляющая объект, переходящий между различными состояниями.
Сума/Сумка — жаргонное, сложная стейт машина с большим числом состояний, которую трудно отлаживать, иногда старая или наследованная логика. Тяжелая сумка — очень старая FSM.
Сумка порвалась — неучтенный кейс, который приводит к неправильному состоянию внутри FSM.
Tweening, Tweak (Твинки, Твиксы, Потвикать)
Tweening — Небольшая интерполяция данных, создание промежуточных состояний между двумя ключевыми значениями. Применяется для изменения общего поведения NPC, небольшими изменениями, чтобы оно немного отличалось и не создавало детектируемые игроком шаблоны..
Аggro, DA, Danger, Ogre (Агриться, Данжэр, Огр, Огрить)
Aggro, Danger — Состояние NPC, когда он концентрируется на бое с врагом
Ogre — жаргонное, потому что Огр страшный. Огрить может только один NPC, который в данный момент атакует игрока, остальные составляют группку поддержки, рычат, прыгают, и всячески имитируют бой.
Cooldown (Кулдаун, Откат)
Cooldown — Время ожидания перед повторным использованием способности или логики..
DPS (Дамаг, Дпс)
DPS (Damage Per Second) — Показатель наносимого урона в секунду. Параметр оружия, которые используются дизайнерами при составлении логики поведения NPC.
Kiting, Biting, Kit’n’Hide (Киты, Карусель, Катать плеера, Китить, Байтить, Бить игрока)
Kiting — тактика группы NPC, для удержания игрока на расстоянии для избежания ответных атак..
Biting (Bite) — тактика одиночных NPC, целью которых будут редкие безответные удары, например невидимым снайпером, или бессмертными cюжетные NPC.
Kit’n’Hide — тактика группы NPC, укусил-убежал, для отвлечения внимания игрока между несколькими объектами. Используется для имитации напряженных боев небольшой группой.
Мета, Reference (Мета, Реф)
Meta — Эффективная стратегия или тактика, которая создается для конкретной локации, чтобы сделать её уникальной в игре..
Min-Maxing, Burnout (Максить пропертю, Прожечь непися)
Min-Maxing — Оптимизация характеристик NPC группой тестов, с помощью QA или трудом программиста для достижения максимальной эффективности параметров, например скорости передвижения или доджа. .
Ragequit, Rageflow (Рейджкат, Флоу, Выхлоп)
Ragequit — специально созданные ситуации боевые или сюжетные, зачастую вызывающие сильный эмоциональный отклик во время игры, которые могут привести к выходу из игры из-за раздражения или гнева. Игрока надо держать в состоянии напряжения, но чтобы не закончилось выходом и негативом.
BT (бт, бтшка, дерево, граф)
Behavior Tree — это метод проектирования игрового искусственного интеллекта. Halo 2 была первой массовой игрой, в которой использовались деревья поведения, и они начали становиться более популярными после того, как было выпущено подробное описание их применения и реализации. Представляют собой комбинацию множества различных методов AI: FSM, планирования, планирования и выполнения действий.
GOAP (Гоп, бардак)
GOAP (Goal-Oriented Action Planning) — это метод, обычно используемый в высокоуровневом игровом ИИ для создания алгоритмов поведения, которые могут автономно определять свои действия и достигать определенных целей в игровой среде. Обычно используется для создания сложного и адаптивного поведения неигровых персонажей в игре, является надстройкой для BT.
Основная идея GOAP — разбить сложную задачу или цель на серию более мелких и простых действий, которые может выполнить NPC. Эти действия затем организуются в план или последовательность действий, которые приведут его к желаемой цели.
Policy (Полис, Полиси, Политика)
Policy — особая тактика настройки GOAP, которая позволяет учитывать несколько целей, которых необходимо достигнуть. Полиси создает последовательность действий, называемую планами, которые запускаются с заданной периодичностью во время работы GOAP для изменения весов целей, которые в обычном случае задаются постоянными или через конфиги.
Более подробно можно почитать тут
Zerg (Зерг — тактика, Зерги)
Zerg — Тактика группы NPC в терминах игрового ИИ, основанная на использовании численного превосходства над игроком.
Зерги — NPC, которые постоянно атакуют игрока, не давая ему перейти к активным действиям. Откуда пошло наверное понятно.
Spaghetti (Спагетти, Спаржа, Лапша, Лапшекод)
Спагетти(Spaghetti) — Плохо структурированный и запутанный код или алгоритм, который трудно поддерживать. В терминах анриала все блупринты, даже самые структурированные, со временем превращаются в спаржу или лапшу, понятную одному автору, который это написал
Sushi (Суши, Сушка, Сушить код, Засушить)
Суши (Sushi) — Обновление кода, которое, вместе с исправлением проблемы, вносит ошибки, которые влияют на общую работу.
Сушить код — бисектить комиты в поисках суши. Работает так, проверяем коммит на полпути между известным хорошим и известным плохим, отмечаем коммит как хороший или плохой. Повторяем до тех пор, пока вы не найдем точный коммит, в котором ошибочные изменения были добавлены впервые.
Часто код сушат в поисках виновного, чтобы предоставить неоспоримые доказательства преступления и покарать автора сушки.
Засушить — отправить суши в репо. Джун намедни засушил три комита, которые проморгали три помидора. Теперь придется все откатывать, отдадим мидлу на починку, а джуну выдадим звание манкера на неделю.
Hodgie code, shitware (внутри еще немного про ж… код)
Hodgie code — Некачественный и непродуманный код, ну вы поняли
Painass — Джун вернул коммит на дцатое ревью, рукож..п
Shoveass code — в равной степени как бесконечно ужасный, и гениальный код, который не поддается разбору обычным программистом.
Footloose code — код, который не влияет на работу функции, может быть удален без потери функционала.
Phonyass code — функционал, который не могут переписать или удалить долгое время, без переписывания половины движка. Код, который имеет зависимости ко всем частям движка
Assload code — сложный код, который дорого поддерживать, но еще дороже выкинуть и переписать заново.
Ratass code — код, который никто не хочет ревьювать, и перекидывают от одного человека к другому.
Stub, Backtrack, Hardcode (Затычка, Трэкать, Хардкод)
Stub — временное решение или заглушка в коде, используемая для тестирования..
Backtrack — поиски ошибок в коде, отслеживая шаги назад по цепочке событий или вызовам функций, когда дамп не доступен.
Hardcode — значения напрямую в коде, вместо использования переменных или конфигураций..
Race, Datarace, Databranching (Гонка, Гонка по данным, Бранчит)
Race — ошибка, возникающая при неправильном управлении потоками, приводящая к непредсказуемому поведению..
Datarace — тоже самое, что и race, но возникает между состояниями объектов, когда изменения в одном состоянии приводят к некорректному работу в другом.
Databranching — неправильная настройка конфигов, которая приводит к конфликтам на загрузке и ошибочному поведению в игре.
Glitch (Глитч)
Glitch — Небольшая ошибка или сбой в игре, часто графическая, которая не крашит игру и не меняет общего поведения AI.
Bones (Боны)
Bones — Кости, используемые в скелетной анимации для управления движениями персонажа..
Waypoint (Вейт, Вэйпоинт)
Waypoint — Точка на карте, используемая для навигации персонажей или объектов, обычно поставленная дизайнером и статичная в пространстве уровня. Ходить по вейтам — идти по заранее заданному пути.
Cast, Raycast, Raypick (Каст, Рейкаст, Рейпик)
Cast — Приведение типов данных или проверка пересечения луча с объектом.
Raycast, Raypick — проверка пересечения луча с объектом, навмешом или геометрией.
Level designer (ЛД)
Level designer — Проектирует и создает уровни игры..
Navmesh (Навмеш, Навигация)
Navmesh — Сетка навигации, используемая для передвижения персонажей по игровому миру..
Passcode, Goldenpath (Паскод, Голденпас)
Passcode/Goldenpath — Путь прохождения игры или локации, который был задуман разработчиками.
Pathfinding (Пасфайнд)
Pathfinding — Алгоритмы, используемые для поиска пути в игре с использованием навмеша или геометрии..
Tiling (Тайлинг)
Tiling — повторение текстур, объектов, или алгоритмов для уменьшения затрат памяти или процессора, когда результаты работы одного блока используется на входе другого..
Burndown (Cжечь таску)
Burn Down Task — отправить таску в беклог или закрыть без фикса или под разными причинами. Аналог W’nt fix!
Code Monkey (Обезьянка, Манкер)
Code Monkey — шутливое, молодой или неопытный разработчик, который не уделяет достаточно внимания коду и не думает о принимаемых решениях в контексте всего проекта. На ревью изменений от таких коллег, приходится тратить больше времени, чем на его написание.
Event Listener (Ведро, Листенер)
Event Listener — системный паттерн для асинхронной обработки сообщений и событий. Ведро, потому что туда все сыпется без разбору.
Hot Reload, RTC (речка, ручка, сделать ручкой)
Hot Reload — программный паттерн для работы с конфигами, объектами и состояниями, когда изменение кода или настроек не приводит к перезапуску игры или уровня, что существенно сокращает время итерации, позволяя создавать игру, прямо во время игры
RTC (Runtime Config) — конфиг или объект, который поддерживает работу в hot reload.
Magic Number (Магия, Меджик)
Magic Number — сырые числа в коде алгоритмов, которые существуют без коментариев и не могут быть быстро поняты анализом алгоритмы.
Memory Leak (Мемлик, лик)
Memory Leak — ситуация в коде, которая приводит к потере информации о выделенных блоках памяти в объектах.
Nerf (Нерф, нерфить)
Nerf — понижать эффективность параметров, которые вызывают дисбаланс в алгоритме.
Ragdoll Physics (Рэгдол, кукла)
Ragdoll Physics — процедурная анимация объектов, на основе данных из физического движка. Часто используется в качестве замены анимациях смерти. С увеличением мощности компьютеров и совершенствования алгоритмов появилась возможность выполнять ограниченное физическое моделирование в реальном времени, что сделало анимации смерти более реалистичной.
Кукла — объект, отправленный в регдол симуляцию.
Rubberbanding (Резинка)
Rubberbanding — симуляция объектов, которая позволяет их держать в некоторой области, не отпуская далек от игрока, независимо от геометрии и настроек уровня.
Baking, Cooking (Запечь, печка)
Baking — процесс создания объектов для билда из исходных данных, например в модель добавляются части (руки, ноги, головы), которые в обычном виде хранятся в разных файлов. В запеченом виде это все хранится обычно в одном файле, для снижения затрат на загрузку моделей в игру.
Code Smell (Плохо пахнущий код)
Code Smell — субъективные признаки о состоянии кода, которая говорят о более глубоких проблемах, которые не выражаются в виде чисел или метрик.
IK (Ики)
Inverse Kinematics — метод анимации, который вычисляет положения костей, необходимых для размещения конечного эффектора в желаемом положении. Используется для притягивания рук к оружию, ног к поверхностям.
Qtree (Квадрик, Квадтри)
Quadtree — древовидная структура данных, в которой каждый внутренний узел имеет ровно четыре дочерних узла, используемая для разделения двумерного пространства. Используется для быстрой работы с пространством сцены, деления уровня на секции и т.д.
A* (Aстар)
A* — популярный алгоритм поиска пути и обхода графа, используемый для поиска кратчайшего пути от одной точки к другой.
Blackboard (ББ, борда)
Blackboard — общая структура данных в терминах BT, используемая NPC для хранения и доступа к информации об игровом мире.
Boid (Бойды, Войды)
Boid — симуляция группового поведения, часто используемая для моделирования стадного, стайного или стадного поведения.
Flocking (Флок)
Flocking — модель поведения, которая имитирует движение группы cуществ, часто используя такие правила, как разделение, выравнивание и сплоченность. Обычно используется для снижения сложности ИИ, когда существо по факту одно, два или три, но за счет анимаций создается впечатление большой группы.
Influence Map (Карта влияния)
Influence Map — пространственное представление, используемое ИИ для оценки влияния различных факторов в разных областях игрового уровня. Используется для корректирования поведения, без кардинального изменения алгоритма.
Potential Field (Полевик, Тропинка)
Potential Field — метод поиска пути, при котором агенты ИИ находятся под влиянием полей, которые притягивают или отталкивают их из определенных областей.
Cover System (Каверы, Коверы, Коверпас)
Cover System — система поведения ИИ для поиска и использования укрытий во время боевых действий, основанная на заранее заданных точках взаимодействия на уровне, углы зданий, заборы, бочки, ящики и т.д.
Cover Path — путь NPC проложенный между несколькими такими точками.
Fuzzy Logic (Фаззирование)
Fuzzy Logic — шаблон проектирования игровой логики, используемый для принятия решений, которые являются набором состояний, а не фиксированным результатом. Часто используется при проектирования непоследовательных, нелогичных или непредсказуемых НПС.
MDP (Сеть Маркова, Решения Маркова, Фанера)
Markov Decision Process (MDP) — математическая модель, используемая для принятия решений, где частично случайные результаты подмешиваются в дерево поведения, создавая определенную непредсказуемость работы.
Фанера — потому что MDP, совпадает с известной технологией изготовления фанеры.
Посчитать на фанере — использовать MDP для получения результата.
СRAI (Раки, Рак, Край)
Сonditional Reactive AI — метод проектирования игрового ИИ, где делается упор на реагирование на стимулы в окружающей среде заранее заданным поведением.
Используется в основном для ИИ несложных и мелких персонажей, вроде крыс или змей. Характеризуется небольшим расходом памяти и простой логикой работы, но также достаточно просто детектируемыми шаблонами со стороны игрока, но для простых существ простительно.
Сделать крысу раком — задать простое и реактивное поведение для NPC крыса.
Potus (Потус, Пацик)
President of The US — изначально аббревиатура для президента США, в терминах игрового ИИ шутливое название последнего персонажа из группы, выжившего в столкновении с игроком.
Надеюсь вам понравилось, названия не всегда логичны, и имеют историческую привязку к месту и студии откуда пошли. Пишите в комментариях, кто сколько отгадал, ну и свои сокращения — вместе посмеемся!