В общем здравствуйте, друзья и коллеги. Меня зовут Александр Тужик, более известный, как Alprog; и в этом канале я намерен поясничать на тему разработки игр, движкописательства и немножко про путешествия.
Я технический директор и ведущий программист DarkCrystalGames. В компании 18 тел и мы пилим Encased — ламповую RPG в духе FallOut 1-2 на Unity. Львиная доля постов в канале будет посвящена именно ей. Офис студии находится в Санкт-Петербурге, но я, как самая наглая рожа, появляюсь в городе редко и в основном работаю удалённо. Поэтому в холодное время года могу отправиться куда-нибудь, где тепло; так что здесь также будут иногда проскакивать посты про путешествия.
Ну а кроме всего прочего я классический поехавший движкописатель. Я пишу свой игровой движок Judy, которого не касался уже полтора года, но твёрдо намерен вернуться к нему в ближайшие дни, потому что без с++ у меня начинает ехать крыша (а я уже 5 месяцев лишь Unity единым, простите за тавтологию). Собственно, к моему торжественному возвращению в движкописательство и приурочено открытие канала. Поэтому будет много и про это. Ура, товарищи! Подписывайтесь, все дела.
Ну а кроме всего прочего я классический поехавший движкописатель. Я пишу свой игровой движок Judy, которого не касался уже полтора года, но твёрдо намерен вернуться к нему в ближайшие дни, потому что без с++ у меня начинает ехать крыша (а я уже 5 месяцев лишь Unity единым, простите за тавтологию). Собственно, к моему торжественному возвращению в движкописательство и приурочено открытие канала. Поэтому будет много и про это. Ура, товарищи! Подписывайтесь, все дела.
Как я вообще оказался в той компании, где оказался?
Застрял я как-то в обед под ливнем в каком-то кафе в Плайя-Дель-Кармен. Обычно дожди мне ни по чём, но тут я только-только переболел какой-то мексиканской хернёй и уж очень не хотелось мне повторять этот опыт. Решил переждать. А сидеть-то скучно — давай в твиттер строчить по чём зря. Я тогда работал над Life is Feudal: Forest Village, причём её мы релизнули ещё в маё, а то был уже ноябрь и как-то потихоньку приходило понимание, что вечно на поддержке сидеть нельзя. Ну и потому среди прочего твитнул о том, что, дескать, через месяцок-другой крестовик хороший освобождается (то бишь я), особо ни на что не рассчитывая. И тут мне в личку пишет старый-старый знакомый (ещё с первых курсов универа), и пишет буквально следующее:
— По поводу проектов. Я тут собираюсь делать русский фоллаут…
А моей первой реакцией было, как водится:
— Звучит, конечно, как корованы какие-то)))
Но слово за слово, созвон за созвоном, и внезапно обнаружилось, что вполне себе норм проект. Изначально я рассчитывал, что игру будем делать на Unreal, но в силу разных причин ребята твёрдо решили взять Unity. Иногда мне даже кажется, что Unreal изначально был лишь заманухой для меня, но серьёзно не рассматривался :D Ну, я поломался-поломался, но согласился: всё-таки написать тактическую РПГ — это мой незакрытый гештальт ещё со школьных лет. В декабре закончил все дела по старой работе, а первые строчки нового проекта написал уже в январе из Перу (как меня в Перу занесло — это вообще отдельная история, связанная с коррупцией в аэропорту Кубы, может быть как-нибудь расскажу и об этом). Затем ускоренными темпами свернул своё заграничное турне и вылетел в Питер знакомиться с командой и налаживать тех.процессы. Там я потусил два месяца, за которые, помимо всего прочего, отсобеседовал и отобрал себе в команду ещё двоих программеров, и с чувством выполненного долга вернулся в Калининград, откуда продолжаю работу над проектом по настоящее время.
А в тот день я не дождался конца ливня, пошёл по мокрому и смачно бухнул о бетонный пол заправки, подлетев на метр в скользких сланцах.
Застрял я как-то в обед под ливнем в каком-то кафе в Плайя-Дель-Кармен. Обычно дожди мне ни по чём, но тут я только-только переболел какой-то мексиканской хернёй и уж очень не хотелось мне повторять этот опыт. Решил переждать. А сидеть-то скучно — давай в твиттер строчить по чём зря. Я тогда работал над Life is Feudal: Forest Village, причём её мы релизнули ещё в маё, а то был уже ноябрь и как-то потихоньку приходило понимание, что вечно на поддержке сидеть нельзя. Ну и потому среди прочего твитнул о том, что, дескать, через месяцок-другой крестовик хороший освобождается (то бишь я), особо ни на что не рассчитывая. И тут мне в личку пишет старый-старый знакомый (ещё с первых курсов универа), и пишет буквально следующее:
— По поводу проектов. Я тут собираюсь делать русский фоллаут…
А моей первой реакцией было, как водится:
— Звучит, конечно, как корованы какие-то)))
Но слово за слово, созвон за созвоном, и внезапно обнаружилось, что вполне себе норм проект. Изначально я рассчитывал, что игру будем делать на Unreal, но в силу разных причин ребята твёрдо решили взять Unity. Иногда мне даже кажется, что Unreal изначально был лишь заманухой для меня, но серьёзно не рассматривался :D Ну, я поломался-поломался, но согласился: всё-таки написать тактическую РПГ — это мой незакрытый гештальт ещё со школьных лет. В декабре закончил все дела по старой работе, а первые строчки нового проекта написал уже в январе из Перу (как меня в Перу занесло — это вообще отдельная история, связанная с коррупцией в аэропорту Кубы, может быть как-нибудь расскажу и об этом). Затем ускоренными темпами свернул своё заграничное турне и вылетел в Питер знакомиться с командой и налаживать тех.процессы. Там я потусил два месяца, за которые, помимо всего прочего, отсобеседовал и отобрал себе в команду ещё двоих программеров, и с чувством выполненного долга вернулся в Калининград, откуда продолжаю работу над проектом по настоящее время.
А в тот день я не дождался конца ливня, пошёл по мокрому и смачно бухнул о бетонный пол заправки, подлетев на метр в скользких сланцах.
Немного технической информации про мой 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 на всех платформах (господи, как давно я не включал мак). На этих выходных, правда, буду занят рабочим проектом, но на следующей неделе, надеюсь, наконец-то пойдут первые коммиты в движок после столь долгого перерыва.
Его основной целью является создание комфортных условий для работы над моими личными проектами; поэтому упор делается не на производительность и легковесность, как это обычно бывает в подобных начинаниях (хотя они тоже важны), а на удобство использования. А в моём понимании это означает единую 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 на всех платформах (господи, как давно я не включал мак). На этих выходных, правда, буду занят рабочим проектом, но на следующей неделе, надеюсь, наконец-то пойдут первые коммиты в движок после столь долгого перерыва.