Как я начал учить C# с написания своего движка: 500 000 объектов и 60 FPS на «затычке» GT 1030

BusEngine v0.4.2 1000 планет
BusEngine v0.4.2 1000 планет

Обычно обучение программированию начинают с калькуляторов. Я решил, что это скучно, и моим первым проектом на 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)

Когда ты ограничен в ресурсах, каждый кадр на счету. Вот чего удалось добиться на этом стенде:

  1. Пустая сцена (без отрисовки): Стабильные 20 000 FPS.
  2. 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. В планах:

  1. Система анимаций.
  2. Полноценный менеджмент уровней.
  3. Собственный визуальный редактор: Я хочу сделать его лёгким и доступным, чтобы разработка не превращалась в борьбу с тормозами инструментария.
  4. В планах — поддержка тяжелых FBX до 4 ГБ с потоковой конвертацией. Готовьте свои бенчмарки (обсуждение карты Sponza (Intel) в комментариях).

Ищу поддержку

BusEngine — это open-source проект (MIT), и я не собираюсь продавать на него исключительные права. Движок всегда будет развиваться под моим началом.

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

  • Право на ребрендинг: Вы можете получить копию кода, лаунчера и сайта документации с правом переименовать их и выдавать за собственный продукт. При этом основной проект BusEngine остаётся за мной и продолжает развиваться.
  • White-label решения: Инвестор получает готовую технологическую базу, которую может использовать под своим брендом, не тратя годы на разработку ядра с нуля.
  • Ускорение проекта: Все привлеченные средства идут на то, чтобы я мог заниматься движком фултайм (200+ часов в месяц) и быстрее выпустить версию 0.5 с редактором.

Это честный договор: сообщество получает развивающийся открытый движок, а инвестор — мощную технологию для своих бизнес-задач.

Посмотреть, как «затычка» и старый HDD тянут 6 миллионов полигонов, можно у меня на канале: YouTube или запустить на своём железе скачав на itch?

Как вы считаете — есть ли смысл в такой экстремальной оптимизации сегодня, или «железо всё стерпит»?

14
3
3
2