Глоссарий
Этот глоссарий фиксирует термины объектной модели Lineage 2, игрового движка и клиентского протокола. Он нужен, чтобы карта фич, документация движка и код этого репозитория использовали одно имя для одной вещи, хотя публичные семейства сборок (Mobius, линия L2J, aCis, L2Emu и другие) называют одно и то же по-разному. Термин здесь — это концепт модели или движка, а не фича.
Виды сущностей
Заголовок раздела «Виды сущностей»Каждый термин несёт одну отметку. Четыре вида называют сущности; пятая отметка — для того, что сущностью не является.
| Вид | Критерий | Имя | Примеры |
|---|---|---|---|
| template / instance | Объект мира со своим object id, причём одно определение создаёт сразу несколько объектов | <x>-template для определения, <x> для каждого объекта |
item-template / item, npc-template / npc, reflection-template / reflection, vehicle-template / vehicle |
| unique entity | Собственная идентичность и одна запись на сущность: объект мира со своей записью данных либо группа, которую игра ведёт с живым состоянием | <x> без суффикса |
door, castle, clan, party, siege, zone, olympiad-match |
| owned state | Не объект мира; принадлежит владельцу (персонаж, аккаунт, клан) и имеет своё состояние: уровень, таймер, срок действия | <owner>-<x> или существительное состояния |
character-skill, premium, inventory, abnormal |
| reference data | Данные, которые ищутся по id и никогда не инстанцируются | <x> без суффикса |
skill, class, recipe, cubic, premium-plan |
| concept | Не сущность: процесс, механика, правило или понятие протокола | <x> без суффикса |
aggro, pathfinding, packet, bypass, event |
Процедура именования
Заголовок раздела «Процедура именования»Отвечайте на вопросы по порядку; первое «да» определяет вид и имя.
- Существует ли вещь в мире как объект со своей runtime-идентичностью (object id), и может ли одно определение данных
породить несколько таких объектов одновременно? Тогда определение — это
<x>-template, а каждый объект — instance<x>. Монстры, петы, саммоны и стражи — всё это instancenpc; травы, заряды (shots) и квестовые предметы — всё это instanceitem. - Это игровая сущность со своей идентичностью, где одна запись — это одна сущность: объект мира, описанный собственной записью данных, либо группа, которую игра создаёт и ведёт с живым состоянием (она владеет вещами, а не принадлежит кому-то)? Тогда это unique entity с именем без суффикса; её данные и её живое состояние принадлежат одной сущности.
- Это не объект мира, а нечто, что держит владелец и что имеет своё состояние — уровень, таймер, срок действия? Тогда
удерживаемая вещь — это owned state, с именем
<owner>-<x>или простым существительным состояния, а её определение — reference data<x>(character-skillдержитskillс уровнем и откатом). - Иначе это reference data с именем без суффикса.
Тест на concept. У сущности есть идентичность и запись, поэтому на неё можно указать: «этот X» (этот клан, эта
дверь, этот матч); у concept нет ни того, ни другого (нет «этого aggro» или «этого pathfinding»). Процедура к concept не
применяется. Абстрактные уровни иерархии объектов, охватывающие несколько видов (world-object, creature,
playable), — тоже concept. Процедура именует сущности игрового домена; runtime-структуры движка (партиции, passes,
потоки, таймеры) — тоже concept.
Соглашения
Заголовок раздела «Соглашения»- Канон. Каноническим термином служит имя, которое уже используют серверы L2NX, если оно есть; иначе словарь Mobius
High Five; иначе игровой термин, если он яснее. Канон пишется в kebab-case (
item-template); идентификаторы семейства, клиента или пакета приводятся дословно. - Варианты продажи, расписания и списки называются тем, чем они являются, и никогда не
-template:premium-plan(вариант подписки: срок, бонусы, цена),item-mall-product(товар магазина),item-auction-schedule(запись расписания),multisell-list(таблица обмена). - Имена сборок канон не определяют. Семейства называют
*Templateмногих держателей reference data (CubicTemplate,TransformTemplate,PremiumTemplate); такие имена фиксируются только в колонке семейств. - Никаких key-value-мешков. Key-value-хранилища семейств (Mobius
PlayerVariables,AccountVariables,GlobalVariables) каноном не являются: каждое значение становится типизированным состоянием своего владельца (полеcharacter,game-accountили owned state уровня сервера). Их имена остаются только в колонке семейств. - Инстанс-зона. Инстанс-зона — это
reflection. Слово instance означает только «объект, созданный из template» и никогда не используется для зоны. - Семейства. «Mobius» — L2J Mobius (линии Interlude, High Five и Essence; High Five — линия, рефакторимая в этом
репозитории). «Линия L2J» объединяет имена классов с префиксом L2, общие для L2J Server, L2jEternityWorld (
l2e), L2jFrozen и L2Emu. aCis, Sunrise, L2JPremium, L2_Advanced, lunaris и другие публичные семейства названы там, где отличаются. Прочерк означает, что у семейства нет такого термина или он неизвестен.
Как пользоваться глоссарием
Заголовок раздела «Как пользоваться глоссарием»- Один канон для игрового сервера и платформы. Код, данные, API и документация этого репозитория и сервисов платформы L2NX используют канонические термины этого файла; этот файл — источник истины.
- Сначала найдите, потом называйте. Перед тем как назвать сущность, таблицу, колонку, класс, DTO, REST-ресурс, событие или ключ конфига, несущие концепт Lineage 2, найдите термин здесь; если его нет, примените процедуру именования.
- Новые термины добавляются в том же изменении, которое их вводит, с видом и определением в одну строку.
- Новых расхождений нет. Неканоническое имя в существующем коде остаётся, пока этот код не тронут; изменение, владеющее контрактом, переименовывает его в сторону канона. Новое неканоническое имя не вводится никогда.
Формат строки
Заголовок раздела «Формат строки»| Колонка | Значение |
|---|---|
| Термин | Канонический термин с отметкой вида |
| Определение | Одно предложение |
| Имена в семействах сборок | Имена классов или данных по семействам |
| Клиент / протокол | Имя пакета, .dat или протокола |
| Игровой термин | Имя, которым пользуются игроки |
| Коллизии | Другие значения или конфликтующие имена |
В глоссарии 293 термина в 10 областях; коллизии широко используемых слов собраны в конце.
1. Объекты мира и иерархия
Заголовок раздела «1. Объекты мира и иерархия»2. Предметы и инвентарь
Заголовок раздела «2. Предметы и инвентарь»3. Скиллы и эффекты
Заголовок раздела «3. Скиллы и эффекты»4. Бой и статы
Заголовок раздела «4. Бой и статы»5. NPC и AI
Заголовок раздела «5. NPC и AI»6. Социальное
Заголовок раздела «6. Социальное»7. Противостояние
Заголовок раздела «7. Противостояние»8. Мир и зоны
Заголовок раздела «8. Мир и зоны»9. Контент
Заголовок раздела «9. Контент»10. Протокол и клиент
Заголовок раздела «10. Протокол и клиент»Коллизии
Заголовок раздела «Коллизии»Слова, несущие несколько значений в коде, данных или клиенте, и значение, которое выбирает этот глоссарий.
| Слово | Найденные значения | Выбранное значение |
|---|---|---|
| instance | (1) объект, созданный из template (item, npc, reflection); (2) инстанс-зона (Mobius Instance); (3) суффикс *Instance в именах классов L2J; (4) запись расписания в аукционах предметов Mobius; (5) «inventory instance id» предмета. |
instance означает только объект, созданный из template (см. item, npc, reflection). Инстанс-зона — это reflection, а её определение — reflection-template. |
| zone | (1) область мира с типом и формой (zone); (2) инстанс-зона; (3) флаг ZoneId, который несёт creature; (4) область, к которой применяется бан. |
zone — геометрическая область мира с типом. Инстанс-зона — reflection; флаг creature — zone flag; область бана — ban scope. |
| session | (1) игровая сессия персонажа; (2) сессия входа в identity provider; (3) сессия приложения (app); (4) session-key входа; (5) client-session соединения (Session). |
Всегда с уточнением: game session, login session, app session, client session. session-key — только пара ключей «вход — игровой сервер». |
| warehouse | (1) хранилище предметов персонажа или клана; (2) freight (общий на аккаунт ящик доставки); (3) stock внешнего портала. | warehouse — игровое хранилище персонажа или клана; freight — это freight; внешние stock’и называются по своей системе. |
| player | (1) человек, который играет; (2) класс персонажа в движке (Player, L2PcInstance); (3) тип пользователя; (4) отправитель игровой почты. |
player — человек; игровая сущность — character. |
| effect | (1) обработчик действия скилла; (2) применённый длящийся эффект на creature (L2J L2Effect); (3) визуальный эффект; (4) имя, которым некоторые системы называют применённый abnormal. |
effect — обработчик или определение внутри скилла; применённый эффект на creature — abnormal; чисто визуальный — abnormal-visual-effect. |
| territory | (1) Territory War (dominion); (2) полигон, где спаунится NPC; (3) клановая территория резиденции. |
territory в одиночку избегается: война — territory-war; полигон спауна — spawn territory. |
| template | (1) определение, из которого одновременно создаётся несколько объектов мира; (2) держатель reference data, который некоторые семейства называют *Template (Mobius PlayerTemplate, Transform; aCis Item как template). |
-template только по шагу 1 процедуры именования (item, npc, reflection); всё остальное — unique entity, owned state или reference data с именем без суффикса. |
| item id | (1) template id (itemId в пакетах); (2) id instance (objectId); (3) поле API item_id, которое может быть любым из них. |
Template id — item_template_id; id instance — item_id / object id. |
| class | (1) профессия персонажа; (2) класс в программировании; (3) grade предмета иногда называют class; (4) ItemClass (weapon, armor и т. д.). |
class — профессия персонажа (reference data); виды предметов — kind, ранги предметов — grade. |
| region | (1) world-region (ячейка сетки); (2) map-region (область возрождения); (3) регион зоны; (4) локация со своими механиками (Hellbound, seeds). |
Слово уточняется: world-region или map-region. |
| flag | (1) PvP-флаг; (2) siege flag (штаб); (3) zone flag creature; (4) флаг эффекта. | pvp-flag и siege-flag всегда несут уточнение. |
| attribute | (1) стихия (огонь..тьма); (2) обобщённое свойство; (3) Mobius Interlude item_attributes, хранящий аугментацию. |
attribute — стихия предмета, скилла или creature. |
| enchant | (1) уровень заточки предмета; (2) route заточки скилла; (3) действие compound в Essence (пакеты NewEnchant). |
enchant-level для предметов, enchant-route для скиллов, compound для объединения предметов. |
| summon | (1) базовый класс servitor и pet; (2) пакет servitor Essence; (3) сам акт призыва. | summon — базовый термин для servitor и pet; созданный скиллом — servitor. |
| event | (1) игровое событие (world event, fight event); (2) integration event на шине сообщений; (3) строка event в базе данных. | В этом глоссарии event — игровое событие; integration event’ы здесь не рассматриваются. |
(1) почта почтового ящика; (2) сообщение Community Board (Interlude и aCis MailBBSManager). |
mail — почта почтового ящика; сообщения доски — это посты forum. |
|
| store | (1) private store; (2) warehouse; (3) manufacture (лавка крафта); (4) магазин NPC. | private-store для магазина игрока, warehouse для хранилища, buy-list для магазина NPC. |
| hero | (1) статус олимпиады; (2) канал чата hero; (3) ранг legend в Essence. |
hero — статус олимпиады, выдаваемый на один цикл. |
| phantom | (1) управляемый сервером имитирующий персонаж; (2) классы L2J Phantom Ranger и Phantom Summoner. | fake-player для имитации; классы Phantom сохраняют свои имена классов. |
| script | (1) любой игровой скрипт (AI, обработчик, квест); (2) скрипт квеста. | script — общий термин; квест — это quest. |
| ban | (1) игровое наказание; (2) бан аккаунта на веб-сервисе. | punishment для игровых; баны веб-сервисов вне области этого глоссария. |
| recipe | (1) предмет-рецепт, обучающий рецепту; (2) запись рецепта. | recipe — запись; обучающий предмет — предмет-рецепт. |
| trade | (1) обмен между игроками; (2) торговый канал чата; (3) торговля торговца. | trade-list для обмена и списков магазинов, chat-type для каналов. |
Синонимы сведены
Заголовок раздела «Синонимы сведены»Имена, которые семейства или клиент используют для концепта, имеющего другой канонический термин.
| Используемое имя | Канонический термин | Причина |
|---|---|---|
| pledge | clan |
Решение по именованию 1: устоявшийся игровой термин clan |
| agit | clan-hall |
Решение по именованию 1 |
| dominion | territory-war |
Решение по именованию 1 |
| prime shop, BR product | item-mall-product |
Решение по именованию 1 |
| refine, variation | augmentation |
Решение по именованию 1 |
| accessory (шея, уши, пальцы) | jewelry |
Решение по именованию 1; «accessory» называет и аксессуары на голову |
| abilities, special abilities | ensoul |
Решение по именованию 1 |
| instance (zone) | reflection |
Решение проекта |
| grand boss | epic-boss |
Канон проекта |
| ally | alliance |
Канон проекта |
| fort | fortress |
Канонический id |
| subpledge | clan-subunit |
Константы Mobius Clan.SUBUNIT_* |
| announce (клан Essence) | clan-notice |
Канонический id |
| nobless | noblesse |
Каноническое написание |
| sayha, vitality | vitality |
Одна механика |
| PC Bang, PC Cafe | pc-cafe-points |
Одна механика |
| olympiad game | olympiad-match |
Канонический id: серверы и игроки L2NX говорят match |
| aggro info, hate list | aggro |
Игровой термин для механики |
