Dernières publications de Unity Architect: архитектура unity проектов (@uniarchitect) sur Telegram

Publications du canal Unity Architect: архитектура unity проектов

Unity Architect: архитектура unity проектов
Авторский блог unity lead'a. Пишу про архитектуру проектов и свой путь.

Создал и веду курс по архитектуре: https://uniarchitect.notion.site

Иногда выкладываю видео и веду стримы: youtube.com/@vangogih

По всем вопросам: @vangogih
3,395 abonnés
9 photos
75 vidéos
Dernière mise à jour 10.03.2025 06:30

Le dernier contenu partagé par Unity Architect: архитектура unity проектов sur Telegram

Unity Architect: архитектура unity проектов

12 Sep, 06:41

2,548

Какую игру делаем?

⬆️Цель проекта: демонстрация построения архитектуры приложения, оценки и выбора различных подходов и решений, применяемых в разработке относительно соотношения цена/качество (под ценой имеется ввиду человекочасы, конечно), а также демонстрация интеграции различных сторонних плагинов аналитики, рекламы и пр. - все то, что применяется на практике в 99% проектов.

Опираясь на различные комментарии в посте, а также на собственные желания, интересы и возможности (временнЫе), я насобирал вот какую игру:

Жанр: симулятор градостроения - мерж - Idle - 2048

🔝Идея: Игроку предстоит строить и мержить здания, расположенные на ограниченной сетке. Каждое здание приносит софт или хард валюту, или имеет другие эффекты (потенциал для расширения). Валюту приносит в Idle режиме, то есть без участия игрока. Мерж зданий увеличивает уровень здания, и в последствии доходность. На скорость добычи валют, а также на количество могут действовать различные эффекты (бафы, дебафы, временные, постоянные). Эффекты добавляют найденные предметы, которые собираются в отдельном, ограниченном по объему месте (аналог инвентаря). У зданий есть топовый уровень, после которого мержить нельзя, эти здания имеют особенный эффект. В игре присутсвует N-ое количество таких цепочек зданий (от 1 уровня, до max). Игрок играет "Уровень", это по факту карта-сетка ячеек (город), где нужно выполнить конечную цель в различных условиях левелдизайна. Когда конечная цель выполнена, игрок может перейти в следующий город. Монетизация, как обычно, рекламная + внутреигровые покупки. Платформа - любая на ваш выбор.

Те, кто хочет подсобить артом (3D мир, UI), звуками/музыкой, геймдизайном - милости просим, пишите в комменты или в ЛС (но имейте ввиду, могу отвечать долго).

‼️WARNING‼️: Не думайте, что это будет быстро, вжух и готово! Это будут доолгие месяцы разработки в ультрамедленном режиме. Мы строим YouTube проект, большой проект, на это тоже нужно время. Даже работая фултайм на такое уйдет не один месяц. Спасибо за внимание!
Unity Architect: архитектура unity проектов

09 Sep, 17:00

2,920

ВАШ ПОСЛЕДНИЙ КУРС ПО АРХИТЕКТУРЕ | СТАРТ ПРОДАЖ

Закончился стрим, на котором мы разобрали научную статью "Когнитивный процесс принятия решений".

В ходе анализа мы выяснили, какой фактор помогает перейти от управления вероятностью исхода события к действиям, которые ведут к увеличению profit'а и сокращению cost'ов.
Ссылка на запись

Этот стрим был нулевой лекцией моего курса, из которой можно понять, в каком формате будут проходить все занятия.

🔻Во время стрима состоялся ОФИЦИАЛЬНЫЙ СТАРТ ПРОДАЖ.

Всю информацию о курсе, его целях и особенностях вы сможете подробно прочитать в статьях:
🔸 ВАШ ПОСЛЕДНИЙ КУРС ПО АРХИТЕКТУРЕ Ч.1
🔸 ВАШ ПОСЛЕДНИЙ КУРС ПО АРХИТЕКТУРЕ Ч.2
🔸 ВАШ ПОСЛЕДНИЙ КУРС ПО АРХИТЕКТУРЕ Ч.3

Или на сайте, где есть ответы на часто задаваемые вопросы:
https://uniarchitect.notion.site/

📞 Хочешь записаться прямо сейчас, пиши мне: @vangogih

Кол-во мест ограниченно!
Продажи заканчиваются уже 6 Октября.

Поспеши, пока есть места!
До встречи на курсе 👋

@UniArchitect
#курс@UniArchitect
Unity Architect: архитектура unity проектов

07 Sep, 16:14

2,759

АНОНС СТРИМА

Завтра в Воскресенье в 15:00 МСК проведу стрим на тему "Процесс принятия решений".

На нем я расскажу основы того, как принимаются решения человеком.

План:
🔸Разберем научную статью по когнитивному процессу принятия решений
🔸Посмотрим как это влияет на сроки и стоимость проекта
🔸Найдем первоисточник, причину почему разработчиков волнует архитектура
🔸Ну и под конец состоится старт продаж Вашего последнего курса по архитектуре

Это будет самое начало, основа на которую будет опираться весь дальнейший материал!
Нулевая лекция курса из которой можно будет понять в каком виде и формате будут проходить все занятия 🫡

Ставь себе уведомление о начале трансляции:
📎https://youtube.com/live/zSf2rvH9cWw

Завтра в 15:00 МСК встречаемся на стриме 💪

@UniArchitect
Unity Architect: архитектура unity проектов

01 Sep, 10:00

14,144

ВАШ ПОСЛЕДНИЙ КУРС ПО АРХИТЕКТУРЕ Ч.3

В самом популярном комментарии к первой части верно подмечено, что нужно давать не только рыбу, но и удочку.

Т.е. не просто набор best practices, который устареют через какое-то время, а в знания, которые позволят принимать решения на проектах годами.

Чтобы этого достичь, в курсе будет большой теоретический модуль, в котором будет:
🔸Теория по инженерной разработке
🔸Разбор имеющихся архитектурных подходов
🔸 Анализ текущих метрик качества кода и способы их измерения
Этим мы заложим основу, которая будет всегда актуальна!

Последующие модули будут направлены на то, чтобы по крупицам разобрать проект на части.

Именно это мы будет обсуждать в 3ем модуле: Подробный план курса
Цель которого — найти каждый элемент, который требует принятия архитектурного решения.

🔻И каждый проект это море непринятых кем-то решений!

Иногда мы не знаем, где и как нужно принимать их, а также как правильно фиксировать и добиваться их выполнения.

Нет единого документа или статьи, которые можно использовать как чек-лист перед релизом, чтобы убедиться, что всё учтено.

🔸Поэтому я подготовил памятку на 10 страниц, где собраны ключевые элементы каждого проекта, требующие архитектурного подхода.

Этот документ всегда будет у вас под рукой, помогая выявить, что ещё не учтено в проекте, предложить варианты и внедрить их.
Это простые действия, которые приведут к значительным результатам!

По кнопке ниже, вы сможете прямо сейчас открыть бот и скачать памятку с рекомендациями 🫡

Ставь 👍 если тебе заходит подобного рода контент!

#курс@UniArchitect
Unity Architect: архитектура unity проектов

25 Aug, 09:09

3,390

Комментарии можно оставлять под эти постом 😅

Буду знать что посты в ТГ не поддерживают и кнопки и комменты 😬
Unity Architect: архитектура unity проектов

25 Aug, 09:00

3,517

ВАШ ПОСЛЕДНИЙ КУРС ПО АРХИТЕКТУРЕ Ч.2

В прошлом посте мы признали разрыв в уровне контента.
Теперь важно понять, как его устранить и какие темы необходимы.

Процесс был долгим и сложным.
Анализируя материал, я постоянно задавался вопросами:
🔹"Какая информация действительно нужна для принятия качественных решений?"
🔹"Что необходимо для целостного усвоения всей информации в курсе?"
🔹"Каких знаний мне самому не хватает?"
🔹"Насколько эта информация важна?"

Так постепенно сформировался список тем, которых не хватает в стандартном информационном пространстве разработчика.
Оставалось лишь переработать и объединить их в единое целое 😊
Ну вроде изян! мем 🤣

Вот немного цифр:
🔸Суммарно в основу курса легла основа примерно из 50 источников
В основном это были научные статьи, книги, видео, профессиональные блоги и документация.
🔸С января 24-го на проработку всего этого ушло более 300 мифических человеко-часов 😬
То есть, каждый месяц уходила полная рабочая неделя на проработку в течение 8 месяцев.
🔸На подачу материала уйдёт в сумме около 40 часов — по 8 часов на каждый из 5 модулей!

Изначально мне хотелось максимально убрать зависимость курса от моего времени и физических ресурсов.
Но чем дольше я работал над материалом, тем больше понимал, насколько долго это всё может затянуться.

У меня был план, которого я придерживался:
🔹Проработать, структурировать материал, подготовить конспекты для видео.
🔹Записать и смонтировать видео.
🔹Сделать сайт-лендинг, где была бы собрана вся информация в удобном виде.
🔹Соединить его с платформой для обучения.

Но по прошествии 8 месяцев стало понятно, что работать столько же над полировкой, монтажом, сайтом и прочим будет очень выматывающим.

Поэтому я принял решение, что первый и единственный поток я проведу лично в формате онлайн-лекций!

И я хочу признаться:
Не получится сделать что-то действительно полезное и крутое, варясь только в котле собственных мыслей.
Как и любая игра, курс требует полировки и качественной обратной связи.

Что будет включено:
🔸Доступ к закрытому телеграм-каналу, в котором будут публиковаться все материалы:
Записи, презентации, список источников и, возможно, текстовые конспекты лекций.
🔸Индивидуальный разбор кейсов и ответы на вопросы.
🔸Доступ к курсу на платформе после релиза.
🔸А также главная фишка, киллер-фича:
Персональный доступ к реальному проекту Magic Battle Arena!

Это уникальная возможность не только получить полезные знания, но и отточить их, работая над реальным проектом, который я лично разрабатывал в своей игровой студии Silverfox Games.

Для меня это способ вдохнуть вторую жизнь в этот проект, а для вас — отличный пример и источник знаний!
Получается win-win 😎

Переходите по ссылке и смотрите полный план курса со всеми темами!

Спасибо всем большое за активность в предыдущем посте.
Я прислушался к каждому из комментариев и подправил план курса 🫡

Делитесь с коллегами и боссами, уже через пару недель состоится открытие продаж!
Ставь 👍, если уже с нетерпением ждешь этого!

#курс@UniArchitect
Unity Architect: архитектура unity проектов

30 Jun, 09:49

3,952

С ПОЛЕЙ РАЗРАБОТКИ: REVERT MERGE COMMIT

Я работаю с git только через консоль.
Мне не нравятся все GUI, которые имеются на рынке. Т.к. часто они плохо решают узкие, сложные кейсы, которые порой возникают.
Текущий пост прекрасный тому пример, ибо через git GUI встроенный в райдер я не смог решить проблему ниже.

Ситуация:
Есть баг, которые вы правите перед релизом. У вас в голове два решения:
🔸 По уму, но дольше и большим объемом регресса.
🔹 Поправить точечно, грязно, но быстро, внедрившись в другую систему.

Конечно как и подобает доблесть, выбираем первый вариант. Делаем фикс, примерно в 3-6 коммитов, проверяем в редакторе, отправляем в QA.

И вроде опыта достаточно, много всего знаешь и проверил все перед заливкой, но:
🔹 На мобилках фикс не работает.
Там другое графическое API, отличное от редактора и там твой баг вообще не исправлен, а наоборот приводит к hard lock'ам из-за неправильной сортировки UI элементов в очереди на отрисовку.

И вот вы с лидом (или как лид) думаете как исправить это.
Изменения расползлись по другим веткам, а с момента вашего merge commit'a уже прошло пару дней.

Надумали два путя:
🔹 Удалить фикс всех веток.
Можно сделать как через rebase всех изменений после ваших изменений, а потом force push'ем обновить все ветки.
Можно ручками сделать cherry-pick, а потом force push'ем обновить все ветки.
🔹Сделать revert merge коммита.

Проблема с первым:
🔸Придется блокировать работу во всех ветках на время отката.
🔸Во время rebase могут возникнуть конфликты из-за которых можно накуролесить на --выходные и ++пара бессонных ночей.

Со вторым проблема в том, что ХЗ как сделать revert целого merge'а.
И ответ совсем не очевидный:
git revert -m 2 или 1 <merge_commit_hash>

С revert понятно, а что за магия с 2 или 1?

Приготовьтесь, инфу про git оч сложно запаковывать компактно 😅

git — это направленный ацикличный граф, ноды которого всегда хранят в себе hash родителя(-ей).
Т.е. каждый git commit -m "the best changes" создает новую ноду в которую записывает hash parent коммита (hash коммита предшествующий текущему) и hash object-tree.

Для простоты понимания git — это два независимых LinkedList'а один - для изменений (object-tree) второй - для коммитов (commit-tree).
Только LinkedList'ы однонаправленные (нету Next) и могут иметь несколько нод (Node<T>[] Previous).

Это значит:
🔸 Все коммиты в ветке однонаправленно связаны с самым первым Initial commit.
Т.е. из любого коммита в ветке можно дойти до самого начала графа.
🔸 Каждый коммит, без указания parent'а, как нода из LinkedList'а, Previous которой равен null.
Угадайте как их можно удалить? 🙃
🔸 Эта структура отлично подходит для добавления/изменения/удаления.
С поиском сложнее, но благодаря сортировке префиксов по алфавиту (см. папку objects), используется бинарный поиск.

С устройством разобрались. Дальше порядок работы merge:
1️⃣ Находим общий коммит.
Просто идем по графу, пока parent'ы не совпадут.
2️⃣ Ищем diff от общего коммита до последних коммитов в двух ветках.
3️⃣ Полученный diff пишем в merge-commit.
4️⃣ В parent у merge-commit'a прописываем последниE коммитЫ из двух веток.
Т.е. merge-commit, в отличии от обычного имеет 2 parent'а.

Это фактически значит:
🔻git merge не меняет родителей у существующих коммитов (в отличие от rebase), а создает новый, с ссылками на 2 последних коммита в ветках.

А revert-commit может иметь лишь один parent.

Значит, чтобы сделать все правильно, нужно указать изменения какого именного из parent'ов мы хотим revert'нуть.
Или по другому: diff какой из ветки мы должны revert'нуть

За это как раз и отвечает магическое 1 или 2 — номер parent'а, изменения которого мы хотим revert'нуть.

Лично у меня случилось 2 озарения:
🔶 Именно merge-commit несет в себе все изменения.
Revert'нули его == revert'нули изменения всех коммитов.
🔶 Все, rebase, cherry-pick есть маленькая merge операция. А не наоборот.
До этого я думал что merge - аналог rebase 🤯

Но помните, вы этим самым, вы делаете revert изменений, не истории.

Ставь 👍 если такая движуха тебе по кайфу!

Источники:
Ответ с SO
Статья раз
Статья два

@UniArchitect #будни
Unity Architect: архитектура unity проектов

05 Jun, 12:51

3,568

ЦЕЛЬ

Каналу стукнул год ❤️‍🔥

Много всего получилось сделать за это время:
— 90+⭐️ Шаблон пустого проекта с архитектурой, которую я стараюсь использовать на всех своих проектах
— ~50⭐️ Плагин для миграции json файлов
— 2 статьи на хабр:
- Архитектура unity проектов
- Миграция json файлов
— Написать несколько полезных welcome статей в другие каналы:
- Полиморфизм системы
- UnityEngine.Object == null
- Архитектура и рендер
— Посетить DevGAMM Lisbon
— Помочь найти работу одному крутому senior'у 😎
— Набрать 1400 крутых, активных подписчиков

В общей сложности я написал около 50 содержательных постов, где постарался поделиться своим опытом и подходом к архитектуре.
Не стесняйтесь пользоваться навигацией, за год было куча всего, что вы могли пропустить 😉

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

Я не планирую заканчивать работать над блогом, а наоборот, хочу его развивать.
Моя цель:
🔻 Создать единое место откуда разработчики с 1+ год коммерческого опыта работы с unity смогут найти всю информацию касательно сложных технических нюансов при работе с unity.

Все мы в знаем о таких блогах как: Catlike Coding, JacksonDunstan, Alan Zucconi
Я как самоучка вычитал все эти блоги вдоль и поперек.
И как никто другой хочу не только брать, но и отдавать.

Потому за следующий год я планирую:
🔹 Запустить сайт-блог
🔹 Объединить идею качественных статей с качественными курсами
🔹 Полученные ресурсы использовать, для того чтобы писать статьи, видео, которые будут экономить время на самостоятельное погружение в узкие и сложные темы

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

Так что это только начало, человек я амбициозный и терпеливый.
Уверен что все получится 💪

Спасибо каждому за то что остаетесь со мной 🥰

Ставь 👍 тебе по кайфу такая движуха!

@UniArchitect