Григорий Дядиченко – Telegram
Григорий Дядиченко
2.83K subscribers
395 photos
159 videos
7 files
1.19K links
Разработчик игр, интерактивных стендов и интерактивной рекламы. Эксперт в области интерактивов и XR.

100+ проектов за 5 лет.

По вопросам сотрудничества писать: @it_bizdev
Реклама в канале: https://vk.cc/cNhGLE
Download Telegram
Как делают битвы с боссом
https://blog.unity.com/games/how-rubber-duck-games-developed-evil-wizard-boss-fight

Шикарный подробный разбор как была сделана битва с боссом в игре Evil Wizard. И эффекты карты, и бихевьор три босса, и VFX. Прям по слоям и по полочкам разложили. Классно, когда в блоге Unity выходят такие материалы, а не очередная реклама сервисов :)

#новости
🔥7
Неплохая статья по asmdef
https://marcomignano.com/posts/unity-assembly-definitions-explained-how-to-organize-and-control-your-code

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

#новости
Люблю PlayerPrefs

Вообще один из самых удобных механизмов в Unity. Можно конечно пользоваться файлами и файловой системой, но тогда нужно помнить нюансы для каждой платформы под который разрабатывается проект или библиотека. Так как скажем в том же webgl что-то писать по путям — нельзя. А с префсами. Нужен тебе бекап списка регистрации в формате csv (проект на устройство которое в наших руках, поэтому полезно такое локальное сохранение).

Написал вот такой небольшой класс:
using System;
using UnityEngine;

public class LocalBackupRegistrationService : IRegistrationService
{
private const string PrefsKey = "LocalBackupData";
private const string Separator = ";";
public void Send(RegistrationData data, Action onSuccess, Action onError)
{
string strData;
strData = PlayerPrefs.HasKey(PrefsKey) ? PlayerPrefs.GetString(PrefsKey) : $"phone{Separator}email{Separator}fullname";
strData += $"\n{data.phone}{Separator}{data.email}{Separator}{data.fullname}";
PlayerPrefs.SetString(PrefsKey, strData);
PlayerPrefs.Save();
}

public string GetData()
{
return PlayerPrefs.HasKey(PrefsKey) ? "" : PlayerPrefs.GetString(PrefsKey);
}
}

и вуаля. Хочешь в веб пихай решение, хочешь на айос, хочешь на андроид, хочешь на винду.

И да, веб решения тоже на стендах бывают удобны, так как их на самом деле очень удобно обновлять on the fly при наличии на стенде интернета. Понятно что такое сохранение полезно, только если мы контролируем устройство, но всё равно. Для того же самого сохранения состояния игры. Пользуешься префсами и не паришься. Где надо — это файлы в файловой системе, где надо это локал сторадж браузера)

#сниппет
❤‍🔥9🔥3
Григорий Дядиченко
Люблю PlayerPrefs Вообще один из самых удобных механизмов в Unity. Можно конечно пользоваться файлами и файловой системой, но тогда нужно помнить нюансы для каждой платформы под который разрабатывается проект или библиотека. Так как скажем в том же webgl…
Ну да, закину контекст использования и внешний вид основного класса, чтобы была понятнее суть) Пока ещё небольшой WIP, так как нужно прокинуть реализации других сервисов регистрации)
На статье про Event System уже 75к просмотров
https://habr.com/ru/articles/359106/

Забавно, эта статья у меня очень хорошо отпечаталась в памяти, потому что я помню как мне говорили когда я её выпустил: "да кому это вообще надо". Далёкий 2018 год, когда я ещё не написал 47 статей на хабр и в целом экспериментировал в плане какой-то публичной деятельности (хотя экспериментирую я до сих пор). Даже под шквалом критики в чатиках чуть не удалил её, так как не умел ещё тогда воспринимать критику. А вот оно как получилось. По сути по охвату самая популярная статья из всех, что я писал на хабр :)

Это напоминает другую историю. Где я по рекомендациям "старших коллег" по геймдеву закопал игру про вампира. Это по сути была головоломка аля Cut The Rope, только нужно было закрывать вампира от источников света чтобы пройти уровень. Где свет должен был отражаться от зеркал и т.п. Если бы мы её тогда добили и выпустили, интересно куда бы меня дальше завело. Может я бы всё ещё был в геймдеве. Хотя я в любом случае доволен тому, что и как получилось.

В общем с 75к охвата. Надо бы сейчас сдать проекты и найти время ещё пару-тройку статей написать. А то идеи есть, а времени как-то нет :) А так, как общую мысль можно вынести очень банальную. Когда вам кто угодно говорит, что что-то фигня и ничё у вас не получится. То что делать это не нужно и это бред. Слушать это совершенно необязательно. Даже я вот писал недавно, что я не верю в VR, но это же не значит что я прав :)

#интересное
🔥14
Классное видео про вращения
https://youtu.be/HjStG4qKEIU

Каждый разработчик вертел эти трансформы много раз. И вот теперь по вращениям есть неплохое видео, где что важно правильно подсвечены проблемы углов эйлера. Кватернионы — это самый удобный вид вращения, так как он быстрый и относительно всех операций максимально предсказуемый. Так что «галопом по европам» отличный разбор я считаю. А для тех кто хочет углубится есть https://habr.com/ru/articles/426863/

В целом для большинства задач в геймдеве не нужно даже понимать что такое кватернион, достаточно понимать логику их интерполяции, сути афинных преобразований и последовательности преобразований. Что такое с точки зрения математики значит обратное значения и так далее. Я всё время забываю суть природы кватернионов, хотя сам же находил офигенное видео на эту тему https://news.1rj.ru/str/dev_game/211 Но это не особо мешает ими пользоваться :)

#новости
🔥13
This media is not supported in your browser
VIEW IN TELEGRAM
Как использовать StencilBuffer
https://www.youtube.com/watch?v=y-SEiDTbszk

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

Я его очень часто использовал в AR для эффектов вроде того что на видео. Эффект не мой, источник https://twitter.com/XRarchitect/status/1674472885090672640 и кстати тут можно на него глянуть https://ian.8thwall.app/augmented-reality-qr2/ (скину в догонку пост с QR кодом для теста эффекта). Поэтому стенсилом нужно уметь пользоваться. И это не говоря, что есть хитрые оптимизации с использованием стенсил буффера.

#интересное
🔥8
Кастомный Cкриптабл Рендер Пайплайн 2.0
https://catlikecoding.com/unity/custom-srp/2-0-0/

Новый туториал от Catlikecoding. Продолжение про скриптабл рендер пайплайн. Если вас интересует тема рендера — рекомендуется к прочтению.

#новости
🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Инструмент для создания больших открытых миров
https://80.lv/articles/world-creator-now-lets-you-create-worlds-of-unlimited-size/

Выглядит красиво. Инструмент позволяет делать огромные бесшовные тиррейны. Для него будут плагины для Unity и UE. В общем любопытная вещь.

#новости
🔥27
Мировая нормаль в шейдере

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

Вот расчёт мировой нормали, вдруг кому пригодится.

o.worldNormal = normalize(mul(unity_ObjectToWorld, v.normal));

Из того на что я потратил больше 5 секунд рамышлений стоит обратить внимание, что домножив на матрицу координат объекта к мировым на нормаль объекта (чтобы получить мировую нормаль), мы её дальне нормализуем. Почему? Потому что если наш Quad или меш не единичного скейла, то скейл сделает нашу нормаль ненормальной :) И дальше часть шейдера:

float4 frag (v2f i) : SV_Target
{
float4 col = tex2D(_MainTex, i.uv);
return col * abs(i.worldNormal.z);
}

Работать не будет из-за того, что компонент Z по сути будет домножен на скейл объекта. В общем я скоро буду уже не гуглить, а искать нужные мне вещи по блогу, чтобы быстро куски кода брать, а не вспоминать названия всех Unity переменных) Так как концепт я придумал сразу, он тривиальный. Но вот задачу я решал минут 5. Хотя она секунд на 10 :) (В моей задаче карточка вращается только по оси Y).

#сниппет
❤‍🔥6
Любопытный баг Unity 2022.3.4

Сейчас заметил один прикол. Есть ScriptableObject, в нём есть ссылки на префабы. При изменении префаба периодически в SO пропадает ссылка на этот префаб. Очень странный баг. Я бы понял если бы там был кастомный инспектор или чёт типа того, но как бы простой топорный SO в котором ссылка лежит в виде GameObject теряет префабы. Это странно. Хорошо я педантично всё называю и в 31 объекте запутаться сложно, но из-за этого перед сборками приходится перепроверять что в SO ничего не слетело.

#интересное
Волюметрия — о реймаршинге
https://youtu.be/hXYOlXVRRL8?si=n107Q_9U2l_h5Nm-

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

Когда по сути экспириенс небольшой, когда там нет огромного числа объектов то существует огромное количество трюков. Например, не к волюметрии, но я очень люблю делать 2д VFX через специальное наложение видео или секвенций. В мобилках секвенции — это роскошь, а тогда когда на вес плевать, можно делать много забавных штук. Типа как в риле на 20 секунде прорисовку картинки кистью. Делается просто, выглядит стильно.

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

#новости
🔥5
Идеальную верстку могут сделать только люди с ОКР. Увидев этот мем вспомнил как меня приучили верстать макеты «пиксель в пиксель». Сейчас фигма и модные штуки, а тогда я разбирал как помню psd макеты, где не так удобно всё расставлять по координатам было. Особенно тогда. И был человек на работе (спасибо ему) который задалбывал и отправлял на переделку за каждый пиксель который не там. Так я научился это видеть. И теперь при ошибке в вёрстке на пиксель у меня непреодолимое желание это исправлять.

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

#мысли
Нравится мне эта серия по компьют шейдерам
https://www.artstation.com/blogs/degged/Ow6W/compute-shaders-in-unity-boids-simulation-on-gpu-shared-memory

Есть в разработке темы которые остаются условно сложными. Условно так как по реально сложным нет обучающих материалов и туториалов. И компьют шейдеры одна из них, но она в любом случае многим непонятна. Поэтому когда выходят качественные материалы по этой теме — это радует. А возможности параллельных вычислений на компьют шейдерах позволяют делать в VFX и т.п. сущую магию. Так же как и техники вроде реймаршинга это именно то про что лет 8 назад сказали бы: «Это рендерить в реальном времени? Вы что с ума сошли?».

#новости
🔥9
Спрайт превью в инспекторе
https://www.sunnyvalleystudio.com/blog/unity-2d-sprite-preview-inspector-custom-editor

Прикольная маленькая статейка про добавление превью в спрайтов в инспекторе. Для каких-то ScriptableObject с информацией о предметах в игре довольно полезная штука.

#новости
🔥1
Я наконец-то выбрался из завала

Последние 2 недели были очень плотные, но как говорится по результату их я могу сказать. Всё ещё достоин. Вообще довольно забавно, за август я успел сделать несколько проектов для разных брендов. Пару рекламных игр для Coca&Cola и Haval. И ещё пару вещей о которых надо будет узнать можно ли рассказывать. Но как говорится проверка "Всё ещё достоит" пройдена. Собрать 5 проектов за месяц по сути и за 10 дней сложную интерактивную карту (правда почти без сна) — пройдено. Теперь выдыхаем немного и новое приключение в сентябре. Пока в этом году сделано 15 проектов. Посмотрим что будет к концу года. Но год получается довольно плотный. Хотя январь и февраль я вообще не работал, а сейчас успеть бы разгрести все свои дела XD

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

#оработе
🔥16
А так, вот чисто я когда мне предлагают горящий проект в нереальные сроки https://youtu.be/Y5fn4mENXWM?si=YWH_3wUtsYFaAEvd
🤣13
Красиво про кривые Безье
https://blog.richardekwonye.com/bezier-curves

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

#новости
🔥12
Юнити меняют расценки. Plus RIP
https://blog.unity.com/news/plan-pricing-and-packaging-updates

Press F за подписку Unity Plus, теперь её больше не будет. Хотя обладатели ещё на год смогут обновится до про по цене плюса на один год, что неплохо.

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

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

#новости
🤯13❤‍🔥1