Как перенести тактильную механику на геймпад
В Scritchy Scratchy игрок стирает покрытие билета. Мышь и палец подходят для этого естественно; управление стиком потребовало заново продумать движение и привязку к области билета.
В разборе переноса игры между платформами команда описывает итерации управления, вибрации и интерфейса. На Android силу вибрации пришлось проверять на разных устройствах: одинаковая настройка давала слишком сильный отклик на части телефонов.
Разработчики сохранили один Unity-проект, чтобы исправления и контент попадали во все сборки. Слой между Input System и игровой логикой скрывает детали устройств. Такой подход всё равно требует проверки самой механики на каждом способе ввода.
В Scritchy Scratchy игрок стирает покрытие билета. Мышь и палец подходят для этого естественно; управление стиком потребовало заново продумать движение и привязку к области билета.
В разборе переноса игры между платформами команда описывает итерации управления, вибрации и интерфейса. На Android силу вибрации пришлось проверять на разных устройствах: одинаковая настройка давала слишком сильный отклик на части телефонов.
Разработчики сохранили один Unity-проект, чтобы исправления и контент попадали во все сборки. Слой между Input System и игровой логикой скрывает детали устройств. Такой подход всё равно требует проверки самой механики на каждом способе ввода.
Forwarded from Типичный программист
🧑💻 Какие навыки помогают вам в разработке в 2026 году?
Что вы чаще используете в работе? В каких задачах помогает ИИ, а где проще справиться самостоятельно?
Мы решили собрать портрет современного разработчика — и приглашаем вас поделиться своим опытом. Расскажите, какие навыки вам пригодились и как вы используете ИИ. Если обходите его стороной, нам тоже интересно узнать почему.
Опрос анонимный и займёт около 5 минут. Результаты опубликуем в общем большом исследовании.
👉 Пройти опрос
Что вы чаще используете в работе? В каких задачах помогает ИИ, а где проще справиться самостоятельно?
Мы решили собрать портрет современного разработчика — и приглашаем вас поделиться своим опытом. Расскажите, какие навыки вам пригодились и как вы используете ИИ. Если обходите его стороной, нам тоже интересно узнать почему.
Опрос анонимный и займёт около 5 минут. Результаты опубликуем в общем большом исследовании.
👉 Пройти опрос
Как Godot экономит видеопамять на далёких текстурах
Объект вдали занимает несколько пикселей, а его текстура может оставаться в видеопамяти в полном разрешении. В предварительной сборке Godot 4.8 dev 5 появился mip-level texture streaming: движок загружает нужные уровни детализации текстуры и освобождает лишние.
Стриминг включается в настройках проекта и требует перезапуска редактора. Затем текстуру нужно импортировать как
В разборе новой функции показаны параметры проекта и импорта. Механизм особенно полезен для больших 3D-миров с множеством текстур. Пока он доступен в предварительной сборке 4.8.
Объект вдали занимает несколько пикселей, а его текстура может оставаться в видеопамяти в полном разрешении. В предварительной сборке Godot 4.8 dev 5 появился mip-level texture streaming: движок загружает нужные уровни детализации текстуры и освобождает лишние.
Стриминг включается в настройках проекта и требует перезапуска редактора. Затем текстуру нужно импортировать как
Texture2D Streamed. Для отдельных ресурсов можно задать минимальное и максимальное разрешение, чтобы сохранить важные детали. Во время игры настройки доступны через TextureStreaming.В разборе новой функции показаны параметры проекта и импорта. Механизм особенно полезен для больших 3D-миров с множеством текстур. Пока он доступен в предварительной сборке 4.8.
❤7
Forwarded from Веб-страница
This media is not supported in your browser
VIEW IN TELEGRAM
Gran Turismo 4 переехала в Chrome — с гонками, звуком и сохранениями
В PS2 Web Recomp старые игры запускают прямо во вкладке. Gran Turismo 4 проходит меню и гонки, играет музыку и сохраняет прогресс в браузере. По замерам автора, PAL-версия держит 50 FPS в Chrome на встроенной графике ноутбука при удвоенном разрешении PS2.
Машинный код игры заранее переводят в C++, затем собирают в WebAssembly. Графику рисует WebGPU, а окружение воспроизводит нужные части системы и железа PS2. После Gran Turismo автор запустил God of War II: вторая игра помогла найти ошибки, которых первая не замечала.
📎 В репозитории проекта есть код, скрипты сборки и подробности оптимизации. Готового каталога игр здесь нет: понадобится свой образ диска, который скрипты превратят в локальную веб-страницу.
В PS2 Web Recomp старые игры запускают прямо во вкладке. Gran Turismo 4 проходит меню и гонки, играет музыку и сохраняет прогресс в браузере. По замерам автора, PAL-версия держит 50 FPS в Chrome на встроенной графике ноутбука при удвоенном разрешении PS2.
Машинный код игры заранее переводят в C++, затем собирают в WebAssembly. Графику рисует WebGPU, а окружение воспроизводит нужные части системы и железа PS2. После Gran Turismo автор запустил God of War II: вторая игра помогла найти ошибки, которых первая не замечала.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
Как сбросить временную петлю без пересоздания всего мира
В Echo Weaver после каждой петли мир возвращается в исходное состояние, а герой сохраняет знания. Команда разделила данные по сроку жизни, чтобы сброс был управляемым.
Тяжёлая геометрия и маркеры переходов остаются загруженными. Сцена с игроком, менеджером игры и данными текущего забега при сбросе удаляется и создаётся заново. Активные части мира выгружаются, затем загружаются только нужные для начала петли.
Состояние забега хранится в словаре и очищается. Данные, которые должны пережить петлю, записываются на диск; объекты читают свои значения при загрузке. Переносимые предметы пришлось вынести в постоянный слой: привязка к отдельным частям мира приводила к пропаже ключей и дубликатам.
В интервью разработчиков разобраны архитектура сброса и ошибки на границах этих слоёв.
В Echo Weaver после каждой петли мир возвращается в исходное состояние, а герой сохраняет знания. Команда разделила данные по сроку жизни, чтобы сброс был управляемым.
Тяжёлая геометрия и маркеры переходов остаются загруженными. Сцена с игроком, менеджером игры и данными текущего забега при сбросе удаляется и создаётся заново. Активные части мира выгружаются, затем загружаются только нужные для начала петли.
Состояние забега хранится в словаре и очищается. Данные, которые должны пережить петлю, записываются на диск; объекты читают свои значения при загрузке. Переносимые предметы пришлось вынести в постоянный слой: привязка к отдельным частям мира приводила к пропаже ключей и дубликатам.
В интервью разработчиков разобраны архитектура сброса и ошибки на границах этих слоёв.
Как открыть финал после прохождения уровней в любом порядке
Меню в духе Mega Man позволяет самому выбирать следующий уровень. Для финала нужно отдельно учитывать, какие этапы игрок уже прошёл.
В туториале для Godot 4 кнопка передаёт путь выбранной сцены в
Каждому уровню назначают уникальный идентификатор переключателя. При победе
Монитор на кнопке также меняет её вид после прохождения этапа. Условия удобно проверять во время запуска через значения
Меню в духе Mega Man позволяет самому выбирать следующий уровень. Для финала нужно отдельно учитывать, какие этапы игрок уже прошёл.
В туториале для Godot 4 кнопка передаёт путь выбранной сцены в
SceneTransition. Переход выполняется после завершения анимации перекрывающего экран эффекта.Каждому уровню назначают уникальный идентификатор переключателя. При победе
SwitchTrigger активирует его, а соответствующий SwitchMonitor отслеживает состояние. Узел SwitchGate проверяет, что все необходимые уровни пройдены, и разрешает переход к финалу.Монитор на кнопке также меняет её вид после прохождения этапа. Условия удобно проверять во время запуска через значения
SwitchSingleton: каждый раз проходить всю игру ради теста меню не придётся.🔥2🥱1
Forwarded from Типичный программист
Общая папка для работы Claude Code и Codex
Луи-Франсуа Бушар собрал заметки, инструкции-скиллы, скрипты и итоги встреч в Obsidian. Его связка устроена так:
Папка хранит исходные материалы и решения
↓
Индекс указывает, где искать данные для задачи
↓
Claude Code планирует работу
↓
Codex выполняет задачи по его вызову
В описании этого рабочего процесса Бушар объясняет, зачем даёт агенту сведения для конкретной задачи. Начать предлагает с общей папки, короткого индекса и одного повторно используемого скилла.
#ии #инструменты
Луи-Франсуа Бушар собрал заметки, инструкции-скиллы, скрипты и итоги встреч в Obsidian. Его связка устроена так:
Папка хранит исходные материалы и решения
↓
Индекс указывает, где искать данные для задачи
↓
Claude Code планирует работу
↓
Codex выполняет задачи по его вызову
В описании этого рабочего процесса Бушар объясняет, зачем даёт агенту сведения для конкретной задачи. Начать предлагает с общей папки, короткого индекса и одного повторно используемого скилла.
#ии #инструменты
Forwarded from Типичный программист
Типичный программист
Общая папка для работы Claude Code и Codex Луи-Франсуа Бушар собрал заметки, инструкции-скиллы, скрипты и итоги встреч в Obsidian. Его связка устроена так: Папка хранит исходные материалы и решения ↓ Индекс указывает, где искать данные для задачи ↓ Claude…
Приходится ли вам копипастить данные и какие именно, когда переходите из одной нейросети в другую?
Anonymous Poll
18%
Код
28%
Описание задачи
14%
Документацию
18%
Результаты работы
20%
Настройки и контекст: историю чатов, промпты, скиллы
50%
Ничего, использую один инструмент
🤪4👎2
Как H3VR2 распределяет бюджет кадра в VR
В H3VR2 оружие моделируют с учётом массы компонентов, пружин и свойств патронов. Для такой симуляции на Quest 3 команда заранее определяла, на что можно потратить время кадра.
Баллистику построили на ECS и Burst. Это позволило уменьшить шаги расчёта столкновений, точнее учитывать сопротивление воздуха и прохождение снаряда через разные материалы. Внутренние механизмы оружия рассчитываются собственными системами; PhysX работает с объектами в общем игровом пространстве.
Подробные модели оружия занимают значительную часть бюджета рендеринга, поэтому окружение проектировали с ограничениями на полигоны, текстуры и плотность объектов. Для настройки сотен вариантов оружия команда создала инспекторы с вычислениями и проверками на базе Odin.
В разборе разработки объясняют, как эти ограничения повлияли на архитектуру и дизайн уровней.
В H3VR2 оружие моделируют с учётом массы компонентов, пружин и свойств патронов. Для такой симуляции на Quest 3 команда заранее определяла, на что можно потратить время кадра.
Баллистику построили на ECS и Burst. Это позволило уменьшить шаги расчёта столкновений, точнее учитывать сопротивление воздуха и прохождение снаряда через разные материалы. Внутренние механизмы оружия рассчитываются собственными системами; PhysX работает с объектами в общем игровом пространстве.
Подробные модели оружия занимают значительную часть бюджета рендеринга, поэтому окружение проектировали с ограничениями на полигоны, текстуры и плотность объектов. Для настройки сотен вариантов оружия команда создала инспекторы с вычислениями и проверками на базе Odin.
В разборе разработки объясняют, как эти ограничения повлияли на архитектуру и дизайн уровней.
Эмодзи в комментарии сломал пинбол на Android
После сентябрьского обновления Android 17 Visual Pinball перестал загружать столы с эмодзи в комментариях к VBScript. Парсер выдавал
Причина оказалась в системной библиотеке bionic. Функция
Опубликованные исходники отличались от библиотеки на телефоне, поэтому автор дошёл до дизассемблера. Сотрудник Google подтвердил баг и нашёл проблемы в тестах: один проверял только ASCII, другой содержал неверный ожидаемый результат.
Разработчики libwinevbs обошли ошибку, заменив проблемные вызовы обычными циклами. На GitHub есть багрепорт с воспроизведением и исправление для игры.
После сентябрьского обновления Android 17 Visual Pinball перестал загружать столы с эмодзи в комментариях к VBScript. Парсер выдавал
Invalid character, хотя комментарий вообще не должен исполняться.Причина оказалась в системной библиотеке bionic. Функция
wcspbrk() ищет конец комментария по переводу строки, но ошибочно останавливалась на эмодзи. При определённом наборе разделителей сбой затрагивал и кириллицу.Опубликованные исходники отличались от библиотеки на телефоне, поэтому автор дошёл до дизассемблера. Сотрудник Google подтвердил баг и нашёл проблемы в тестах: один проверял только ASCII, другой содержал неверный ожидаемый результат.
Разработчики libwinevbs обошли ошибку, заменив проблемные вызовы обычными циклами. На GitHub есть багрепорт с воспроизведением и исправление для игры.
Как доставлять Gaussian Splat-модели в мобильный браузер
Фотореалистичную 3D-модель мало быстро отрисовать: сначала её нужно загрузить на телефон. У Solaya типичный оптимизированный ресурс занимает 30–60 МБ, поэтому доставка данных стала отдельной частью архитектуры.
Модели хранятся сжатыми в blob-хранилище, движок PlayCanvas доставляется через CDN. Сжатие применяется на уровне модели и CDN, а кеширование на ближайших к пользователю узлах уменьшает задержку и нагрузку на хранилище.
При пересборке ресурса сбрасывается кеш только этой модели. Остальные данные остаются доступными из прогретого кеша. Один просмотрщик используется в вебе и мобильном приложении.
В интервью команды Solaya разобран сервис для визуализации товаров. Его схема доставки полезна и для веб-проектов с тяжёлыми 3D-ресурсами. Для игровых столкновений splat-модели понадобится отдельно подготовленная геометрия.
Фотореалистичную 3D-модель мало быстро отрисовать: сначала её нужно загрузить на телефон. У Solaya типичный оптимизированный ресурс занимает 30–60 МБ, поэтому доставка данных стала отдельной частью архитектуры.
Модели хранятся сжатыми в blob-хранилище, движок PlayCanvas доставляется через CDN. Сжатие применяется на уровне модели и CDN, а кеширование на ближайших к пользователю узлах уменьшает задержку и нагрузку на хранилище.
При пересборке ресурса сбрасывается кеш только этой модели. Остальные данные остаются доступными из прогретого кеша. Один просмотрщик используется в вебе и мобильном приложении.
В интервью команды Solaya разобран сервис для визуализации товаров. Его схема доставки полезна и для веб-проектов с тяжёлыми 3D-ресурсами. Для игровых столкновений splat-модели понадобится отдельно подготовленная геометрия.
Что добавить в прогрессию, когда игрок нашёл выигрышную стратегию
В About Time игрок набирает нужное количество очков, получает награды и вкладывает их в улучшения. Геймдизайнер Henrique Campos видит риск: найдя сильную комбинацию, игрок может перестать искать новые варианты.
В разборе игровой петли автор предлагает награждать прохождение дальних раундов новыми шестерёнками или слотами. Между забегами можно открывать стартовые наборы часов и улучшения, меняющие вероятность появления нужных элементов.
Ещё одна идея — дерево улучшений за отдельную валюту. Оно позволило бы выбирать направление развития между попытками. Необязательные детали истории могли бы дать дополнительный повод продолжать игру.
Это предложения по развитию About Time. Разбор показывает, как отделить рост чисел от открытия новых возможностей и проверить, остаются ли у игрока интересные решения после освоения основной механики.
В About Time игрок набирает нужное количество очков, получает награды и вкладывает их в улучшения. Геймдизайнер Henrique Campos видит риск: найдя сильную комбинацию, игрок может перестать искать новые варианты.
В разборе игровой петли автор предлагает награждать прохождение дальних раундов новыми шестерёнками или слотами. Между забегами можно открывать стартовые наборы часов и улучшения, меняющие вероятность появления нужных элементов.
Ещё одна идея — дерево улучшений за отдельную валюту. Оно позволило бы выбирать направление развития между попытками. Необязательные детали истории могли бы дать дополнительный повод продолжать игру.
Это предложения по развитию About Time. Разбор показывает, как отделить рост чисел от открытия новых возможностей и проверить, остаются ли у игрока интересные решения после освоения основной механики.
❤2