EBLAN_ENGINE/README.md

8.3 KiB
Raw Blame History

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), хромакей-прозрачность, масштаб.
  • Процедурные текстуры из коробки: генерируются на лету при старте (кирпич, дерево, камень, металл, двери, колонны, стекло, мрамор) — движок работает автономно без внешних файлов.
  • Внешний пак текстур (опционально): 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-агентов по написанию новых игр на этом движке.