Как я начал учить C# с написания своего движка: 500 000 объектов и 60 FPS на «затычке» GT 1030
Обычно обучение программированию начинают с калькуляторов. Я решил, что это скучно, и моим первым проектом на C# стал BusEngine — высокопроизводительный движок на базе OpenGL / OpenTK.
Моя цель — создать инструмент, который работает там, где гиганты индустрии даже не запускаются.
Железо для тестов: Когда нет денег на RTX
Я не тестирую движок на топовых картах не из какой-то «высокой принципиальности» — у меня их просто нет, как нет и лишних средств на апгрейд. Мой рабочий стенд собран из того, что было доступно, и это настоящий вызов для любого софта:
- GPU: NVIDIA GeForce GT 1030 2 GB GDDR5 (Asus).
- CPU: AMD Athlon II x4 645.
- RAM: 4 GB 1333MHz.
- Disk: HDD SMR (медленный диск с «черепичной» записью, который не прощает ошибок при работе с файлами).
- OS: Windows 7, OpenGL 4.6.
Именно отсутствие мощного железа и медленный диск заставили меня с самого первого дня вгрызаться в оптимизацию и писать свои решения там, где стандартные библиотеки слишком тяжелы.
Низкий порог вхождения: Движок, который не мешает работать
Современные движки превратились в монстров, которые требуют топового железа даже для пустой сцены. BusEngine идёт другим путём:
- Мгновенный старт: Движок весит считанные мегабайты и запускается за секунды.
- Легкость освоения: Я сам учу C# в процессе разработки, поэтому архитектура создаётся максимально понятной и логичной.
- Работа на любом «ведре»: Вам не нужно покупать RTX 4090, чтобы просто начать делать игру. Движок оптимизирован под старое железо и медленные диски (HDD SMR) с первого дня.
Реальные цифры (BusEngine v0.4.0.5)
Когда ты ограничен в ресурсах, каждый кадр на счету. Вот чего удалось добиться на этом стенде:
- Пустая сцена (без отрисовки): Стабильные 20 000 FPS.
- 500 000 кубов во вращении (6 000 000 треугольных полигонов):
1920x1080 (Full HD): 62 FPS
2560x1440 (2K): 61 FPS
3840x2160 (4K): 50 FPS
Даже в экстремальном разрешении 15360x8640 движок выдаёт 35 FPS.
Большинство современных движков на этой конфигурации начинают тормозить уже в пустом редакторе. BusEngine же позволяет работать и видеть результат мгновенно.
За счет чего это работает?
- Свой бинарный формат .BEM: Модели хранятся в байтах. Никакого тяжелого парсинга текста — видеокарта получает данные максимально быстро.
- RAM-кэширование: Это критически важно при работе на HDD SMR. Ассеты загружаются в оперативную память один раз, поэтому медленный диск не мешает работе движка после старта.
- UI на Chromium 109: Интегрировал браузер для отрисовки интерфейсов через HTML/CSS/JS прямо на 3D-текстурах.
- Обучение через код: Я начал учить C# прямо в процессе написания архитектуры, сразу ставя во главу угла производительность.
Что дальше? Прыжок в 0.5 и визуальный редактор
Релиз BusEngine v0.4.2 — это важная точка, в которой я довожу до ума лаунчер, работу с медиа и документацию. Но сразу за ней я планирую переход к v0.5. В планах:
- Система анимаций.
- Полноценный менеджмент уровней.
- Собственный визуальный редактор: Я хочу сделать его лёгким и доступным, чтобы разработка не превращалась в борьбу с тормозами инструментария.
- В планах — поддержка тяжелых FBX до 4 ГБ с потоковой конвертацией. Готовьте свои бенчмарки (обсуждение карты Sponza (Intel) в комментариях).
Ищу поддержку
BusEngine — это open-source проект (MIT), и я не собираюсь продавать на него исключительные права. Движок всегда будет развиваться под моим началом.
Однако разработка требует времени и ресурсов. Поэтому для крупных инвесторов я предлагаю формат, который выгоден обеим сторонам:
- Право на ребрендинг: Вы можете получить копию кода, лаунчера и сайта документации с правом переименовать их и выдавать за собственный продукт. При этом основной проект BusEngine остаётся за мной и продолжает развиваться.
- White-label решения: Инвестор получает готовую технологическую базу, которую может использовать под своим брендом, не тратя годы на разработку ядра с нуля.
- Ускорение проекта: Все привлеченные средства идут на то, чтобы я мог заниматься движком фултайм (200+ часов в месяц) и быстрее выпустить версию 0.5 с редактором.
Это честный договор: сообщество получает развивающийся открытый движок, а инвестор — мощную технологию для своих бизнес-задач.
Как вы считаете — есть ли смысл в такой экстремальной оптимизации сегодня, или «железо всё стерпит»?