aks2dio | Unity и геймдев
491 subscribers
185 photos
5 videos
222 links
Директ: @antonkerp

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

С 2017 г. разрабатываю, лидую, преподаю и консультирую.
Был в найме, стартапах, фрилансе, инди.
Опыт: Mobile, Desktop, Web, XR.
Download Telegram
Это приветственный стартовый пост.
Буду возрождать свой уголок для само-выражения и фиксации опыта.

С 2017 г. разрабатываю, лидую, преподаю, менторю и консультирую.
Был в найме, стартапах, фрилансе, инди, мобилках, десктопах, вебе, XR.
Про это и могу рассказать. И про новые вехи в своей карьере.

В 2021 г. была попытка ведения блога. Но утонул в рутине и забросил. Тем не менее это оказалось полезно: до сих пор возвращаюсь и пользуюсь наделанными бенчмарками и замерами.

Какой контент можно ждать:
- 🗒 Точно будут небольшие посты с какими-нибудь заметками, инсайтами, бенчмарками и технологиями.
- 📅 Анонсы публичных выступлений, где будет возможность пообщаться лично.
- 📢 Рекомендации: видео-ролики, статьи, пакеты и всё, что покажется любопытным и захочется отложить.
- 📽 Буду учиться делать Клипы и Видео про что-нибудь полезное.
- 📝 Буду практиковаться в написании статей. Уже готовлю первую пробу.
- 📶 Возможно будут стримы. Есть идеи на проекты — думаю над тем, чтобы работать над ними онлайн.
- ❓Если будет востребован Q&A, то будет и это.

Как часто: жизнь покажет, но пока думаю, что не часто :)

1. Это всё больше для себя: обработать, сформировать мнение, усвоить и отложить, чтобы к этому можно было позже вернуться.
2. Буду делиться своим приобретаемым опытом и будет здорово, если он окажется полезен.
3. Буду рад опытом не просто делиться, но и обмениваться. Уверен, что у тебя найдутся интересные комментарии, дополнения или темы для обсуждения.

Первый камень заложен. До новых постов 👋
—————————————
#unity #gamedev #development #dotnet #csharp #management #teamlead #education #геймдев #разработка #юнити #менеджмент #управление #тимлид #обучение #образование #aks2dio
👏2
О площадках для блога

В большей степени к возрождению блога меня побудило желание изучить доступные площадки 🔎 : какие инструменты предоставляют, какие возможности имеют, как происходит привлечение аудитории — этим я и планирую заняться после генерации какого-то количества контента 🖼

Для опытов я отобрал следующие площадки ⚗️:
- VK
- Telegram
- YouTube
- Instagram
- TikTok
- Dzen
- Dtf
- Pikabu
- Boosty
- Rutube
- Tenchat

Контент там будет идентичный с точностью до возможностей площадки (TikTok и Rutube, например, позволяют загружать только видео-ролики 🎥 — соответственно, текстовых постов там не будет 📝)

Поделюсь наблюдениями, когда появятся какие-то значимые данные 🗄
Пока могу только отметить, что делать посты удобнее всего в Telegram, Boosty и Tenchat 🙃
—————————————
#unity #gamedev #development #dotnet #csharp #management #teamlead #education #геймдев #разработка #юнити #менеджмент #управление #тимлид #обучение #образование #aks2dio
🔥2
Статьи про строки в C# и C++
Уровень материала: 🐥 #middle

Добрался до любопытной статьи про устройство строк в игровых движках: от стандартов для PlayStation 1 до современного C++17.
Обзор разных реализаций с их областями применения и всякие нюансы при кросс-платформенной разработке.

Как сама статья написана – мне не сильно понравилось. Читается тяжело: предложения большие, пунктуация местами некорректная, повествование немного сумбурное. Поэтому чтиво требует концентрации. Но содержание интересное и, как оказалось, незамысловатое. В заметки себе занёс 📝

Практическая ценность раскроется наверное разве что для C++ разработчиков. Для Unity-разработчиков материал скорее для расширения кругозора и для "заглядывания под капот" (всё-таки Unity внутри тоже C++ эксплуатирует). А может кому и на тех. собесах пригодится — всякие извращения встречаются 😅

Юнитистам достаточно помнить, что в C# строки❕:
🟣являются ссылочным типом.
🟣иммутабельны.
🟣имеют переопределённый метод Object.Equals.
🟣используют механизм интернирования (Shared Strings в терминах статьи).

Звучит казуальнее, чем в C++. Но тоже не без нюансов.
Если хочется нырнуть чуть глубже за подробностями, то есть статья про особенности строк в .NET. И чуть более подробная про интернирование строк в .NET. Им, правда, уже по 10 лет. Но с тех времён не шибко что-то поменялось ⏱
—————————————
#development #strings #csharp #cpp #разработка #строки #рекомендация #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3
📽 Чем отличается событие от обычного делегата 📽
Уровень материала: 🐣 #junior

📺 VK / 📺 YouTube / 📺 Rutube / 📝 Dzen

Был у меня в практике случай, когда требовалось быстренько и "на пальцах" объяснить, для чего нужно ключевое слово event и чем отличается event Action от Action.

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

Была классная задумка и ожидание "приключения на 20 мин". Но растянулось это на множество часов, задумку пришлось сильно упростить, а реализацию несколько раз полностью переделать. Всё как в разработке 🌸

Лучше какой-то клип, чем никакого. Так что, с релизом. Поднаберусь опыта — сделаю ремейк 😁
—————————————
#development #csharp #programming #code #lesson #event #clip #геймдев #разработка #программирование #код #урок #клип #aks2dio
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍1
🆓 Бесплатные курсы с YouTube 🆓
Уровень материала: 🎓 #education

На 📺-канале CodeMonkey на днях вышло два больших видео, два бесплатных курса. Это 12-часовой курс по C# и 7-часовой курс по DOTS. Конечно, я их ещё не просмотрел и не могу объективно оценить. Но если вдруг какой-то подобный контент был как раз нужен — возможно это оно. Ранее там же выходил ещё курс по C# Intermediate.

🇻🇬 Про язык:
Видео на английском. Но CodeMonkey использует достаточно простой понятный язык — без проблем смотрится в оригинале. В крайнем случае, в Яндекс.Браузере🌐 есть встроенный качественный синхронный автоперевод.
upd: выяснилось, что на настолько длинных видео автоперевод не работает — поэтому помни про этот лайфхак в других случаях 🥲

#️⃣ Про C#:
Видео по C# для меня интереса не представляет. Полистал, вроде всё адекватно, примеры нормальные. Видел пример реализации [Flags] для enum через побитовый сдвиг — очень полезная штука, почему-то её при обучении любят игнорировать.

✨ Про DOTS:
А вот видео по DOTS я, пожалуй, затестирую лично, но уже в новом году — пока катастрофически загружен. Напомню, что DOTS — это не только ECS-фреймворк, но и целый стек технологий, часть которых доступно и вне ECS (например, Burst Compiler и Job System).

Из ECS-решений ранее я пробовал DOTS, Entitas, LeoECS и Morpeh — и последний мне нравится больше всех, пусть он и не самый производительный. А DOTS нравился меньше всех. Интересно будет посмотреть, что в нём изменилось и что он из себя представляет сейчас.

👨‍🎓 Про подобные курсы в целом:
Помнится, год назад Сакутин тоже выпускал подобные 📺-курсы по C# и по Unity. Я их не смотрел, ничего сказать не могу. Видел только в чатах отзывы проходивших, что классическое «обо всём и ни о чём». Что, на самом деле, ожидаемо. 7–12 часов — это капля в море, особенно для 📱. Можно только успеть «тегов» набросать и по верхам пробежаться.

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

🔖 Рекомендация от себя:
Пользуясь случаем, порекламлю мой любимый ресурс по C# (и не только) — Metanit. Удобный, качественный, бесплатный, масштабный.

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

Сам по нему учился, параллельно с кучей других профильных книг. В «своё время» выел там весь контент по C#. Пригодилось ли мне это?

🟣С практической точки зрения: что повседневно не использую, то уже, конечно, не помню совершенно.

🟣С точки зрения эрудиции: в моменте, когда учишься, когда много белых пятен, такой широкий контекст помогает выстроить майндсет и осознать, что где, как и почему используется. А в последствии помогает решать проблемы более высокого порядка, чем простое написание кода.
—————————————
#unity #gamedev #development #ecs #programming #csharp #code #разработка #геймдев #обучение #образование #курсы #программирование #рекомендация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
Про 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 #геймдев #разработка #движок #рекомендация #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
🚀 Zero allocation LINQ 🚀
Уровень материала: 📣 #news

Не секрет, что LINQ в .NET имеет проблему с аллокацией памяти, что ограничивает его применение в часто исполняемой или высоконагруженной логике.

Ребутяшки из Cysharp, известные по UniTask и R3, 2 недели назад создали репозиторий с ZLinq — это их NonAlloc struct-based имплементация Linq.

👩‍💻 Пакет уже совместим с .NET 9, .NET 10, Unity 📱 (от 2022.3.12f1) и Godot (от 4.0.0).

В Unity и Godot предусмотрены методы расширения для GameObject, Transform и Node2D. Аналогичные методы расширения реализованы и для Json, что может быть полезно для систем миграций/патчинга пользовательских игровых данных.

📱 Узнал про ZLinq из видео с канала git-amend. Там рассмотрены примеры использования и интеграции в Unity. Также там можно подглядеть полезные методики для профилирования.

💡 Мне нравятся и UniTask, и R3. Поэтому пока для меня ZLinq, построенный на тех же идеях, выглядит как многообещающий инструмент для оптимизации LINQ-запросов, который позволит снизить нагрузку на GC и упростить работу с деревьями объектов.

⚠️ Библиотека пока находится в стадии preview, но в не-продуктовой среде я уже начну с ней знакомиться.
————————————
#unity #godot #gamedev #development #dotnet #csharp #tool #linq #optimization #allocation #геймдев #разработка #оптимизация #инструмент #рекомендация #видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤3👍2