tgoop.com/logofalprog/10
Last Update:
Немного технической информации про мой 2D/3D движок Judy.
Его основной целью является создание комфортных условий для работы над моими личными проектами; поэтому упор делается не на производительность и легковесность, как это обычно бывает в подобных начинаниях (хотя они тоже важны), а на удобство использования. А в моём понимании это означает единую IDE с редактором сцен и луа-скриптов со встроенным дебаггером + отдельное приложение-плеер для запуска проекта без перекомпиляции.
Поскольку мне нужна трушная кроссплатформенность (Win/OSX/Linux) с потенциальной возможностью добавлять новые платформы (консоли? андроид?) и я не готов в техническом плане идти на какие-либо компромиссы, то я пишу на С++. IDE использует Qt для интерфейсов и текстовый движок Scintilla для редактора скриптов (его же используется notepad++). Player же старается не использовать ничего лишнего: он сам создаёт окошки на каждой из платформ и всё рисует на голом GAPI.
А в качестве бекенда рендера у меня сейчас DirectX 12, Vulkan и OpenGL. Впрочем, OpenGL я собираюсь убрать, поскольку Вулкан с недавних пор более-менее официально поддерживается на маках. Шейдеры пишутся на HLSL и с помощью glslang от Khronos транслируются в SPIR-V. Но поскольку теперь появился DirectXShaderCompiler от самих Microsoft на основе clang, который умеет это делать, я планирую перевозложить эту функцию на него.
Также сейчас в проекте очень сложносочинённый рефлекшн, на основе собственного парсера с++ кода и атрибутов. Я мечтаю когда-нибудь его заменить на статическую интроспекцию, которую может быть завезут в с++20 или, дай бог, хотя бы в с++23. На основе этого рефлекшена у меня сделана сериализация с++ объектов в луа-таблицы. Этот механизм я использую для создания собственного человекочитаемого формата сцен, конфигов, файлов сохранений и даже протокола сообщений между IDE и Player'ом (это нужно для дебага луа и логов).
Из вещей, приносящих практическую пользу Judy пока ни черта не умеет. Разве что куб вывести можно. Но будем это исправлять. Сейчас я сдуваю пылинки с репозитория и обновляю Qt на всех платформах (господи, как давно я не включал мак). На этих выходных, правда, буду занят рабочим проектом, но на следующей неделе, надеюсь, наконец-то пойдут первые коммиты в движок после столь долгого перерыва.
BY Log of Alprog
Share with your friend now:
tgoop.com/logofalprog/10