Разброс внутри одного стримингового показа огромный: на картинке разбор Triple-I Initiative, где 35 игр, медиана прироста вишлистов за неделю 36 тысяч, у верхних десяти процентов 154 тысячи, у нижних — 996.
Поэтому GameDiscoverCo советуют задать пять вопросов до того, как соглашаться.
Сколько игр в программе: у PC Gaming Show и Future Games Show доходило до восьмидесяти, у Triple-I тридцать пять-сорок. Чем меньше, тем больше внимания вашей.
Сколько стоит: от примерно тысячи долларов до сотен тысяч. Сильный анонс от инди могут взять и бесплатно — показам самим нужны громкие премьеры.
Сколько там настоящих премьер: от этого зависит, соберёт ли эфир зрителей вообще.
Можно ли блогерам пересобирать трансляцию со своими комментариями — у крупных показов это заметно расширяет охват.
И сколько всё длится: короткие программы теперь заметно выигрывают.
@make_game
Поэтому GameDiscoverCo советуют задать пять вопросов до того, как соглашаться.
Сколько игр в программе: у PC Gaming Show и Future Games Show доходило до восьмидесяти, у Triple-I тридцать пять-сорок. Чем меньше, тем больше внимания вашей.
Сколько стоит: от примерно тысячи долларов до сотен тысяч. Сильный анонс от инди могут взять и бесплатно — показам самим нужны громкие премьеры.
Сколько там настоящих премьер: от этого зависит, соберёт ли эфир зрителей вообще.
Можно ли блогерам пересобирать трансляцию со своими комментариями — у крупных показов это заметно расширяет охват.
И сколько всё длится: короткие программы теперь заметно выигрывают.
@make_game
❤1
Доминик Шаблевски описал, как перенёс свой C-движок high_impact на Nintendo 64 и довёл Xibalba 64, шутер в духе Wolfenstein 3D, до физического картриджа для клона M64.
Бэкенд для платформы на Libdragon занял несколько вечеров, игровой код не менялся. Дальше началось железо: 93 МГц MIPS, 4 КБ текстурной памяти, максимум 64×64 на текстуру и медленная её загрузка. Отсюда сортировка тайлов по текстуре, до 17 квадов в одном 64-битном вызове Tiny3D и небо из одной текстуры 32×32. Уровни редактор хранит в JSON, но сборка компилирует их в бинарные структуры, потому что разбор JSON на консоли стоил около 100 мс на загрузке. Порт занял две недели, доводка — ещё несколько месяцев, стабильные 60 FPS.
Отладочный стенд: SummerCart64 по USB, ROM заливается прямо из сборки, видео через капчур-карту за 10 $. Эмулятор Ares точный, но медленную память N64 проверяет только настоящая приставка :)
@make_game
Бэкенд для платформы на Libdragon занял несколько вечеров, игровой код не менялся. Дальше началось железо: 93 МГц MIPS, 4 КБ текстурной памяти, максимум 64×64 на текстуру и медленная её загрузка. Отсюда сортировка тайлов по текстуре, до 17 квадов в одном 64-битном вызове Tiny3D и небо из одной текстуры 32×32. Уровни редактор хранит в JSON, но сборка компилирует их в бинарные структуры, потому что разбор JSON на консоли стоил около 100 мс на загрузке. Порт занял две недели, доводка — ещё несколько месяцев, стабильные 60 FPS.
Отладочный стенд: SummerCart64 по USB, ROM заливается прямо из сборки, видео через капчур-карту за 10 $. Эмулятор Ares точный, но медленную память N64 проверяет только настоящая приставка :)
@make_game
❤🔥5
Автор ретро-шутера WOBLO пишет игру на Python с raylib, без движка: геометрия, коллизии, свет, редактор уровней, физика и сохранения свои. В девлоге после 90 дней молчания он рассказывает вещи, полезные независимо от того, на чём вы делаете игру.
Про архитектуру. Мультиплеер он сделал наследником обычной игры и не поменял в основном коде ни строки. Это, по его словам, и есть проверка, что движок внутри правда разделён, а не выглядит аккуратным для того, кто сам этот беспорядок и устроил. На втором месяце работы такое не проверишь — нужно положить сверху что-то странное и посмотреть, сломается ли.
Про баги. Игрок упирался в невидимую стену; починил — стал проходить сквозь пол снизу; починил — вернулась стена. Оказалось, это один баг, видимый с двух сторон. Теперь он всегда проверяет оба случая сразу: проверять один — значит просто перекладывать баг.
Про платформы. На Mac все стены стали чёрными: там Metal, данные в шейдер приходят иначе, и свежее освещение получало мусор.
И вывод, ради которого он вообще сел писать: вишлисты набираются в месяцы до релиза, а не в день релиза. Молчание не бесплатно.
@make_game
Про архитектуру. Мультиплеер он сделал наследником обычной игры и не поменял в основном коде ни строки. Это, по его словам, и есть проверка, что движок внутри правда разделён, а не выглядит аккуратным для того, кто сам этот беспорядок и устроил. На втором месяце работы такое не проверишь — нужно положить сверху что-то странное и посмотреть, сломается ли.
Про баги. Игрок упирался в невидимую стену; починил — стал проходить сквозь пол снизу; починил — вернулась стена. Оказалось, это один баг, видимый с двух сторон. Теперь он всегда проверяет оба случая сразу: проверять один — значит просто перекладывать баг.
Про платформы. На Mac все стены стали чёрными: там Metal, данные в шейдер приходят иначе, и свежее освещение получало мусор.
И вывод, ради которого он вообще сел писать: вишлисты набираются в месяцы до релиза, а не в день релиза. Молчание не бесплатно.
@make_game
👍2
В Defold завезли свет. Версия 1.13.1 добавляет компоненты Light: четыре типа источников, редактор их показывает, кастомные шейдеры получают данные через
Второе, что заметно на практике, это инстансинг morph targets. Веса морфов уезжают в per-instance buffer через атрибут
Геймпады перевели на базу контроллеров SDL с сопоставлением сначала по GUID, добавили настройку
Тёплая сборка, по замерам авторов, ускоряется до 19%. Это верхняя граница из их измерений, а не обещание для вашего проекта, так что на большом проекте замерьте до и после сами.
@make_game
LightBuffer. Ограничения на старте честно перечислены: до восьми источников в редакторе, в WebGL1 и ES2 не работает, а layout LightBuffer должен совпадать с тем, что лежит в lighting.glsl.Второе, что заметно на практике, это инстансинг morph targets. Веса морфов уезжают в per-instance buffer через атрибут
morph_targets_weights, так что толпа персонажей с мимикой перестаёт быть отдельной болью.Геймпады перевели на базу контроллеров SDL с сопоставлением сначала по GUID, добавили настройку
input.gamepad_deadzone, а gdc умеет генерировать новые mappings; старый формат .gamepads поддерживается временно. Editor Scripts получили немодальные диалоги с изменяемым размером, вкладки, картинки, editor.fetch_libraries(), загрузку файлов по HTTP и endpoint /preview, который отдаёт сцену в PNG.Тёплая сборка, по замерам авторов, ускоряется до 19%. Это верхняя граница из их измерений, а не обещание для вашего проекта, так что на большом проекте замерьте до и после сами.
@make_game
❤4
Bevy отметил шесть лет и подвёл итоги года: 47 529 звёзд, 1527 участников, 13 543 коммита. Главное, что появилось за год и что можно взять в проект.
BSN, новая система сцен: композиция и наследование иерархий сущностей прямо в Rust-макросе
Отдельный раздел про ошибки: автор признаёт, что BSN должен был приземлиться быстрее и что раньше разработка шла в изоляции, пока не станет «достаточно хорошо».
@make_game
BSN, новая система сцен: композиция и наследование иерархий сущностей прямо в Rust-макросе
bsn!, с зависимостями и ассетами. Разработчик Exofactory после переноса на BSN убрал из проекта 7364 строки. Приземлились базовые UI-виджеты без стилей: кнопки, чекбоксы, слайдеры, списки, модалки, меню и наконец текстовое поле, а поверх них набор Feathers для внутренних инструментов. В рендере GPU-driven pipeline: пример bevy_city рисует город на 55 000 сущностей при 60 FPS; развиваются трассировщик Solari, язык шейдеров WESL и виртуальная геометрия. Сообщество на этих же основах собрало прототип редактора Jackdaw с визуальным редактированием сцен и инспектором ECS. Bevy Metrics теперь на каждый коммит меряет производительность, время компиляции и размер бинарника.Отдельный раздел про ошибки: автор признаёт, что BSN должен был приземлиться быстрее и что раньше разработка шла в изоляции, пока не станет «достаточно хорошо».
@make_game
👍1👌1
Как собрать убедительный кристалл в Unreal, не платя за прозрачность.
Анастасия Горбань расписала свой мастер-материал по шагам. Материал непрозрачный: глубина внутри камня подделана двумя цветовыми слоями, которые при повороте камеры смещаются на разное расстояние. Именно разрыв между ними даёт объём, а не смесь двух цветов.
Перед цветом идёт стадия глубины, и там на выбор параллакс с картой высот или дешёвое смещение по яркости. Оба пути берут высоту из одного источника с одним тайлингом — поэтому подделанная глубина всегда ложится ровно на тот цвет, который смещает.
Переливы снаружи сделаны через синус: интерференция периодична по углу обзора, поэтому плавный градиент превращается в повторяющиеся полосы. Слой отключаемый — кварцу и рубину он не нужен, опалу и лунному камню нужен.
В конце автор приводит арифметику. Вариант на новой системе слоёв стоит 445–517 инструкций шейдера, а тот же вид на обычном материале — 291–369. Автор честно пишет: если цель просто выпустить этот кристалл дёшево, обычный материал правильнее.
@make_game
Анастасия Горбань расписала свой мастер-материал по шагам. Материал непрозрачный: глубина внутри камня подделана двумя цветовыми слоями, которые при повороте камеры смещаются на разное расстояние. Именно разрыв между ними даёт объём, а не смесь двух цветов.
Перед цветом идёт стадия глубины, и там на выбор параллакс с картой высот или дешёвое смещение по яркости. Оба пути берут высоту из одного источника с одним тайлингом — поэтому подделанная глубина всегда ложится ровно на тот цвет, который смещает.
Переливы снаружи сделаны через синус: интерференция периодична по углу обзора, поэтому плавный градиент превращается в повторяющиеся полосы. Слой отключаемый — кварцу и рубину он не нужен, опалу и лунному камню нужен.
В конце автор приводит арифметику. Вариант на новой системе слоёв стоит 445–517 инструкций шейдера, а тот же вид на обычном материале — 291–369. Автор честно пишет: если цель просто выпустить этот кристалл дёшево, обычный материал правильнее.
@make_game
🤣2
Godot 4.7.2 это ремонтный релиз: 39 контрибьюторов, 57 исправлений, совместимость с 4.7.1 сохранена.
Главное для Windows: починили просадку производительности при движении мыши с высокой частотой опроса. Там же поправили залипание при одновременном отпускании Shift и позиционирование Wayland IME при дробном масштабировании.
В сети репликация больше не встаёт, когда удаляют узел, созданный через
Из мелкого, что легко словить: запрет отрицательных весов в
@make_game
Главное для Windows: починили просадку производительности при движении мыши с высокой частотой опроса. Там же поправили залипание при одновременном отпускании Shift и позиционирование Wayland IME при дробном масштабировании.
В сети репликация больше не встаёт, когда удаляют узел, созданный через
MultiplayerSpawner; заодно обновили источник энтропии в mbedTLS. В рендере починили тени PCSS, которые брали начало shadow range не в том пространстве, двойное копирование billboard-частиц и запуск игры на Android при выключенном экране.Из мелкого, что легко словить: запрет отрицательных весов в
RandomPCG::rand_weighted, падение при невозможности открыть файл лога и проверка родителей в GDExtension. Обновление недорогое, а проверять после него стоит ровно то, что чинили: ввод с высокой частотой опроса, спавн по сети, сцены с PCSS и экспорт под Android и Windows.@make_game
❤4
Карта, погода, враги и лут получают по своему генератору случайных чисел, чтобы правка одной системы не ломала другую. Но если все они засеяны одним seed, они выдают одну и ту же последовательность, и игрок, увидев результат в одной системе, предсказывает остальные. Автор блога knives for cats разобрал три способа с этим справиться.
Смещение начала последовательности для каждого генератора — пластырь: сдвиги надо делать большими, не все RNG умеют перепрыгивать, и учёт превращается в отдельную работу. Отдельный генератор для раздачи seed работает, но состояние каждой системы теперь зависит от порядка создания генераторов, и добавление новой ломает старые. Вариант автора — хэшировать общий seed с именем системы:
Через шесть часов после публикации выяснилось, что MegaCrit используют почти ту же схему в Slay the Spire 2: в первой части
@make_game
Смещение начала последовательности для каждого генератора — пластырь: сдвиги надо делать большими, не все RNG умеют перепрыгивать, и учёт превращается в отдельную работу. Отдельный генератор для раздачи seed работает, но состояние каждой системы теперь зависит от порядка создания генераторов, и добавление новой ломает старые. Вариант автора — хэшировать общий seed с именем системы:
new RNG(gameSeed, "Weather"), генераторы независимы, а связать два нарочно можно, подмешав выход одного в seed другого. Хэш нужен детерминированный, HashCode из C# не подходит.Через шесть часов после публикации выяснилось, что MegaCrit используют почти ту же схему в Slay the Spire 2: в первой части
System.Random при линейно растущих seed выдавал коррелированные последовательности, и runSeed + hash("id") давал всем генераторам одни числа со сдвигом. Сам автор берёт Squirrel3 из доклада Сквиррела Айзерло: два uint состояния и прыжок в любую позицию.@make_game
❤2🆒1
Если ваш мультиплеер в GameMaker сделан на откате состояния — не обновляйтесь. В ветке 2026.100.0 эту подсистему удалили полностью, а в заметках просто советуют оставаться на 2026.0, пока не найдёте замену. Чем заменять, не сказано.
Остальное в ветке, последняя запись от 13 августа:
Появились
Из правок в самом коде игр стоит знать три: инкремент внутри аксессора больше не срабатывает дважды при присваивании,
Остальное — редактор: вкладки, рабочие области, вставка текста, набор иероглифов. Разделение окон на части готовят, но в интерфейсе ещё не включили.
@make_game
Остальное в ветке, последняя запись от 13 августа:
Появились
layer_sequence_get_alpha() и layer_sequence_get_blend() — читают текущие цвет и прозрачность последовательности. Менеджер пакетов научился проверять и переустанавливать испорченные пакеты, из-за которых заготовка могла намертво застрять. Для Switch добавили настройку, отключающую поддержку сенсорного экрана.Из правок в самом коде игр стоит знать три: инкремент внутри аксессора больше не срабатывает дважды при присваивании,
draw_set_alpha() теперь влияет на отрисовку сразу, а не после ближайшего изменения масштаба объекта, и оператор ^= в компилируемом режиме перестал считать входные значения логическими.Остальное — редактор: вкладки, рабочие области, вставка текста, набор иероглифов. Разделение окон на части готовят, но в интерфейсе ещё не включили.
@make_game
Соло-разработчик выложил цифры по своей Paranormal Observation: Steam в октябре 2022 года, Switch в мае 2026-го, демо на GameJolt как ранняя проверка идеи.
Всплеск от стримеров, в основном от Insym, дал примерно 225 добавлений в список желаемого за день, лучший день продаж около 65 копий. За первый месяц Steam принёс примерно 400 копий, Switch около 200: на консоли не было ни маркетингового толчка, ни накопленного списка желающих, и вторым запуском порт не стал.
Выводы автора: и ранний доступ, и выход версии 1.0 стоит считать полноценными маркетинговыми событиями, скидка от 20% помогает превратить список желаемого в покупки, а ограниченные окна видимости в Steam лучше тратить в начале. Отдельно напоминает, что первые десять отзывов критичны для показа оценки, а ключи покупками не считаются.
Все числа округлены, сырых данных Steamworks и выручки в посте нет. Но даже так это редкий случай, когда кто-то показывает Switch-порт без прикрас :)
@make_game
Всплеск от стримеров, в основном от Insym, дал примерно 225 добавлений в список желаемого за день, лучший день продаж около 65 копий. За первый месяц Steam принёс примерно 400 копий, Switch около 200: на консоли не было ни маркетингового толчка, ни накопленного списка желающих, и вторым запуском порт не стал.
Выводы автора: и ранний доступ, и выход версии 1.0 стоит считать полноценными маркетинговыми событиями, скидка от 20% помогает превратить список желаемого в покупки, а ограниченные окна видимости в Steam лучше тратить в начале. Отдельно напоминает, что первые десять отзывов критичны для показа оценки, а ключи покупками не считаются.
Все числа округлены, сырых данных Steamworks и выручки в посте нет. Но даже так это редкий случай, когда кто-то показывает Switch-порт без прикрас :)
@make_game
👍1
Dear ImGui 1.92.9 поменял поведение числовых полей, и это заметят все, у кого на нём внутриигровые редакторы и отладочные панели.
Стоит помнить и о предыдущей 1.92.8, где поменялись сигнатуры
@make_game
DragXXX, SliderXXX и InputScalar теперь применяют значение после валидации или потери фокуса, а не на каждое нажатие клавиши; старое поведение возвращает флаг ImGuiItemFlags_LiveEditOnInputScalar. Релиз вышел 25 июля, 31 июля за ним последовал 1.92.9b.Стоит помнить и о предыдущей 1.92.8, где поменялись сигнатуры
ImDrawList::AddRect, AddPolyline и PathStroke; устаревшее поле ImDrawData::CmdListsCount теперь положено заменять на CmdLists.Size. Хотфикс 1.92.9b закрыл три регрессии: Ctrl-клик, границы таблиц и обнулённый CmdListsCount. Если обновляете движок с ImGui внутри, стоит прочитать раздел Breaking Changes до сборки, а не после :)@make_game
🥱1
jMonkeyEngine — открытый 3D-движок на Java, живущий с середины двухтысячных. Вторая бета версии 3.10.0 вышла 21 июля и целиком про то, что ломается на стыке движка с операционной системой.
Для тех, кто выпускается на настольные платформы: в зависимостях появилась Windows на ARM64, а 32-битные библиотеки удалены.
Дальше — набор багов, знакомых любому, кто делал полноэкранную игру. Починили восстановление захвата мыши и курсора после Alt-Tab и нажатия клавиши Windows. Смещение мыши больше не учитывается, пока окно не в фокусе. При удалении привязок клавиш очищаются зависшие состояния ввода, а виртуальные курки геймпада наконец ведут себя правильно. В редакторе такое не видно, у игрока проявляется сразу.
Ещё: исправлено масштабирование обработчиков сцены при высокой плотности пикселей, починен фатальный сбой на macOS при аппаратном размножении объектов, а генерация мип-уровней теперь предупреждает, если свалилась с видеокарты на процессор — раньше это молча стоило производительности.
Замеров в заметках нет, стабильность не обещана: это бета.
@make_game
Для тех, кто выпускается на настольные платформы: в зависимостях появилась Windows на ARM64, а 32-битные библиотеки удалены.
Дальше — набор багов, знакомых любому, кто делал полноэкранную игру. Починили восстановление захвата мыши и курсора после Alt-Tab и нажатия клавиши Windows. Смещение мыши больше не учитывается, пока окно не в фокусе. При удалении привязок клавиш очищаются зависшие состояния ввода, а виртуальные курки геймпада наконец ведут себя правильно. В редакторе такое не видно, у игрока проявляется сразу.
Ещё: исправлено масштабирование обработчиков сцены при высокой плотности пикселей, починен фатальный сбой на macOS при аппаратном размножении объектов, а генерация мип-уровней теперь предупреждает, если свалилась с видеокарты на процессор — раньше это молча стоило производительности.
Замеров в заметках нет, стабильность не обещана: это бета.
@make_game
Скриншотник. Правила прежние: показываем, над чем сидели неделю.
В комментарии идут скриншоты, гифки, ролики, демки и ссылки на страницы игр. Отдельно интересно то, что обычно не показывают: редактор уровней, отладочная отрисовка коллизий, кривая графика профилировщика, инструмент, который вы написали для себя.
Если на этой неделе двигалось туго — покажите то, что почти работает, тут за это не ругают. Ссылки на свои каналы разрешены.
@make_game
В комментарии идут скриншоты, гифки, ролики, демки и ссылки на страницы игр. Отдельно интересно то, что обычно не показывают: редактор уровней, отладочная отрисовка коллизий, кривая графика профилировщика, инструмент, который вы написали для себя.
Если на этой неделе двигалось туго — покажите то, что почти работает, тут за это не ругают. Ссылки на свои каналы разрешены.
@make_game
⚡5❤1
Статья 2004 года, которую до сих пор скидывают всем, у кого пружины взрываются, а объекты проваливаются сквозь пол: «Fix Your Timestep!» Гленна Фидлера.
Суть проблемы: если считать физику с шагом, равным длине кадра, поведение игры начинает зависеть от частоты кадров. На мощной машине одно, на слабой другое, а при просадке до пяти кадров объект успевает пролететь сквозь стену, потому что между шагами он телепортируется на полметра.
Решение разбирается по шагам. Сначала фиксированный шаг, например одна шестидесятая секунды. Потом полуфиксированный: большой промежуток режется на несколько мелких. Дальше — накопитель, который копит реальное время и тратит его целыми шагами симуляции.
Отдельно объясняется спираль смерти: если симуляция не успевает переварить накопившееся время, она набирает ещё больше долгов и окончательно тонет. Отсюда правило ограничивать число шагов за кадр.
Последний кусок — про плавность: состояние интерполируется между предыдущим и текущим шагом, повороты через сферическую интерполяцию. Тот же фиксированный шаг потом даёт воспроизводимость реплеев и детерминированный сетевой код.
@make_game
Суть проблемы: если считать физику с шагом, равным длине кадра, поведение игры начинает зависеть от частоты кадров. На мощной машине одно, на слабой другое, а при просадке до пяти кадров объект успевает пролететь сквозь стену, потому что между шагами он телепортируется на полметра.
Решение разбирается по шагам. Сначала фиксированный шаг, например одна шестидесятая секунды. Потом полуфиксированный: большой промежуток режется на несколько мелких. Дальше — накопитель, который копит реальное время и тратит его целыми шагами симуляции.
Отдельно объясняется спираль смерти: если симуляция не успевает переварить накопившееся время, она набирает ещё больше долгов и окончательно тонет. Отсюда правило ограничивать число шагов за кадр.
Последний кусок — про плавность: состояние интерполируется между предыдущим и текущим шагом, повороты через сферическую интерполяцию. Тот же фиксированный шаг потом даёт воспроизводимость реплеев и детерминированный сетевой код.
@make_game
❤3👍3
Читер с просвечиванием стен не может увидеть то, чего клиенту не отправили. На этой мысли построена серверная система видимости в VALORANT, и разбор Пола Чемберлена из Riot полезен любому, кто делает сетевую игру с авторитетным сервером.
Идея простая, а цена реализации — нет. Сервер отправляет клиенту данные о противнике, только если игрок реально может его видеть. Первый прототип проверял линию взгляда от каждого сетевого объекта к каждому игроку на каждом такте и съедал 50 процентов серверного кадра. В финальной версии — меньше 2 процентов: помогли дополнительные лучи к ограничивающему объёму, его расширение и проверка «куда объект попадёт через мгновение», а поверх этого — отсечение по видимости на стороне сервера.
Отдельная проблема, о которой обычно не думают заранее: объект появляется в зоне видимости с уже идущим эффектом. Riot хранит эффекты так, чтобы их можно было перезапустить и промотать к нужному моменту — например, разминирование продолжается с оставшегося времени, а не начинается заново.
И практика, которую стоит скопировать: боты в автотестах на каждой сборке специально входят в туман войны и выходят из него, а телеметрия меряет каждый запрос видимости с разбивкой по картам и персонажам.
@make_game
Идея простая, а цена реализации — нет. Сервер отправляет клиенту данные о противнике, только если игрок реально может его видеть. Первый прототип проверял линию взгляда от каждого сетевого объекта к каждому игроку на каждом такте и съедал 50 процентов серверного кадра. В финальной версии — меньше 2 процентов: помогли дополнительные лучи к ограничивающему объёму, его расширение и проверка «куда объект попадёт через мгновение», а поверх этого — отсечение по видимости на стороне сервера.
Отдельная проблема, о которой обычно не думают заранее: объект появляется в зоне видимости с уже идущим эффектом. Riot хранит эффекты так, чтобы их можно было перезапустить и промотать к нужному моменту — например, разминирование продолжается с оставшегося времени, а не начинается заново.
И практика, которую стоит скопировать: боты в автотестах на каждой сборке специально входят в туман войны и выходят из него, а телеметрия меряет каждый запрос видимости с разбивкой по картам и персонажам.
@make_game
👍2
Человек, который шесть лет разбирает чужие портфолио по игровому интерфейсу — больше сотни портфолио и уже не сосчитать сколько HUD внутри них, — свёл повторяющиеся проблемы к четырём.
Первая — на экран тащат всё. Валюта нужна на виду только тогда, когда её прямо сейчас можно потратить; в остальное время она может всплывать и гаснуть. Исключение он приводит сам: души в соулслайке, где потеря денег после смерти и есть часть эмоциональной петли.
Вторая — путать быстрое с медленным. На HUD место тому, что меняется рывками: здоровье, мана, патроны. Опыт на первых уровнях растёт заметно, а к середине игры полоска не двигается часами — такую информацию он предлагает убирать во всплывающий виджет или встраивать в соседний элемент.
Третья — HUD рисуют в тишине и покое, а работать ему приходится в самый громкий момент. Проектировать надо под взрыв, летящие цифры урона и крик «поднимите меня» в наушниках. Босс-файт тут крайний случай: невидимый кулдаун или незамеченный лежачий союзник стоят всего боя.
Четвёртая — размер. Он сравнивает HUD первой Demon's Souls, огромный, и Elden Ring, где за годы в том же жанре всё ужалось, а при полном здоровье HUD со временем гаснет целиком. Ужимать стоит всё, кроме шрифта: его размер надо взять комфортный и потом ещё увеличить.
Четвёртый пункт вообще самый недооценённый — шрифт всегда мельче, чем кажется автору на его мониторе в полуметре от лица :)
@make_game
Первая — на экран тащат всё. Валюта нужна на виду только тогда, когда её прямо сейчас можно потратить; в остальное время она может всплывать и гаснуть. Исключение он приводит сам: души в соулслайке, где потеря денег после смерти и есть часть эмоциональной петли.
Вторая — путать быстрое с медленным. На HUD место тому, что меняется рывками: здоровье, мана, патроны. Опыт на первых уровнях растёт заметно, а к середине игры полоска не двигается часами — такую информацию он предлагает убирать во всплывающий виджет или встраивать в соседний элемент.
Третья — HUD рисуют в тишине и покое, а работать ему приходится в самый громкий момент. Проектировать надо под взрыв, летящие цифры урона и крик «поднимите меня» в наушниках. Босс-файт тут крайний случай: невидимый кулдаун или незамеченный лежачий союзник стоят всего боя.
Четвёртая — размер. Он сравнивает HUD первой Demon's Souls, огромный, и Elden Ring, где за годы в том же жанре всё ужалось, а при полном здоровье HUD со временем гаснет целиком. Ужимать стоит всё, кроме шрифта: его размер надо взять комфортный и потом ещё увеличить.
Четвёртый пункт вообще самый недооценённый — шрифт всегда мельче, чем кажется автору на его мониторе в полуметре от лица :)
@make_game