Skip to content

Словник термінів

🇬🇧 English | 🇺🇦 Українська

Сторінка для тих, хто вперше працює з взаємодією, мережею Unreal чи VR. Кожен термін пояснено двічі: коротко, як він працює в InteractionSystem, і простими словами — через побутову аналогію. Терміни впорядковано за абеткою англійських назв, бо саме так вони трапляються в редакторі та коді.

Authority (авторитет, сервер)

Машина, чия версія світу вважається правильною. У мережевій грі це сервер; в одиночній грі — ваш комп'ютер. Усі рішення InteractionSystem про те, хто що тримає, ухвалює авторитет.

Простими словами. Суддя на матчі. Гравці можуть бачити ситуацію по-різному, але рахунок записує лише суддя.

Claim (заявка на предмет)

Запис у серверному реєстрі UInteractionClaimSubsystem: «цей предмет тримає ця рука цього гравця». Поки заявка є, інший гравець предмет не візьме.

Простими словами. Номерок у гардеробі. Поки номерок у вас, вашу куртку нікому не віддадуть.

Constraint (обмеження руху)

Режим Constraint=Rotary або Linear у профілі маніпуляції: предмет не літає за рукою вільно, а обертається навколо осі чи ковзає вздовж неї. Так зроблено маховик бункера, ручки, шухляди.

Простими словами. Рейки для вагончика: штовхати можна, але їхати він буде тільки рейками.

Dedicated server і listen server

Dedicated server — окремий процес без гравця, лише сервер. Listen server — один із гравців одночасно є сервером («хост»). Для хоста listen-сервера дії виконуються без мережевих викликів.

Focus (фокус)

Ціль, на яку зараз «дивиться» джерело взаємодії: її підсвічено, над нею підказка. Фокус обчислюється лише на машині гравця й не дає права на дію: сервер перевіряє все ще раз.

Простими словами. Ви показали пальцем на товар у вітрині. Це ще не покупка: касир перевірить, чи товар є в наявності.

Grab target (ціль захоплення)

Компонент, що дозволяє взяти актор рукою: UInteractionGrabTargetComponent і його нащадки. Готовий варіант — UInteractionManipulationComponent; варіант із правилами в Blueprint — UInteractionBlueprintGrabTargetComponent.

Grip point (точка хвату)

UInteractionGripPointComponent — місце на предметі, за яке його правильно тримати: руків'я гвинтівки, обід колеса. Без точок предмет береться там, де торкнулася рука.

Home transform (домашня поза)

Місце, куди ResetManipulation повертає предмет. Запам'ятовується на початку гри; змінюється через SetHomeTransform.

Простими словами. Місце книги на полиці: після прочитання її ставлять саме туди.

Interactor (джерело взаємодії)

UInteractorComponent на pawn: камера desktop-гравця або одна VR-рука. Джерело шукає фокус, надсилає запити на сервер і тримає предмет.

Простими словами. Рука з лазерною указкою: указка показує, що ви хочете взяти, а рука бере.

Manipulation (маніпуляція)

UInteractionManipulationComponent — компонент, який рухає взятий предмет: за однією рукою, двома руками, з масштабуванням, фізично чи вздовж обмеження. Він єдиний, хто змінює позу предмета.

Pose і pose packet (поза й пакет поз)

Поза — положення й поворот джерела. Пакет поз — кілька поз усіх рук гравця, які клієнт регулярно надсилає серверу. Кожна рука має власний номер зразка, і сервер перевіряє кожну руку окремо.

Простими словами. Фото ваших рук, яке ви щохвилини надсилаєте судді. Розмите фото однієї руки не скасовує фото другої.

Prediction (передбачення)

Клієнт показує результат одразу, не чекаючи сервера. InteractionSystem передбачає рух предмета в руці власника: і для Direct, і для Physics. Захоплення не передбачається: предмет з'являється в руці після відповіді сервера.

Push model

Режим реплікації Unreal, у якому сервер порівнює змінну лише тоді, коли код позначив її зміненою. Знімок маніпуляції підтримує push model; як його ввімкнути у своїй збірці — на сторінці Продуктивність.

Reject reason (причина відмови)

EInteractionRejectReason: чому сервер відхилив запит — Cooldown, InvalidTarget, InvalidPose, NotReachable, HandBusy, Claimed або Unavailable. Приходить у подію OnActionResult і показується в панелі налагодження.

Replication (реплікація)

Автоматичне копіювання змінних і акторів із сервера на клієнти. Що не реплікується — того клієнти не дізнаються.

Простими словами. Розсилка новин від сервера. Якщо новина не потрапила в розсилку, гравці про неї не знають.

RepNotify

Реплікована змінна з функцією OnRep_..., яку клієнт викликає, щойно отримав нове значення. Зручний спосіб показати зміну всім: двері, розколоте поліно, увімкнену лампу.

RPC (віддалений виклик)

Функція, яку клієнт викликає на сервері (Server) або сервер — на клієнті (Client, NetMulticast). Усі запити InteractionSystem — це RPC компонента UInteractorComponent вашого pawn.

Snapshot (знімок стану)

Структура State компонента маніпуляції: поза предмета, руки, прикріплення, фізика, хід ручки. Сервер оновлює знімок, клієнти плавно наближають предмет до нього.

Trace і sweep (промінь і сфера)

Trace — пошук першого об'єкта вздовж тонкої лінії. Sweep — те саме, але «товстою» сферою. Ними джерело знаходить фокус, а сервер перевіряє запит.

Tracking (трекінг)

Чи знає система, де зараз рука. Для VR-контролера трекінг губиться, коли камера шолома його не бачить. Повідомляйте про це через SetTrackingValid.

Що далі