8.3 KiB
8.3 KiB
EBLAN ENGINE 3D
Выделенный независимый модульный игровой 2.5D движок на чистом x86 Ассемблере (MASM32)
Разработан для удобного создания ретро-игр (Wolfenstein 3D / Doom style) и комфортной совместной разработки с AI-агентами.
⚡ Особенности
- 100% чистый ассемблер (x86 MASM32): без сторонних зависимостей, DirectX, OpenGL или C-рантаймов.
- Программный рендеринг (Software DIBits Raycaster):
- 320x240 внутренний буфер кадра, масштабируемый до 1280x960 через
StretchDIBits. - DDA-трассировка лучей (320 лучей на кадр, угол обзора ~67.5°).
- Текстурирование стен (128x128 32-bit BGRA).
- Коррекция эффекта рыбьего глаза (fish-eye correction).
- Глубинное затенение (дистанционный туман) и раздельное затенение граней стен для объема.
- Поддержка трехмерных билборд-спрайтов: текстурирование, сортировка far-to-near, z-буферизация (
depthBuffer), хромакей-прозрачность, масштаб.
- 320x240 внутренний буфер кадра, масштабируемый до 1280x960 через
- Процедурные текстуры из коробки: генерируются на лету при старте (кирпич, дерево, камень, металл, двери, колонны, стекло, мрамор) — движок работает автономно без внешних файлов.
- Внешний пак текстур (опционально):
assets/textures/texturepack.bin(16 слотов 128×128 BGRA + заголовокEBTX) перекрывает процедурные. Генерация из атласа KAZIK:python tools\make_texturepack.py. - Интерактивная карта и физика:
- Сетка 32x32, гладкое скольжение вдоль стен при столкновениях.
- Интерактивные двери (открытие/закрытие по клавише
E). - Перемещение на
W/A/S/D(включая стрейф в стороны) + спринт наShift. - Поворот камеры на
Стрелочки влево/вправо.
- 2D UI Оверлей и Радар:
- Встроенный растровый шрифт 8x8 (вывод строк, чисел с тенью).
- Топ-даун радар/миникарта с отображением игрока, конуса взгляда и стен (переключение на
M). - Счетчик FPS со стабильным 60 FPS локером (
timeBeginPeriod).
🚀 Быстрый старт и сборка
Сборка одной командой
Запустите файл build.bat:
build.bat
Скрипт автоматически найдет установленный MASM32 (в D:\MASM32, C:\masm32, F:\MASM32) или MSVC BuildTools (ml.exe и link.exe) и соберет исполняемый файл engine.exe.
Запуск
engine.exe
🎮 Управление в демо-уровне
| Клавиша | Действие |
|---|---|
| W / S | Движение вперед / назад |
| A / D | Стрейф (шаг) влево / вправо |
| Стрелочки влево / вправо | Поворот камеры |
| Shift | Спринт (ускорение) |
| E / Пробел | Взаимодействие (открыть/закрыть дверь перед собой) |
| M | Включить/выключить миникарту (радар) |
| Escape | Выход из игры |
🎨 Визуальный редактор уровней (EblanStudio)
Движок оснащен нативным высокопроизводительным визуальным редактором уровней в стиле Unity / Godot 4:
- Написан на C++17 + Dear ImGui + DirectX 11.
- Запуск в 1 клик через
run_editor.batилиeditor/editor.exe. - Мгновенный плейтест (F5): редактор автоматически сериализует уровень в бинарный формат
assets/map.datи запускает ассемблерный движокengine.exe. - Undo/Redo (Ctrl+Z / Ctrl+Y) — история до 64 действий (сетка, спавн, цвета, спрайты).
- Файловые диалоги Windows: Ctrl+O (открыть), Ctrl+S (сохранить), Ctrl+Shift+S (сохранить как).
- Инструменты:
- Кисть [B]: рисование стен выбранного типа (Кирпич, Дерево, Камень, Металл, Дверь, Колонна, Стекло, Мрамор).
- Ластик [E]: очистка ячеек карты (или ПКМ на холсте).
- Заливка [F]: Flood Fill замкнутых областей карты.
- Точка спавна игрока [P]: клик для перемещения спавна игрока и ползунок угла обзора.
- Спрайты [S]: расстановка трехмерных объектов/билбордов (фонари, бочки, статуи), перетаскивание мышью по холсту.
- Инспектор спрайтов: позиция (суб-тайл), слот текстуры (1..15), масштаб (0.25x-4x), удаление.
- Инспектор свойств: настройка цветов потолка и пола в реальном времени, угла старта.
- Навигация: масштабирование колесиком мыши (Zoom), панорамирование зажатием средней кнопки мыши (MMB Pan).
Сборка редактора:
cd editor
build_editor.bat
📁 Структура проекта
main.asm— точка входа, цикл сообщений Win32, таймер 60 FPS, оркестрация кадра.run_editor.bat— запуск визуального редактора EblanStudio.editor/— исходники и билд-скрипт визуального C++ Dear ImGui редактора.editor/src/level_format.h— бинарный протокол карты (EBLN).editor/src/editor_app.h/editor_app.cpp— логика UI, холста, палитры, спавнов и запуска плейтеста.editor/src/main.cpp— DirectX 11 окно и интеграция Dear ImGui.editor/build_editor.bat— компиляция редактора через MSVC BuildTools.
include/engine_defs.inc— размеры экрана, константы углов, цвета, коды клавиш, структуры.include/engine_data.inc— видеобуферscreenBuffer, z-буфер, координаты игрока, сетка карты, текстуры.include/engine_math.inc— генератор таблиц синусов/косинусов через FPU, RNG, 16.16 math.include/engine_map.inc— хранилище карты, загрузчикassets/map.dat, коллизии, двери.include/engine_textures.inc— встроенный процедурный генератор текстур стен.include/engine_input.inc— опрос клавиатуры черезGetAsyncKeyState.include/engine_physics.inc— физика игрока, стрейф, скольжение по стенам.include/engine_raycaster.inc— ядро лучевого 2.5D рендера и отрисовка спрайтов.include/engine_render2d.inc— примитивы (DrawPixel, Rect, Outline), шрифт 8x8, миникарта.include/font8x8.inc— битовые маски ASCII-символов.AGENTS.md— подробное руководство для AI-агентов по написанию новых игр на этом движке.