top of page

Невидимий вартовий — і блокування, які нарешті пояснюють, що сталося 👁️

Фото автора: Marcel Dütscher
Marcel Dütscher
26 лип.
Читати 4 хв

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


Режим спостерігача. Коли надходить звіт («хтось будує дурниці», «хтось пише образливі речі»), ми тепер можемо зайти в цей світ, нікому не заважаючи. До того ж по-справжньому невидимо — не у варіанті «будь ласка, не малюй мене», який модифікована гра могла б просто проігнорувати. Сервер узагалі нікому не повідомляє про спостерігача: жодного аватара, жодного припаркованого корабля, жодної зайнятої посадкової площадки, жодної анімації спуску, жодних улюбленців, жодного спідера, жодного зайнятого слота гравця й жодної зміни кількості гравців. Для всіх у цьому світі там буквально нікого немає. У польоті можна проходити крізь стіни (інакше ніколи не потрапиш усередину наглухо забудованої бази), створіння ігнорують спостерігача, а стріляти все одно неможливо.


Спостерігати означає спостерігати. Спостерігач не може нічого торкатися у світі — з рівно одним винятком: він може добувати блоки. Це єдиний важіль, що справді прибирає образливу споруду зі світу, і кожне окреме видалення записується в журнал. У чаті спостерігач мовчить; щоб навмисно себе показати, потрібна окрема команда. А постійний значок SPECTATOR увесь час висить на екрані — щоб ніхто випадково не подумав, що зараз просто грає як звичайно.


Чому це зроблено так суворо. Два рішення, невидимі ззовні, але важливі для нас. По-перше: роль спостерігача не зберігається у збереженні гри, вона перераховується з конфігурації сервера під час кожного входу. Збереження можна скачати й знову завантажити деінде — збережена роль наглядача поїхала б разом із ними, на машини, які нам не належать. По-друге: це не опція світу. Той, хто володіє світом, не повинен мати змоги вимкнути нагляд за цим світом. Через це він також не залежить від налаштування «адмін-чити», яке світи й так за замовчуванням тримають вимкненим.


Знайти, де щось сталося. Для цього є нові команди: /players показує, хто онлайн — і всіх, хто коли-небудь грав у цьому світі; /builds показує, де хтось будував; /where веде вас до гравця; /goto стрибає й між планетами (стара телепортація лише задавала координати й скидала вас на не ту планету 🙈). До того ж оглядова сторінка в нашій адмінпанелі читає прямо зі збереження світу: гравці, споруди та «гарячі точки будівництва» — так знаходять будинок, який хтось поставив посеред нікуди без Ядра бази. І кожна змінена клітинка тепер запам'ятовує, хто торкався її востаннє і коли. Перш ніж це вбудувати, ми виміряли, скільки місця це займає: жодного зайвого рядка в базі даних, бо дані й так зберігаються по клітинках.


І в приватних світах — за подвійним замком. У перших версіях була абсурдна діра: невидимий спостерігач міг потрапити лише в публічні світи без пароля — саме ті, де відбувається найменше. Діти майже завжди грають у приватних світах, пароль до яких передають одне одному в колі друзів. Тож нагляд тепер сягає й туди. Щоб це не стало чорним ходом, доступ замкнено подвійно: потрібен акаунт оператора, який можна створити лише за умови пред'явлення секретного коду, — і виділене для цього Імʼя гравця, яке зарезервоване в усій системі й під яким ніхто інший не може зареєструватися чи грати. Бракує хоча б одного з двох — і нічого не відбувається.


А тоді блокування. Раніше це було зроблено по-справжньому погано: заблокований акаунт міг цілком нормально входити, а стіна з'являлася лише під час приєднання до світу — без причини, без дати й без можливості запитати. Для гравця це виглядало так, ніби гра просто зламалася. Тепер стан справ видно вже під час входу, а ще є вхідні повідомлення: «ваш світ видалено (причина)», «ваше блокування знято». Таке повідомлення записується в момент, коли щось відбувається, — пізніше цієї інформації вже не існує, адже видалений світ, ну, зник.


Тайм-аут замість вигнання. Блокування тепер насамперед тимчасові — за замовчуванням три дні. Тайм-аут, що минув, на кожному контрольному пункті знову означає «не заблоковано», тож «три дні перерви» ніколи не зможуть непомітно перетворитися на постійне блокування. Запис усе одно залишається для історії. Причини подаються як фіксовані категорії (чат, грифінг, шахрайство, ім'я, інше), які показуються в перекладі німецькою та англійською — а якщо людина щось додає, це з'являється дослівно, точнісінько як введено. Найважливіше в усьому цьому: повідомлення може назвати день, коли вам знову будуть раді.


Власники світів тепер можуть модерувати власний світ. Якщо ви володієте світом, ви отримуєте той самий важіль для свого світу: власний список блокувань, який діє так само надійно, як наш. Він запам'ятовує акаунт (тож перейменування не допоможе) і ігрове ім'я (в аркадних гостей акаунта взагалі немає). Ви обираєте зі списку людей, які справді відвідували світ, — саме через ручне введення імен легко помилково заблокувати не ту дитину. А оскільки блокування впливає лише на наступний вхід, є й вигнання: гравець одразу опиняється в меню, з причиною, своєю мовою. Повідомлення надсилається до закриття з'єднання — тож модифікована гра не може просто його проігнорувати й грати далі.


Що ми свідомо не будували. Очевидним кроком проти обходу блокувань було б розпізнавання пристрою («новий акаунт, той самий ПК»). Ми відхилили його з трьох причин: ідентифікатор змінюється, щойно вставляють USB-флешку чи Windows встановлює велике оновлення; модифікована гра може підробити його за п'ять хвилин; а однаково налаштовані шкільні комп'ютери виглядали б усі однаково. До того ж є юридичний бік: читання ідентифікатора пристрою за німецьким законодавством потребує згоди, яку особи віком до 16 років не можуть дати юридично дійсно. Нагляд не повинен перетворюватися на стеження. І ще одне правило, записане в коді: сам акаунт оператора не можна ні заблокувати, ні вигнати — інакше нагляд можна було б вимкнути зсередини.


Усе це вже є в коді й запрацює з наступним оновленням сервера. Щиро сподіваємося, що все це знадобиться якомога рідше. 🌟

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

Дивитися всі
Спершу один вид, потім п'ять: як росте ця гра 🪨

Хто гляне на наш список версій, знайде 29 випусків за добрих п'ять тижнів: від 0.1.0 20 червня до 0.9.0 учора. Як це працює? Точно не так, що ми сідаємо й одним розмахом будуємо готову функцію. Ми буд

 
 

Коментарі


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