🛠 CMS вовсю развивается, и теперь в игре появляется выбор героев, с которых мы стартуем забеги. Это важный шаг для реиграбельности каждый заход должен ощущаться по-новому прямо с порога.
🃏 Выбор героя напрямую влияет на две вещи: стартовую колоду юнитов и пассивные бафы, которые действуют на протяжении всего рана. По сути, герой — это ваш архетип, который задает вектор развития всей колоды.
🎲 Один может давать бонус к золоту после боя, другой усиливать юнитов определенного типа, а третий, например, позволит чаще рероллить магазин в поисках нужной карты. Это те самые переменные, которые заставляют игрока адаптироваться и пробовать разные стратегии.
💡 У меня уже есть список базовых перков, но хочется чего-то более интересного. Есть идеи, какими способностями можно было бы наделить героев? Может, кто-то должен получать бонусы за накопленное золото, а кто-то становиться сильнее, когда у него остается мало здоровья?
Пишите свои варианты, самые крутые идеи будем пробовать реализовать. 🃏🛠
🃏 Выбор героя напрямую влияет на две вещи: стартовую колоду юнитов и пассивные бафы, которые действуют на протяжении всего рана. По сути, герой — это ваш архетип, который задает вектор развития всей колоды.
🎲 Один может давать бонус к золоту после боя, другой усиливать юнитов определенного типа, а третий, например, позволит чаще рероллить магазин в поисках нужной карты. Это те самые переменные, которые заставляют игрока адаптироваться и пробовать разные стратегии.
💡 У меня уже есть список базовых перков, но хочется чего-то более интересного. Есть идеи, какими способностями можно было бы наделить героев? Может, кто-то должен получать бонусы за накопленное золото, а кто-то становиться сильнее, когда у него остается мало здоровья?
Пишите свои варианты, самые крутые идеи будем пробовать реализовать. 🃏🛠
❤1
📐 Смена контекста, давайте переключимся с кода на 3D
После 10 лет в бэкенде и суровой архитектуре, глаз иногда замыливается от бесконечных строк кода и логических цепочек. В геймдеве круто то, что ты можешь в любой момент нажать паузу на кодинге и пойти руками потрогать визуал своего проекта.
Для меня изучение 3D это не просто попытка "нарисовать модельку". Это способ понять, как устроена игра изнутри, от первого вертекса до финального пикселя на экране. Когда ты сам настраиваешь свет и режешь UV-развертку, ты начинаешь по-другому смотреть на оптимизацию и рендер в движке.
Вот база, которую стоит знать любому инди-разработчику:
1️⃣ Blockout - накидываем форму простыми кубами. Проверяем масштаб и геймплей.
2️⃣ High-poly / Low-poly - делаем детальную модель (миллионы полигонов) и её упрощенную копию для игры.
3️⃣ UV-unwrapping - разрезаем 3D-модель на плоскость, чтобы наложить текстуру.
4️⃣ Baking - переносим детали с тяжелой модели на легкую через карты нормалей.
5️⃣ Texturing & Shading - наводим красоту металл, дерево, грязь, блики.
Всю неделю будем говорить про геометрию. Без духоты, но с глубоким погружением. Разберем методы моделинга, поговорим о"святой троице" полигонов и выясним, почему плохая топология это приговор для производительности.
Погнали в мир трехмерного пространства! 🚀
После 10 лет в бэкенде и суровой архитектуре, глаз иногда замыливается от бесконечных строк кода и логических цепочек. В геймдеве круто то, что ты можешь в любой момент нажать паузу на кодинге и пойти руками потрогать визуал своего проекта.
Для меня изучение 3D это не просто попытка "нарисовать модельку". Это способ понять, как устроена игра изнутри, от первого вертекса до финального пикселя на экране. Когда ты сам настраиваешь свет и режешь UV-развертку, ты начинаешь по-другому смотреть на оптимизацию и рендер в движке.
Вот база, которую стоит знать любому инди-разработчику:
1️⃣ Blockout - накидываем форму простыми кубами. Проверяем масштаб и геймплей.
2️⃣ High-poly / Low-poly - делаем детальную модель (миллионы полигонов) и её упрощенную копию для игры.
3️⃣ UV-unwrapping - разрезаем 3D-модель на плоскость, чтобы наложить текстуру.
4️⃣ Baking - переносим детали с тяжелой модели на легкую через карты нормалей.
5️⃣ Texturing & Shading - наводим красоту металл, дерево, грязь, блики.
Всю неделю будем говорить про геометрию. Без духоты, но с глубоким погружением. Разберем методы моделинга, поговорим о"святой троице" полигонов и выясним, почему плохая топология это приговор для производительности.
Погнали в мир трехмерного пространства! 🚀
🔥4🤔1
🏠 Моя первая миниатюра в Blender: Шейдеры, развертка и процедурная трава
Я не сдаюсь, как и сказал каждый день по полчасика блендера, и вот что я смог сделать за уже 16 часов в программе.
Оказалось, собрать саму геометрию из кубов и цилиндров это даже не половина дела. Настоящая магия начинается потом.
Чтобы домик выглядел живым, мне пришлось погрузиться в целый новый мир:
📦 UV-развертка.
Это когда ты буквально разрезаешь 3D-модель и разворачиваешь её на плоскости, как шкуру медведя, чтобы правильно наложить текстуру.
🎨 Шейдеры.
Почти тоже что и в юнити. Работа с нодами, чтобы материалы отражали свет, имели нужную шероховатость и выглядели вкусно.
🌱 Генерация.
Пришлось повозиться с настройкой генерации травы, чтобы лужайка вокруг не казалась лысым зеленым блином.
Это отличная тренировка, которая прокачивает понимание того, как вообще работает свет, материалы и рендер.
Завтра поговорим о том, какими вообще путями можно создавать форму в 3D.
А пока оцените домик в комментариях! 👇
Я не сдаюсь, как и сказал каждый день по полчасика блендера, и вот что я смог сделать за уже 16 часов в программе.
Оказалось, собрать саму геометрию из кубов и цилиндров это даже не половина дела. Настоящая магия начинается потом.
Чтобы домик выглядел живым, мне пришлось погрузиться в целый новый мир:
📦 UV-развертка.
Это когда ты буквально разрезаешь 3D-модель и разворачиваешь её на плоскости, как шкуру медведя, чтобы правильно наложить текстуру.
🎨 Шейдеры.
Почти тоже что и в юнити. Работа с нодами, чтобы материалы отражали свет, имели нужную шероховатость и выглядели вкусно.
🌱 Генерация.
Пришлось повозиться с настройкой генерации травы, чтобы лужайка вокруг не казалась лысым зеленым блином.
Это отличная тренировка, которая прокачивает понимание того, как вообще работает свет, материалы и рендер.
Завтра поговорим о том, какими вообще путями можно создавать форму в 3D.
А пока оцените домик в комментариях! 👇
👍6🔥3
🛠 Скульпт, Булиан или Полигоны? Как вообще делают 3D
Если вы думаете, что все 3D-модели делаются одинаково, то добро пожаловать в клуб заблуждающихся (я сам там недавно был). В 3D есть несколько кардинально разных подходов:
🗿 Скульптинг (Sculpting): Это цифровая глина. Вы берете кисть и буквально лепите монстра, добавляя морщины и шрамы. Идеально для органики (персонажи, животные). Минус? Модель получается невероятно тяжелой, и в игру её просто так не запихнешь нужна ретопология (об этом позже).
✂️ Булиан (Boolean): Берем куб, вычитаем из него сферу получаем выемку. Отлично подходит для быстрого драфта сложных хард-сюрфейс деталей (пушки, механизмы). Минус — оставляет после себя просто чудовищно грязную сетку, и снова привет ретопологии.
🧊 Полигональное моделирование (Subdiv / Box modeling): Классика. Берем точку, тянем грань, создаем полигон. Медленно, вдумчиво, как игра в шахматы. Именно тут рождается самая правильная, чистая и оптимизированная геометрия.
Я сейчас ковыряю именно полигональное моделирование. А завтра расскажу, почему в этом методе есть свои строгие законы, нарушив которые, можно получить бомбу замедленного действия. 💣
Если вы думаете, что все 3D-модели делаются одинаково, то добро пожаловать в клуб заблуждающихся (я сам там недавно был). В 3D есть несколько кардинально разных подходов:
🗿 Скульптинг (Sculpting): Это цифровая глина. Вы берете кисть и буквально лепите монстра, добавляя морщины и шрамы. Идеально для органики (персонажи, животные). Минус? Модель получается невероятно тяжелой, и в игру её просто так не запихнешь нужна ретопология (об этом позже).
✂️ Булиан (Boolean): Берем куб, вычитаем из него сферу получаем выемку. Отлично подходит для быстрого драфта сложных хард-сюрфейс деталей (пушки, механизмы). Минус — оставляет после себя просто чудовищно грязную сетку, и снова привет ретопологии.
🧊 Полигональное моделирование (Subdiv / Box modeling): Классика. Берем точку, тянем грань, создаем полигон. Медленно, вдумчиво, как игра в шахматы. Именно тут рождается самая правильная, чистая и оптимизированная геометрия.
Я сейчас ковыряю именно полигональное моделирование. А завтра расскажу, почему в этом методе есть свои строгие законы, нарушив которые, можно получить бомбу замедленного действия. 💣
🔥2
🎨 Почему полигонам не все равно?
Одно дело просто придать объекту форму, и совсем другое сделать это правильно.
В полигональном моделировании всё состоит из фейсов, но они далеко не равны:
🔺 Тригоны (Треугольники): Движки в итоге всё равно бьют всё на треугольники, но в редакторе их дико неудобно двигать, а при сглаживании они выдают артефакты.
🔲 Квады (4 стороны): Золотой стандарт. Они создают чистые «петли» (edge loops), предсказуемо деформируются и отлично дружат с математикой.
🛑 Энгоны (5+ сторон): Враг номер один. Ломают тени и заставляют компьютер гадать, как их отрисовать (а гадает он плохо).
Настоящая проверка сетки на вшивость это Subdivision (Сабдив). Этот модификатор делит каждый полигон на несколько мелких, чтобы поверхность стала идеально гладкой.
Главное правило при сабдиве форма не должна плыть. Если топология грязная (энгоны в неположенных местах), то при сглаживании ваш красивый щит превратится в пожеванную фольгу. Хорошая сетка повторяет естественные изгибы объекта.
Завтра разберем, зачем мы так мучаемся с этими квадратами и как это напрямую спасает видеокарту игрока.
Есть идеи? Пишите в комменты! ⬇️
Одно дело просто придать объекту форму, и совсем другое сделать это правильно.
В полигональном моделировании всё состоит из фейсов, но они далеко не равны:
🔺 Тригоны (Треугольники): Движки в итоге всё равно бьют всё на треугольники, но в редакторе их дико неудобно двигать, а при сглаживании они выдают артефакты.
🔲 Квады (4 стороны): Золотой стандарт. Они создают чистые «петли» (edge loops), предсказуемо деформируются и отлично дружат с математикой.
🛑 Энгоны (5+ сторон): Враг номер один. Ломают тени и заставляют компьютер гадать, как их отрисовать (а гадает он плохо).
Настоящая проверка сетки на вшивость это Subdivision (Сабдив). Этот модификатор делит каждый полигон на несколько мелких, чтобы поверхность стала идеально гладкой.
Главное правило при сабдиве форма не должна плыть. Если топология грязная (энгоны в неположенных местах), то при сглаживании ваш красивый щит превратится в пожеванную фольгу. Хорошая сетка повторяет естественные изгибы объекта.
Завтра разберем, зачем мы так мучаемся с этими квадратами и как это напрямую спасает видеокарту игрока.
Есть идеи? Пишите в комменты! ⬇️
❤3🤨1
🎮 Как правильная сетка бережет вашу видеокарту?
Вчера мы обсуждали квады и чистую топологию. Сегодня о том, зачем это нужно игровому движку. Компьютер ленив и не хочет рендерить миллионы полигонов там, где можно схалявить.
Вот три столпа оптимизации:
1️⃣ LOD-ы (Level of Detail): Классика. Зачем рисовать пуговицу на куртке врага, если он в 100 метрах? Делается несколько версий: LOD 0 (максимум деталей для крупных планов) и LOD 3 (мыло из пары треугольников для дали). Движок меняет их на лету.
2️⃣ Тесселяция (Tessellation): Чтобы кирпичная стена казалась объемной, не нужно моделить каждый кирпич. Движку дают плоскую стену и «карту высот». Он сам в реальном времени дробит сетку и выпячивает кирпичи наружу. Появляется рельеф и честные тени. Тесселяцию мы еще затронем когда будем делать снег.
3️⃣ Nanite (Unreal Engine 5): Убийца ручной оптимизации. Он сам анализирует пиксели на экране и решает, где показать микроскопические детали, а где упростить гору. Можно вставлять киношные модели, и видюха не сгорит.
При чем тут топология? Даже самым крутым технологиям вроде тесселяции или Nanite в разы легче работать с правильной сеткой. Дыры или кривые пересечения выдадут страшные визуальные артефакты вместо красивого рельефа. Чистая сетка залог здоровой игры!
Вчера мы обсуждали квады и чистую топологию. Сегодня о том, зачем это нужно игровому движку. Компьютер ленив и не хочет рендерить миллионы полигонов там, где можно схалявить.
Вот три столпа оптимизации:
1️⃣ LOD-ы (Level of Detail): Классика. Зачем рисовать пуговицу на куртке врага, если он в 100 метрах? Делается несколько версий: LOD 0 (максимум деталей для крупных планов) и LOD 3 (мыло из пары треугольников для дали). Движок меняет их на лету.
2️⃣ Тесселяция (Tessellation): Чтобы кирпичная стена казалась объемной, не нужно моделить каждый кирпич. Движку дают плоскую стену и «карту высот». Он сам в реальном времени дробит сетку и выпячивает кирпичи наружу. Появляется рельеф и честные тени. Тесселяцию мы еще затронем когда будем делать снег.
3️⃣ Nanite (Unreal Engine 5): Убийца ручной оптимизации. Он сам анализирует пиксели на экране и решает, где показать микроскопические детали, а где упростить гору. Можно вставлять киношные модели, и видюха не сгорит.
При чем тут топология? Даже самым крутым технологиям вроде тесселяции или Nanite в разы легче работать с правильной сеткой. Дыры или кривые пересечения выдадут страшные визуальные артефакты вместо красивого рельефа. Чистая сетка залог здоровой игры!
❤2🤓1
🏁 Итоги недели 3D. Зачем инди-команде знать всё это?
Эта неделя погружения в геометрию подошла к концу. Почему вообще важно разбираться в пайплайнах соседних специалистов, даже если твоя основная задача писать код и собирать архитектуру?
В небольшой инди-команде границы между ролями часто размываются. Когда программист понимает, почему у 3D-модели поехали нормали, а 3D-шник понимает, как скрипт обращается к его префабу, скорость разработки возрастает кратно. Меньше времени тратится на перекидывание ассетов туда-сюда со словами "оно сломалось в движке, переделывай".
Понимание базовых правил 3D позволяет выстроить грамотный конвейер добавления контента в игру будь то новые карточки, элементы интерфейса или окружение.
Как вам такой формат? Хотите, чтобы я иногда разбавлял наши девлоги и отчеты о механиках вот такими техническими экскурсиями в смежные области? Или лучше вернуться к суровому коду и геймдизайну?
Голосуйте реакциями и пишите в комменты! 👇
Эта неделя погружения в геометрию подошла к концу. Почему вообще важно разбираться в пайплайнах соседних специалистов, даже если твоя основная задача писать код и собирать архитектуру?
В небольшой инди-команде границы между ролями часто размываются. Когда программист понимает, почему у 3D-модели поехали нормали, а 3D-шник понимает, как скрипт обращается к его префабу, скорость разработки возрастает кратно. Меньше времени тратится на перекидывание ассетов туда-сюда со словами "оно сломалось в движке, переделывай".
Понимание базовых правил 3D позволяет выстроить грамотный конвейер добавления контента в игру будь то новые карточки, элементы интерфейса или окружение.
Как вам такой формат? Хотите, чтобы я иногда разбавлял наши девлоги и отчеты о механиках вот такими техническими экскурсиями в смежные области? Или лучше вернуться к суровому коду и геймдизайну?
Голосуйте реакциями и пишите в комменты! 👇
❤5👍1🔥1👻1
Реальность вносит свои правки в роудмап 🎬
Всем привет! Две недели пролетели, по плану сегодня должен был быть девлог, но... его не будет. По крайней мере, не сегодня.
Я взял на себя смелость копнуть тему CMS чуть глубже, чем планировал изначально. Хотелось не просто показать картинки, а реально разложить по полочкам, как это работает под капотом.
Свести техническую базу и интересный рассказ в один сценарий оказалось той еще задачкой.
Как итог просто переоценил свои силы. Бывает.
К этому нужно быть готовым, иногда перфекционизм побеждает график.
Завтра финальный рывок по монтажу и досъемкам. Надеюсь завтра уже побалую вас контентом.
Спасибо, что понимаете. В этом и есть весь честный путь с его затыками, факапами в планировании и желанием сделать по красоте.
Всем привет! Две недели пролетели, по плану сегодня должен был быть девлог, но... его не будет. По крайней мере, не сегодня.
Я взял на себя смелость копнуть тему CMS чуть глубже, чем планировал изначально. Хотелось не просто показать картинки, а реально разложить по полочкам, как это работает под капотом.
Свести техническую базу и интересный рассказ в один сценарий оказалось той еще задачкой.
Как итог просто переоценил свои силы. Бывает.
К этому нужно быть готовым, иногда перфекционизм побеждает график.
Завтра финальный рывок по монтажу и досъемкам. Надеюсь завтра уже побалую вас контентом.
Спасибо, что понимаете. В этом и есть весь честный путь с его затыками, факапами в планировании и желанием сделать по красоте.
💔3
Слушайте, видео опять задерживается, и честно это какой-то ад. Я сижу и переписываю каждый кадр по 30 раз. Вроде начинаю говорить, а язык просто встает комом в горле. Все, что выходит какой-то бред или поток э-э-э, который вообще не туда идет. Постоянно одергиваю себя: Блин, нет, это шляпа, давай по новой.
И так по кругу. Реально могу один кусок на 30 секунд записывать целый час или даже дольше, потому что либо сбиваюсь, либо просто бесит, как это звучит. Не знаю, как люди делают эти крутые девлоги, где всё так гладко и просто. Смотришь на них всё так легко, вылизано, всё летает. А мне тяжело. Ужасно тяжело.
Просто знайте, что за каждым кадром, который вы увидите, стоят часы вот этого «давай еще раз». Я к этому отношусь как к учебе рано или поздно научусь и станет легче, но сейчас это выжимает все соки. Видео будет, просто дайте мне еще немного времени это всё дожать.
У кого есть советы по поводу съемки, я буду рад их выслушать! 🃏🛠
И так по кругу. Реально могу один кусок на 30 секунд записывать целый час или даже дольше, потому что либо сбиваюсь, либо просто бесит, как это звучит. Не знаю, как люди делают эти крутые девлоги, где всё так гладко и просто. Смотришь на них всё так легко, вылизано, всё летает. А мне тяжело. Ужасно тяжело.
Просто знайте, что за каждым кадром, который вы увидите, стоят часы вот этого «давай еще раз». Я к этому отношусь как к учебе рано или поздно научусь и станет легче, но сейчас это выжимает все соки. Видео будет, просто дайте мне еще немного времени это всё дожать.
У кого есть советы по поводу съемки, я буду рад их выслушать! 🃏🛠
🤝3😁2😱1
Девлог #3 на базе! Дожал. 🚀
Вчера писал как же тяжел процесс съемок. Сегодня показываю, ради чего всё это было. Мы наконец-то собрали свою CMS (систему управления контентом), и она заиграла.
https://youtu.be/6uUYXnTCg6Q
В этот раз я решил копнуть глубже и выдать максимум пользы по архитектуре данных.
Мы отошли от простого хардкода объектов к системе ContentProvider. Теперь данные живут отдельно, а логика отдельно. Пока это ScriptableObjects, но архитектура уже готова к переезду на любые внешние таблицы.
В видео разложил по полочкам:
✅ Почему хардкод статов это ловушка.
✅ Как работают базы данных в памяти на Dictionary.
✅ Как интерфейсы помогают нам подменять источники контента.
Залетайте смотреть, пока я со спокойной совестью иду разгребать бэклог по контенту.
Теперь, когда система работает, пора заселять мир Deckart!
Жду ваш фидбек в комментариях под видео! 👇
Вчера писал как же тяжел процесс съемок. Сегодня показываю, ради чего всё это было. Мы наконец-то собрали свою CMS (систему управления контентом), и она заиграла.
https://youtu.be/6uUYXnTCg6Q
В этот раз я решил копнуть глубже и выдать максимум пользы по архитектуре данных.
Мы отошли от простого хардкода объектов к системе ContentProvider. Теперь данные живут отдельно, а логика отдельно. Пока это ScriptableObjects, но архитектура уже готова к переезду на любые внешние таблицы.
В видео разложил по полочкам:
✅ Почему хардкод статов это ловушка.
✅ Как работают базы данных в памяти на Dictionary.
✅ Как интерфейсы помогают нам подменять источники контента.
Залетайте смотреть, пока я со спокойной совестью иду разгребать бэклог по контенту.
Теперь, когда система работает, пора заселять мир Deckart!
Жду ваш фидбек в комментариях под видео! 👇
YouTube
Как построить CMS в Unity и не сойти с ума | Разработка игры Deckart Devlog #3
В этом выпуске мы ныряем в двигатель нашего проекта Deckart. Сегодня не просто девлог, а большой технический разбор того, как перестать плодить сущности и начать строить системы.
Главная тема CMS (Content Management System). Я искал внятные гайды на YouTube…
Главная тема CMS (Content Management System). Я искал внятные гайды на YouTube…
👍3🔥2🎉2❤🔥1
📉 Когда кривая сложности в жизни не оптимизирована
Ребят, только начал вести канал и тут блокировка Телеграма. Все планы летят к чертям, постоянное сражение с какими-то внешними событиями. Сейчас как никогда нужна ваша поддержка.
Но я не останавливаюсь. Постараюсь и дальше делиться постами каждый день.
Я смотрю на это через геймдизайн: кривая сложности в жизни тоже привязана к этапам. Есть белые полосы (легкость для игрока) и черные (вводимый хардкор). Да, сейчас баланс явно не оптимизирован, но жизнь и не должна быть простой. Как мы знаем из геймдева - если в игре нет вызова, она становится ужасно скучной.
Так что принимаем этот челлендж. Продолжаем работать. 🃏🛠
Ребят, только начал вести канал и тут блокировка Телеграма. Все планы летят к чертям, постоянное сражение с какими-то внешними событиями. Сейчас как никогда нужна ваша поддержка.
Но я не останавливаюсь. Постараюсь и дальше делиться постами каждый день.
Я смотрю на это через геймдизайн: кривая сложности в жизни тоже привязана к этапам. Есть белые полосы (легкость для игрока) и черные (вводимый хардкор). Да, сейчас баланс явно не оптимизирован, но жизнь и не должна быть простой. Как мы знаем из геймдева - если в игре нет вызова, она становится ужасно скучной.
Так что принимаем этот челлендж. Продолжаем работать. 🃏🛠
😱3
Го разнообразим посты, запущу холивар по теме разработки...
Синглтоны это зло, которое аукнется позже. Разбираю архитектуру проекта и в очередной раз убеждаюсь: если хочешь построить что-то сложнее кликера, завязывай с Instance. Да, бахнуть статический доступ из любой точки кода это соблазнительно. Но через месяц ты получишь проект, где всё зависит от всего, а ошибки инициализации в Awake станут твоими лучшими друзьями.
Я топлю за DI (Dependency Injection). Это когда скрипт не рыщет по сцене в поиске менеджеров, а смиренно ждет, когда их ему заинжектят сверху.
В чем разница на пальцах:
📦 Singleton: Ты из каждого утюга вызываешь SoundManager.Instance.Play(). Удобно? Да. Но попробуй теперь запустить этот скрипт в другой сцене без этого менеджера. Он просто вылетит с ошибкой. Твой код это заложник глобальных ссылок.
💉 DI: Скрипт просто декларирует, мол мне нужен интерфейс звука, чтобы работать. И контейнер сам подсовывает ему нужный сервис. В итоге код чистый, зависимости прозрачные, а заменить одну систему на другую можно по щелчку пальцев, не переписывая половину игры.
Конечно, настроить какой-нибудь VContainer или Zenject это чуть дольше, чем написать одну строчку со статикой. Но это та цена, которую ты платишь за возможность не сойти с ума при рефакторинге.
А на чем сидите вы? Всё еще грешите синглтонами потому что так быстрее или уже перешли на светлую сторону DI и интерфейсов? Пишите, чей подход побеждает в реальном геймдеве. 👇 🃏🛠️
Синглтоны это зло, которое аукнется позже. Разбираю архитектуру проекта и в очередной раз убеждаюсь: если хочешь построить что-то сложнее кликера, завязывай с Instance. Да, бахнуть статический доступ из любой точки кода это соблазнительно. Но через месяц ты получишь проект, где всё зависит от всего, а ошибки инициализации в Awake станут твоими лучшими друзьями.
Я топлю за DI (Dependency Injection). Это когда скрипт не рыщет по сцене в поиске менеджеров, а смиренно ждет, когда их ему заинжектят сверху.
В чем разница на пальцах:
📦 Singleton: Ты из каждого утюга вызываешь SoundManager.Instance.Play(). Удобно? Да. Но попробуй теперь запустить этот скрипт в другой сцене без этого менеджера. Он просто вылетит с ошибкой. Твой код это заложник глобальных ссылок.
💉 DI: Скрипт просто декларирует, мол мне нужен интерфейс звука, чтобы работать. И контейнер сам подсовывает ему нужный сервис. В итоге код чистый, зависимости прозрачные, а заменить одну систему на другую можно по щелчку пальцев, не переписывая половину игры.
Конечно, настроить какой-нибудь VContainer или Zenject это чуть дольше, чем написать одну строчку со статикой. Но это та цена, которую ты платишь за возможность не сойти с ума при рефакторинге.
А на чем сидите вы? Всё еще грешите синглтонами потому что так быстрее или уже перешли на светлую сторону DI и интерфейсов? Пишите, чей подход побеждает в реальном геймдеве. 👇 🃏🛠️
🤔3❤1
Весь день полишил текущий билд рабочего места ✨
❄️ Сначала занялся оптимизацией производительности и установил кондей чтобы FPS не проседал от перегрева.
🏗️ Затем провел полный рефакторинг архитектуры и пересобрал рабочий стол
Обновил UI и UX. Теперь в моем сетапе 3 монитора. Добавил один ультраширокий для максимального погружения в код и Unity 🖥️🖥️🖥️
Завез нормальный микрофон для качественного звука 🎙️🎧
Накатил финальный пост-процессинг. Добавил подсветку выставил правильные тона стиль и красоту.
Получилась локация прямо из Pinterest 📸🌟
В геймдеве всё точно так же. Механики могут быть топ но без полишинга играть неприятно. Теперь билд рабочего места стабилен и выглядит дорого. Завтра возвращаюсь к коду в максимально комфортных условиях 😎🚀
В общем зацените результат и кидайте свои рабочие места в комменты. Устроим смотр локаций 👇🃏🛠️
❄️ Сначала занялся оптимизацией производительности и установил кондей чтобы FPS не проседал от перегрева.
🏗️ Затем провел полный рефакторинг архитектуры и пересобрал рабочий стол
Обновил UI и UX. Теперь в моем сетапе 3 монитора. Добавил один ультраширокий для максимального погружения в код и Unity 🖥️🖥️🖥️
Завез нормальный микрофон для качественного звука 🎙️🎧
Накатил финальный пост-процессинг. Добавил подсветку выставил правильные тона стиль и красоту.
Получилась локация прямо из Pinterest 📸🌟
В геймдеве всё точно так же. Механики могут быть топ но без полишинга играть неприятно. Теперь билд рабочего места стабилен и выглядит дорого. Завтра возвращаюсь к коду в максимально комфортных условиях 😎🚀
В общем зацените результат и кидайте свои рабочие места в комменты. Устроим смотр локаций 👇🃏🛠️
👍3🍌3🔥1
Давайте отвлечемся от общих тем и поговорим про игру. Расскажу про одну из ключевых систем, это магазин. Он напрямую влияет на декбилдинг и является важной частью рановой метапрогрессии. То есть вы улучшаете магазин для продвижения в текущем забеге чтоб открывать контент для усиления.
Сейчас в планах разделить магазин на два принципиально разных подтипа:
🏰 1. Город (Замок)
Это ваша база внутри рана. Представьте замок из «Героев 3». Сюда вы возвращаетесь после победы над боссом очередного этапа. В городе можно будет нанимать коммандиров в таверне, покупать улучшения или юнитов, а так же строить здания для расширения возможностей. Именно здесь происходит основная прокачка между большими сегментами похода.
🐫 2. Бродячий торговец
Это мобильный магазин между боями. Цикл выглядит так: вышли из города, провели бой, встретили торговца, снова бой, босс и возврат в замок для подготовки к следующему этапу. У торговца можно будет докупить рандомные вещи через механики гачи, выбор из трех или рероллы.
В будущем хотим добавить специализацию торговцев. Например маг продает только свитки, а работорговец предлагает новых юнитов.
Конечно это планы на дальний горизонт. Будем тестировать что из этого приносит фан, а что кажется лишним. Сейчас задача минимум это разделить магазин на два стейта и наполнить их базовым контентом.
Как вам такая идея с городом внутри рана? Что может добавить фана в такую систему? Пишите свои мысли в комменты 👇
Сейчас в планах разделить магазин на два принципиально разных подтипа:
🏰 1. Город (Замок)
Это ваша база внутри рана. Представьте замок из «Героев 3». Сюда вы возвращаетесь после победы над боссом очередного этапа. В городе можно будет нанимать коммандиров в таверне, покупать улучшения или юнитов, а так же строить здания для расширения возможностей. Именно здесь происходит основная прокачка между большими сегментами похода.
🐫 2. Бродячий торговец
Это мобильный магазин между боями. Цикл выглядит так: вышли из города, провели бой, встретили торговца, снова бой, босс и возврат в замок для подготовки к следующему этапу. У торговца можно будет докупить рандомные вещи через механики гачи, выбор из трех или рероллы.
В будущем хотим добавить специализацию торговцев. Например маг продает только свитки, а работорговец предлагает новых юнитов.
Конечно это планы на дальний горизонт. Будем тестировать что из этого приносит фан, а что кажется лишним. Сейчас задача минимум это разделить магазин на два стейта и наполнить их базовым контентом.
Как вам такая идея с городом внутри рана? Что может добавить фана в такую систему? Пишите свои мысли в комменты 👇
🔥3
Ребят, накидали идей для нашего города. Хочется, чтобы это был не просто скучный экран с кнопками, а живое место с реальным выбором.
Вот что надумали по механикам:
🍻 В таверне
Покупаем у бармена слухи о слабом месте следующего босса. Можем нанять элитных наемников, которые дико сильны, но уходят из отряда сразу после первого боя. Или просто рискуем золотом в кости, чтобы сорвать куш перед рынком.
🔨 В кузнице
Разбираем ненужный хлам на ресурсы для прокачки любимых юнитов. Можно сделать именную гравировку: даем бойцу имя и получаем бонус к статам, но терять такого «именного» ветерана потом в разы больнее. Еще думаем над слиянием: варим из двух слабых предметов один случайный, но классом выше.
🏛 В ратуше и на рынке
Инвестируем золото в развитие кварталов сейчас, чтобы в следующий заход товары стали дешевле или выбор юнитов больше. Тут же висит доска заказов берем челлендж на следующий бой (например, победить без магии) и получаем жирную награду.
Это пока наброски, будем смотреть, что дает больше фана и реально влияет на стратегию.
Как вам такие варианты для города? Что больше всего зацепило или хотите предложить что-то свое в нашу локацию? Пишите в комменты! 👇
Вот что надумали по механикам:
🍻 В таверне
Покупаем у бармена слухи о слабом месте следующего босса. Можем нанять элитных наемников, которые дико сильны, но уходят из отряда сразу после первого боя. Или просто рискуем золотом в кости, чтобы сорвать куш перед рынком.
🔨 В кузнице
Разбираем ненужный хлам на ресурсы для прокачки любимых юнитов. Можно сделать именную гравировку: даем бойцу имя и получаем бонус к статам, но терять такого «именного» ветерана потом в разы больнее. Еще думаем над слиянием: варим из двух слабых предметов один случайный, но классом выше.
🏛 В ратуше и на рынке
Инвестируем золото в развитие кварталов сейчас, чтобы в следующий заход товары стали дешевле или выбор юнитов больше. Тут же висит доска заказов берем челлендж на следующий бой (например, победить без магии) и получаем жирную награду.
Это пока наброски, будем смотреть, что дает больше фана и реально влияет на стратегию.
Как вам такие варианты для города? Что больше всего зацепило или хотите предложить что-то свое в нашу локацию? Пишите в комменты! 👇
🔥4
Вышел Unity 6.4! Это так называемый поддерживаемый релиз, который будет стабилен до выхода следующей версии 6.5. Юнити явно сменили стратегию: вместо сырых фич они теперь пилят мелкие итеративные улучшения качества жизни.
Самая обсуждаемая тема это перенос ECS (Entities) в ядро движка. Теперь пакет не нужно ставить отдельно. Мы в Deckart не используем ECS, так как для пошага это кажется избыточным. Но тут есть нюанс. Юнити готовит почву для полного слияния GameObjects и Entities в будущем.Оспорить избыточность ECS можно тем, что это не только про производительность. Это про строгий порядок данных. В пошаговой игре это могло бы идеально лечь на систему реплеев, мультиплеер или сохранение состояния. Но пока порог входа высокий и количество бойлерплейта пугает, классический подход с DI кажется разумнее.
Что еще завезли в 6.4:
✅ Project Auditor встроен по умолчанию. Инструмент анализирует весь проект на предмет косяков в коде и настройках. Отличная штука для быстрой проверки «здоровья» билда.
✅ Runtime Sprite Atlases. Теперь можно генерировать атласы прямо во время игры. Это киллер фича для моддинга, когда игроки подгружают свои текстуры и мы хотим сохранить производительность.
✅ Input System + OnMouse. Наконец события типа OnMouseDown работают с новым Input System из коробки. Больше не надо городить костыли при переходе со старого менеджера.
✅ Кастомный рендер в 2D. В URP теперь можно расширять процесс рендеринга и делать сложный пост процессинг для 2D проектов.
✅ Burst на вебе. Мультипоточность с использованием Burst теперь доступна для WebGL билдов. Звучит очень мощно для браузерок.
Движок становится лучше с каждым релизом, хоть и без взрывных анонсов.
Как думаете, стоит ли изучать ECS сейчас или лучше подождать того самого полного слияния с GameObjects и бесконечно вечным?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Дочитал книгу «Designing Games: A Guide to Engineering Experiences» Тайнана Сильвестра, разработчика RimWorld.
С уверенностью могу сказать что это было максимально полезно. Готов советовать её всем кто прокладывает свой путь в геймдизайн.
Мне нравятся книги которые открывают базовые понятия, остающиеся в слепой зоне пока о них не прочтешь. При чтении постоянно возникал вопрос - это же так очевидно, почему я раньше об этом не думал?
Главный инсайт книги в том что геймдизайнер создает не игру, а систему генерации опыта.
Сама по себе игра это просто набор файлов. Настоящая магия происходит только в голове игрока. И наша задача как инженеров этого опыта проектировать системы так, чтобы каждое решение влияло на впечатления человека. Если механика или деталь не работают на этот опыт, они балласт.
Книга учит смотреть на разработку как на создание машины для эмоций. Если хотите перестать делать просто набор фич и начать проектировать глубокие впечатления, это маст рид.
А какие книги заставляли вас воскликнуть почему я не знал этого раньше?
Пишите в комменты 👇 🃏🛠
С уверенностью могу сказать что это было максимально полезно. Готов советовать её всем кто прокладывает свой путь в геймдизайн.
Мне нравятся книги которые открывают базовые понятия, остающиеся в слепой зоне пока о них не прочтешь. При чтении постоянно возникал вопрос - это же так очевидно, почему я раньше об этом не думал?
Главный инсайт книги в том что геймдизайнер создает не игру, а систему генерации опыта.
Сама по себе игра это просто набор файлов. Настоящая магия происходит только в голове игрока. И наша задача как инженеров этого опыта проектировать системы так, чтобы каждое решение влияло на впечатления человека. Если механика или деталь не работают на этот опыт, они балласт.
Книга учит смотреть на разработку как на создание машины для эмоций. Если хотите перестать делать просто набор фич и начать проектировать глубокие впечатления, это маст рид.
А какие книги заставляли вас воскликнуть почему я не знал этого раньше?
Пишите в комменты 👇 🃏🛠
🤓3🔥2
Закрыл Сильвестра и перехожу к следующей базе.
Начинаю Game Balance от Яна Шрейбера и Бренды Ромеро.
Если прошлый автор учил проектировать опыт и эмоции, то здесь будет больше системности. Числа, кривые прогрессии, экономика и теория вероятностей.
Чего жду от книги. Хочу перестать крутить статы юнитов в Deckart по наитию. Нужна четкая система, где каждое число обосновано логикой, а не просто моими ощущениями в конкретный вечер. Баланс это не только про то, чтобы никто не был слишком сильным. Это способ управлять интересом игрока через математические модели.
Главными инсайтами из книги конечно буду делиться с вами. Посмотрим, как эти знания лягут на мои текущие задачи в коде. Одно дело проектировать архитектуру, и совсем другое это настройка живой экономики внутри проекта. 🃏🛠
Кто из вас уже строил баланс через таблицы и графики? Насколько это в итоге совпало с реальным геймплеем? Пишите в комменты. 👇
Начинаю Game Balance от Яна Шрейбера и Бренды Ромеро.
Если прошлый автор учил проектировать опыт и эмоции, то здесь будет больше системности. Числа, кривые прогрессии, экономика и теория вероятностей.
Чего жду от книги. Хочу перестать крутить статы юнитов в Deckart по наитию. Нужна четкая система, где каждое число обосновано логикой, а не просто моими ощущениями в конкретный вечер. Баланс это не только про то, чтобы никто не был слишком сильным. Это способ управлять интересом игрока через математические модели.
Главными инсайтами из книги конечно буду делиться с вами. Посмотрим, как эти знания лягут на мои текущие задачи в коде. Одно дело проектировать архитектуру, и совсем другое это настройка живой экономики внутри проекта. 🃏🛠
Кто из вас уже строил баланс через таблицы и графики? Насколько это в итоге совпало с реальным геймплеем? Пишите в комменты. 👇
🔥4🤔1
Экономика в игре это прежде всего инструмент управления выбором ⚙️
Если золота бесконечно много, игрок перестает выбирать и просто забирает все. Геймплей появляется там, где ресурсов не хватает. Вчера я внедрил базу этой системы - золото и простой магазин 🛒
Главное здесь не в цифрах, а в структуре. Я заложил структуру так, чтобы новые типы магазинов, ресурсов и товаров добавлялись предсказуемо. Каркас готов к масштабированию от простого кошелька до управления караваном или развития замка. 🏗
Караван (мобильный лагерь): 🐪
Слоты, расширение вместимости инвентаря или армии.
Возможно провизия, как ресурс для переходов между точками.
Замок (глобальный хаб): 🏰
Кузница, апгрейд характеристик карт.
Ратуша, отвечает за пассивный прирост золота или налоги.
Систем в проекте всё больше, скоро плотно переключимся на контент. 🛠
Вопрос к вам, как бы вы расширили функционал каравана или замка? Какие ресурсы, кроме золота, добавили бы в такой микс рогалика и стратегии? Пишите идеи в комменты. 👇
Если золота бесконечно много, игрок перестает выбирать и просто забирает все. Геймплей появляется там, где ресурсов не хватает. Вчера я внедрил базу этой системы - золото и простой магазин 🛒
Главное здесь не в цифрах, а в структуре. Я заложил структуру так, чтобы новые типы магазинов, ресурсов и товаров добавлялись предсказуемо. Каркас готов к масштабированию от простого кошелька до управления караваном или развития замка. 🏗
Караван (мобильный лагерь): 🐪
Слоты, расширение вместимости инвентаря или армии.
Возможно провизия, как ресурс для переходов между точками.
Замок (глобальный хаб): 🏰
Кузница, апгрейд характеристик карт.
Ратуша, отвечает за пассивный прирост золота или налоги.
Систем в проекте всё больше, скоро плотно переключимся на контент. 🛠
Вопрос к вам, как бы вы расширили функционал каравана или замка? Какие ресурсы, кроме золота, добавили бы в такой микс рогалика и стратегии? Пишите идеи в комменты. 👇
🔥4🤷♂1