| Vuvk | Дата: Четверг, сегодня, 15:30 | Сообщение # 1 |
|
заслуженный участник
Сейчас нет на сайте
| Название: NoName Engine 2.5D (я просто не придумал название) Жанровая направленность: Boomer Shooter Язык программирования: Python + Cython Платформа: Linux, Windows, вероятно MacOS, но не тестировал Графический API: OpenGL Зависимости: wxPython, pygame-ce, PyOpenGL Лицензия: GNU GPL v3 Автор: Anton <Vuvk> Shcherbatykh
Паблик ВКонтакте Зеркало паблика в Telegram
Исходный код: Основной репозиторий на GitFlic Зеркало на GitVerse
Сборки: GitFlic GitVerse
Всем привет! Я вдруг решил осветить своё текущее хобби и вести лог разработки дополнительно здесь. Надеюсь, не выгоните ))
NoName Engine 2.5D - это побочный продукт от желания разобраться как работает движок с портальным рендерингом от Кена Сильвермана Build (игры Duke Nukem 3D, Blood, ShadowWarior, Redneck Rampage и т.д.). В какой-то момент что-то стало получаться и я решил, что нужно делать инструментарий по работе с движком и тут понеслось...
Итак, это движок со встроенным редактором карт, выполненным в духе Build Engine: редактирование полигонов, стен, порталов и спрайтов в двумерном виде с мгновенным 3D-предпросмотром. Рендеринг построен на портальной отсечке невидимых полигонов и пакетном рендеринге на Legacy OpenGL (фиксированный конвейер + GLSL-шейдеры поверх). Критичные участки математики ускорены через Cython, при этом движок полностью работоспособен и без ускорителей — используется чисто Python-запасной код.
═══════════════════════════════════════════════════════════════════════════════
ВОЗМОЖНОСТИ ДВИЖКА
• Портальная архитектура мира — полигоны, стены, перемычки (верхние и нижние части порталов), полы и потолки с независимым управлением высотами. • Агрессивный куллинг видимых полигонов через 1D Z-буфер и обход соседей портала — рисуются только реально видимые поверхности. • Пакетный рендеринг (BatchRenderer): один draw call на батч материала (glDrawArrays, клиентские вершинные массивы), запечённые нормали, порядок отрисовки и текстурные координаты. • 3D-предпросмотр в стиле FPS со свободным обзором мышью. • Шейдерный менеджер с кэшированием uniforms; шейдеры материалов: базовый (base) и «жидкость» (water) — для воды, лавы, слизи и т.п. • Туман, освещение полигонов (яркость и цвет), отсечение задних граней, отключение текстур и wireframe-режим — всё переключается в предпросмотре. • 3D-звук на основе pygame.mixer (пространственный аудио-менеджер) и 2D-звуки для событий игрока/меню и т.д. • Спрайты с пивотами (bottom/center/top) и тремя режимами ориентации: биллборд (всегда лицом к камере), вращение вокруг оси, фиксированный поворот. • Анимированные материалы и спрайты (кадры с префиксом «+»), анимация с настраиваемой частотой кадров. • Цвет и яркость полигона накладываются на все спрайты внутри него. • Эффекты полигонов: предустановленные (тряска, мерцание/пульсация освещения) и кастомные внешние скрипты на языке Python. • Эффекты камеры: проседание при приземлении, тряска при сильном ударе, эффекты от подъёма на ступеньки. • Физический движок: физические тела, столкновения с полигонами, гравитация, зашагивание на ступеньки до определённой высоты. • Оружие в руках игрока: покачивание, наклоны, проседания, анимация, смена оружия с эффектом «выползания», стрельба через рейкастинг, кучность, количество пуль и дальность выстрела. • Озвучка игрока: шаги, прыжки, приземления. • BMP-шрифты, отображаемые прямо в OpenGL.
═══════════════════════════════════════════════════════════════════════════════
РЕДАКТОР КАРТ
• 2D-канва с сеткой, масштабированием и прокруткой (в том числе через Ctrl + колесо и Shift + колесо). • Режимы: вершины (V), рисование сегментов (D), выделение сегментов (S), выделение полигонов (P), закраска материалом из предпросмотра (F), размещение спрайтов (X). • Многоточечное выделение вершин (Ctrl + ЛКМ) и перенос с привязкой к сетке. • Рисование сегментов с авторазбиением существующих сегментов в точке пересечения и корректным обновлением полигонов при разбиении. • Удаление вершин, сегментов и полигонов; изменение высот пола/потолка как из редактора, так и прямо из окна предпросмотра (Home/End, PageUp/PageDown). • Инструмент наложения любого материала на стены, порталы, полы и потолки одним кликом в предпросмотре. • Размещение, перезапись и удаление спрайтов прямо с 2D-карты; приклеивание спрайта пивотом к полу, потолку или центру полигона. • Выделение сегментов и полигонов в окне предпросмотра с подсветкой и синхронизацией с редактором. • Отображение положения камеры игрока на 2D-карте. • Выбор материала, шейдера и настройка полигонов через поля ввода..
═══════════════════════════════════════════════════════════════════════════════
ГЕНЕРАТОРЫ МАТЕРИАЛОВ И СПРАЙТОВ
Отдельные инструмент автоматически создаёт из дерева текстур (png/jpg/bmp:
• Материалы (.mat) с шейдером, кадрами и анимацией. Имена с префиксом «+» группируются в анимированные материалы (кадры сортируются по числовому суффиксу). Имена, содержащие water/liquid/slime/sludge, получают шейдер «жидкость». • Спрайты (.spr) с пивотом (bottom/center/top), режимом ориентации, осью и углом поворота. Пивот может переопределяться суффиксом в имени текстуры.
═══════════════════════════════════════════════════════════════════════════════
ПРОИЗВОДИТЕЛЬНОСТЬ И СБОРКА
• Горячая математика реализована дважды: в Cython (*.pyx) и в чистом Python (запасной код). При наличии собранных .pyd-модулей движок работает заметно быстрее. • Сборка релизов через Nuitka: все программы (editor, runner) компилируются в standalone-режиме под натив.
═══════════════════════════════════════════════════════════════════════════════
ПЛАНЫ В РАЗРАБОТКЕ
Взаимодействие физических тел между собой, HUD игрока, размещение сущностей (включая игрока) и источников звука на карте, редактор материалов/спрайтов, шейдер «металл», текстуры с прозрачностью и палитрой, отмена операций, вынос параметров оружия в конфиги и многое другое.
Это всё ещё не готовый продукт, но уже можно скачать сборку и поиграться с редактором и средой запуска.
═══════════════════════════════════════════════════════════════════════════════
СКРИНЫ
═══════════════════════════════════════════════════════════════════════════════
ВИДЕО
Старое:
Сообщение отредактировал Vuvk - Четверг, 24 Сентября 2026, 17:03 |
|
|
| |