GameDev: разработка игр
Kanalga Telegram’da o‘tish
Всё про геймдев для девелоперов, художников, левел- и геймдизайнеров, сценаристов Разместить рекламу: @tproger_sales_bot Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/media
Ko'proq ko'rsatish7 633
Obunachilar
-224 soatlar
-17 kunlar
-2230 kunlar
Ma'lumot yuklanmoqda...
O'xshash kanallar
Taglar buluti
Kirish va chiqish esdaliklari
---
---
---
---
---
---
Obunachilarni jalb qilish
Avgust '26
Avgust '26
+70
1 kanalda
Iyul '26
+80
6 kanalda
Get PRO
Iyun '26
+83
1 kanalda
Get PRO
May '26
+85
1 kanalda
Get PRO
Aprel '26
+61
0 kanalda
Get PRO
Mart '26
+118
6 kanalda
Get PRO
Fevral '26
+92
1 kanalda
Get PRO
Yanvar '26
+90
6 kanalda
Get PRO
Dekabr '25
+86
7 kanalda
Get PRO
Noyabr '25
+133
4 kanalda
Get PRO
Oktabr '25
+97
0 kanalda
Get PRO
Sentabr '25
+91
2 kanalda
Get PRO
Avgust '25
+115
1 kanalda
Get PRO
Iyul '25
+82
0 kanalda
Get PRO
Iyun '25
+78
2 kanalda
Get PRO
May '25
+90
1 kanalda
Get PRO
Aprel '25
+146
2 kanalda
Get PRO
Mart '25
+139
2 kanalda
Get PRO
Fevral '25
+90
1 kanalda
Get PRO
Yanvar '25
+72
0 kanalda
Get PRO
Dekabr '24
+67
1 kanalda
Get PRO
Noyabr '24
+71
2 kanalda
Get PRO
Oktabr '24
+74
1 kanalda
Get PRO
Sentabr '24
+67
1 kanalda
Get PRO
Avgust '24
+72
2 kanalda
Get PRO
Iyul '24
+71
1 kanalda
Get PRO
Iyun '24
+63
2 kanalda
Get PRO
May '24
+60
1 kanalda
Get PRO
Aprel '24
+60
0 kanalda
Get PRO
Mart '24
+68
0 kanalda
Get PRO
Fevral '24
+49
0 kanalda
Get PRO
Yanvar '24
+69
0 kanalda
Get PRO
Dekabr '23
+80
2 kanalda
Get PRO
Noyabr '23
+54
0 kanalda
Get PRO
Oktabr '23
+72
2 kanalda
Get PRO
Sentabr '23
+64
0 kanalda
Get PRO
Avgust '23
+80
0 kanalda
Get PRO
Iyul '23
+63
0 kanalda
Get PRO
Iyun '23
+64
0 kanalda
Get PRO
May '23
+62
0 kanalda
Get PRO
Aprel '23
+74
0 kanalda
Get PRO
Mart '23
+97
0 kanalda
Get PRO
Fevral '23
+103
0 kanalda
Get PRO
Yanvar '23
+170
0 kanalda
Get PRO
Dekabr '22
+192
0 kanalda
Get PRO
Noyabr '22
+212
0 kanalda
Get PRO
Oktabr '22
+158
0 kanalda
Get PRO
Sentabr '22
+181
0 kanalda
Get PRO
Avgust '22
+235
0 kanalda
Get PRO
Iyul '22
+297
0 kanalda
Get PRO
Iyun '22
+206
0 kanalda
Get PRO
May '22
+272
0 kanalda
Get PRO
Aprel '22
+200
0 kanalda
Get PRO
Mart '22
+194
0 kanalda
Get PRO
Fevral '22
+299
0 kanalda
Get PRO
Yanvar '22
+138
0 kanalda
Get PRO
Dekabr '21
+86
0 kanalda
Get PRO
Noyabr '21
+92
0 kanalda
Get PRO
Oktabr '21
+129
0 kanalda
Get PRO
Sentabr '21
+136
0 kanalda
Get PRO
Avgust '21
+476
0 kanalda
Get PRO
Iyul '21
+674
0 kanalda
Get PRO
Iyun '21
+491
0 kanalda
Get PRO
May '21
+4 020
0 kanalda
Get PRO
Aprel '21
+4 007
0 kanalda
| Sana | Obunachilarni jalb qilish | Esdaliklar | Kanallar | |
| 31 Avgust | +1 | |||
| 30 Avgust | +5 | |||
| 29 Avgust | +7 | |||
| 28 Avgust | +3 | |||
| 27 Avgust | +2 | |||
| 26 Avgust | +4 | |||
| 25 Avgust | +1 | |||
| 24 Avgust | 0 | |||
| 23 Avgust | +2 | |||
| 22 Avgust | +1 | |||
| 21 Avgust | +3 | |||
| 20 Avgust | +2 | |||
| 19 Avgust | +2 | |||
| 18 Avgust | +1 | |||
| 17 Avgust | +2 | |||
| 16 Avgust | +1 | |||
| 15 Avgust | +1 | |||
| 14 Avgust | +1 | |||
| 13 Avgust | +3 | |||
| 12 Avgust | +3 | |||
| 11 Avgust | +3 | |||
| 10 Avgust | +2 | |||
| 09 Avgust | +3 | |||
| 08 Avgust | +1 | |||
| 07 Avgust | +3 | |||
| 06 Avgust | +1 | |||
| 05 Avgust | +2 | |||
| 04 Avgust | +2 | |||
| 03 Avgust | +3 | |||
| 02 Avgust | +4 | |||
| 01 Avgust | +1 |
Kanal postlari
Игру для Nintendo 64 декомпилировали за 84 дня вместо 596
Крис Льюис восстановил исходники Snowboard Kids из ROM: все 2145 функций переписаны на C так, что компилируются в байт-в-байт тот же машинный код. Сиквел он разбирал 596 дней, первую часть закончил за 84.
Ускорение дали ИИ-агенты, которые матчили функции параллельно в четырёх git worktree. Заслуга при этом не только их: игра собрана проприетарным SGI IDO 5.3, который перекраивает распределение регистров от малейшей правки в C, и около 4,8% совпадений вытянули эксперты сообщества. Для сравнения, Pilotwings 64 декомпилировали за 74 дня вообще без агентов.
В нашем канале «Tproger» разобрали подробнее.
@make_game
| 2 | Три года, три игры на одной механике, $162 757 чистыми
Соло-разработчик под ником ByerN подвёл итог трёх лет: три коммерческие игры на нодах, все изданы самостоятельно, всё после основной работы по 2–5 часов в будний день.
Node Farm: 12 месяцев разработки, цена $12, вышла 19 ноября 2024, $102 222 чистой выручки в Steam и 16 504 копии при 31 853 желаемого на старте. Node Math: 8 месяцев, цена $7, вышла 27 октября 2025, $60 535 и 12 661 копия при 12 380 желаемого на старте — и 18 208 сейчас, они продолжают расти. Третья, Node Crown, доделана и ждёт выхода после Steam Next Fest, желаемого пока 676.
Что он вынес. Прототип надо показывать рано: если пост про игру бьётся в стену, дело либо в идее, либо в исполнении, либо в подаче, либо в том, что вы пришли не к той аудитории. У Node Math вишлисты были настолько плохи, что он хотел бросить игру и уйти в следующую. Её случайно подобрал один блогер, за ним пришли остальные, и волна пошла. Вывод автора: иногда игра нормальная, просто она не доехала до тех, кому понравилась бы.
Главный совет — делать игру, которую легко объяснить короткой гифкой. Тогда легко даётся трейлер, читаются посты на Reddit, работает реклама и берут на фестивали. Из фестивалей ему лучше всего зашёл Tiny Teams, даже лучше Next Fest. Дискорд-сервер он называет обязательным пунктом, без вариантов.
Похожие игры, которые продаются комплектом, дают переиспользование кода и обратный перенос фич. Но Node Crown он увёл далеко в сторону, и маркетинг сразу стал труднее — так что если цель деньги, экспериментировать не стоит. Правда, следующей строкой он пишет, что заниматься геймдевом ради денег не стоит вообще :)
@make_game | 608 |
| 3 | Движок Luanti выкинули из Google Play по жалобе ИИ-платформы без единого доказательства
Luanti — открытый движок для воксельных игр, до 2024 года известный как Minetest. Игр и ассетов в нём по умолчанию нет: пользователь ставит приложение и докачивает игры из каталога ContentDB. 27 августа команда сообщила, что Android-приложение из Google Play пропало.
Жалобу по DMCA подала от имени Microsoft компания Tracer․AI, платформа защиты бренда, которая ищет нарушения ИИ-агентами. Всё обоснование — один регистрационный номер, соответствующий Minecraft Java Edition 1.9. Какие именно ассеты нарушают права и где они находятся, в уведомлении не сказано.
Это уже второй раз: похожее уведомление от той же компании приходило в марте 2023 года. Встречное подали 25 марта, приложение вернули 10 мая — через 46 дней вместо 10–14 рабочих, которые отводит закон.
Вывод для тех, кто публикует игру в сторах: держите запасной канал распространения и снимок того, из чего собран билд. Luanti пока живёт на F-Droid и на сайте проекта.
В нашем канале «Мобильная разработка» разобрали подробнее, с картинкой всех текстур, которые вообще входят в приложение.
@make_game | 862 |
| 4 | Четыре приёма, которые чинят экран инвентаря
UI-художник, работавший в Midway, EA, id Software и Glu Mobile, выложил на r/gamedev кусок своего менторского курса. Инвентарь он считает одним из самых сложных экранов в игре: он завязан сразу на награду, стратегию и лор.
Первое — бейджи на новых предметах. Игрок выбил гору лута из босса, открыл инвентарь, и лут растворился среди старого. Красный кружок с числом, как на иконках телефона, снимается после посещения экрана или после того, как подсветка прошла по предмету. Elden Ring добавил такие бейджи патчем 1.12, почти через два года после выхода.
Второе — деление экрана на треть и две трети. Информация редко равнозначна: если у вас сетка-«чемоданчик» в духе Resident Evil, главная тут сетка, а карточка выбранного предмета вторична. Пропорция 1:2 задаёт эту иерархию сама и отвечает на вопрос «с чего вообще начинать пустой макет».
Третье — осторожнее с редкостью. Учебниковые серый, зелёный, синий, фиолетовый и оранжевый со временем превращают экран в россыпь драже. Автор советует обводку предмета или ячейки вместо заливки и отговаривает от иконок редкости: в 32×32 пикселя они теряются. Сами цвета менять уже нельзя — это общая мнемоника, вроде красного и зелёного на светофоре.
Четвёртое — навигация на геймпаде. Стик или крестовина, как скроллить список, поймёт ли игрок, что сетка продолжается за краем, что происходит при движении по диагонали в нерегулярной сетке. Если внятного ответа нет, экран пора перерисовывать.
@make_game | 828 |
| 5 | Ранние ИИ-ассеты уехали в публичный пролог, и студии пришлось извиняться
Патрис Дезиле, сооснователь Assassin's Creed, ушедший из Ubisoft, показал на летнем фестивале новую игру 1666: Amsterdam. Получасовой пролог выложили бесплатно в Steam и Epic Games Store, и игроки за пару дней нашли в нём портреты и часть ключевого арта, похожие на сгенерированные.
Студия Panache Digital Games признала: в пролог попали ранние версии ассетов, сделанные с помощью генеративных моделей, включая внутриигровые портреты и внешние маркетинговые материалы. Их заменят нарисованными вручную в ближайшем обновлении; в раннем доступе и в полной версии сгенерированных ассетов не будет. Художников в студии больше десятка.
Рейтинг пролога в Steam — «смешанные». В отзывах пишут прямо: «убираю из желаемого и игнорирую компанию».
Практический вывод для всех, кто сейчас делает игру. Черновой ассет, сгенерированный на скорость ради прототипа, живёт в проекте дольше, чем кажется, и уезжает в билд вместе со всем остальным — вместе с промоматериалами, которые собирают из тех же папок. Заведите для таких файлов отдельный флаг в трекере ассетов и проверку перед сборкой демо: дешевле, чем публичное извинение и «смешанные» отзывы на странице, которую вы копили год.
Разбор на IGN.
@make_game | 895 |
| 6 | Trail3D и группы узлов в шейдерном графе: что нового в Godot 4.8 dev 4
Godot выложила четвёртый dev-снапшот 4.8 — 224 правки от 86 контрибьюторов.
Главное для 3D — узел Trail3D: следы за мечом, ракетой или машиной больше не нужно собирать из меша руками, считая UV и геометрию.
В VisualShader появились группы узлов: повторяющийся кусок графа сворачивается в один блок и дальше используется как обычный узел. На скриншоте три одинаковых «пропеллера» и свёрнутая группа рядом.
В рендере — дешёвая аппроксимация multi-bounce ambient occlusion, сцены перестают выглядеть перезатемнёнными. Для Android завезли AndroidSDKManager, он сам скачивает и настраивает Android SDK и Java.
Это pre-release: перед тем как открывать им проект, сделайте резервную копию или проверьте, что всё закоммичено.
@make_game | 952 |
| 7 | Рейкаст пролетает сквозь коллайдер, которого явно касается. Такой баг ловили те, кто включил инкрементальный статический broadphase в Unity Physics: у mesh collider на статическом теле не пересчитывались вложенные AABB, и запросы вроде рейкастов переставали его видеть. Рядом жила вторая версия той же беды — подмена ссылки на BlobAsset у PhysicsCollider на месте не подхватывалась, и запросы возвращали неверные данные.
Обе починили в 6000.5.10f1, вышедшей 26 августа. Если сцена собирает коллайдеры на лету, а трассировка выстрелов и проверки видимости иногда врут, обновление снимает вопрос.
В том же патче: атлас detail-текстур теперь общий для тайлов ландшафта с одинаковыми неинстансированными прототипами, и на многотайловых ландшафтах это заметно экономит память. Плеер больше не зависает и не портит кучу при выходе, если загружен AssetBundle и включена диагностика сборки. Запекание occlusion culling на больших сценах перестало ронять редактор.
Патч-релиз, ставить который стоит по совпадению симптомов, а не просто так :)
@make_game | 892 |
| 8 | Epic выложила хотфикс 5.8.2 к Unreal Engine 25 августа. Новых возможностей в нём почти нет, зато закрыт длинный список падений редактора: Sequencer роняли завершение работы, вкладка со ссылками на уничтоженный объект, привязка трека к актору вне уровня, конвертация привязки в spawnable-актора и перекомпиляция блюпринта во время отслеживания свойств. Отдельно исправлены падения при сборке Nanite Assemblies с Keep Triangle Percent меньше ста и недетерминированность такой сборки.
Самое заметное по числам — в транскодировании видео для Tiled Mipmap Video Player. Подготовка кадра резервировала около 20 ГБ видеопамяти на один кадр 16K вместо нужных 1,4 ГБ, память кончалась и подвешивала видеокарту. Теперь транскодер смотрит, сколько памяти свободно на старте задачи, и ограничивает число одновременно обрабатываемых кадров; долю запаса можно подкрутить настройками TmvMedia.Transcode.MediaPlayer.MemoryBudgetFraction и TmvMedia.Transcode.FileSequence.MemoryBudgetFraction.
Из практического: целевой Android SDK поднят до API 36, в сетевой физике починили передачу TickOffset на физический поток, когда сервер не прислал ни одного реплицированного состояния, а PCG избавился от гонки при рассылке небезопасных делегатов вне игрового потока.
Тем, кто собирает на маке, стоит подождать: известная проблема UE-377426 ломает компиляцию на Xcode 26.4 и новее, Epic рекомендует оставаться на 26.1.
@make_game | 987 |
| 9 | WebGPU в Unity перестал быть экспериментальным: начиная с 6000.6 это полноценный графический бэкенд с обычной поддержкой, объявила команда Web Graphics.
По умолчанию он всё равно выключен. Включается вручную: снять Auto Graphics API в настройках плеера, добавить WebGPU в список и поднять наверх, оставив ниже WebGL 2 как запасной вариант. Уберёте WebGL 2 — проект просто не запустится там, где WebGPU нет.
Ради чего это: вычислительные шейдеры в браузере, а с ними GPU Resident Drawing, отсечение невидимого на GPU, апскейлер STP, VFX Graph на миллионы частиц, Adaptive Probe Volumes и скиннинг на GPU. На WebGL всё это было недоступно.
Ловушка при выкладке: WebGPU браузер отдаёт только в защищённом контексте, так что сборка по обычному HTTP или открытая файлом молча откатится на WebGL 2.
@make_game | 1 034 |
| 10 | Мыши с частотой опроса выше килогерца роняли частоту кадров в играх на Godot под Windows, и на 8 кГц с захваченным курсором она падала ниже одного FPS. Юго Локурсьо разобрал причину и починку.
Windows шлёт приложению и обычные события WM_MOUSEMOVE, и сырой ввод WM_INPUT одновременно, даже когда курсор захвачен. Отказаться от обычных нельзя — сломается перетаскивание окна за заголовок. Поэтому сырой ввод теперь читается пачками и не рассылается сразу, а обычные события движения обрабатываются не чаще одного раза за кадр.
На Ryzen 9 9950X3D и RTX 5090 захваченная мышь на 8 кГц без вертикальной синхронизации дала 1703 FPS вместо «меньше одного». На картинке другой замер, с видимым курсором на 4 кГц: 1% low вырос в 45,8 раза.
Фикс уже в 4.7.2, в 4.7.1 его нет. Linux на Wayland и X11, как пишет автор, эта проблема обычно не задевает.
@make_game | 1 046 |
| 11 | За первые две недели страницу How Many Dudes? в Steam добавили в желаемое 422 раза. По ранним меркам игру можно было закрывать — а к релизу вишлистов набралось 308 тысяч, и за три недели после выхода продалось 242 тысячи копий.
Крис Зуковски разобрал, что именно сработало. Два удачных YouTube Shorts принесли 769 вишлистов: приятно, но алгоритм Steam от этого не проснулся.
Проснулся он от демо. Его выложили 16 декабря, и оно попало в раздел New & Trending Free на зимней распродаже. Между Рождеством и Новым годом почти никто ничего не выпускает, вытеснять с витрины некому: игра провисела там не меньше 24 дней и собрала 36 946 вишлистов.
Делали её семь человек ровно год — после пятилетней разработки Crashlands 2.
@make_game | 1 070 |
| 12 | Интерактивность в glTF до сих пор жила вне файла: геометрия, материалы и анимации едут в ассете, а поведение каждый движок реализует у себя заново.
Khronos отправил на ратификацию расширение KHR_interactivity для glTF 2.0. Оно кладёт поведение прямо внутрь ассета в виде графов, переносимых между платформами. Babylon.js уже проигрывает такие файлы, Needle Tools помогли сделать экспортёр, который выгружает интерактив прямо из Unity Visual Scripting, у Magic Leap готов рантайм, а Android XR обещает воспроизведение через Jetpack XR SDK.
Рядом до статуса release candidate дошло расширение для гауссовых сплатов — само оно описывает несжатое представление, готовое к отправке на видеокарту; сжатие и анимация сплатов пока живут отдельными предложениями. В превью glTF 2.1 — сцены из нескольких ассетов и потоковая загрузка с полной совместимостью с 2.0.
Оттуда же цифра из опроса Khronos про шейдеры, больше 400 разработчиков: главной болью назвали отладку и профилирование шейдеров, 53 процента.
@make_game | 1 046 |
| 13 | Геймдев перегрет. Куда идти 3D-моделлеру?
На рынке сотни Junior и Middle 3D-артистов, дерущихся за тестовые в студиях. А рядом есть сфера АГР (архитектурно-градостроительные решения), где заказчики готовы платить десятки тысяч рублей за одну модель, потому что делать по ГОСТам просто некому.
Как начать зарабатывать на АГР моделях для застройщиков — разбираем на бесплатном вебинаре от Академии Playestate.
👉 Линк на регистрацию | 1 013 |
| 14 | В приключенческих играх Sierra можно застрять навсегда: забыл крем от загара в Лос-Анджелесе, сел на лайнер — и через несколько игровых дней умираешь на плоту, вернуться нельзя. Игра продолжает принимать ввод, просто выиграть уже невозможно. LucasArts таких ловушек не делала принципиально.
Кто-то написал анализатор, который находит эти состояния сам. Он декомпилирует скрипты движка SCI, абстрактной интерпретацией строит граф переходов между комнатами с условиями, перемещений предметов и записей сюжетных флагов, выводит охранные условия, проверяет их на модели и вшивает обратно в игру: переход в тупик просто перестаёт срабатывать.
Ничего про конкретную игру внутри не зашито: стартовая комната, комната победы и сигнал смерти выводятся из кода самой игры. Проверено на четырёх играх одним и тем же кодом: Leisure Suit Larry 2 и King's Quest IV на SCI0 1988 года, King's Quest VI и Laura Bow 2 на SCI1.1 1992 года.
Мысль на вынос: невозвратные переходы ищутся обходом графа состояний, а не плейтестом.
@make_game | 1 061 |
| 15 | Лучший текст о том, почему в играх всё так долго: «The Door Problem» Лиз Ингланд. Тысяча двести слов про одни только двери.
Начинается с вопроса, который кажется пустяковым: какие двери в игре открываются, а какие нарисованы для вида. Дальше вопросы множатся. Как игрок отличит одну от другой — цветом, ручкой, мусором перед проходом? Дверь заперта навсегда или откроется по сюжету? Чем открывается: подходом, кнопкой, ключом, взломом, головоломкой? Могут ли из неё выходить враги и запирается ли она за ними?
Потом добавляется кооператив: когда дверь открывается, если игроков двое, и не запрёт ли один другого снаружи. На больших уровнях подключается подгрузка: оставшийся за дверью игрок может оказаться в выгружаемом куске карты. И размер: дверь должна пропускать игрока, союзников, врагов и крупного мини-босса.
В конце автор перечисляет, кого эта одна механика касается: дизайнера, художника, аниматора, звукорежиссёра, программиста поведения, сетевого программиста, тестировщиков, локализацию и поддержку.
Полезно показывать всем, кто спрашивает, почему простая фича не делается за день.
@make_game | 1 042 |
| 16 | Разработчик Warlondor выложил полный отчёт по рекламе в Reddit Ads. Открутил 1160 долларов, из которых 500 были промокредитом, то есть своих потратил около 660. Получил 861 вишлист: по полной цене это 1,35 доллара за вишлист, по фактически потраченным деньгам — 0,77.
США и остальной мир разошлись сильно. В США 113 485 показов, 3436 кликов, CTR 3,028% и клик по 0,28 доллара. За пределами США 100 169 показов, 1642 клика, CTR 1,639% и клик по 0,13.
Он отдельно сравнил два способа таргетинга: около 250 разрешённых ключевых слов и 100 исключённых против выбора сообществ. В США ключи дали 3,122% CTR, сообщества 2,990%, и автор сразу оговаривает, что не считает ключи лучше сообществ.
Про окупаемость автор честно говорит, что не знает: игра ещё не вышла :)
@make_game | 1 062 |
| 17 | Детерминированная симуляция — это когда одна и та же последовательность входных данных всегда даёт один и тот же результат. Из неё получаются честные реплеи, откат состояния и возможность доиграть матч после падения сервера.
Рик Хоскинсон рассказал, как это делали в League of Legends. Работа заняла почти год и стала основой восстановления матчей на ранних турнирах.
Главное решение: не пытаться сделать детерминированной всю память игры. В зону гарантии вошло только состояние, влияющее на игровой процесс, остальное осталось как есть. Сетевые входы записываются каждый кадр в порядке получения, а отдельная система умеет писать, воспроизводить и сверять состояние по кадрам.
Самым тяжёлым местом оказалось время. В коде нашлось шесть разных способов узнать, который час, и объединение их в единые часы переписывали почти полгода. Пришлось выкинуть обращения к процессорному времени и работу с долями кадра, а защиту от длинных кадров переделать. От жёсткого фиксированного шага при этом отказались: сервер меряет реальную длину кадра с ограничением сверху и записывает тайминг вместе с входами.
Полезная деталь для тех, кто будет повторять: малейшее расхождение между двумя симуляциями со временем накапливается и разносит их полностью.
@make_game | 1 078 |
| 18 | Восемь игроков, полторы тысячи юнитов, модем 28,8 килобита и Pentium 90. Доклад с GDC 2001 про сетевой код Age of Empires — пятнадцать страниц о том, как это вообще заработало.
Передавать положение тысяч юнитов по такому каналу невозможно, поэтому передаются только команды игроков, а симуляция крутится одинаково на всех машинах. Отсюда главное требование: результат должен совпасть до последнего бита у всех.
Именно тут начинается интересное. Расхождение проявляется не сразу: чуть иначе посчитанное положение оленя приводит к тому, что крестьянин через несколько минут идёт к другому кусту, добывает другое количество еды, и партии расходятся. Ловить это пришлось сверкой состояния мира, объектов, поиска пути, выбора целей и генератора случайных чисел.
Поверх UDP команда сделала свою обработку порядка сообщений, обнаружение потерь и повторную отправку.
Отдельно ценны замеры на живых игроках: задержка до 250 миллисекунд обычно не замечается, от 250 до 500 играбельна, выше 500 уже мешает. Эти цифры с тех пор никуда не делись.
@make_game | 1 048 |
| 19 | Человек, который шесть лет разбирает чужие портфолио по игровому интерфейсу — больше сотни портфолио и уже не сосчитать сколько HUD внутри них, — свёл повторяющиеся проблемы к четырём.
Первая — на экран тащат всё. Валюта нужна на виду только тогда, когда её прямо сейчас можно потратить; в остальное время она может всплывать и гаснуть. Исключение он приводит сам: души в соулслайке, где потеря денег после смерти и есть часть эмоциональной петли.
Вторая — путать быстрое с медленным. На HUD место тому, что меняется рывками: здоровье, мана, патроны. Опыт на первых уровнях растёт заметно, а к середине игры полоска не двигается часами — такую информацию он предлагает убирать во всплывающий виджет или встраивать в соседний элемент.
Третья — HUD рисуют в тишине и покое, а работать ему приходится в самый громкий момент. Проектировать надо под взрыв, летящие цифры урона и крик «поднимите меня» в наушниках. Босс-файт тут крайний случай: невидимый кулдаун или незамеченный лежачий союзник стоят всего боя.
Четвёртая — размер. Он сравнивает HUD первой Demon's Souls, огромный, и Elden Ring, где за годы в том же жанре всё ужалось, а при полном здоровье HUD со временем гаснет целиком. Ужимать стоит всё, кроме шрифта: его размер надо взять комфортный и потом ещё увеличить.
Четвёртый пункт вообще самый недооценённый — шрифт всегда мельче, чем кажется автору на его мониторе в полуметре от лица :)
@make_game | 1 116 |
| 20 | Читер с просвечиванием стен не может увидеть то, чего клиенту не отправили. На этой мысли построена серверная система видимости в VALORANT, и разбор Пола Чемберлена из Riot полезен любому, кто делает сетевую игру с авторитетным сервером.
Идея простая, а цена реализации — нет. Сервер отправляет клиенту данные о противнике, только если игрок реально может его видеть. Первый прототип проверял линию взгляда от каждого сетевого объекта к каждому игроку на каждом такте и съедал 50 процентов серверного кадра. В финальной версии — меньше 2 процентов: помогли дополнительные лучи к ограничивающему объёму, его расширение и проверка «куда объект попадёт через мгновение», а поверх этого — отсечение по видимости на стороне сервера.
Отдельная проблема, о которой обычно не думают заранее: объект появляется в зоне видимости с уже идущим эффектом. Riot хранит эффекты так, чтобы их можно было перезапустить и промотать к нужному моменту — например, разминирование продолжается с оставшегося времени, а не начинается заново.
И практика, которую стоит скопировать: боты в автотестах на каждой сборке специально входят в туман войны и выходят из него, а телеметрия меряет каждый запрос видимости с разбивкой по картам и персонажам.
@make_game | 1 106 |
