top of page

Кожен блок твердий — крім випадків, коли ні

Фото автора: Marcel Dütscher
Marcel Dütscher
22 черв.
Читати 1 хв

У нашого клієнтського мешера є залізне правило: кожен блок, що не є повітрям, відображається і має колізію. Крапка. Це спрощення робить побудову мешів швидкою, а код — простим, поки не з'являється функція, яка хоче порушити саме це правило.


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


Рішення складається з двох половин. На клієнті мешер отримав свій перший свідомий виняток: блок воріт відображається, але виключений із меша колізій — гравці просто проходять крізь нього. На сервері працює справжня логіка: системи руху істот на кожному кроці перевіряють, чи немає на шляху енергетичного бар'єра. Дикі тварини та вороги розвертаються, помічники й гравці проходять. Цю перевірку довелося додати в усі три системи руху — дикі тварини, помічники, планетні вороги, — інакше один вид істот про ворота «не знав» би.


Чесна примітка: літаючі істоти ковзають просто над парканом. Це не помилка, а задокументоване обмеження — паркан просто не зупиняє нічого, що літає. Ми краще запишемо такі свідомі прогалини, ніж приховуватимемо їх.


Що залишається: архітектурні правила на кшталт «усе, що не повітря, — тверде» цінні саме тому, що вони прості. Але треба знати, де живе єдиний виняток — і чому він живе саме там.

Останні пости

Дивитися всі
Чому нова версія називається 2026.7.19, а не 0.9.2 🗓️

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

 
 

Коментарі


Коментування цього посту більше не доступне. Зверніться до власника сайту, щоб дізнатися більше.
bottom of page