Всем привет! Нужна помощь🔥
Как писал выше - готовлюсь к публичному онлайн мероприятию, где буду выступать с темой "База архитектуры ИИ в играх" (не нейронки😅) и столкнулся с небольшой проблемой:
🙈 В чем проблема?
С выступлением надо уложиться в 30-40 минут по формату конференции, однако материала у меня получается гораздо больше, и приходится урезать/ужимать те или иные вещи, а сами понимаете, хочется максимум пользы донести
✔️ С чем помочь?
Я думаю на предстоящем выступлении уложить какие-то стартовые, вводные вещи, чтобы вы и другие участники конференции могли вообще войти в суть дела, а затем, допустим, в октябре-ноябре, провести свой большой стрим, где мы развернемся по серьезнее, с более подробными примерами, кодом и так далее
Так вот хочется под этим постом получить от вас🔥 , если идея нравится и вас интересует проведение такого отдельного вебинара от меня, чтобы я знал есть ли смысл готовить подобное
p.s. думаю кто приходил ко мне на вебинары, понимают, сколько сил я вкладываю в обучение, поэтому хочется понять вашу заинтересованность в этой теме, чтобы серьезно подойти к вопросу
Как писал выше - готовлюсь к публичному онлайн мероприятию, где буду выступать с темой "База архитектуры ИИ в играх" (не нейронки😅) и столкнулся с небольшой проблемой:
С выступлением надо уложиться в 30-40 минут по формату конференции, однако материала у меня получается гораздо больше, и приходится урезать/ужимать те или иные вещи, а сами понимаете, хочется максимум пользы донести
Я думаю на предстоящем выступлении уложить какие-то стартовые, вводные вещи, чтобы вы и другие участники конференции могли вообще войти в суть дела, а затем, допустим, в октябре-ноябре, провести свой большой стрим, где мы развернемся по серьезнее, с более подробными примерами, кодом и так далее
Так вот хочется под этим постом получить от вас
p.s. думаю кто приходил ко мне на вебинары, понимают, сколько сил я вкладываю в обучение, поэтому хочется понять вашу заинтересованность в этой теме, чтобы серьезно подойти к вопросу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥205❤8👍6🐳2
Всем привет! Моим знакомым снова нужны сеньоры помидоры
Знакомые крутые ребята ищут опытного спеца на довольно мощный проект, немного подробностей ниже
————
Необходим разраб игровых механик на фулл тайм, уровень разработчика от Middle+ до Senior
Проект на ПК и Мобильные платформы.
За ориентир по сложности проектов можно брать Delta Force.
Основные требования:
- Умение работать с MVVM, MVP
- DI (в целом любой фреймворк, главное шарить)
- ECS (тоже не принципиально фреймворк - обсуждаемо)
- Addressables
- Таски/реактивность
- Опыт работы над мидкор проектами
- Будет плюсом опыт работы с бэком (но не обязательно)
————
От себя скажу, что команда у ребят отличная, без лишней бюрократии и остальных вытекающих (в прошлый раз успешно прособесил к ним разраба, все довольны:))
За подробностями писать сюда -> @K0nDeR
p.s. указывайте, пожалуйста, проекты и опыт в резюме
Знакомые крутые ребята ищут опытного спеца на довольно мощный проект, немного подробностей ниже
————
Необходим разраб игровых механик на фулл тайм, уровень разработчика от Middle+ до Senior
Проект на ПК и Мобильные платформы.
За ориентир по сложности проектов можно брать Delta Force.
Основные требования:
- Умение работать с MVVM, MVP
- DI (в целом любой фреймворк, главное шарить)
- ECS (тоже не принципиально фреймворк - обсуждаемо)
- Addressables
- Таски/реактивность
- Опыт работы над мидкор проектами
- Будет плюсом опыт работы с бэком (но не обязательно)
————
От себя скажу, что команда у ребят отличная, без лишней бюрократии и остальных вытекающих (в прошлый раз успешно прособесил к ним разраба, все довольны:))
За подробностями писать сюда -> @K0nDeR
p.s. указывайте, пожалуйста, проекты и опыт в резюме
🤝8❤3👎2🐳2
This media is not supported in your browser
VIEW IN TELEGRAM
В 19:00 стартует конференция. Я буду первым спикером, поэтому, думаю где - то в 19:10-20 стартану с материалом!
Смотреть тут:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥64👍7❤3🐳2👎1
⭐️ Screenshot Saturday! ⭐️
Давненько не было движа на канале
Делимся и пиарим свои наработки/проекты/идеи в комментариях!🔥🔥🔥
p.s. Не сидел сложа руки, скоро буду тестить новые рубрики с постами в телеге, надеюсь получится полезно и интересно😎
Давненько не было движа на канале
Делимся и пиарим свои наработки/проекты/идеи в комментариях!🔥🔥🔥
p.s. Не сидел сложа руки, скоро буду тестить новые рубрики с постами в телеге, надеюсь получится полезно и интересно
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23🐳4❤2
Последние пару дней у нас в чатике обучения обсуждалась новость про уязвимость в юнити, о которой сообщили разрабы движка, решил оповестить тут на всякий случай:)
❗️ В Unity была найдена уязвимость системы обработки файлов, позволяющая загружать вредоносный код в билды игр на Android, macOS, Windows и Linux! Проблема затрагивает все версии Юнити, вышедшие за последние 8 лет, начиная с Unity 2017.1.2p4.
➡️ Третьего октября Unity Technologies разослали пользователям электронные письма с информацией о найденной уязвимости. Компания советует разработчикам срочно загрузить новый релиз редактора Unity подходящей версии, где дыра уже была залатана. Из-за серьёзности проблемы было решено выпустить обновление безопасности даже на версиях движка, поддержка которых была прекращена, вплоть до 2019.1. Для уже выпущенных игр был представлен инструмент для внедрения патча напрямую в бинарные файлы игры.
🔔 Больше информации о проблеме, а также полный список версий, где уязвимость была исправлена, можно найти в посвящённой ей статье на официальном сайте Unity.
p.s. добавлю, что глобально для ваших пет проектов или каких-то небольших выпущенных игрушек особо опасности никакой нет, т.е. можно спокойно просто обновить версию движка и работать дальше ни о чем не переживая. Однако, если у вас есть проект с большой аудиторией, то стоит обеспокоиться и выкатить апдейт билда по быстрее)
p.s. добавлю, что глобально для ваших пет проектов или каких-то небольших выпущенных игрушек особо опасности никакой нет, т.е. можно спокойно просто обновить версию движка и работать дальше ни о чем не переживая. Однако, если у вас есть проект с большой аудиторией, то стоит обеспокоиться и выкатить апдейт билда по быстрее)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥44🫡10👍7❤5🐳2
Недавно у моего знакомого вышел долгий и довольно подробный ролик на тему генерации 3д ассетов с помощью нейронок
Решил поделиться с вами, возможно многим программистам/не художникам будет полезно для своих проектов. Сам сильно в подробности не вдавался, но судя по результату можно неплохого качества лоу поли пропсы и прочие подобные ассеты делать без участия художников, что звучит довольно неплохо)
🔣 Ссылочка на видосик
🧐 Кстати как относитесь к генерации графики/ассетов нейронками?) Используете для этих целей или ну его?))) Пишите в комменты свой опыт:)
Решил поделиться с вами, возможно многим программистам/не художникам будет полезно для своих проектов. Сам сильно в подробности не вдавался, но судя по результату можно неплохого качества лоу поли пропсы и прочие подобные ассеты делать без участия художников, что звучит довольно неплохо)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤47👍7👎4🐳3🤔2
#ПриветИзПрошлого
Тестируем новую рубрику с фактами из темного прошлого юнити... Ну или не очень темного:) Поставьте🔥 если нравится такая идея:)
Взгляните на вот такой интересный пример реализации базового передвижения персонажа в Unity!
Да это юнити:) Вопрос "С каких пор Юнька перешла на Python?!" отложите в сторону. Здесь всё гораздо интереснее!
ℹ️ Перед вами находится программа, написанная на Boo - нишевом питоноподобном скриптовом языке, про который сегодня успели забыть даже его создатели. Тем не менее, приведённый код действительно рабочий, и вы спокойно можете использовать его в своём проекте... если, конечно, по какой-то причине не обновляли движок дальше версии 2019.1.0b9
➡️ С момента своего появления Unity пытался быть максимально доступным для разработчиков любого уровня - настолько, что на протяжении более чем десяти лет позволял писать скрипты аж на трёх языках на любой вкус и цвет: C#, UnityScript и Boo.
👩💻 Шарпы, надеемся, в представлении не нуждаются
👩💻 UnityScript, по сути, был статически типизированной вариацией JavaScript (И, заметьте, за долгие годы до появления всеми любимого сегодня TypeScript! Гордитесь!)
👻 А Boo... он хотел быть таким же быстрым и надёжным, как С#, но при этом оставаться максимально простым для изучения и использования, как Python
⚡️ Подобно остальным языкам, Boo был статически типизированным решением, интегрированным в .NET и Mono. Но, в отличие от C# и UnityScript, он не мог похвастаться ни вниманием со стороны разработчиков движка, ни тесным сообществом вокруг себя. В то время Python и близко не был настолько популярен, как сегодня, поэтому мало кто решал выбрать этот необычный язык, имея более понятные и знакомые альтернативы. Не помогало и отсутствие должной поддержки со стороны самой Unity Technologies. Документация к движку практически не содержала примеры кода на Boo, отдавая приоритет C# и UnityScript, что не способствовало улучшению позиций первого.
📉 Cудьба Boo оказалась предрешена. В 2014 году его поддержка в Unity была прекращена из-за слишком малой базы пользователей. Со временем все упоминания языка были окончательно вытеснены из документации и панелей интерфейса, а в 2019 компилятор Boo и вовсе удалили из файлов движка. А жаль. Возможно, сейчас, когда Python становится первым выбором для многих новичков в IT, питоноподобный скриптовый язык с призраком на логотипе мог бы очень сильно пригодиться нашему любимому движку...
вот такой сегодня #ПриветИзПрошлого
Тестируем новую рубрику с фактами из темного прошлого юнити... Ну или не очень темного:) Поставьте
Взгляните на вот такой интересный пример реализации базового передвижения персонажа в Unity!
Да это юнити:) Вопрос "С каких пор Юнька перешла на Python?!" отложите в сторону. Здесь всё гораздо интереснее!
вот такой сегодня #ПриветИзПрошлого
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥67❤11🆒3🐳2🎃2
Сегодня будет длинно, но интересно...)
Ставьте
Тооо ничего бы не поменялось, так как архитектуру проекта это не исправит, нооо возможно код был бы чуточку симпотнее)
Так что предлагаю познакомиться с парой плюшек, связанных с этой конструкцией:)
Начиная с C# 7, switch-выражение умеет работать не только с конкретными значениями, но и с диапазонами. Всё, что нужно сделать - поставить между ключевым словом
case и значением знак сравнения >, <, >= или <=! private const int CriticalDamageThreshold = 10;
private void HandleDamage(int amount)
{
switch (amount)
{
// "Поймает" значения ∈ [10; ∞]
case >= CriticalDamageThreshold:
Debug.Log("Critical damage!");
break;
// "Поймает" значения ∈ (0; 10)
case > 0:
Debug.Log("Damaged!");
break;
case 0:
Debug.Log("Miss!");
break;
default:
throw new ArgumentOutOfRangeException($"{amount}");
}
}
Поддерживаются и комбинации нескольких сравнений сразу - нужно только написать их через специальные операторы
or... case > 1 or < -1:
// Делаем что-то
break;
...или
and...case >= 0 and < 10:
// Делаем что-то
break;
Но что делать, если порог CriticalDamageThreshold не константен, а подсчитывается динамически или настраивается геймдизайнером через Инспектор? В таком случае,
switch не позволит вставить поле напрямую в диапазон case'а!Тут на помощь приходит ключевое слово
when, которое позволяет работать и с не константами. С ним мы можем закешировать наше значение в переменную - а уже её спокойно запихивать в любые операции, возвращающие булевое значение.[SerializeField]
private int _criticalDamageThreshold = 10;
private void HandleDamage(int amount)
{
switch (amount)
{
case int damage when damage >= _criticalDamageThreshold:
Debug.Log("Critical damage!");
break;
// <...>
}
}
Выражения после
when называются case guards и позволяют добавлять условия любой комплексности, которые должны выполняться, чтобы конкретный кейс свича "поймал" значение. Таким образом одни и те же данные можно заставить попадать в разные части switch-конструкции в зависимости от конкретных обстоятельств, что здорово прокачивает гибкость кода в конкретных моментах.Честно скажу, на практике такое использую редко, уж больно замароченно выглядит это дело, но фишка интересная:)
Кстати, это еще не все фокусы со свитчом, так что ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥179❤11👍4😁3🤝3🐳2
Спорим вы не знали об игре, которая перевернула разработку игр?)
Мне всегда нравилось узнавать об играх сделанных на Unity, поэтому решил выделить это дело в отдельную рубрику на канале, поставьте🔥 в поддержку:)
Сегодня мы не будем говорить о полезных фишках для Unity. Вместо этого обсудим одну игру - чёрного лебедя, о которой вы, скорее всего, ничего не знаете... а ведь если бы не она, то сегодня вся игровая индустрия выглядела бы совсем иначе - и далеко не факт, что в лучшую сторону.
🧐 Инфы получилось довольно много, так что оформление будет в виде карточек:)
Ну а подобные постики будем помечать тэгом #MadeWithUnity
Мне всегда нравилось узнавать об играх сделанных на Unity, поэтому решил выделить это дело в отдельную рубрику на канале, поставьте
Сегодня мы не будем говорить о полезных фишках для Unity. Вместо этого обсудим одну игру - чёрного лебедя, о которой вы, скорее всего, ничего не знаете... а ведь если бы не она, то сегодня вся игровая индустрия выглядела бы совсем иначе - и далеко не факт, что в лучшую сторону.
Ну а подобные постики будем помечать тэгом #MadeWithUnity
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥130❤9🐳4👍2🌚2
Яковлев Илья | Gamedev pinned «Навигация по каналу: 🖥 Основные ресурсы: - Бот (тут можно забрать подробный roadmap с 0 до junior) - Ютуб канал - Обучение Unity adventure 👨💻 Рубрики: #лайфхаки - небольшие особенности Unity и C#, которые могут помочь в разработке #студия - рассказы/новости/кейсы…»
Решил немного обновить навигацию по каналу (сообщение в закрепе) :)
Как оказывается действительно многие пользуются подобным функционалом, поэтому в будущем буду более строго относиться к разбиению постов на хэштэги/рубрики, да и наверное по старым постам в скором времени пройдусь, тоже проставлю, если сил хватит:)
🙃 А вообще как у вас дела? Как двигаются проекты/обучение?)
Как оказывается действительно многие пользуются подобным функционалом, поэтому в будущем буду более строго относиться к разбиению постов на хэштэги/рубрики, да и наверное по старым постам в скором времени пройдусь, тоже проставлю, если сил хватит:)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤24👍7🐳3
В прошлом посте про #лайфхаки в C# мы разобрали, как можно удобно работать с диапазонами и комплексными условиями в switch-case конструкции. Вы поставили много 🔥 , и это не осталось незамеченным! Так что сегодня продолжаем разбираться с интересными свойствами свича! 😎
✨ Итак, у нас есть Юнити-приложение с внутриигровыми покупками. Мы выпускаем наш проект сразу на трёх платформах: в Play Market, в AppStore и в Стиме для Windows и macOS. У каждой из площадок - своя система обработки покупок, поэтому мы создали общий интерфейс
Ну и, в целом, switch-конструкция выглядит тут неплохим решением:
...и, вроде, всё работает, но создаётся явное ощущение, что для такого простого действия получилось многовато словесного шума.
❓ Нет ли варианта лаконичнее?
✔️ Конечно же есть! С выходом C# 8 в языке была представлена новая фича - switch expressions. Она даёт знакомой нам конструкции непривычный краткий синтаксис следующего формата:
То, что свич-выражение вернёт как результат своей работы, можно будет сохранить в переменную или передать куда-то ещё. Самое то для нашего случая!
После рефакторинга получается такое:
...и, вроде, уже все выглядит на порядок лучше, но как-то нехорошо смотрятся WindowsPlayer и OSXPlayer, которые пришлось прописать как два разных кейса, хоть они возвращают одно и то же. Но и это можно исправить при помощи контекстного ключевого слова
Диапазоны и другие ключевые слова, вроде
Такая вот сегодня вышла switch-фишечка. Но и это ещё не всё, что умеет данная конструкция! В запасах лежит ещё одна маленькая интересность, которая иногда очень пригождается в проектах. Интересно о ней узнать? Ставь🔥 , и все будет в заключительном посте на эту тему!))
IPurchaseService, к которому обращаемся в коде, и написали три отдельные реализации под каждый из магазинов приложений. Теперь нам остаётся только проинициализировать правильный сервис при запуске игры.Ну и, в целом, switch-конструкция выглядит тут неплохим решением:
RuntimePlatform currentPlatform = Application.platform;
IPurchaseService purchaseService;
switch (currentPlatform)
{
case RuntimePlatform.WindowsPlayer:
case RuntimePlatform.OSXPlayer:
purchaseService = new SteamPurchaseService();
break;
case RuntimePlatform.IPhonePlayer:
purchaseService = new AppStorePurchaseService();
break;
case RuntimePlatform.Android:
purchaseService = new PlayMarketPurchaseService();
break;
default:
throw new Exception($"Unsupported platform: {currentPlatform}")
}
...и, вроде, всё работает, но создаётся явное ощущение, что для такого простого действия получилось многовато словесного шума.
%имя_значения% switch
{
%кейс1% => %возвращаемое_значение%,
%кейс2% => %возвращаемое_значение%,
// <...>
_ => %дефолтное_возвращаемое_значение%
};
То, что свич-выражение вернёт как результат своей работы, можно будет сохранить в переменную или передать куда-то ещё. Самое то для нашего случая!
После рефакторинга получается такое:
// Статический импорт значений enum для краткости.
// Трюк выполнен профессионалами. Не повторяйте в жизни!
using static UnityEngine.RuntimePlatform;
// <...>
RuntimePlatform currentPlatform = Application.platform;
IPurchaseService purchaseService = currentPlatform switch
{
WindowsPlayer => new SteamPurchaseService(),
OSXPlayer => new SteamPurchaseService(),
IPhonePlayer => new AppStorePurchaseService(),
Android => new PlayMarketPurchaseService(),
_ => throw new Exception($"Unsupported platform: {currentPlatform}")
};
...и, вроде, уже все выглядит на порядок лучше, но как-то нехорошо смотрятся WindowsPlayer и OSXPlayer, которые пришлось прописать как два разных кейса, хоть они возвращают одно и то же. Но и это можно исправить при помощи контекстного ключевого слова
or, о котором мы уже говорили в прошлый раз! WindowsPlayer or OSXPlayer => new SteamPurchaseService(),
Диапазоны и другие ключевые слова, вроде
and, when и отрицания not, тоже поддерживаются, так что в гибкости работы switch expressions ничем не уступают обычным свичам:int healthPerCents = GetHealthPerCents();
CharAnimation animation = healthPerCents switch
{
100 => CharAnimation.Normal,
>= 25 and not > 100 => CharAnimation.Hurt,
> 0 and not > 100 => CharAnimation.CriticalState,
0 when _timeForReviveSeconds > 0 => CharAnimation.Dying,
0 => CharAnimation.Dead,
_ => throw new Exception($"{healthPerCents}")
};
Такая вот сегодня вышла switch-фишечка. Но и это ещё не всё, что умеет данная конструкция! В запасах лежит ещё одна маленькая интересность, которая иногда очень пригождается в проектах. Интересно о ней узнать? Ставь
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥112❤4🐳4👾2
Всем привет, снова с постом - вакансией от знакомых:)
————
Ищем backend разработчика на игровой проект на фулл тайм. Уровень разработчика от Middle+ до Senior.
Основное:
- Владение бэкендом: от проектирования и разработки до развертывания и поддержки
- Владение Docker, Docker Compose, умение поднять с 0 сервер
- Бэкенд на .net
- Фрондент на Unity
- Понимание DevOps
- Опыт написания realtime мультиплеерных механик
Работа удаленная, постоянное трудоустройство
Проект на ПК и Мобильные платформы.
За ориентир по сложности проектов можно брать Delta Force.
————
За подробностями писать сюда -> @K0nDeR
p.s. указывайте, пожалуйста, проекты и релевантный опыт в резюме
————
Ищем backend разработчика на игровой проект на фулл тайм. Уровень разработчика от Middle+ до Senior.
Основное:
- Владение бэкендом: от проектирования и разработки до развертывания и поддержки
- Владение Docker, Docker Compose, умение поднять с 0 сервер
- Бэкенд на .net
- Фрондент на Unity
- Понимание DevOps
- Опыт написания realtime мультиплеерных механик
Работа удаленная, постоянное трудоустройство
Проект на ПК и Мобильные платформы.
За ориентир по сложности проектов можно брать Delta Force.
————
За подробностями писать сюда -> @K0nDeR
p.s. указывайте, пожалуйста, проекты и релевантный опыт в резюме
❤12🐳3
И снова всем #ПриветИзПрошлого!)
А вот вам ещё кусочек необычного кода, который реально работал в Юньке!
➡️ В прошлом посте про старый Юнити мы обсуждали, что раньше можно было писать скрипты аж на трёх языках. И если один из них - Boo, - оказался почти никому не нужен и вскоре забыт, то второй, - UnityScript, - зашёл немалому числу людей, и долгое время был настоящим конкурентом C#.
⚙️ И это не удивительно. Boo интегрировали в Юнити чисто "чтобы был". Создателя языка просто наняли в штат компании, и он как-то там поддерживал своё детище на фоне. А вот UnityScript разрабатывали самостоятельно, эксклюзивно для движка, поэтому этот язык умел некоторые штуки, о которых даже современный C# может только мечтать.
💡 Например, в скриптах было необязательно писать класс - просто лепи код, как есть, а движок сам поймёт, что нужно отнаследоваться от монобеха. А ещё все сущности, написанные на этом языке, сразу умели отображаться в Инспекторе, потому что аттрибут
ℹ️ Само название UnityScript намекает, что его основные идеи нагло спёрли подсмотрели у JavaScript. Даже файлам с кодом оставили расширение .js, из-за чего некоторые начинающие разработчики игр потом искренне верили, что именно так и выглядит ДжаваСкрипт - с классами и статической типизацией 😂
📉 К сожалению, хоть этот язык и шёл гораздо лучше Boo, в итоге они разделили одну судьбу. Со временем разработчики всё больше склонялись в сторону C#, считая, что альтернативы - ерунда и детский лепет. В итоге Unity Technologies объявили, что и Boo, и UnityScript будут полностью удалены из движка.
📊 И пусть на тот момент меньше 3% всех проектов использовали UnityScript как основной язык, всё равно в каждой пятой игре, сделанной на Unity, был хотя бы один .js-файл. Поэтому, в отличие от Boo, нашего героя не забыли полностью. Более того, именно из-за него по сей день некоторые новички верят, что в Unity можно писать код на ДжаваСкрипте... или вообще на Java))
А ещё ходят слухи, что где-то в тёмных подвалах разработчики до сих пор поддерживают старые игры, написанные на UnityScript...
А вы встречали UnityScript в проектах?🧐 Пишите в комментариях и ставьте 🔥 , если хотите узнать больше о старой Юньке!
А вот вам ещё кусочек необычного кода, который реально работал в Юньке!
[System.Serializable] применялся к ним автоматически. А вы встречали UnityScript в проектах?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22❤11🐳6