GameDev: разработка игр
7.63K subscribers
951 photos
203 videos
1 file
1.37K links
Всё про геймдев для девелоперов, художников, левел- и геймдизайнеров, сценаристов

Разместить рекламу: @tproger_sales_bot

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
Как Godot переименовывает символы с учётом контекста

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

В Godot 4.8 dev 7 появился инструмент переименования символов. Он учитывает контекст: различает идентификаторы классов, локальные переменные с одинаковыми именами, строки и комментарии.

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

Это возможность для проверки на копии проекта: переименовать символ и просмотреть изменения во всех затронутых скриптах. Godot 4.8 dev 7 пока остаётся сборкой для тестирования.
❤2
Как перейти с EDM4U на менеджер зависимостей Unity

Реклама, аналитика и покупки приносят в мобильную игру собственные Android- и iOS-библиотеки. Их версии могут конфликтовать ещё до запуска приложения.

Unity выпустила официальный External Dependency Manager через UPM. Он основан на EDM4U и читает те же XML-файлы зависимостей. Пакет бесплатен для Unity 2022.3 и новее; Google объявила deprecation EDM4U на 26 октября.

В инструкции перехода предлагают установить EDM и выбрать активный менеджер. Если EDM4U пришёл вместе со сторонним SDK, его советуют оставить до обновления этого SDK. После переключения стоит проверить сборки обеих платформ и разрешение нативных зависимостей.
Как начислять очки за победу над врагом в Godot

Враг может исчезнуть после смерти, телепортироваться или выйти из боя. Если начислять очки при любом удалении узла, игрок получит награду и за события, к которым не причастен.

В разборе системы очков награда привязана к сигналу depleted ресурса здоровья. Сигнал вызывает метод отдельного ScorePoint-компонента, который уже обновляет общий счёт.

Объекты получают компонент с нужным количеством очков. Работа с Autoload-счётчиком сосредоточена в одном месте: дверям, противникам и предметам не приходится напрямую вызывать singleton.

При добавлении нового способа исчезновения врага важно проверить, какое событие запускает награду. В этом примере условие — исчерпание здоровья.
❤2
Forwarded from Нейроканал
Showboat и Rodney помогают показать работу ИИ-агента

Саймон Уиллисон собирает демонстрации кода с помощью двух своих инструментов. Showboat выполняет команды и записывает их вывод в документ. Rodney управляет Chrome из командной строки и делает скриншоты интерфейса.

uvx showboat --help

Эту команду автор предлагает дать агенту: в справке есть всё необходимое, чтобы тот создал документ с демонстрацией новой функции.

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

#ии #инструменты
💔2
Как подготовить шейдеры для загрузки вместе с игрой

Первый запуск игры может уходить на компиляцию шейдеров. Advanced Shader Delivery позволяет заранее подготовить базу скомпилированных шейдеров и доставить её через поддерживаемую витрину.

Разработчик формирует SODB с состояниями конвейера и DXIL. Затем компилятор превращает её в PSDB для нужных GPU и драйверов.

Инструмент AMD и схема интеграции позволяют собрать PSDB, зарегистрировать её локально и проверить результат. Для работы компилятора достаточно x64 Windows-компьютера без GPU.

Поддержка ограничена конкретными конфигурациями: у пользователя требуется Windows 11 24H2 или новее, а в описанной схеме доставка идёт через Xbox PC app. Покрытие версий драйверов нужно учитывать при подготовке баз.
❤1
Как задать редкость и количество лута в Godot

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

В разборе системы лута RandomRangeCounter задаёт число попыток, RandomScene выбирает сцену по весам, Spawner2D создаёт предмет, а ArcDistribute2D размещает его рядом с источником.

В примере железо, кобальт и золото имеют шансы 60%, 35% и 5% на каждый бросок. Попытки независимы: один предмет может выпасть несколько раз, а при нулевом количестве попыток дропа не будет.

Компоненты соединяются сигналами; запуск привязан к исчерпанию здоровья врага или разрушаемого объекта.
❤5
Как перенести тактильную механику на геймпад

В Scritchy Scratchy игрок стирает покрытие билета. Мышь и палец подходят для этого естественно; управление стиком потребовало заново продумать движение и привязку к области билета.

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

Разработчики сохранили один Unity-проект, чтобы исправления и контент попадали во все сборки. Слой между Input System и игровой логикой скрывает детали устройств. Такой подход всё равно требует проверки самой механики на каждом способе ввода.
Forwarded from Типичный программист
🧑‍💻 Какие навыки помогают вам в разработке в 2026 году?

Что вы чаще используете в работе? В каких задачах помогает ИИ, а где проще справиться самостоятельно?

Мы решили собрать портрет современного разработчика — и приглашаем вас поделиться своим опытом. Расскажите, какие навыки вам пригодились и как вы используете ИИ. Если обходите его стороной, нам тоже интересно узнать почему.

Опрос анонимный и займёт около 5 минут. Результаты опубликуем в общем большом исследовании.

👉 Пройти опрос
Как Godot экономит видеопамять на далёких текстурах

Объект вдали занимает несколько пикселей, а его текстура может оставаться в видеопамяти в полном разрешении. В предварительной сборке Godot 4.8 dev 5 появился mip-level texture streaming: движок загружает нужные уровни детализации текстуры и освобождает лишние.

Стриминг включается в настройках проекта и требует перезапуска редактора. Затем текстуру нужно импортировать как Texture2D Streamed. Для отдельных ресурсов можно задать минимальное и максимальное разрешение, чтобы сохранить важные детали. Во время игры настройки доступны через TextureStreaming.

В разборе новой функции показаны параметры проекта и импорта. Механизм особенно полезен для больших 3D-миров с множеством текстур. Пока он доступен в предварительной сборке 4.8.
❤6
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: вторая игра помогла найти ошибки, которых первая не замечала.

📎 В репозитории проекта есть код, скрипты сборки и подробности оптимизации. Готового каталога игр здесь нет: понадобится свой образ диска, который скрипты превратят в локальную веб-страницу.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1
Как сбросить временную петлю без пересоздания всего мира

В Echo Weaver после каждой петли мир возвращается в исходное состояние, а герой сохраняет знания. Команда разделила данные по сроку жизни, чтобы сброс был управляемым.

Тяжёлая геометрия и маркеры переходов остаются загруженными. Сцена с игроком, менеджером игры и данными текущего забега при сбросе удаляется и создаётся заново. Активные части мира выгружаются, затем загружаются только нужные для начала петли.

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

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

Меню в духе Mega Man позволяет самому выбирать следующий уровень. Для финала нужно отдельно учитывать, какие этапы игрок уже прошёл.

В туториале для Godot 4 кнопка передаёт путь выбранной сцены в SceneTransition. Переход выполняется после завершения анимации перекрывающего экран эффекта.

Каждому уровню назначают уникальный идентификатор переключателя. При победе SwitchTrigger активирует его, а соответствующий SwitchMonitor отслеживает состояние. Узел SwitchGate проверяет, что все необходимые уровни пройдены, и разрешает переход к финалу.

Монитор на кнопке также меняет её вид после прохождения этапа. Условия удобно проверять во время запуска через значения SwitchSingleton: каждый раз проходить всю игру ради теста меню не придётся.
🔥1🥱1
Forwarded from Типичный программист
Общая папка для работы Claude Code и Codex

Луи-Франсуа Бушар собрал заметки, инструкции-скиллы, скрипты и итоги встреч в Obsidian. Его связка устроена так:

Папка хранит исходные материалы и решения
↓
Индекс указывает, где искать данные для задачи
↓
Claude Code планирует работу
↓
Codex выполняет задачи по его вызову

В описании этого рабочего процесса Бушар объясняет, зачем даёт агенту сведения для конкретной задачи. Начать предлагает с общей папки, короткого индекса и одного повторно используемого скилла.

#ии #инструменты