Плюсы тут ни при чем, просто картинка понравилась.
Плюсы тут ни при чем, просто картинка понравилась.

Стоим мы как‑то раз в курилке с коллегами, обсуждаем новый полис в 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 — изначально аббревиатура для президента США, в терминах игрового ИИ шутливое название последнего персонажа из группы, выжившего в столкновении с игроком.

Надеюсь вам понравилось, названия не всегда логичны, и имеют историческую привязку к месту и студии откуда пошли. Пишите в комментариях, кто сколько отгадал, ну и свои сокращения — вместе посмеемся!

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


  1. dyadyaSerezha
    19.07.2024 17:01
    +2

    таски в jira

    Ненене, таски в жире! И вариант "энджайн" не слышал никогда.


  1. Dmitri-D
    19.07.2024 17:01

    у Baking есть еще 1 значение - пропечка, выжидание в CI/CD pipeline перед деплойментом в следующий wave -- то, чего гении безопастности не делали в распространении патча, и получили проблему во всем мире сразу.


    1. dalerank Автор
      19.07.2024 17:01

      Вообще да, почему бы не выкатить патчи условно на тимбукту? Ну упадёт там пара серверов, быстро откатят.


  1. S-trace
    19.07.2024 17:01
    +2

    Тема помидоров не раскрыта


  1. Mingun
    19.07.2024 17:01

    AAA (Triple-A) - Игра высокого качества с крупным бюджетом, большим временем разработки и многочисленным штатом программистов +- 30 человеков, если считать помидоров.

    Просто прекрасно :) При расшифровке термина использовать другой такой же непонятный термин.


    1. ToSHiC
      19.07.2024 17:01

      Тут можно из контекста предположить, что речь про синьоров помидоров - это уже более общий жаргон.


      1. Mingun
        19.07.2024 17:01

        Да тут половину из контекста можно предположить и половина же опять «более общий жаргон». Просто раз уж пошли расшифровывать, так расшифровывайте до конца :)


  1. lgorSL
    19.07.2024 17:01

    Footloose code — код, который не влияет на работу функции, может быть удален без потери функционала.

    По-моему его можно назвать мёртвым кодом (dead code)

    Или разница в том, что footloose код всё-таки исполняется, но ни на что не влияет?


    1. dalerank Автор
      19.07.2024 17:01

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