Обновить
1
Ляленков Михаил@LyalenkovMA

инди разработчик.

1
Подписчики
Отправить сообщение

Оптимизация рендера 2D-персонажей в MonoGame: Прагматичный подход слоёв и инстансинга

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6.6K

Теги: #monogame #gamedev #оптимизация #csharp #графика #индиразработка

Введение: Проблема падающих FPS и желание красоты

Каждый разработчик 2D-игр, мечтающий о живом, населённом мире, рано или поздно упирается в суровую реальность: рендеринг множества уникальных анимированных персонажей — это дорого. Хочется дать игроку кастомизацию, смену снаряжения, разнообразие врагов, но классический подход «нарисовать каждый спрайт отдельно» ведёт к сотням draw calls и падению производительности.

В своей инди-игре (симуляторе жизни в мире фэнтези-жуков) я столкнулся с этой проблемой в полный рост. Мне нужны были десятки NPC на экране, каждый — с возможной сменой брони и оружия. Решением стала гибридная система рендеринга, основанная на разделении персонажей по уровням детализации и использовании инстансинга. В статье я разберу её архитектуру, код и полученные выгоды.

Часть 1: Анализ проблемы — почему «в лоб» не работает

Допустим, у персонажа 10 слоёв: тело, голова, ноги, броня, шлем, оружие в каждой руке и т.д. Если рендерить каждый слой отдельным вызовом SpriteBatch.Draw(), для 50 NPC мы получим 50 × 10 = 500 draw calls. При целевом значении в 60 FPS у нас есть всего ~16.6 мс на кадр. Если один draw call занимает ~0.1 мс, только на отрисовку персонажей уйдёт 50 мс — это в три раза больше бюджета!

Ключевой инсайт: Не всем персонажам нужна одинаковая детализация. Фоновому горожанину или стае врагов не требуется динамическая смена снаряжения. А главному герою — требуется.

Часть 2: Гибридная архитектура — 3 уровня детализации

Читать далее

Wellness System: когда прогресс в RPG измеряется не уровнями, а качеством жизни

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели7.8K

Привет, Хабр!

Меня зовут Ляленков Михаил, я инди-разработчик, и последние несколько месяцев проектирую игровую систему, которая кардинально переосмысливает прогрессию в RPG. Сегодня хочу поделиться концепцией Wellness System — попыткой заменить традиционный «фарм опыта» на осмысленное управление благополучием персонажа.

Эта статья будет полезна:

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Нижний Новгород, Нижегородская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Software Developer, Game Developer
Junior
C#
OOP
.NET
Linq