До всіх новин
Щоденник розробників

Гра переїхала на сервер: оновлення, приватність і моніторинг

Ізоманія отримала постійну адресу. Як відбувається оновлення, чому в базі не зберігаються IP-адреси гравців і як події гри надходять у Телеграм.
Стрічка подій гри в Телеграмі: вхід, стрибок, карт і вихід гравця

Ізоманія переїхала з локального сервера на продакшн — isomania.online. Це момент довгоочікуваного релізу і фактично день народження проєкту.

Як відбувається оновлення

Нова версія коду потрапляє на сервер, процес перезапускається, зʼєднання розриваються, після чого клієнти самостійно підключаються до нової збірки. Для гравця це пауза в секунду, а не вихід із гри.

Відповідь /health із номером збірки сервера

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

IP-адреси не зберігаються

У базі гри немає поля з IP-адресою гравця, і це зроблено свідомо. Там, де без адреси не обійтися, тобто при захисті входу від зловживань, зберігається лише її криптографічний відбиток (HMAC). За ним можна порівняти, та сама це адреса чи інша, але відновити з нього саму адресу неможливо.

Цю політику випадково перевірив баг: службовий код, перенесений з іншого проєкту, спробував звернутися до поля з IP-адресою і не знайшов його, бо такого поля не існує. Помилку виправлено, поле не додано.

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

Моніторинг через Телеграм

Замість окремої панелі моніторингу події гри надходять у Телеграм: хто зайшов і яким саме способом, хто вийшов, коли перезапустився процес, коли хтось досяг обмеження.

Вкладка адміністратора з переліком подій Телеграма і галочками

Окремо оброблено перезавантаження сторінки, яке не є ні входом, ні виходом. Кожне натискання F5 розриває зʼєднання і відкриває нове, тому проста реалізація заповнювала б канал парами повідомлень «вийшов» і «зайшов», яких насправді не було. Тепер вихід повідомляється лише тоді, коли гравець не повернувся протягом хвилини, а тривалість сесії рахується разом із цією перервою.

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

Чому про це варто знати гравцеві

Гравець заходить у гру зі своєю поштою і своїм голосом, тому має право знати, як з цими даними поводяться. Якщо коротко, сервер зберігає рівно стільки, скільки потрібно для роботи гри, і не більше.

Читайте також

Оновлення

Машини у відкритому світі, системні зони і оптимізація рушія

Відкритий світ отримав машини, а область появи гравця перестала бути захардкоженою точкою і стала пензлем-зоною в редакторі мапи. Разом із цим світ навчився бути великим: увесь…
Читати оновлення