Навигация
Поддержать материально
Steam Greenlight

Логотипы
Медальки
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Темы форума
Разрешите представит…
Сегодня, 16:13
 BlitzID
189 - Race V
Сегодня, 06:54
 VoroneTZ
189 - ?
2.07.2025
 BlitzID
В каком банке открыт…
29.06.2025
 Dan
WoL
23.06.2025
 PapkaI_Igrodel
Привет выжившие
23.06.2025
 PapkaI_Igrodel
MarketGameV4
13.06.2025
 IAmNotARobot
188 - RPG
17.02.2025
 Mefistofel
Galactic Showdown -…
30.01.2025
 Darthman
188 - ?
1.01.2025
 Mefistofel
Сейчас на сайте
Гостей: 3
На сайте нет зарегистрированных пользователей

Пользователей: 1,795
новичок: BlitzID
Обсуждение «Крошечный движок»
mv2
Avatar пользователя

Опубликовано 01.06.2021 11:47 (4 года назад)    #
За свои ~8 лет проганья я понял одну очень важную вещь. Если ты пишешь какую-то миддлварь(библиотеку и.т.п), она должна уметь минимальный требуемый функционал. Так же вышло и с движками, свои первые обертки над DX9 я выкладывал сюда 5 лет назад, и они были максимально просты(на уровне LoadSprite, DrawSprite, LoadSound, PlaySound), и я на них сделал даже одну-две игры. Время шло, опыт набирался, мой миддлварь стал быть чем-то сложным и неповоротливым - огромная куча абстракций, оно умело все, но в то же время следить за кодовой базой стало сложно, начал путаться в своей же библиотеке. На этом движке я так и не сделал ни одной игры, любой потуг заканчивался наращиванием функционала движка.

Поэтому я решил написать небольшой 3D движок, который мог бы выполнять 3 самых важных вещи - рисовать модельки/спрайты используя несложную систему материалов, играть звук, обрабатывать ввод. Всё, никаких сценграфов, никакого сложного API, весь движок умещается в ~50 экспортированных функций.

Рендер:
DX9 рендеререр с заделом под мультирендер, правда статичный(порт на GLES будет первой задачей после релиза), только FFP, фактически все гапи умещается в 4 функции: wgeSetTransform, wgeSetMaterial, wgeSetProjectionParams, wgeDrawVertices, ну и текстуры конечно.

Все рендерстейты задаются через материалы(чуть позже будет стенсил), под капотом все три захардкоженных слоя(диффуз + отражение + лайтмап) смешиваются быстро и эффективно. Сначала хотел сделать как и раньше в своих движках - многослойную(до 8 слоев) программируемую систему материалов на манер шейдеров в Quake 3, но потом подумал что это не нужно.

Анимация только морфинг, скиннинг ненужон учитывая простоту конкурсных игр. Хотел запилить поддержку BSP из первой халвы, но там свои заморочки есть с индексами и UV, поэтому чуть позже будет поддержка BSP из Q3.

Из оптимизаций будет куллинг по дистанции с затуханием, фрустум, возможно будет квадтри. Алсо попробую сделать куллинг по перекрытию - откопаем так называемый Occlusion Query(кстати зачем его выпилили из новых API?). Батчинга нет даже для 2D.
В идеале хочу чтобы движок запускался и работал на GeForce 2. Пеки с такими хар-ками есть, так что для тестов буду запускать и там.

Текст только ASCII, причем для шрифтов юзаю древнюю прогу xproger'а - xfont.

Звук:
Ну тут все просто, как везде.

Ввод:
Пока поддержка только клавиатур, затем - мышей и геймпадов. Пока никаких аксисов еще нет.

Движок писался для души, чисто сюда на конкурсы или на гамин, или просто что то для души сделать. Для сложного есть юнити.
Race V:Не участвую.
mv2
Avatar пользователя

Опубликовано 01.06.2021 11:49 (4 года назад)    #
Алсо касательно исходников, сначала хочу SDK зарелизить с заголовочником, если кому понравится то и исходники подъедут. Скрины чуть позже залью, когда будет что показать из демок(скорее всего вместе с конкурсной игрой).

редакция от mv2, 01.06.2021 11:49

Race V:Не участвую.
StormT_GMS
Avatar пользователя

Опубликовано 01.06.2021 15:27 (4 года назад)    #
mv2 написал:
движок, который мог бы выполнять 3 самых важных вещи - рисовать модельки/спрайты используя несложную систему материалов, играть звук, обрабатывать ввод. Всё, никаких сценграфов, никакого сложного API, весь движок умещается в ~50 экспортированных функций.

А этого достаточно для игры? Мно просто интересно, я не с целью поддеть или вроде того. Вот, по возможной теме конкурса следующей - скроллер осилит? Я, скорее всего, неправильно себе представляю и ты сейчас с недоумением читаешь мои вопросы, но что поделать - я не понимаю)
Race V:Не участвую.
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 01.06.2021 16:24 (4 года назад)    #
Этого достаточно, другое дело, что много самому придется делать просто.
Race V:Не участвую.
mv2
Avatar пользователя

Опубликовано 01.06.2021 18:16 (4 года назад)    #
StormT_GMS написал:
mv2 написал:
движок, который мог бы выполнять 3 самых важных вещи - рисовать модельки/спрайты используя несложную систему материалов, играть звук, обрабатывать ввод. Всё, никаких сценграфов, никакого сложного API, весь движок умещается в ~50 экспортированных функций.

А этого достаточно для игры? Мно просто интересно, я не с целью поддеть или вроде того. Вот, по возможной теме конкурса следующей - скроллер осилит? Я, скорее всего, неправильно себе представляю и ты сейчас с недоумением читаешь мои вопросы, но что поделать - я не понимаю)

Ну да, функционал не в количестве функций измеряется)
Игрушку на конкурс и собираюсь на нем делать.
Race V:Не участвую.
Shirson
Avatar пользователя

Опубликовано 02.06.2021 16:53 (4 года назад)    #
StormT_GMS написал:
Вот, по возможной теме конкурса следующей - скроллер осилит?
Осиливает участник, а не движок. Суть в том, что если участник знает что и как нужно сделать, движок дело сильно второстепенное.
Race V:Не участвую.
mv2
Avatar пользователя

Опубликовано 02.06.2021 17:14 (4 года назад)    #
Shirson написал:
StormT_GMS написал:
Вот, по возможной теме конкурса следующей - скроллер осилит?
Осиливает участник, а не движок. Суть в том, что если участник знает что и как нужно сделать, движок дело сильно второстепенное.

В случае с своим великом было бы странно не приценивать возможности :)
Ну или не иметь возможности допилки, но тут мы не упираемся не в API, не в архитектуру.
Race V:Не участвую.
Shirson
Avatar пользователя

Опубликовано 02.06.2021 21:26 (4 года назад)    #
Вопрос "а можно ли сделать X на Y" живучее гриппа и неистребимее тараканов :)
И с 99.9% вероятности задающий не сделает Y, какой бы X ему не дали. Потому что он не очень представляет как делается Y и ожидает, что за него всё сделает X :)
Тот кто знает, и подыскивает себе двиг, он задаёт не философские, а более конкретные вопрос по движку
(пример:
пусть будет скроллер. Брём за идёю, скажем, Blast-Off.
Нужно выводить задник, базы, звёзды/мусор, корапь героя, выстрелы, врагов, взрывы
Что нужно от движка (чтобы не мудохать это самому)
Вывод текстур как спрайты (или любой другой аналог)
Апскейл с билинейной экстраполяцией.
Базовые операции бленда (+, -, мульт)
Вывод около 1000 спрайтов за фрейм (т.е. около 1000 спрайтов за 1000/60 мс) без просадки.
Всё :)
Из того, что я читал в описании, твой двиг такое осилит и не подавится (если вообще заметит напряг из-за каких-то 1000 спрайтов. Просто потому, что он у тебя достаточно низкоуровневый).
Сможет ли произвольный юзер написать на нём скроллер? ;) Да фиг там. И не потому, что двиг плохой. :) Вот о чём речь.
)

редакция от Shirson, 03.06.2021 03:20

Race V:Не участвую.
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 03.06.2021 07:12 (4 года назад)    #
Это вообще сложный и дискуссионный вопрос про оптимальное апи
Так то операция ИЛИ-НЕ с доступом по произвольной памяти Тьюринг полная (хотя не представляю как) и можно что хочешь писать
Удобство - другой вопрос.
Но Я согласен, что для конкретных случаев (те же спрайтовые движки) можно обойтись очень компактным апи.
Race V:Не участвую.
mv2
Avatar пользователя

Опубликовано 03.06.2021 07:49 (4 года назад)    #
Mefistofel написал:
Это вообще сложный и дискуссионный вопрос про оптимальное апи
Так то операция ИЛИ-НЕ с доступом по произвольной памяти Тьюринг полная (хотя не представляю как) и можно что хочешь писать
Удобство - другой вопрос.
Но Я согласен, что для конкретных случаев (те же спрайтовые движки) можно обойтись очень компактным апи.

Про ограничения архитектуры я говорил что проблемы начинаются когда ты хочешь написать условный 2д сайдскроллер с шейдерами, а у тебя есть условный движок который умеет рисовать только 3д модельки да и то только с диффузом условным. т.е здесь ограничения заложены движком, но если же архитектуру достаточно упростить и ввести более низкий уровень(например вывести низкоуровневое апи для управления камерой и треугольнками) - то такие проблемы отсеиваются.

Ну и к чему я по большей части клоню этой пеленой текста - чем проще тем лучше, но иногда оставлять простую высокоуровщину это очень хорошо. Примерно так и взлетел первый DGLE например, да и у тебя ж вроде движки на паскале были, думаю там примерно такая же философия.

редакция от mv2, 03.06.2021 07:51

Race V:Не участвую.
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 03.06.2021 07:58 (4 года назад)    #
Тут как с офисом - люди используют только 10% его возможностей.
Но разные люди - разные 10%
Поэтому скорее важен не минимализм в целом (попытаться выразить функции минимальным набором команд), но компромисс минимализма, функциональности и удобства для всех покрываемых областей. Ну и другие есть требования - например производительность
Поэтому да, как в твоем примере - нужно сделать, условно, простой метод вывода спрайтов, даже если он не производительный. А для производительности оставить более сложное апи, позволяющее выводить спрайты батчами, к примеру.
Race V:Не участвую.
mv2
Avatar пользователя

Опубликовано 03.06.2021 12:42 (4 года назад)    #
Выкинул в помойку всю имеющуюся кодовую базу, будем перепиливать. Такой вот человек настроения :)
Race V:Не участвую.
Kaps
Avatar пользователя

Опубликовано 08.06.2021 21:29 (4 года назад)    #
Когда я увидел Nanite, какое-либо желание делать свои движки пропало.
Race V:В разработке
 0%
Перейти на форум:
Конкурсы
Открытые конкурсы:
Race V

Старт: 5 июля 2025г.
Финиш: 16 июля 2025г.

Участники: 6
Недавние конкурсы:
 188 - RPG XIII
 187 - Bullet Heaven
 186 - Strategy
 185 - RPG XII
 184 - Arcade II
 Все конкурсы
Случайная игра
Голосование

Погнали?

Я в деле!
44% [4 Голосов]
Я сомневаюсь...
44% [4 Голосов]
Мде (
11% [1 Голос]

Голосов: 9
Начало: 04.07.2025 20:01

Для доступа к голосованию, у вас должно быть 10 сообщений на форуме.
 Архив опросов
Мини-чат
Вам необходимо залогиниться.

Архив чата

27,310,983 уникальных посетителей

Создано на базе русской версии PHP-Fusion copyright © 2003-2006 by Nick Jones.
Released as free software under the terms of the GNU/GPL license.