TGViewer
Channel Public Channel
aks2dio | Unity и геймдев

aks2dio | Unity и геймдев

@aks2dio

Директ: @antonkerp

Про GameDev, разработку на Unity и C#, менеджмент, образование, менторство и карьеру в целом.

С 2017 г. разрабатываю, лидую, преподаю и консультирую.
Был в найме, стартапах, фрилансе, инди.
Опыт: Mobile, Desktop, Web, XR.
Subscribers
492
Photos
185
Videos
5
Links
222

Showing posts older than #109 · Back to latest

Older Posts 20 shown
Post #108 348
🚀 Анонс выступления на CityFest 🚀

🗓 5 апреля будет возможность встретиться на геймдев-конференции CityFest в Новосибирске!

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

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

🔗 Подробности о докладе и самой конференции по 💙 ссылке.

🤞 Надеюсь, что всё успею, и планы не сорвутся.
  • 👍 6
  • 🔥 1
Post #107 537
♾ Про CI/CD в геймдеве ♾
Уровень материала: 🐓 #senior

Давно не попадались под руку материалы по CI/CD. А тема-то важная. Геймдев — это не только лишь игрушки, и об этом не стоит забывать.

В прошлый раз 📱 я делился видео про CI/CD в Gitlab и пробовал объяснить, зачем оно нужно игроделу и какие варианты чаще встречаются в геймдеве.

📖 🔤🔤🔤🔤🔤🔤🔤🔤🔤🔤

Про всё про это, но подробнее и применительно именно к геймдеву, на Хабре на днях вышла обзорная статья 📝.

С пояснениями, существующими решениями, сравнениями, реальными примерами использования и стоимости — со всем, что может быть интересно и полезно тому, кто только к этому приобщается.

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

❗️ 🔤🔤🔤🔤🔤🔤🔤🔤🔤🔤

Единственное, я бы отметил, что связка из Unity Cloud Build, TeamCity и GitLab CI/CD достаточно экзотическая. Получается, что за CI отвечают одни сервисы, а за CD — другие.

Обычно нет необходимости поддерживать такой парк технологий — со всем описанным бы справился и один TeamCity или один GitLab CI/CD.

Но этим и интересен пример. Была начальная ситуация. Условия поменялись — появились проблемы. Надо решать теми средствами (и руками), что есть, с минимальными рисками, ещё и «на ходу».

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

Возможно в следующих частях удастся узнать о том, как дальше развивается эта история.

➕ 🔤🔤🔤🔤🔤🔤🔤🔤🔤🔤🔤

Оставлю ещё ссылки на стримы от K-Syndicate по теме CI/CD: первый практический 📺 и второй более болтологический 📺.

Там наглядно и подробно про автоматизацию сборки в Unity, про написание скриптов, про использование Cake, про встраивание в TeamCity, про сценарии использования Unity Cloud Build и многое другое по мелочи.
—————————————
#gamedev #development #backend #infrastructure #devops #cicd #геймдев #разработка #бэкенд #девопс #инфраструктура #автоматизация #рекомендация #статья #видео
  • 🔥 4
  • 👍 3
Post #106 506
📊 Немного статистики по прошлому посту 📊
Уровень материала: 🐒 #offtop

📣 Недавно я делал публикацию с примером того, как LLM помог быстренько «навелосипедить» мониторинг для проблемного проекта. Это было мотивировано простым желанием поделиться интересным опытом. В первый раз живу в такую эпоху, и у меня подобные ситуации ещё пока вызывают некоторый восторг.

👀 Я уже не раз поднимал тему LLM, поэтому был готов к волне хейта и иронии. Но в этот раз всё прошло относительно «спокойно». Даже на токсичном DTF, где набралось 4,3к просмотров (а это в разы больше обычного), ничего запоминающегося не произошло.

🌐 Абсолютно неожиданно для меня этот пост получил больше всего внимания в соц. сети Сетка.
Это не реклама. Сетка — это лагающее, глючащее мобильное, Карл, приложение без веб-версии, которым пользоваться больно и неприятно. Tenchat был сильно лучше, пусть он уже и больше мёртв, чем жив.


🤩 Ради изучения площадки, я туда периодически перекопировал посты. Не все, точечно, по разным тематикам. Редко какой пост там набирал больше 100 просмотров. Но именно этот собрал рекордные 4,7к. Что больше, чем на всех других площадках вместе взятых. Это принесло уже больше 160 подписок. И эти цифры каждый день продолжают расти. В Сетке, Карл.

📇 Цифры цифрами — это всё баловство. Из действительно интересного: это начало приводить к новым контактам. Среди которых есть и полезные.

🥸 Вот такой забавный поворот. Вывод не придумал. Разве что «кек».
Telegram aks2dio | Unity и геймдев Сценарий применения LLM из личного опыта Уровень материала: 🤖 #llm Чем больше осваиваю нейросетевые технологии, тем больше разнообразных сценариев использования открывается, в которых это может помочь увеличить продуктивность и эффективность. Об одном из…
  • ✍ 1
  • 🔥 1
  • 🥴 1
  • 😴 1
Post #105 565
🌴 Про Behaviour Tree от Unity и другие подходы 🌴
Уровень материала: 🐥 #middle

Мы в командах постепенно переползаем на Unity 6. И в Package Manager был замечен пакет Behaviour. Оказалось, это новый и бесплатный пакет для Behaviour Tree от самих Unity. Прилагаю демонстрационный ролик 📺

Представленный пакет пока «в бою» ещё не протестирован. Но радует, что появилась официальная альтернатива достаточно не дешёвым популярным решениям для Behaviour Tree: Behavior Designer, AI Tree и Node Canvas.

🔹 Behaviour Tree / дерево поведений — это мощный, гибкий и популярный инструмент для создания сложного ИИ. Он позволяет представить поведение в виде древовидной иерархии, где каждый узел отвечает за определённое действие, решение или условие.

Помимо Behaviour Tree для реализации игрового ИИ часто можно встретить другие подходы:

1️⃣ FSM( Finite State Machine):
Модель поведения ИИ, где персонаж находится в одном из заранее определённых состояний («патрулирование», «атака», пр.) и переходит между ними в зависимости от условий.

2️⃣ HFSM (Hierarchical Finite State Machine):
Усовершенствованная версия FSM, где состояния могут содержать подсостояния, что позволяет организовать более сложное поведение.

3️⃣ GOAP (Goal-Oriented Action Planning):
Подход, при котором ИИ ставит цели и планирует последовательность действий для их достижения, оценивая затраты и выгоду каждого шага.

4️⃣ Utility AI:
Система, где ИИ выбирает действия на основе их «полезности» в текущий момент, оценивая различные факторы (здоровье, расстояние до цели и пр.) и выбирая наиболее оптимальное поведение.

Подробнее со всеми этими решениями можно ознакомиться в этой монументальной часовой статье 📝. Внутри много полезных тегов и ссылок, в т.ч. про Steering Behaviour и Pathfinding.

Также можно заглянуть в этот плейлист 📺 с объяснениями и реализациями для Unity упомянутых выше подходов, в частности Behaviour Tree с Blackboard, которые и предоставляются в пакете Behaviour. В этом же плейлисте можно даже найти обзор и на него.
————————————
#unity #gamedev #development #architecture #ai #bt #fsm #hfsm #goap #utility #геймдев #разработка #архитектура #ии #рекомендация #видео #статья
  • 👍 6
  • 🔥 3
Post #104 530
🚀 Реактивное программирование 🚀
Уровень материала: 🐥 #middle

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

Я встретил хорошее видео, которое доступно поясняет устройство этой технологии. И подготовил несколько тезисов по теме.

📺 YouTube / 📝 Dzen


📌 🔤🔤🔤 🔤🔤🔤🔤🔤 🔤🔤🔤

Реактивное программирование — это парадигма, где код строится вокруг потоков данных* и их изменений. Вместо ручного обновления состояний мы подписываемся на события (например, нажатие кнопки, изменение здоровья персонажа) и реагируем на них.
* речь про data streams, не путать с thread из многопоточности

Ключевое отличие от обычных событий — это то, что здесь данные образуют поток (Observable), с которым можно взаимодействовать. Например, объединить несколько источников событий и реагировать не на все их события, а только, скажем, на первые N чётных событий, где есть данные X.

🔥 🔤🔤🔤🔤🔤:

1️⃣ Декларативность: Поток данных позволяет использовать цепочки операторов, которые помогают организовывать логику декларативно (например, через LINQ).

2️⃣ Отписки: Все локальные подписки на поток агрегируются в IDisposable-сущность. Соответственно для отписки нужно всего лишь вызвать Dispose и не хранить делегаты, которыми производилась подписка, чтобы ими же потом отписаться.

3️⃣ Удобство: Библиотеки имеют много вспомогательных методов и специальных оберток для данных, которые позволяют быстро добавить возможность подписки на изменения.

⚠️ 🔤🔤🔤🔤🔤🔤:

1️⃣ Оверкилл: Избыточное решение для простых единичных событий или асинхронных операций, с которыми нет необходимости работать как с потоком данных.

2️⃣ Отладка: Цепочки операторов и иерархию подписок сложно дебажить.

3️⃣ Производительность: Зависит от применяемого решения, но Rx имеет свои накладные расходы, пусть и не всегда значительные.

4️⃣ Сериализация: Реактивные обёртки для данных могут доставлять неудобства при сериализации данных и передаче по сети.

🛠 🔤🔤🔤🔤🔤🔤🔤 🔤 🔤🔤🔤🔤🔤:

В Unity долгое время использовался пакет UniRx, но теперь его активно замещает R3 от тех же авторов, которые подарили нам и UniTask.

Особенности последнего:

➖ Не ограничивается Unity и поддерживает другие движки.

➖ Улучшенная производительность и меньше аллокаций.

➖ Поддержка «покадровых» операций в игровых движках.

➖ Полноценная поддержка async/await операций «из коробки».

➖ Улучшен контроль за утечками памяти.

🧑‍💻 🔤🔤 🔤🔤🔤🔤:

В «юные годы» меня сильно привлекла декларативность, которую даёт Rx. Но, пережив несколько игровых проектов на этой технологии и попробовав разнообразные сценарии, все обозначенные минусы сильно перевесили плюсы. Поэтому вывод, к которому я пришёл, — этого должно быть так же в меру, как и всего остального.

Rx, как, например, не менее популярный Zenject (именно он, не DI в целом), дают слишком широкий простор возможностей и сценариев использования. Это в будущем создаёт разнообразные проблемы и сложности, разрешить которые может оказаться намного сложнее, чем не поддаваться искушению изначально.

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

А вне «песочницы»: если нормально живётся без Rx — скорее всего, он не нужен. Rx — это, в первую очередь, про потоки данных. Где работа с такими потоками не нужна, запрягать Rx и нет необходимости.

🔧 🔤🔤🔤🔤🔤🔤 🔤🔤🔤🔤🔤:

➖ Необходимость объединения и/или фильтрации событий от разных источников.

➖ Сложная обработка событий.

➖ Обработка ввода от игрока.

➖ Связь визуального слоя с игровыми данными.

➖ Контроль событий, распределённых во времени (таймеры, задержки и пр.).
————————————
#unity #gamedev #development #architecture #rx #геймдев #разработка #архитектура #реактивность #рекомендация #видео
  • 🔥 7
  • 👍 6
Post #103 441
🤡 MemIT #7 🤡

В разгар тяжёлой рабочей недели врывается первая в этом году подборка из 10 кеков/шуток/юморесок/мемов про игры, GameDev и IT, которые были мною украдены из рабочих чатов и ваших комментариев к предыдущим подборкам.

Готов вылавливать новые в комментариях 🐟
Мемы уже ждут там 💬

⬆️ прошлый выпуск ⬆️
—————————————
#gamedev #development #it #meme #humor #геймдев #разработка #айти #мемы #юмор
  • 🤣 4
  • 🔥 3
  • 👌 2
Post #102 552
Конспект по локальным LLM для разработки
Уровень материала: 🤖 #ai
📺 YouTube / 📺 VK

В продолжение ветки про локальные LLM. Уже прошлогодний доклад про использование локальных LLM. В видео рассмотрены инструменты и плагины для этого, кейсы применения и сравнение работы нескольких моделей: Qwen2, Llama, CodeQwen.

Оставлю краткое резюме с некоторыми дополнениями от себя и дополнительными поясняющими ссылками.

————————————

🧑‍💻 Зачем нужны LLM в разработке:

🟣Ускорять или автоматизировать рутинную работу (про один из примеров писал в прошлый раз).

————————————

❓ Зачем нужны локальные LLM:

🟣Экономия на стоимости запросов;
🟣Повышение информационной безопасности;
🟣Возможность обучить нейросеть на своих данных;
🟣Возможность работы без подключения к сети.

————————————

⚠️ Проблемы локальных LLM:

🟣Более низкая производительность;
🟣Требуется подходящая аппаратная часть;
🟣В общем случае более низкое качество ответов.

————————————

💼 Кейсы применения:

🟣Автодополнение кода;
🟣Помощь при написании методов и логики;
🟣Кодогенерация типовой рутины: подписки, отписки, логирование, и пр.;
🟣Генерация тестов (про один из способов делал клип);
🟣Генерация тест-кейсов и документации к коду;
🟣Суммаризация и анализ логов (очень полезно на бэкенде);
🟣Суммаризация и пояснение кода;
🟣Поиск ошибок и подсказки рефакторинга.

————————————

🆓 Open-source модели:

🟣Qwen2;
🟣Llama;
🟣CodeQwen;
🟣CodeLlama-KStack;
🟣DeepSeek-coder;
🟣StarCoder.

————————————

⛏ Инструменты запуска локальных LLM:

LMStudio:
🟣OpenAI-совместимый REST API;
🟣Переключение между моделями без перезапуска;
🟣Поиск по репозиторию HuggingFace;
🟣UI для режима чата;
🟣UI для настройки параметров.

Ollama:
🟣Ollama REST API;
🟣Переключение между моделями без перезапуска;
🟣Собственный репозиторий моделей;
🟣Импорт моделей разных форматов;
🟣Автоматическое освобождение ресурсов.

————————————

🔌 Плагины для IDE Continue:

🟣Поддерживает Android Studio, VS Code;
🟣Open-source и коммерческие LLM-провайдеры;
🟣Режим чата;
🟣Режим автодополнения кода;
🟣Индексация локального проекта.

————————————

💡 Как улучшить качество ответов:

🟣Прокачивать навыки промт-инжениринга;
🟣RAG (Retrieval Augmented Generation).

————————————

✍️ Техники промт-инжениринга:

🟣Few-shot подсказки;
🟣Chain-of-Thought запросы;
🟣Prompt Chaining;
🟣Обратная связь (Prompt Feedback);
🟣Назначение ролей (Role Assigning);
🟣Кратко о других.

————————————
#gamedev #development #llm #ai #геймдев #разработка #ии #советы #рекомендация #видео
YouTube Локальные LLM для разработки. Как упростить рутинные действия и не расстраивать ИБ / Виктор Ниденс VK JT Mobile, Санкт-Петербург, 29 августа 2024. Виктор Ниденс — ведущий Android-⁠разработчик в Mail (проекте VK): «Расскажу, как мы агрегируем полученный опыт запуска LLM в продуктах Mail и как использовать их открытые варианты в своей работе, а именно:…
  • 👍 2
  • 🤔 2
  • 🔥 1
Post #101 435
Сценарий применения LLM из личного опыта
Уровень материала: 🤖 #ai

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

⏰ Предыстория:

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

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

💬 Ситуация:

Нужно настроить какой-то мониторинг с алёртингом и автоматизировать восстановление инфраструктуры. Но и этим заниматься некому и некогда.

💡 Решение:

Нагрузить «того парня», виртуального.

Сначала были настроены как следует Restart-политики для Docker-контейнеров, чтобы те автоматически перезагружались при авариях.

Далее 10 минут на выяснение, как лучше реализовать скрипт мониторинга, оповещение в Telegram-чат, как это всё лучшим образом «присоседить», как получать логи и как «вручную» из скрипта поднимать упавшие намертво контейнеры.

На выходе были получены все инструкции и готовый Python-скрипт.

Следующие 20 минут ушли на настройку, интеграцию и первичные тесты.

Итого на решение проблемы понадобилось 30 мин ⏱

🎯 Результат:

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

Потрачено минимум усилий, и все довольны. На всё про всё для решения простой DevOps-задачи потребовался один Unity-разработчик на полчаса. Далее уже по мере высвобождения ресурсов можно будет заменить свою поделку на какой-нибудь полнлценный Zabbix.

LLM помогла собрать в кучу все необходимые шаги, дать полезные рекомендации с подробными инструкциями и сгенерировать в целом рабочее решение. Всё это очень быстро и доступно для человека, который не занимается подобными вопросами в своей деятельности.

🤩 Про роль ИИ:

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

Чтобы реализовать эту задачу всё равно нужны базовые знания Linux-систем, Docker'а и синтаксиса Python. Благо это стандартный набор для любого разработчика. А разные языки вообще полезно периодически прощупывать, особенно из числа популярных.

Напоминаю, что игровая разработка одним только Unity не ограничивается. Например, мне на этой неделе HR прислал вакансию со стеком: Unity, SRP, ECS, Burst, Job System, клиент-сервер, PostgreSQL, TeamCity, Dapper, Prometheus, Grafana. А клиент-сервер – это сразу Linux и Docker.

Вакансия на Tech Lead. Но:
🟣Это ещё даже не вершина айсберга.
🟣Не все эти слова появляются на этом грейде. Они все постепенно налипают с опытом.

Для вертикального роста по-хорошему крепкий Middle уже должен быть хоть немного знаком с клиент-сервером, Linux, Docker, CI и уметь разбираться в коде на других языках. Как минимум тех, которые используются на целевых платформах разработки.

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

❗️Возможно это даже станет той причиной, по которой в будущем требований к специалистам станет только больше❗️
————————————
#gamedev #development #llm #ai #experience #case #devops #monitoring #backend #infrastructure #геймдев #разработка #опыт #ии #ситуация #мониторинг #инфраструктура #бэкенд #aks2dio
  • 👍 3
  • 🔥 3
  • ✍ 1
  • 👌 1
Post #100 543
🤩 Твины и альтернативы DOTween 🤩
Уровень материала: 🐣 #junior

DOTween – один из самых популярных инструментов для твинов в Unity. Но не единственный. Расскажу, какие ещё есть варианты. Перед этим — краткая справка про то, что это и зачем.

➖ Про твины ➖

Твины – это программируемый способ анимировать свойства объекта через интерполяцию, т.е. изменение свойств со временем от одних заданных значений к другим по заданным правилам (они же - функции плавности или Ease) (примеры).

Твин-библиотеки (типа DOTween) предоставляют большой багаж готовых команд для быстрой и простой реализации таких анимаций. Также такие анимации удобно комбинировать и выстраивать из них цепочки.

Использовать твины можно, где угодно, но чаще твины используют для UI. Там анимации довольно однотипные и простые.

1️⃣ Такие анимации удобнее реализовать программно, чем через Animator.

2️⃣ Animator — сам по себе, не очень легковесный инструмент.

3️⃣ У Canvas есть некоторые особенности в отрисовке, из-за чего использование Animator будет приводить к перерисовке всего Canvas каждый кадр, независимо от того, меняется ли реально что-то на Canvas'е или нет.

➖ Про DOTween ➖

DOTween — самое популярное решение с большим коммьюнити и кучей учебных материалов. Но:

1️⃣ Менее производителен и аллоцирует больше памяти, чем конкуренты.

2️⃣ Занимает больше места в билде, чем аналоги.

3️⃣ В бесплатной версии доступен не весь функционал: нет расширений для TextMeshPro, нет визуального редактора и ряд менее значимых моментов.

Но для «но»:

1️⃣ Для большинства разница не будет критической.

2️⃣ Размер важен разве что для веб-разработки.

3️⃣ Визуальный редактор не шибко нужен, но и реализовать его самостоятельно несложно. А любые доп. методы расширения можно сделать самому через универсальный метод DOTween.To(...) .

Получается, что острой необходимости от DOTween отказываться нет. Но если душа просит приключений или есть проект «с особенностями», то выбрать есть из чего.

➖ Альтернативы ➖

Их очень много. Это не удивительно – собрать свой собственный твиннер «на коленке» не так уж и сложно (видео-пример). А вот эффективный и удобный – уже задачка.

Раньше пользовались популярностью LeanTween , iTween и Unity Tween, но они уже немного устарели.

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

Наиболее популярные из них: PrimeTween, MagicTween и его наследник LitMotion.

PrimeTween — наверное самый используемый среди конкурентов. Из интересных удобств: поддерживает AnimationCurve в качестве Ease.

LitMotion — самый эффективный. Поддерживает работу с UniRx и R3. Синтаксис сильно отличается от DOTween, но я нахожу его более лаконичным и простым.

Если размер библиотеки является критически важным, то есть и крайне легковесные решения, которые умещаются в один файл. Например TinyTween.
————————————
#unity #gamedev #development #animation #tool #ui #tween #package #геймдев #разработка #анимация #твин #инструмент #рекомендация
  • 🔥 10
  • 👍 7
  • ✍ 1
  • ❤ 1
Post #99 442
🗞 Свежая стажировка в геймдеве 🗞
Локация: Томск 📍

Unigine открыли набор на новую оплачиваемую стажировку для C++ программистов.

Unigine занимаются разработкой собственного 3D-движка и интерактивных проектов на его основе.

Предыдущий раз стажировка была в декабре для технических писателей.
—————————————
#development #gamedev #intern #engine #programmer #news #разработка #стажировка #геймдев #рекомендация #новости
Unigine UNIGINE Internship Оплачиваемая стажировка для С++ программистов в Томске в компании UNIGINE. 30 000 руб/мес, 20 часов в неделю, 12 недель. Заявки до 23.02.2025, старт 10.03.2025.
  • 🔥 4
  • 👍 2
Post #98 2.94K
🗓 MidUp #5 🗓

Подборка GameDev и IT мероприятий, которые встретил в чатах, группах и просто в сети. Митапы, конференции, фестивали, джемы, конкурсы и другое.

🔹🔹 Январь: 🔹🔹

🎮🎤🆓 18.01. Москва [Offline] Митап "Индикатор Шрёдингера". Библиотека для молодёжи. Бесплатно.

🎮🍻🆓 23.01. Новосибирск [Offline] Игровой митап. Бар "Медный таз". Бесплатно.

🎮🎤🆓 25.01 Спб [Offline] Митап "Первый шаг к успеху". Точка Кипения. Бесплатно.

🎮🏆🆓 25.01 - 26.01. Спб [Offline] Guild Game Jam. Библиотека №5. Бесплатно.

🎮🏆🆓 25.01-26.01 Екатеринбург [Offline] Global Game Jam. IT College. Бесплатно.

🎮🍻🆓 26.01 Нижний Новгород [Offline] GamedevNN Meetup. Кафе "Хинкальная". Бесплатно.

🎮🍻🆓 30.01. Новосибирск [Online] Покажи и расскажи. Бесплатно.

🧑‍💻🎤🆓 30.01. Спб [Offline] Kotlin Backend Meetup. Бесплатно.

🔹🔹 Февраль: 🔹🔹

🎮🎤🆓 05.02. Москва [Offline] Лекция "Сложность как холст". Школа дизайна НИУ ВШЭ. Бесплатно.

🎮🏆🆓 10.02-16.02. [Online] SciHammer Game Jam. Бесплатно.​

🎮🎤🆓 15.02 Спб [Offline] ITMO GameDev Day 3. Университет ИТМО. Бесплатно

🧑‍💻🎤🆓 13.02 Красноярск [Offline] Конференция "Код ИБ". Терра Юридикум. Бесплатно.

🧑‍💻🎤🎫 14.02. Спб [Offline] Dump Conf. Airportcity Plaza. Билеты от 23 000 ₽.

🎮🎤🆓 26.02. Москва [Offline] Лекция "Людо-нарративный консонанс". Школа дизайна НИУ ВШЭ. Бесплатно.

🔹🔹 Март: 🔹🔹

🎮🎤🎫 7.03 - 9.03. Москва [Offline] Игрокон. Крокус Экспо. Билеты от 500 ₽.

🎮🎤🆓 19.03. Москва [Offline] Лекция "Архитектура в видеоиграх". Школа дизайна НИУ ВШЭ. Бесплатно.

🔹🔹 Апрель: 🔹🔹

🎮🎤🎫 5.04. Новосибирск [Offline] Gamedev CityFest. МВК "Новосибирск Экспоцентр". Билеты от 3 500 ₽.

🧑‍💻🎤🎫 7.04 - 8.04. Москва [Online] [Offline] DevOps Conf. Билеты от 40 500 ₽.

🎮🧑‍💻🎤🎫 18.04 - 19.04. Ульяновск [Offline] Конференция "Стачка". УлГПУ. Билеты от 12 000 ₽.

🧑‍💻🎤🎫 25.04 - 26.04. Иннополис [Offline] Конференция Merge. Билеты от 9 222 ₽.

🔹🔹 Май: 🔹🔹

🧑‍💻🎤🎫 31.05 - 1.06. Новосибирск [Online] [Offline] Code Fest. Билеты от 20 900 ₽.

🎮🎤🎫 31.05 - 1.06. Спб [Offline] Epic Con Russia. DAA Expo. Билеты от 1 950 ₽.

Знаешь какие-то ещё интересные события, особенно в регионах — оставляй информацию в комментариях. Добавлю в следующую подборку (или в эту, если дата уже близко)
—————————————
#it #development #gamedev #gamejam #meetup #conference #разработка #айти #геймдев #конференция #митап #событие #подборка
  • 🔥 10
  • 👍 3
Post #97 568
Про Unity от .NET-разработчика
Уровень материала: 🐣 #junior 🐥 #middle

📝 Полезная статья, которая будет не лишней каждому. Сам ничего нового не узнал, но всё равно увлекло так, что прочитал на одном дыхании. Для новичков — неглубоко и не развёрнуто, но достаточно, чтобы подтолкнуть к правильным промтам для дальнейшего поиска.

Мне даже нечего прокомментировать или добавить. Просто делюсь просто хорошим контентом.

🔜Задето много важных моментов:

🟣Unity и .NET имеют различия в компиляции и исполнении кода.

🟣Есть особенности при использовании пакетов из NuGet.

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

🟣Из-за отсутствия конструктора у MonoBehaviour компоненты имеют неконсистентное состояние сразу после создания. Awake вызывается не сразу. Ещё и какой-нибудь Init тоже надо успеть вызвать вовремя. А то и, не дай бог, несколько Init'ов (не надо так).

🟣Рассмотрены нюансы с созданием, сравнением и уничтожением объектов в Unity.

🟣Упомянуты особенности работы с многопоточностью и асинхронностью в Unity.

🟣Важный и редко упоминаемый момент: у Unity свой SynchronizationContext, который позволяет async-коду выполняться в одном с Unity потоке. Поэтому в контексте Unity простое использование async/await не ведёт к многопоточности ❗️
Услышите обратное (а на курсах такое прогоняют) — бегите.

🟣В WebGL действительно не работают должным образом обычные Task'и. Но, это было не упомянуто, зато работают UniTask. Awaitable тоже должны работать — правда, это уже я лично не проверял.

🟣Оставлено много советов по оптимизации. Мельком, кратенько, но верно.
————————————
#unity #gamedev #development #engine #dotnet #csharp #геймдев #разработка #движок #рекомендация #статья
  • 👍 5
  • 🔥 3
Post #95 650
Про GameDev, разработку на Unity и C#, менеджмент, обучение, менторство и карьеру.

📌 🔎🔎🔎🔎 📌

🍳 Соц. сети 🗑️

💬 Посты: Telegram, VK, Dtf
📝 Статьи: Habr, Dtf, VK, Dzen
📹 Видео и Клипы: VK, YouTube, Rutube, Dzen
📱 Код: GitFlic, GitVerse


🍳 Теги 🗑️

✍️ Авторский контент: #aks2dio
📈 Хэштеги: #junior #middle #senior #education #management #mental #ai #offtop #news #hr #career #tool #multiplayer


🍳 Рубрики 🗑️

🤡 MemIT: подборки мемов про игры, GameDev и IT
🗓 MidUp: календарь событий по GameDev и IT


🍳 Клипы 🗑️

🟣Быстрая генерация юнит-тестов с AI
🟣Отличия событий от делегатов в C#


🍳 Видео 🗑️

🟣Хочу мультиплеер: как начать и не заблудиться
🟣Unity Localization и GamePush
🟣Разбираюсь с пользовательскими соглашениями в веб-играх
🟣Современное хранение игрового прогресса


🍳 Лонгриды 🗑️

🟣Автостопом по мультиплееру. Часть 1: Для кого и для чего
🟣Автостопом по мультиплееру. Часть 2: Синглплеер и Мультиплеер
🟣Автостопом по мультиплееру. Часть 3: Клиент и Сервер
🟣Современное хранение игрового прогресса в контексте Unity
🟣Заметка про реализацию системы способностей в играх
🟣Автостопом по мультиплееру. Часть 4: Авторитарность и Топологии
🟣Заметка про пользовательские соглашения в Web-играх
🟣Сериализация в Unity: известные атрибуты и их проблемы
🟣AI для Rider в разработке под Unity
🟣Обзор DI-фреймворков для Unity
🟣AI IDE — Qoder
🟣Код, понятный IDE и AI
🟣Про опыт работы за двумя ноутбуками
🟣Наследование и Композиция
🟣Шпаргалка по базовым концепциям C#
🟣Экономим на AI
🟣Addressables в WebGL
🟣Способ хранения настроек своих тулов в Unity
🟣Overlay: кастомизация Unity

🍳 Интересные темы 🗑️

🟣Про процессы в инди-командах
🟣Про физику в играх
🟣Компрессия AnimationClip в Unity
🟣Про хранение конфигураций уровня
🟣Про строки в C# и C++
🟣Про нарушение внимания
🟣Про курсы и обучение
🟣Про бесплатные курсы с YouTube
🟣Про архитектуру на MVC
🟣Про Cell-Based Architecture и EventBus
🟣Темы по архитектуре для инженеров ПО
🟣Про CI/CD
🟣Про шорткаты в Rider и Unity
🟣Про Delta Time
🟣Про собеседования
🟣Про создание реплеев для игр
🟣Про Unity AI Navigation
🟣Энергетический менеджмент
🟣Неоднозначный MVC: причины и следствия
🟣Твины и альтернативы DOTween
🟣Сценарий применения LLM из личного опыта
🟣Конспект по локальным LLM для разработки
🟣Реактивное программирование
🟣Behaviour Tree и другие подходы для AI
🟣Что такое База
🟣Советы по работе с коммитами
🟣Roslyn
🟣internal и asmdef
🟣Unity Input System
🟣EntryPoint
🟣Многопоточность в играх
🟣SharedLogic
🟣Анализаторы для Unity
🟣Тенденции рынка IT
🟣Передача задачи AI-агенту
🟣AntiCheat
🟣Тестовые задания
🟣ADR: фиксируем архитектурные решения
🟣Гибкая архитектура
🟣Offerwall как наступившее будущее монетизации
🟣Утечки памяти
🟣Читеры в многопользовательских играх
  • 🔥 5
  • 👍 3
Post #94 749
Неоднозначный MVC: причины и следствия
Уровень материала: 🐥 #middle

Ранее я писал, что прохожу обучение на курсе от Unity Architect. Недавно была тема, посвященная MVC. И упор был сделан не на очередной разбор очередной реализации, а на выяснение причин, почему существует такое разнообразие трактовок. Из этого вытекают и некоторые следствия, о которых не часто рассказывают, но которые находят место в практике.

Про разнообразие подходов 🛠 :

Причина такого раздрая — «так исторически сложилось». Когда по принципу «глухого телефона» революционный много десятилетий назад подход дошёл до наших современных дней.

Подробнее с этим можно ознакомиться в длинном исследовательском материале из двух частей на Хабре 📝: #1 и #2. Текст объёмный и сложный. Но увлекательный. Для вдумчивого чтения (а иначе смысла нет) стоит заложить на обе статьи где-то 1 час.

А один из примеров реализации в геймдеве я шарил в этом посте 💬

Следствие 1️⃣:

MVC — это изначально история про взаимодействие с пользователем. Т. е. про UI. Соответственно, попытки затащить это в геймплей сделают из MVC не MVC (и даже не обязательно какой-то MVx). Т. к. для удобства использования в геймплее эту штуку приходится адаптировать.

Следствие 2️⃣:

Как бы ни был «приготовлен» MVC, кто-то обязательно скажет, что это неправильно. Или это не MVC, а какой-нибудь другой MVx. Это бесконечные бессмысленные споры, стоящие на противоречивых источниках.

Чтобы не маячить красным платком перед «искушённой» публикой, можно отойти от общеизвестного нейминга. Соблюсти идею разделения визуала и бизнес-логики, но назвать это иначе. Особенно легко это делается в геймплее.

Ведь задача — спроектировать всё хорошо, а не сдать экзамен по «эталонному соответствию канонам». Тогда на нападки в виде «но в MVx же...» можно отвечать «а это не MVx».

Следствие 3️⃣:

Эталонно View и Controller находятся на одном слое взаимодействия с пользователем. И в современных системах, где нет низкоуровневого кода по непосредственно рендерингу и обработке ввода, контроллер как-таковой не шибко нужен. Поэтому достаточно использовать только Model и View.

В качестве Model можно подготовить специальную прослойку, типа Facade, Adapter или Mediator, которая будет агрегировать внутри всю коммуникацию с необходимыми игровыми моделями и сервисами.

Например, нажалась кнопочка, медиатор из WalletModel снял монетки, в StorageModel положил конфетки, а у AdService запросил показ InterstitialAd.

В свою очередь View будет отвечать за всю логику представления (кнопочки, формочки, генерация карточек, анимации прокрутки, заполнение прогресс-баров и пр.) и передачу событий в Mediator.

Связку из View и Mediator я и в своей команде использую уже очень давно — это отлично себя показывает в проектах разных масштабов.

На каком-то из стримов K-Syndicate оговаривались, что используют двухуровневый шаблон и связующий слой тоже называют Mediator. Не нашёл, на каком именно, но у них был большой классный стрим по MVx в целом 📺

upd: поступило полезное дополнение со стримом от K-Syndicate про UI без MVx — там рассматривается Mediator, немножко в другой роли, но это тоже даёт полезный взгляд на проблему игрового UI.
————————————
#unity #gamedev #development #architecture #mvc #mvx #геймдев #разработка #архитектура #рекомендация #статья #видео
  • 👍 4
  • 🔥 3
  • ✍ 1
  • ❤ 1
Post #93 443
🦌 MemIT #6 🦌

Ещё не прошлогодняя подборка из 10 кеков/шуток/юморесок/мемов про игры, GameDev и IT.

Это контент, который был мною выкран из рабочих чатов и ваших комментариев к предыдущим подборкам.

Готов вылавливать новый в комментариях к этой 🪤
Мемы уже ждут там 💬

⬆ прошлый выпуск ⬆
—————————————
#gamedev #development #it #meme #humor #геймдев #разработка #айти #мемы #юмор
  • 🔥 3
  • 🤣 3
  • 👍 2
Post #92 447
📼 Видео-заметка про пользовательские соглашения в Web-играх 📼

Решил попробовать использовать ранее выпущенную заметку про пользовательские соглашения в Web-играх в качестве сценария и записать видео. Свои мысли по этому опыту оставил ниже.

📺 VK | 📺 YouTube| 📺 RuTube | 📝 Dzen

Заниматься этим, конечно, вообще было некогда. Поэтому почти месяц по чайной ложке в «свободное время» я практиковался в моушн-дизайне и учился монтировать и компенсировать отсутствие пригодного для записи роликов оборудования. В сравнении с прошлым роликом, на мой взгляд, звук уже накрутил получше.

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

⬇️ Какие выводы я сделал за два снятых ролика: ⬇️

🟣Лучше заранее потратить время на сценарий.

🟣Лучше на записи обеспечить интересный визуальный ряд (хотя бы трансляцией экрана), чем заниматься этим на пост-продакшене.

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

🟣Снимать видео я буду редко – лучше почаще на конференции поезжу 😁
—————————————
#gamedev #development #gdpr #privacy #web #webgl #конфиденциальность #соглашения #защитаданных #юридическое #веб #разработка #геймдев #игры #aks2dio #видео
VK Видео Разбираюсь с пользовательскими соглашениями в веб-играх Наверняка ты замечал, что игры с Google Play при первом запуске показывают окна с Privacy Policy и Terms of Use. Но в веб-проектах этого нет. Насколько это правильно, мы и постараемся выяснить в этом видео. Поговорим про политики конфиденциальности, Privacy…
  • 👍 2
  • 🔥 2
  • ❤ 1
Post #91 395
👣 Инсайт про Unity AI Navigation 🗺
Уровень материала: 🐣 #junior

Unity выпустили серию роликов о своей системе AI Navigation. Вышло три видео 📺 (#1, #2, #3). В целом, очень полезный для знакомства с системой контент — Unity вообще радуют последние годы в этом плане. Но меня во время просмотра посетила любопытная мысль 💡

AI Navigation — это новое название пакета NavMesh. И у старых версий была неприятная особенность: строил навигацию он только на плоскости XZ. И неприятность в том, что для 2D-игр Unity использует плоскость XY 👾

Соответственно, 2D-игры ради навигации были вынуждены или искать/изобретать другие решения (пример), или использовать костыль: "разворачивать" свои спрайты так, чтобы они лежали на плоскости XZ. Были даже отдельные решения, основанные на этом ухищрении 🩼
[Форум с обсуждением]

Т.к. уже давно не работал с 2D-проектами, не придавал этому значения. И сейчас смотрю на видео и вижу, как настраивается навигация на вертикальной стене, на плоскости XY. Похоже, Unity теперь умеет полноценно в навигацию для 2D. Кто в 2D уже пробовал и может подтвердить или опровергнуть ❓
—————————————
#unity #gamedev #development #pathfinding #navigation #insight #разработка #геймдев #навигация #поискпути #рекомендация #видео
  • 👍 3
  • 🔥 2
Post #90 355
▶️ Про создание реплеев для игр ⏸
Уровень материала: 🐥 #middle

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

🔎 Суть реплея:

Чтобы иметь возможность когда-то потом восстановить игровой процесс, необходимо во время этого игрового процесса записывать минимальный набор данных, необходимый для восстановления игровой сессии в конкретный момент времени. Только так.

Чем меньше данных, тем более легковесным получится файл реплея. А это важно, ведь его надо хранить (ROM), читать (CPU), загружать (RAM) и возможно даже передавать по сети (Network).

Например, если поворот персонажа полностью восстанавливается из его направления движения, то достаточно записать только направление движения. И записывать его только тогда, когда оно изменится, а не просто каждые N сек. И т.д. Всё, как при синхронизации данных в мультиплеере.

Лучший вариант, когда игра детерминирована (т.е. при одинаковых вводных будет происходить всегда одно и то же). Тогда достаточно только записывать инпут от игрока с отметками времени и во время реплея его применять. Минимум данных, но детерминированность имеется (или хотя бы вообще возможна) не во всех проектах. Особенно в Unity с её недетерминированной физикой.

🕳 Зачем нужен:

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

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

🟣Реплей может помочь с отладкой игры. Или с воспроизведением бага, который нашёл QA или какой-то игрок.

🟣Реплеи, собираемые с игроков, можно анализировать и в результате совершенствовать пользовательский опыт (или монетизационные подходы).

🟣По реплеям можно тестировать игровой баланс и прорабатывать его детальнее.

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

Т.е. отсутствие возможности реплея в самой игре как механики ещё не гарантирует её отсутствия как части проекта. И это стоит учитывать при проектировании очередного проекта.
————————————
#gamedev #development #feature #tool #replay #геймдев #разработка #механика #рекомендация #видео
YouTube Creating A Replay System In Unity Check Out Bezi Sidekick - https://www.bezi.com/sidekick?utm_medium=youtube&utm_source=gdg Grab the Unity Package for this episode (includes a bunch of bespoke assets from Cabs Of Chaos) - https://www.patreon.com/posts/117914143 Chapters 00:00 - Intro 00:53…
  • 👍 3
  • 🔥 2
Post #89 485
📝 Заметка про собеседования 📝
Уровень материала: 🦉 #management

На днях выходила статья по собеседованиям на Unity. Вышла уже аж вторая редакция. Первая содержала «контент не для слабонервных». Жаль, что его по итогу вырезали — это был очень полезный опыт из реальной корпоративной практики. Тем не менее, всё полезное для широкого круга читателей осталось. В т. ч. отличные советы, под которыми я ставлю свои «+».

Процессы проведения собеседований — очень индивидуальная штука, и везде всё устроено по-разному. Есть вводные у кандидата, у команды, у проектов, у бюджета и т. д. Между ними приходится как-то балансировать и искать наиболее равновесную точку. Общего рецепта, как это сделать, нет. Только разве что «нормально делай — нормально будет». Поделюсь коротенько тем, как это делаю я.

1️⃣ Я стараюсь проводить собеседования наименее ресурсозатратно и для себя, и для кандидата. Мои целевые показатели — 30 мин на интервью, 30 мин на подготовку (но реальные медианные будут побольше 😱). Подготовка — это осмотр резюме, изучение информации о кандидате и прошлых местах работы в сети, знакомство с проектами и кодом.

2️⃣ Для меня код (если нужен программист) — ключевой и самый говорящий фактор. ТЗ я давать не люблю: стараюсь обходиться петами кандидатов. Но если посмотреть нечего или нет проектов с релевантными технологиями, то выдаю ТЗ на какие-то отдельные конкретные моменты, которые бы мне хотелось прояснить. Или посмотреть, насколько хорошо удастся разобраться с новой технологией.

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

3️⃣ Интервью — самый дорогой этап с точки зрения времени и организации, поэтому он обычно остаётся на самый конец (чтобы оставалась возможность до него не дойти). Но если попадается интересное резюме, то могу сразу и перейти к нему, пропустив или отложив этап «кода».

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

⚠️ Причём я считаю очень важным давать свои комментарии на темы, в которых кандидат не смог достаточно раскрыться. Пусть он уйдёт, если без оффера, то хотя бы с новыми знаниями.

Из-за специфики разработки мне часто важно, чтобы новые члены команды были заинтересованы в продолжительном сотрудничестве. Поэтому на интервью я стараюсь определить ценности, мотивацию и цели кандидата. Что он понимает, куда и почему собеседуется, а не пытается просто запрыгнуть хоть куда-нибудь на какое-то время. И, со своей стороны, искренне даю все вводные. Для взаимовыгодного и плодотворного сотрудничества нужна обоюдная совместимость 🤝
————————————
#gamedev #development #hiring #interview #геймдев #разработка #найм #собеседование #рекомендация #статья
  • 🔥 8
  • 👍 2
  • ❤ 1
Post #88 385
👨‍💻 Про SOLID: коротко и понятно 👨‍💻

На Хабре недавно выходила нестандартная статья про SOLID. Даже немного обидно, что не моего авторства. Отличная работа со злободневными примерами. Другой такой наверное не найти. Лучше ознакомься самостоятельно, перед тем как далее прочитаешь спойлер, что эта статья — один большой качественный кек 🤡

p.s. добавил в календарь событий ещё 4 геймдев-ивента 🗓
—————————————
#development #it #architecture #solid #разработка #архитектура #юмор
  • 🔥 3
  • 🤣 2
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →