make_game | Unsorted

Telegram-канал make_game - GameDev: разработка игр

7663

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

Subscribe to a channel

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

В утечке Steam на 12 ТБ нашли вырезанные механики Portal 2 и беты чужих игр

По торрентам разошёлся архив «депотов» со старой системы раздачи Steam2, на которой Valve держала игры с 2003 года до перехода на SteamPipe в 2013-м. Внутри не только релизные сборки, но и предрелизные, прототипные и плейтестовые версии — своих игр Valve и сторонних издателей.

В играбельных ранних Portal 2 уже откопали идеально круглые порталы, клейкий гель и оружие с замедлением времени. Из чужого — беты Left 4 Dead 2 и CS:GO, ранние Spore, Dragon Age: Origins и Spec Ops: The Line.

В нашем канале «Представляешь,» разобрали подробнее, включая версии о том, откуда взялся дамп.

Читать полностью…

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

20 000 скачиваний демо и 4 отзыва: сколько отзывов вообще должна собирать демоверсия

Студия выпустила игру, потом по просьбам собрала демо и выложила его отдельной страницей. Цифры за это время вышли странные: около 20 000 скачиваний, из них 61,4% дошли до установки — больше 12 000 установок. Среднее время в демо 41 минута, по статистике прохождения заметная часть игроков добирается до конца.

Отзывов четыре. При том что сама платная игра собирает их куда бодрее, а прогресс из демо переносится в полную версию напрямую.

Самый заметный ответ в обсуждении набрал 83 голоса и звучит так: «Я вообще ни разу не думал написать отзыв на демо. Я запускаю демо, чтобы проверить, что игра стартует и что мне весело. Если да, я покупаю игру — и отзыв пишу уже на её странице». Следом идёт комментарий «я не знал, что демо вообще можно оценивать», тоже с тремя десятками голосов. Логика получается замкнутая: кому понравилось, тот уходит покупать и пишет там; кому не понравилось, тому писать незачем.

Противоположный пример в том же обсуждении: у Томаса Салы на демо 70 000 владельцев, 50 000 игравших и 170 отзывов. Значит, разброс определяет что-то ещё, кроме самого формата демо.

Есть и практическая придирка к цифрам. В Steamworks для таких выводов годится строка Lifetime unique users; Lifetime free licenses считает выданные лицензии, среди которых живых игроков может оказаться заметно меньше.

@make_game

Читать полностью…

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

Три года, три игры на одной механике, $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

Читать полностью…

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

Четыре приёма, которые чинят экран инвентаря

UI-художник, работавший в Midway, EA, id Software и Glu Mobile, выложил на r/gamedev кусок своего менторского курса. Инвентарь он считает одним из самых сложных экранов в игре: он завязан сразу на награду, стратегию и лор.

Первое — бейджи на новых предметах. Игрок выбил гору лута из босса, открыл инвентарь, и лут растворился среди старого. Красный кружок с числом, как на иконках телефона, снимается после посещения экрана или после того, как подсветка прошла по предмету. Elden Ring добавил такие бейджи патчем 1.12, почти через два года после выхода.

Второе — деление экрана на треть и две трети. Информация редко равнозначна: если у вас сетка-«чемоданчик» в духе Resident Evil, главная тут сетка, а карточка выбранного предмета вторична. Пропорция 1:2 задаёт эту иерархию сама и отвечает на вопрос «с чего вообще начинать пустой макет».

Третье — осторожнее с редкостью. Учебниковые серый, зелёный, синий, фиолетовый и оранжевый со временем превращают экран в россыпь драже. Автор советует обводку предмета или ячейки вместо заливки и отговаривает от иконок редкости: в 32×32 пикселя они теряются. Сами цвета менять уже нельзя — это общая мнемоника, вроде красного и зелёного на светофоре.

Четвёртое — навигация на геймпаде. Стик или крестовина, как скроллить список, поймёт ли игрок, что сетка продолжается за краем, что происходит при движении по диагонали в нерегулярной сетке. Если внятного ответа нет, экран пора перерисовывать.

@make_game

Читать полностью…

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

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

Читать полностью…

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

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

Читать полностью…

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

Мыши с частотой опроса выше килогерца роняли частоту кадров в играх на 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

Читать полностью…

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

Интерактивность в 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

Читать полностью…

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

В приключенческих играх 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

Читать полностью…

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

Разработчик 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

Читать полностью…

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

Восемь игроков, полторы тысячи юнитов, модем 28,8 килобита и Pentium 90. Доклад с GDC 2001 про сетевой код Age of Empires — пятнадцать страниц о том, как это вообще заработало.

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

Именно тут начинается интересное. Расхождение проявляется не сразу: чуть иначе посчитанное положение оленя приводит к тому, что крестьянин через несколько минут идёт к другому кусту, добывает другое количество еды, и партии расходятся. Ловить это пришлось сверкой состояния мира, объектов, поиска пути, выбора целей и генератора случайных чисел.

Поверх UDP команда сделала свою обработку порядка сообщений, обнаружение потерь и повторную отправку.

Отдельно ценны замеры на живых игроках: задержка до 250 миллисекунд обычно не замечается, от 250 до 500 играбельна, выше 500 уже мешает. Эти цифры с тех пор никуда не делись.

@make_game

Читать полностью…

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

Читер с просвечиванием стен не может увидеть то, чего клиенту не отправили. На этой мысли построена серверная система видимости в VALORANT, и разбор Пола Чемберлена из Riot полезен любому, кто делает сетевую игру с авторитетным сервером.

Идея простая, а цена реализации — нет. Сервер отправляет клиенту данные о противнике, только если игрок реально может его видеть. Первый прототип проверял линию взгляда от каждого сетевого объекта к каждому игроку на каждом такте и съедал 50 процентов серверного кадра. В финальной версии — меньше 2 процентов: помогли дополнительные лучи к ограничивающему объёму, его расширение и проверка «куда объект попадёт через мгновение», а поверх этого — отсечение по видимости на стороне сервера.

Отдельная проблема, о которой обычно не думают заранее: объект появляется в зоне видимости с уже идущим эффектом. Riot хранит эффекты так, чтобы их можно было перезапустить и промотать к нужному моменту — например, разминирование продолжается с оставшегося времени, а не начинается заново.

И практика, которую стоит скопировать: боты в автотестах на каждой сборке специально входят в туман войны и выходят из него, а телеметрия меряет каждый запрос видимости с разбивкой по картам и персонажам.

@make_game

Читать полностью…

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

Скриншотник. Правила прежние: показываем, над чем сидели неделю.

В комментарии идут скриншоты, гифки, ролики, демки и ссылки на страницы игр. Отдельно интересно то, что обычно не показывают: редактор уровней, отладочная отрисовка коллизий, кривая графика профилировщика, инструмент, который вы написали для себя.

Если на этой неделе двигалось туго — покажите то, что почти работает, тут за это не ругают. Ссылки на свои каналы разрешены.

@make_game

Читать полностью…

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

Dear ImGui 1.92.9 поменял поведение числовых полей, и это заметят все, у кого на нём внутриигровые редакторы и отладочные панели. 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

Читать полностью…

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

Если ваш мультиплеер в GameMaker сделан на откате состояния — не обновляйтесь. В ветке 2026.100.0 эту подсистему удалили полностью, а в заметках просто советуют оставаться на 2026.0, пока не найдёте замену. Чем заменять, не сказано.

Остальное в ветке, последняя запись от 13 августа:

Появились layer_sequence_get_alpha() и layer_sequence_get_blend() — читают текущие цвет и прозрачность последовательности. Менеджер пакетов научился проверять и переустанавливать испорченные пакеты, из-за которых заготовка могла намертво застрять. Для Switch добавили настройку, отключающую поддержку сенсорного экрана.

Из правок в самом коде игр стоит знать три: инкремент внутри аксессора больше не срабатывает дважды при присваивании, draw_set_alpha() теперь влияет на отрисовку сразу, а не после ближайшего изменения масштаба объекта, и оператор ^= в компилируемом режиме перестал считать входные значения логическими.

Остальное — редактор: вкладки, рабочие области, вставка текста, набор иероглифов. Разделение окон на части готовят, но в интерфейсе ещё не включили.

@make_game

Читать полностью…

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

Персональный календарь Steam разогнал вишлисты инди-хоррора до 1000 в день

Разработчики Rehaunted шли к релизу с 250–500 органическими вишлистами в день. За 16 дней до выхода приток внезапно вырос до 1000+ в день, а общий счёт перевалил за 20 000 — при том, что в момент скачка не выходило ни рекламы, ни новых крупных публикаций (трейлеры на канале IGN были раньше). Единственное заметное изменение, по наблюдению команды, — игра начала показываться в персональном календаре Steam.

Их гипотеза: дело не только в тегах. Чем больше вишлистов у игры уже накоплено, тем более широкой аудитории Steam готов её показывать — алгоритму нужны сигналы спроса, и входить в предрелизное окно лучше с готовым моментумом.

Их вывод: персональные рекомендации здоровее для инди, чем старый Popular Upcoming, где всё было бинарно — либо вишлистов хватило на попадание в список, либо тебя не видит никто. Это наблюдение одной команды: как именно работает алгоритм, Valve не раскрывает.

Разбор с цифрами

@make_game

Читать полностью…

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

Игру для 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

Читать полностью…

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

Движок 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

Читать полностью…

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

Ранние ИИ-ассеты уехали в публичный пролог, и студии пришлось извиняться

Патрис Дезиле, сооснователь Assassin's Creed, ушедший из Ubisoft, показал на летнем фестивале новую игру 1666: Amsterdam. Получасовой пролог выложили бесплатно в Steam и Epic Games Store, и игроки за пару дней нашли в нём портреты и часть ключевого арта, похожие на сгенерированные.

Студия Panache Digital Games признала: в пролог попали ранние версии ассетов, сделанные с помощью генеративных моделей, включая внутриигровые портреты и внешние маркетинговые материалы. Их заменят нарисованными вручную в ближайшем обновлении; в раннем доступе и в полной версии сгенерированных ассетов не будет. Художников в студии больше десятка.

Рейтинг пролога в Steam — «смешанные». В отзывах пишут прямо: «убираю из желаемого и игнорирую компанию».

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

Разбор на IGN.

@make_game

Читать полностью…

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

Рейкаст пролетает сквозь коллайдер, которого явно касается. Такой баг ловили те, кто включил инкрементальный статический broadphase в Unity Physics: у mesh collider на статическом теле не пересчитывались вложенные AABB, и запросы вроде рейкастов переставали его видеть. Рядом жила вторая версия той же беды — подмена ссылки на BlobAsset у PhysicsCollider на месте не подхватывалась, и запросы возвращали неверные данные.

Обе починили в 6000.5.10f1, вышедшей 26 августа. Если сцена собирает коллайдеры на лету, а трассировка выстрелов и проверки видимости иногда врут, обновление снимает вопрос.

В том же патче: атлас detail-текстур теперь общий для тайлов ландшафта с одинаковыми неинстансированными прототипами, и на многотайловых ландшафтах это заметно экономит память. Плеер больше не зависает и не портит кучу при выходе, если загружен AssetBundle и включена диагностика сборки. Запекание occlusion culling на больших сценах перестало ронять редактор.

Патч-релиз, ставить который стоит по совпадению симптомов, а не просто так :)

@make_game

Читать полностью…

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

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

Читать полностью…

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

За первые две недели страницу How Many Dudes? в Steam добавили в желаемое 422 раза. По ранним меркам игру можно было закрывать — а к релизу вишлистов набралось 308 тысяч, и за три недели после выхода продалось 242 тысячи копий.

Крис Зуковски разобрал, что именно сработало. Два удачных YouTube Shorts принесли 769 вишлистов: приятно, но алгоритм Steam от этого не проснулся.

Проснулся он от демо. Его выложили 16 декабря, и оно попало в раздел New & Trending Free на зимней распродаже. Между Рождеством и Новым годом почти никто ничего не выпускает, вытеснять с витрины некому: игра провисела там не меньше 24 дней и собрала 36 946 вишлистов.

Делали её семь человек ровно год — после пятилетней разработки Crashlands 2.

@make_game

Читать полностью…

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

Геймдев перегрет. Куда идти 3D-моделлеру?

На рынке сотни Junior и Middle 3D-артистов, дерущихся за тестовые в студиях. А рядом есть сфера АГР (архитектурно-градостроительные решения), где заказчики готовы платить десятки тысяч рублей за одну модель, потому что делать по ГОСТам просто некому.

Как начать зарабатывать на АГР моделях для застройщиков — разбираем на бесплатном вебинаре от Академии Playestate.

👉 Линк на регистрацию

Читать полностью…

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

Лучший текст о том, почему в играх всё так долго: «The Door Problem» Лиз Ингланд. Тысяча двести слов про одни только двери.

Начинается с вопроса, который кажется пустяковым: какие двери в игре открываются, а какие нарисованы для вида. Дальше вопросы множатся. Как игрок отличит одну от другой — цветом, ручкой, мусором перед проходом? Дверь заперта навсегда или откроется по сюжету? Чем открывается: подходом, кнопкой, ключом, взломом, головоломкой? Могут ли из неё выходить враги и запирается ли она за ними?

Потом добавляется кооператив: когда дверь открывается, если игроков двое, и не запрёт ли один другого снаружи. На больших уровнях подключается подгрузка: оставшийся за дверью игрок может оказаться в выгружаемом куске карты. И размер: дверь должна пропускать игрока, союзников, врагов и крупного мини-босса.

В конце автор перечисляет, кого эта одна механика касается: дизайнера, художника, аниматора, звукорежиссёра, программиста поведения, сетевого программиста, тестировщиков, локализацию и поддержку.

Полезно показывать всем, кто спрашивает, почему простая фича не делается за день.

@make_game

Читать полностью…

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

Детерминированная симуляция — это когда одна и та же последовательность входных данных всегда даёт один и тот же результат. Из неё получаются честные реплеи, откат состояния и возможность доиграть матч после падения сервера.

Рик Хоскинсон рассказал, как это делали в League of Legends. Работа заняла почти год и стала основой восстановления матчей на ранних турнирах.

Главное решение: не пытаться сделать детерминированной всю память игры. В зону гарантии вошло только состояние, влияющее на игровой процесс, остальное осталось как есть. Сетевые входы записываются каждый кадр в порядке получения, а отдельная система умеет писать, воспроизводить и сверять состояние по кадрам.

Самым тяжёлым местом оказалось время. В коде нашлось шесть разных способов узнать, который час, и объединение их в единые часы переписывали почти полгода. Пришлось выкинуть обращения к процессорному времени и работу с долями кадра, а защиту от длинных кадров переделать. От жёсткого фиксированного шага при этом отказались: сервер меряет реальную длину кадра с ограничением сверху и записывает тайминг вместе с входами.

Полезная деталь для тех, кто будет повторять: малейшее расхождение между двумя симуляциями со временем накапливается и разносит их полностью.

@make_game

Читать полностью…

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

Человек, который шесть лет разбирает чужие портфолио по игровому интерфейсу — больше сотни портфолио и уже не сосчитать сколько HUD внутри них, — свёл повторяющиеся проблемы к четырём.

Первая — на экран тащат всё. Валюта нужна на виду только тогда, когда её прямо сейчас можно потратить; в остальное время она может всплывать и гаснуть. Исключение он приводит сам: души в соулслайке, где потеря денег после смерти и есть часть эмоциональной петли.

Вторая — путать быстрое с медленным. На HUD место тому, что меняется рывками: здоровье, мана, патроны. Опыт на первых уровнях растёт заметно, а к середине игры полоска не двигается часами — такую информацию он предлагает убирать во всплывающий виджет или встраивать в соседний элемент.

Третья — HUD рисуют в тишине и покое, а работать ему приходится в самый громкий момент. Проектировать надо под взрыв, летящие цифры урона и крик «поднимите меня» в наушниках. Босс-файт тут крайний случай: невидимый кулдаун или незамеченный лежачий союзник стоят всего боя.

Четвёртая — размер. Он сравнивает HUD первой Demon's Souls, огромный, и Elden Ring, где за годы в том же жанре всё ужалось, а при полном здоровье HUD со временем гаснет целиком. Ужимать стоит всё, кроме шрифта: его размер надо взять комфортный и потом ещё увеличить.

Четвёртый пункт вообще самый недооценённый — шрифт всегда мельче, чем кажется автору на его мониторе в полуметре от лица :)

@make_game

Читать полностью…

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

Статья 2004 года, которую до сих пор скидывают всем, у кого пружины взрываются, а объекты проваливаются сквозь пол: «Fix Your Timestep!» Гленна Фидлера.

Суть проблемы: если считать физику с шагом, равным длине кадра, поведение игры начинает зависеть от частоты кадров. На мощной машине одно, на слабой другое, а при просадке до пяти кадров объект успевает пролететь сквозь стену, потому что между шагами он телепортируется на полметра.

Решение разбирается по шагам. Сначала фиксированный шаг, например одна шестидесятая секунды. Потом полуфиксированный: большой промежуток режется на несколько мелких. Дальше — накопитель, который копит реальное время и тратит его целыми шагами симуляции.

Отдельно объясняется спираль смерти: если симуляция не успевает переварить накопившееся время, она набирает ещё больше долгов и окончательно тонет. Отсюда правило ограничивать число шагов за кадр.

Последний кусок — про плавность: состояние интерполируется между предыдущим и текущим шагом, повороты через сферическую интерполяцию. Тот же фиксированный шаг потом даёт воспроизводимость реплеев и детерминированный сетевой код.

@make_game

Читать полностью…

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

jMonkeyEngine — открытый 3D-движок на Java, живущий с середины двухтысячных. Вторая бета версии 3.10.0 вышла 21 июля и целиком про то, что ломается на стыке движка с операционной системой.

Для тех, кто выпускается на настольные платформы: в зависимостях появилась Windows на ARM64, а 32-битные библиотеки удалены.

Дальше — набор багов, знакомых любому, кто делал полноэкранную игру. Починили восстановление захвата мыши и курсора после Alt-Tab и нажатия клавиши Windows. Смещение мыши больше не учитывается, пока окно не в фокусе. При удалении привязок клавиш очищаются зависшие состояния ввода, а виртуальные курки геймпада наконец ведут себя правильно. В редакторе такое не видно, у игрока проявляется сразу.

Ещё: исправлено масштабирование обработчиков сцены при высокой плотности пикселей, починен фатальный сбой на macOS при аппаратном размножении объектов, а генерация мип-уровней теперь предупреждает, если свалилась с видеокарты на процессор — раньше это молча стоило производительности.

Замеров в заметках нет, стабильность не обещана: это бета.

@make_game

Читать полностью…

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

Соло-разработчик выложил цифры по своей Paranormal Observation: Steam в октябре 2022 года, Switch в мае 2026-го, демо на GameJolt как ранняя проверка идеи.

Всплеск от стримеров, в основном от Insym, дал примерно 225 добавлений в список желаемого за день, лучший день продаж около 65 копий. За первый месяц Steam принёс примерно 400 копий, Switch около 200: на консоли не было ни маркетингового толчка, ни накопленного списка желающих, и вторым запуском порт не стал.

Выводы автора: и ранний доступ, и выход версии 1.0 стоит считать полноценными маркетинговыми событиями, скидка от 20% помогает превратить список желаемого в покупки, а ограниченные окна видимости в Steam лучше тратить в начале. Отдельно напоминает, что первые десять отзывов критичны для показа оценки, а ключи покупками не считаются.

Все числа округлены, сырых данных Steamworks и выручки в посте нет. Но даже так это редкий случай, когда кто-то показывает Switch-порт без прикрас :)

@make_game

Читать полностью…

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

Карта, погода, враги и лут получают по своему генератору случайных чисел, чтобы правка одной системы не ломала другую. Но если все они засеяны одним seed, они выдают одну и ту же последовательность, и игрок, увидев результат в одной системе, предсказывает остальные. Автор блога knives for cats разобрал три способа с этим справиться.

Смещение начала последовательности для каждого генератора — пластырь: сдвиги надо делать большими, не все 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

Читать полностью…
Subscribe to a channel