# 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`: ```cmd build.bat ``` Скрипт автоматически найдет установленный MASM32 (в `D:\MASM32`, `C:\masm32`, `F:\MASM32`) или MSVC BuildTools (`ml.exe` и `link.exe`) и соберет исполняемый файл `engine.exe`. ### Запуск ```cmd 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). Сборка редактора: ```cmd 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-агентов по написанию новых игр на этом движке.