uz
Feedback
GameDev: разработка игр

GameDev: разработка игр

Kanalga Telegram’da o‘tish

Всё про геймдев для девелоперов, художников, левел- и геймдизайнеров, сценаристов Разместить рекламу: @tproger_sales_bot Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/media

Ko'proq ko'rsatish
7 633
Obunachilar
-224 soatlar
-17 kunlar
-2230 kunlar
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 Avgust0
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 правки
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 это полноценный графический бэкенд с обычной поддержкой, объ
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 кГц с захваченным курсором о
Мыши с частотой опроса выше килогерца роняли частоту кадров в играх на 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 раза. По ранним меркам игру можно было закрыват
За первые две недели страницу 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-артистов, дерущихся за тестовые в студиях. А рядо
Геймдев перегрет. Куда идти 3D-моделлеру? На рынке сотни Junior и Middle 3D-артистов, дерущихся за тестовые в студиях. А рядом есть сфера АГР (архитектурно-градостроительные решения), где заказчики готовы платить десятки тысяч рублей за одну модель, потому что делать по ГОСТам просто некому. Как начать зарабатывать на АГР моделях для застройщиков — разбираем на бесплатном вебинаре от Академии Playestate. 👉 Линк на регистрацию
1 013
14
В приключенческих играх Sierra можно застрять навсегда: забыл крем от загара в Лос-Анджелесе, сел на лайнер — и через несколь
В приключенческих играх 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 были промокредитом
Разработчик 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