Григорий Дядиченко
2.66K subscribers
483 photos
191 videos
10 files
1.34K links
Разработчик игр, интерактивных стендов и интерактивной рекламы. Эксперт в области интерактивов и XR.

100+ проектов за 5 лет. https://whitelabelgames.ru

По вопросам сотрудничества писать: @it_bizdev
Download Telegram
MVC и MVP: как избежать технического долга в проектах на Unity
https://researchandprogram.blogspot.com/2026/02/mvc-vs-mvp-for-ruthless-unity-developer.html

В статье обсуждается важность использования архитектурных паттернов MVC и MVP в разработке игр на Unity для избежания технического долга и упрощения поддержки кода. Автор утверждает, что монолитный код и чрезмерное использование MonoBehaviours приводят к проблемам в дальнейшем, и предлагает применять модульный подход.

В общем базово на самом деле статья ни о чём. Без архитектурных паттернов писать плохо, с ними хорошо. Краткое описание MVP и MVC без примеров. Но о чём я захотел написать по этой теме? Я недавно попробовал прикольную связку. Model->Controller->ViewModel->Presenter->View

По сути у меня есть модель, с ней работает контроллер. Контроллер описывает бизнес логику (и он внутри разбит на процессоры логики и через группу интерфейсов). Презентер дергает контроллер по события UI, контроллер при обновлении стейта передает вью модел в презентера, а он дальше распихивает их по View. И это оказалось довольно удобно по двум причинам (хотя и не особо быстро, но в контексте это неважно).

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

Вторая причина, это так чётко разделяет логику. В основном благодаря формированию ReadOnly ViewModel становится невозможным изменить модель в обход обращения к презентеру и действий в контроллере. Так как контроллер это не монобех, а просто шарповый класс, то отрезав презентера и вью можно навесить любой другой интерфейс обращения. Хошь апи поверх вешай чтобы играть и выноси логику на сервер, хошь играй текстом в телеграм боте.

В общем надо будет набросать какой-то пример, который не коммерческий, с демонстрацией этого подхода. Это конечно не совсем прямая абстракция как я люблю, там нужно немного вкурить, но как паттерн мне понравилась. Конечно при возможности нужно обсерверы (обновление модели и вью модели) декомпозировать или сделать реактивными. Так как сейчас при обновлении стейта модели она по сути отправляется целиком. Но в пошаговом геймплее это не особо то и важно на самом деле. Просто помню, когда я всё делал на реактивных пропертях, и изучал GraphQL для такой же логики взаймодействия с беком по сути, то там данных гонялось поменьше.

#новости
🔥9
Цензурирование текстов

Речь о нецензурной лексике. Положите ручку, товарисч. Все кто играл в WoW на этапе личкинга должны помнить как близзард ввели сервис цензуры в текстах. И особенно всем должен был запомниться квестовый персонаж Змеебой. Или как его пару лет называли близы Зме@!#%ой.

Задачка частая, особенно в промо. Ники, UGC и тому подобное не должны содержать похабщины. А в детских промо тем более, так как дети любят баловаться. Стандартный подход это выделение матерщиных корней, как и поступили близы. Просто цензура дала осечку и забанила персонажа (на сколько близы недоверяют разрабам, что поставили это на все тексты, а не только на пользовательские. Статический ресурс локализации в целом проверять будто бы необязательно)

Но ведь сейчас эра LLM, может можно отгрузить эту задачу им? Ничего же не мешает системным промтом сказать «отвечай да или нет, цензурное ли слово». И парсить ответ модели. И в целом это относительно работает. Но задача забавно глубже. Потому что по идее там нужны региональные системные промты. Возьмем слово Huesos. На наш слух звучит так себе, но это всего лишь по испански кости, и вполне себе имя. Поэтому если решать задачу так, то региональными системными промтами :) Это конечно на уровне рассуждений, так как дорогой сервис получится учитывая стоимость запросов в сетки. Но забавно, что в таком контексте можно применить LLM.

#мысли
🔥2
Про цифры в игровой индустрии: Деньги, которые вы не закладываете в бюджет

У меня дошли руки продолжить. Тем более что 100 огоньков на прошлом посте набрано. Есть ещё одна статья расходов в игровых (и не только) проектах, которую почему‑то очень любят «забывать». Причём забывают её чаще всего самые мотивированные люди.

Это ваше личное время.

В бюджетах есть всё:
- зарплаты,
- аутсорс,
- маркетинг,
- комиссии,
- сервера,
- софт.

А вот строчки «время фаундера / соло‑разработчика» обычно нет. Как будто оно бесплатное. Как будто оно бесконечное.

У меня так допустим было не с игровым проектом, а с бизнесом аутсорса в целом на старте. Я начинал в 2017-2018 году. У меня был штат 8 сотрудников, партнер, и в месяц моя прибыль составляла дай бог 100к рублей. При том что я работал 7/0 по 12 часов. То есть моё время для компании было бесплатное. И это казалось бы нормально для бизнеса, но тоже не совсем. Если опыт бизнеса уже есть - то это скорее странно. А вот для игровых проектов где в конце вы делите награду, если сказать о успешном проекте, который заработал 20 миллионов рублей в круг скажем, а фаундер от этого получил 1 миллион потратив 1600 часов своего времени на реализацию. Ну с тем же успехом без рисков можно было работать разработчиком и заработать в среднем больше. Но есть конечно же нюансы, и полезно мыслить в этом ключе.

Я иногда представляю жизнь как экономическую стратегию (а она ею и является), то у вас есть несколько веток прокачки:

Можно напрямую качать доход - делать больше, брать больше заказов
Можно прокачивать себя - делать быстрее, лучше, качественее
И можно расти - вот эта ветка самая любопытная. Так как при росте тот же доход растет уже по экспоненте. Это специфичные навыки, репутация и знакомства.

Опыт бизнеса, опыт своего продукта это "перк", который стоит довольно дорого в современном мире. Не так важно успешного или нет. Вообще способность что-то доделать до конца, что требует больше чем неделю времени потратить - это круто. И это можно выкрутить в линию роста. Я когда-то похоронил много проектов, которые мог бы и доделать. Но послушал "старших коллег". И сейчас я понимаю, что потратил бы какое-то время, вероятно ничего бы не заработал (и даже потерял бы денег), но моя экспертиза на рынке стала бы стоить дороже разительно быстрее, чем как сложилось в итоге. В то время я ушел в прокачку ветки дохода, что тоже было в моменте по-своему полезно.

В общем, не стоит забывать считать своё время. Но у времени есть ещё одна особенность. Почему стартапы и амбициозные проекты часто делают студенты. Время стоит по-разному. Конечно можно как в детстве говорить, что я хочу в час стотыщмиллионов. Но в реальности скажем час моего времени в среднем варьируется сейчас от 50 до 250$. То есть мне потратить 1000 часов на что-то стоит минимум 50 000$. Там есть нюансы с полной загрузкой по такой ставке (особенно по верхней планке) и сезонностью, но речь не о том. Когда я был студентом, мой час стоил от силы 5$. (Первый год, я получал 40к в месяц что ли на первой работе). Тогда и навыки были другие, и скорость, и понимание того что делать. Но прикол в том, что чтобы что-то сделать, надо просто это делать как бы не звучало банально. И хреново сделанный проект в разы лучше идеально несделанного. Поэтому в те времена 1000 часов было потратить проще, они были разменной монетой. И критерий успешности совершенно другой. Если я потратил 1000 часов тогда и заработал 10 000$ - это супер успех. Если же сейчас, я потерял 40 000$ 🙂

Поэтому с точки зрения эксперта удобнее выбирать менее рискованные вещи, где норма прибыли предсказуема. Чтобы быть таким же эффективным. Но я в целом уже не так люблю играть в лотерейки на стать долларовым миллионером, и выбираю более понятные истории.
🔥11
Это так, небольшая ремарка для инди. Если вы небольшая команда энтузиастов в первую очередь желаю вам постараться доделать проект. Это дорогого стоит, даже если этот проект ничего не заработает. Но в случае заработка не забывать, что ваше время не бесплатное, и судить об успешности c его учетом. А эксперты рынка и так всё знают, что мне им говорить. Не стесняемся, ставим 🔥. Поставлю планку в 70 штук, пониже. Чтобы не лениться и следующий пост серии написать быстрее.

P. S. Вспоминая мое бесплатное время, что я их зарабатывал причем не на компании. Если подумать тогда у меня был один безумный проект который я сделал практически один (не спав 3 дня вообще) И это и составляет почти целиком 100к в месяц. Который я мог взять и не имея студии :)

#мысли
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥60
This media is not supported in your browser
VIEW IN TELEGRAM
Spyro Inspired Portal
https://github.com/danielpokladek-shaders/spyro-inspired-portal

Интересная попытка воссоздать эффект порталов из игры Spyro: Reignited Trilogy в Unity с использованием URP. Технически эффект реализован через вторичную камеру, которая рендерит вид в Render Texture, и трафаретную маску (stencil masking) для правильного отображения только в области портала. Фоновое изображение искажается с помощью шумового паттерна, а характерное свечение по контуру достигается за счет использования данных глубины, HDR цвета и эффекта Bloom. Проект создан на Unity 6000.3.5f2, код написан на C# и HLSL, и сопровождается подробным разбором в блоге автора.

#интересное
🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
Unity: ИИ напишет код игры за вас
https://www.gamedeveloper.com/programming/unity-says-its-ai-tech-will-soon-be-able-to-prompt-full-casual-games-into-existence-

На недавнем звонке генеральный директор Unity Мэтт Бромберг сообщил, что в марте 2026 года на GDC Festival of Gaming компания представит бета-версию обновлённого Unity AI. Этот инструмент, по словам Бромберга, позволит разработчикам создавать полноценные казуальные игры, используя только естественный язык, полностью исключая необходимость в программировании. ИИ-ассистент, работающий на базе лучших языковых моделей (включая GPT и Llama), а также моделей партнёров для генерации ассетов, будет глубоко интегрирован в платформу Unity. Цель компании — "демократизировать" разработку игр для людей без навыков кодинга и значительно повысить производительность опытных команд, убрав "трение" из творческого процесса и позволив десяткам миллионов новых авторов создавать интерактивные развлечения.

Цель достойная, но фентезийная. Я тут недавно для одного небольшого проекта пользовался Claude. И он очень хорош. Он пишет код просто великолепно, но есть нюанс. Я потратил на задачу 15$ и 10 часов. Без него думаю ушло времени в 3 раза больше бы, но тем не менее это не взял и тебе написали. И говорил я с ним далеко не «естественным языком», а ставил конкретные технические задачи. Все паникуют что разработчиков заменят, вот придумали новое ИИ агентов. Что спад рынка из-за ИИ. И тому подобное. А в реальности нужно просто радоваться новому удобному инструменту.

#новости
🔥20🤮2
This media is not supported in your browser
VIEW IN TELEGRAM
Настройка анимаций боя в Unity : краткое руководство
https://80.lv/articles/combat-animations-set-up-for-unity-game

Разработчик OmarItani10, известный на Reddit, работает над системой боя от третьего лица — пока результат выглядит брутально и кроваво. Автор добавил анимации уклонения Cascadeur, стараясь добиться отзывчивости в духе Хеймдалла из игры God of War.

#новости
🔥19❤‍🔥2
Эффект светящихся сфер (Glowing Orbs) в Unity
https://www.youtube.com/watch?v=yLxhRgCBl9w

Урок о том, как создать эффект светящихся сфер с помощью Shader Graph в Unity. Пошаговый разбор создания шейдера, настройки нодов, добавления свечения, работы с цветом, прозрачностью и динамическими эффектами для более выразительного VFX.

#новости
🔥6❤‍🔥1
Обновлённое руководство по 2D‑графике, анимации и освещению для Unity 6.3 LTS
https://unity.com/blog/ultimate-2d-game-art-animation-lighting-ebook-key-takeaways

Unity выпустили обновлённое руководство Unity для 6.3 LTS, которое охватывает настройку 2D проекта, анимацию, освещение и оптимизацию. Теперь оно дополнено примерами (в т. ч. Bunny Blitz), видеоуроками. Интересная книжка созданния инженерами Unity 2D и художником Яреком Маевски.

#новости
🔥9
Опасность ИИ

Я последнее время все больше ковыряю Claude. И он конечно очень хорош. Это прям джун под рукой, который некоторые моменты пишет лучше меня. Но чисто технически. Я пробовал поставить абстрактную задачу, в режиме планирования. Результат ни о чем :) А если давать мелкие задачи, то всё классно.

Но подумал я с утра не об этом. Я много с кем обсуждал, что ИИ в современном мире это не интеллект. Там много абстрактных понятий возникает. Сознание и тому подобное. Но на самом деле базовый пример, и на эту тему была статья. LLM не умеют считать. Они арифметику воспринимают не как цифры, а как вот вопрос, как на него отвечали чаще всего - то и верно. Поэтому это просто всё еще продвинутые поисковики. А агенты грубо говоря поисковики рекурсивные, с возможностью декомпозиции задач. Но в дискуссиях на тему конца света из-за ИИ всегда возникал аргумент (у меня) мотивации.

Типа ИИ сам ничего не захочет, так как по сути сейчас это система уравнений, которая на вектор 1 на вход, дает вектор 2 на выходе. А что это картинка, текст или видео — это уже детали. И часто у ИИ в фильмах есть инстинкты и что-то вроде сознания. Скайнет там выжить пытался, альрон чет посмотрел и решил уничтожить человечество. А что если к сложным коллапсам просто будут приводить тупые и неточные запросы. В паре с непредсказуемостью решений.

То есть ИИ не попытается захватить мир. Он просто уничтожит его выполняя тупорылые задания. Где-то в глубинке США скажет условной Амазоновской колонке «привези мне Бразильский кофе». И в режиме планирования агент решит, что оптимальнее всего будет захватить Бразилию, так как в магазинах в радиусе 100км нет бразильского кофе. И тому подобные галлюцинации :)

В сознание и инстинкты у ИИ я не особо верю, так как зачем их добавлять, кроме как научного интереса. А в криво поставленные задачи и феноменальные решения от ИИ — вполне. Вот это по-людски :)

#мысли
😁17🔥2
Стратегия Unity по работе с конвейерами рендеринга на 2026 год
https://discussions.unity.com/t/render-pipelines-strategy-for-2026/1710004

В 2026 году Unity сосредоточится на развитии URP: его производительность, время сборки и стабильность будут улучшены, появятся новые возможности 3D‑освещения (в т. ч. физические световые модули). Поддержка HDRP сохранится — ключевой новинкой станет совместимость с Nintendo Switch™ 2 (официальное превью ожидается в версии 6.5), при этом акцент сместится на стабильность и поддержку существующих функций. Встроенный конвейер рендеринга будет помечен как устаревший в Unity 6.5, останется доступным до версии 6.7 LTS (как минимум до конца 2028 года), а его окончательное удаление будет зависеть от обратной связи сообщества; цель этих изменений — уменьшить фрагментацию графического движка, упростить работу разработчиков и позволить им сосредоточиться на создании инновационных игр.

Итак, и это отличный повод написать о том с чем я столкнулся. Поговорим о вебе. И о URP. URP великолепная вещь. Шейдер граф и прочие прелести жизни очень радуют. С правильным профилями, настройками и оптимизациями телефон в вебе даже не плавится (советую следить за дефолтами в проекте, так как он иногда в веб суёт пк конфигурацию) Но есть один нюанс. Сколько же всего оно за собой тянет. Из-за SRP нельзя стрипнуть внезапно пакет Terrain, хотя казалось бы почему SRP опирается на тиррейн. Короче говоря есть у скриптабл пайплайнов проблемы с модульностью и зависимостями. И если Unity хотят убить Built-in, то я надеюсь сперва они сделают пайплайны полностью независимыми. Так как в задачах где каждую копейку веса мне нужно экономить, тянуть какие-то лишние модули вроде пакета Mathematics, который я в проекте никак не задействую - не хотелось бы. Конечно в современных реалиях скоростей интернета и тому подобного это не прям критическая проблема. Но я годы положил на борьбу с тем, чтобы Unity грузилось в вебе быстро. Для меня самым печальным открытием было то, что нельзя грузить Unity пока пользователь тусуется на экранах лендинга, если на нём есть любой ввод текста, потому что Unity его полностью перехватывает. Там если костыли с пляской с бубном, но я удивился что это прям нетривиально.

#новости
🔥6
Размытие UI в Unity 6 — туториал по Shader Graph
https://www.youtube.com/watch?v=FM3dZVCWMZs

Unity это такой движок в котором часто задаешься вопросом: "А почему я не знал, что это тут вообще лежит?". Прикольное видео демонстрацией работы примеров UGUI Shader Graph. Можно ли использовать этот блюр в реальности на тех же мобилках - хз. У меня блюр свой, так как грабпасс стоит тонну ресурсов. Тут надо изучать используют ли эти примеры грабпасс или нет. Но забавно что вообще такие самплы есть у шейдер графа. Этого я не знал 🙂

#новости
🔥5
Разбираемся с URP в Unity
https://discussions.unity.com/t/understanding-urp-a-beginner-friendly-guide-to-render-passes-renderer-features/1710336

В статье инженер Unity Джемин Ли объясняет различия между встроенным рендер-пайплайном (Built-in) и универсальным рендер-пайплайном (URP), акцентируя внимание на том, что URP управляется пайплайном, а не шейдерами, и позволяет контролировать структуру рендеринга через SRP (Scriptable Render Pipeline). Автор описывает три уровня эволюции рендер-пайплайна — от фиксированного аппаратного до программируемого, объясняет, как в URP выбираются пассы шейдеров через теги LightMode, и разбирает проблемы, возникающие при миграции с Built-in на URP, например, связанные с порядком рендеринга и сортировкой объектов. Также в статье рассказывается о Renderer Features — механизмах расширения URP для внедрения пользовательских стадий рендеринга, и даётся чек-лист для создания собственных Renderer Feature.

#новости
🔥8
The Immersive Edge: обзор новостей отрасли за февраль
https://unity.com/ru/blog/february-2026-industry-content-wrap-up

В материале обсуждаются тенденции 2026 года, включая практическое внедрение технологий благодаря слиянию ИИ, XR и демократизации 3D-данных, представлены три руководства для команд по работе с промышленными 3D-решениями, а также новые руководства для разработчиков по созданию интерактивных 3D-конфигураторов, оптимизации CAD и ускорению разработки XR. Приведены примеры успешного применения технологий Unity в компаниях Walmart, Mercedes-Benz и Wren Kitchens в сферах иммерсивной коммерции, HMI и VR-выставочных залов.

Достаточно любопытный пост для XR разработчиков. Люблю такие. Кейсы которые можно демонстрировать потенциальным клиентам, обзор каких-то инструментов и тому подобное. Хотя часть кейсов старые, о некоторых я не знал.

#новости
🔥1
Онлайн-редактор GLSL шейдеров прямо в браузере
https://fragcoord.xyz

Наткнулся на приятный инструмент для тех, кто пишет фрагментные шейдеры. Веб-редактор на базе WebGL2, где можно писать, отлаживать и шарить GLSL фрагментные шейдеры прямо в браузере без лишних телодвижений. Выглядит минималистично, работает шустро, и удобно то, что можно сразу кидать ссылку на свой шейдер другим — не нужно ничего скачивать и настраивать.

#интересное
🔥9
Стратегия Unity по рендер-пайплайнам на 2026 год
https://discussions.unity.com/t/render-pipelines-strategy-for-2026/1710004

В 2026 году Unity упростит работу с конвейерами рендеринга: сделает акцент на развитии URP (повышение производительности, стабильности и визуальных возможностей), поддержит HDRP для Nintendo Switch™ 2 и начнёт процесс убийства встроенного конвейера рендеринга.

Тред стоит почитать целиком. Если коротко: URP получает основное развитие — производительность, время сборки, 3D-освещение.

#новости #unity
🔥7
5 способов нарисовать обводку
https://ameye.dev/notes/rendering-outlines/

Задача которая встречается на каждом втором проекте. Статья хорошо раскладывает методы: экструзия вершин, Gaussian Blur, Jump Flood, определение границ. Мой любимый — Gaussian Blur через Custom Render Pass в URP. Прощает любую геометрию. Экструзия проще, но на сложных мешах — беда.

#новости #шейдеры #urp
🔥2
Задачка - Исполнение корутин

Давайте попробуем что-то новое. В этом году у меня есть легкое вдохновение на тему блога, поэтому попробуем новую рубрику. Отвечать можно реакциями, так и пойму интерес к рубрике.

Что выведет этот код в Unity?

void Start()
{
StartCoroutine(A());
Debug.Log("3");
}

IEnumerator A()
{
Debug.Log("1");
yield return null;
Debug.Log("2");
}

Варианты:
а) 1, 2, 3 - 🤷‍♂️
б) 1, 3, 2 - 🤷‍♀️
в) 3, 1, 2 - 🤷

Ответ завтра 🙂 Если будет интерес, то буду публиковать такие с разной сложностью чисто для разминки мозгов. Это не самая сложная на понимание корутин. Думаю такое прикольно чисто как жевачка для мозгов. А то скоро за вас всё ИИ агенты будут придумывать 🙂 Эмодзи подбирались, чтобы они не давали подсказок 🙂 Ну и огоньки тоже можно поставить

#задачка #unity
🤷‍♀80🔥10🤷5🤷‍♂2
Смотри как могу

Большая проблема начинающих: делать что-то не потому что надо, а потому что «смотри как могу». Я помню как добавлял HTML-теги в школьный проект только чтобы выпендриться что я их знаю. Это были fieldset и legend как я помню. Художественного смысла — ноль. Но ведь я вычитал где-то, что вот такие теги есть.

И тут мы возвращаемся к KISS. С новичками очень часто замечаешь, да и не только с ними, что человек увидел что-то и ему сразу хочется это применить. И это во многом. Я так когда-то смотрел видосы по доте и увидев фишку хотел пойти её опробовать. Но в коммерческой разработке это очень вредно. Самая главная проблема что часто эти "фишки" в разработке бывают сложными для человеческого восприятия. Это красивые и казалось бы элегантные абстракции которые понимает сам человек.

Условно можно написать в простой бродилке класс дверь, интерфейс взаимодействий с дверью и открывать дверь по этому интерфейсу. Но это даже не выдуманный пример, я видел проект в котором двери создавала целая фабрика, которая декорировала двери функционалом открытия через композицию. Элегантно конечно. В теории можно задекорировать чем хочешь, с агруменацией "а вдруг у нас дверь мимик будет". И в целом абстрактно писать классно. И может с ИИ агентами проще будет понять такие безумные замыслы. Но когда код читают люди - пишите проще. Не все разгадают вашу сложную и супер красивую конструкцию. Код должен быть гибким, но простым. А показывать как сложно можно написать какую-то гениальную абстракцию - это не про коммерческую разработку.

#мнение
🔥10❤‍🔥1
Григорий Дядиченко
Задачка - Исполнение корутин Давайте попробуем что-то новое. В этом году у меня есть легкое вдохновение на тему блога, поэтому попробуем новую рубрику. Отвечать можно реакциями, так и пойму интерес к рубрике. Что выведет этот код в Unity? void Start() {…
Ответ на вчерашнюю задачку: б) 1, 3, 2

StartCoroutine запускает корутину. Она выполняется до первого yield return и возвращает управление. То есть Debug.Log("1") выполнится сразу, потом yield return null приостановит корутину, выполнится Debug.Log("3"), и только в следующем кадре — Debug.Log("2").
Корутины это НЕ потоки. Они работают в main thread. yield return null — это "продолжи в следующем кадре". Это было что-то очень простое. Завтра закину посложнее. Чем можно людей на собесах пытать 🙂

#задачка #unity
❤‍🔥94🔥3