Григорий Дядиченко
2.66K subscribers
483 photos
191 videos
10 files
1.34K links
Разработчик игр, интерактивных стендов и интерактивной рекламы. Эксперт в области интерактивов и XR.

100+ проектов за 5 лет. https://whitelabelgames.ru

По вопросам сотрудничества писать: @it_bizdev
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Как сделать интерактинвый ковёр
https://80.lv/articles/learn-how-to-make-interactive-rug-with-unity-s-shader-graph/

Ковёр в разработке это в целом мем. Я слышал несколько историй про ковры с миллионом полигонов. Но тем не менее куда же мы без них? И вот туториал о том, как сделать так, чтобы ковёр ещё был и интерактивным.

Технический художник Unity Хосе Ортигоса Рамос поделился видеоуроком по созданию аккуратного интерактивного коврика, который деформируется, когда под него помещают объект с помощью Shader Graph от Unity. Он же недавно показывал эффект желешки.

#новости
🔥12
Оптимизация трассировки лучей методом BVH
https://www.youtube.com/watch?v=C1H4zIiCOaI

Видео про трассировку лучшей и про метор BVH ( bounding volume hierarchy) или иерархии ограничивающих объёмов. Реймаршинг, рейтрейсинг в реалтайме одни из самых любопытных тем в графике. Ведь всем хочется чтобы в реалтайме можно делать так же круто, как в 3д софте. Потому что сейчас рендер от реальности иногда даже бывает сложно отличить.

И опять в оптимизации у нас деревья. Я ещё помню что любил технику BSP (Binary Space Partition или как-то так) В общем как мне нравились всегда деревья и графы, так и остаётся это чуть ли не любимым разделом в математике. А видео интересное, рекомендую глянуть. Даже если не применять все эти оптимизации, такие штуки помогают разбираться в некоторых принципах используемых в разработке можно сказать "на примерах".

#новости
🔥2
Забавный баг с сорстри на макбуке

Мне нужно было с утра зайти и посмотреть, что там с сервером. Я открываю терминал, пытаюсь подключиться к серверу по ssh. И получаю ошибку:

/Users/nox7atra/.ssh/config line 23: keyword hostname extra arguments at end of line
/Users/nox7atra/.ssh/config line 26: keyword identityfile extra arguments at end of line
/Users/nox7atra/.ssh/config: terminating, 2 bad configuration options


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

Пробелы. В сгенерированной конфигурации от сорстри аргумменты не заключены в кавычки 🙂 А у меня там откуда-то в названии пробелы (хотя как опытный пользователь я никогда в путях не использую пробелы и кирилицу, зная что много кто клал на обработку этого случая, но сам Gitlab Enterprise в конфигурации написан через пробел).

Ставим кавычки, всё работает. Но забавно, что из-за сгенерированной сорстри конфигурации у меня сломался в целом механизм подключения по ssh. Так что если у кого-то выскочит, найти нужные линии, поискать нет ли пробела в пути и поставить аргументы в кавычки. Раз такое не гуглится так просто - надо написать. Хотя разобраться не сложно, но для этого надо хоть немного Unix знать.

#интересное
Продюсер на вольных хлебах: О работе

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

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

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

А сделав на фрилансе проектов 15-20, я понял что понимать суть того, что хочет заказчик — это тоже оказывается навык. Я работал в самых разных конфигурациях работ. И на субподряде когда заказчики были экспертами своего дела, и когда они просто в целом не понимали что происходит. Продюсер по сути отвечает за понимание финального результата, и как мы до него дойдём. Бюджеты, специалисты, сроки. Скажем в отличии от продакта ему даже не надо ничего придумывать, достаточно просто иметь вижен в голове и уметь до представленной картины доходить.

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

Побывав на всех ролях я понимаю адекватный бизнес. Адекватный бизнес хочет платить деньги и получать результат. Он хочет минимально вникать в то, как этот результат получается. Заплатили, вот то что мы хотели. Этого бизнес ждёт от сотрудников, от подрядчиков, вообще от всех. И по сути задача бизнеса объяснить продюсеру точку Б и заплатить денег вовремя. А уже продюсер дальше придумывает весь путь из точки А в точку Б, и решает проблемы по ходу этого увлекательного приключения. И вот этот навык стоит действительно дорого и достаточно сложен в освоении. Особенно в диджитале без глубокого технического опыта. Конечно можно покупать разработку, как некоторую «абстракцию», но тогда очень легко уводить все проекты в «производственный ад» или недооценить какие-то разумные для айти риски.

Не проходим мимо, ставим 🔥, они бесплатные, а мне греют душу. В следующий раз наверное стоит рассказать о моих основных ошибках за последние 6 лет работы.

#приключения
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥59
Particle Plexus
https://mirzabeig.substack.com/p/unity-tutorial-particle-plexus-part-3

Классный туториал по красивому визуальному эффекту. Люблю такой визуально простой, но при этом эффектный VFX.

#новости
🔥5
Открытость IT, а точнее разработки

Давно ничего не писал. Но и дел много + я ща в походных условиях осваиваюсь. А сейчас раз уж появилась мысль — стоит написать.

На пост меня навело то что ко мне пришли с рекламой закрытого канала. Я такое рекламировать не хочу, так как для меня реклама погоды в моих доходах не создаёт. При огромной цене поста относительно CPV в 10 рублей за просмотр. То есть около 10к рублей за пост. У меня час консалта стоит как бы столько же (хотя я уже думаю сделать дороже). Не беря основной бизнес — доходов с проектов. Ладно, речь не об этом.

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

Не, там конечно будет как в той же доте) Первое время тебя будут гнобить. Нужно будет перетерпеть саркастические ответы на новичковые вопросы и тому подобное. Но в разработке все всегда были готовы помочь друг-другу. Причём без оплаты. Даже взяв за пример мой консалт. Он платный: 1) для бизнеса 2) при конкретном коммерческом запросе.

Когда меня в чатах спрашивают или разработчики спрашивают и ответ можно сформулировать в нескольких предложениях, а не в документе на 100 страниц я не буду говорить: «плоти» :) Типа «Гриш, а ты работал с этим, как там всё?» я безусловно отвечу. Собственно с этой концепцией я писал и надеюсь буду писать статьи на хабр, пишу в этот блог. Я в целом за открытость и некоторое совместное развитие.

Курсы — норм, так как это структурирование информации, для тех кто хочет ускориться и не хочет сам заниматься. Но всё же комьюнити разработчиков, общение в айти и т.п. должно оставаться открытым. А то скоро как у юристов будет сайт «программист ру», где за 100 рублей будут отвечать где в блоке с кодом «;» пропущена :)

#мысли
🔥192❤‍🔥1
Загадка Order in Layer

Unity иногда поражает своими решениями. Особенно их очевидностью. Вот вы знаете какое максимальное значение у sortingOrder в SpriteRenderer? Ну наверное если работаете с 2д много то знаете. Но вот почему так - загадка. А давайте попробуем угадать?

Сначала сходим в документацию. Там ничего не сказано. Ну ладно, документация нужна только трусам. У нас же есть код, а код лучшая документация. Посмотрим тип sortingOrder в коде. Ну вроде бы int. Следовательно по идее значение должно быть равно int.MaxValue - 2 147 483 647? Ведь так Unity? Так? *тут должна быть ухмылка Энакина, но в текст в телеграме нельзя вставить картинку*

Не, опять не угадал. Максимальное значение равно - 32767. То есть short.MaxValue. Почему при этом sortingOrder у нас типа int, а не short? Ну видимо во славу сатаны. А я потратил 5 минут лишних на задачу и ещё на пост чутка времени, чтобы узнать почему при драге sortingOrder = int.MaxValue ставит -1 в значение порядка сортировки объекта. Я считаю и обработка больших значений божественная, и документация идеальная, и код очень логичный. Уже за 12 лет работы с этим движком удивлять он всё так же не перестаёт.

UPD: Перепроверил. Ладно, это не написано в мануале по спрайт рендереру и в апи спрайт рендерера. Но если зайти прям в пропертю в апи спрайт рендерера, то там это написано. Ну как обычно, чтобы докопаться до истины нужно постараться.

#оработе
23🔥4
Продюсер на вольных хлебах: Об ошибках

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

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

1. "Победителей не судят" - это ошибка

Мне всего лишь 30. Свой путь в бизнесе и переговорах я по сути начал 6 лет назад, когда мне было 24. И тогда был и юношеский максимализм, и я прям помню как продвигал идею того, что "победителей не судят". Я любил жестко продвигать свою позицию, спорить по многим вопросам и так далее. Потому что "победителей не судят". Если проект сделан и работает - то к тебе ноль вопросов. И что я могу сказать по прошествии 6 лет в бизнесе - это действительно так. Победителей не судят. Но есть нюанс.

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

Отстаивать свою позицию важно и нужно, но как и во всём - нужен баланс.

2. "Мы же делаем для вас лучше"

Я всегда очень сильно вовлекаюсь в проект. И это во многом скорее плюс. Но я часто спорил с клиентами, причём в мясо, по не столь существенным вопросам, когда я знаю что лучше сделать по-другому. И вывод мой - так не нужно делать всегда. Объяснить как лучше и почему я так считаю - обязан. Биться и доказывать с пеной у рта, когда у меня просто заказали разработку проекта - не за чем. Во-первых, у клиента может быть больше контекста и клиент может банально больше знать. А вот во-вторых, если с точки зрения бюджетирования разницы нет, то всегда проще сделать как хочет клиент акцентировав внимание на том, что ты не совсем согласен с его позицией. Как говорится "хозяин барин". Все же в моей работе оплата идёт за реализацию. Поэтому я всё чаще что-либо рекомендую вообще только когда меня об этом спрашивают.

3. "Все сам"

Это вообще топ-1 ошибка. Я уже не помню сколько раз я в проектах не делегировал разработку когда надо было. Я умею работать с супер скоростью. Некоторые проекты я целиком с нуля разрабатывал за 2-3 дня. Потому что за 90 проектов мне нужно просто сесть и написать. Чтобы сделать тот же раннер или ещё какую-то игровую механику мне даже задумываться не надо. Просто попечатать пару часов строчки кода. Так как для меня в Unity всё ключевое понятно.

Но очень часто было такое что я был загружен и не отдавал кому-то другому проект. А потом когда до дедлайна остаётся пара дней "ну мы уже ни с кем не договоримся" и я в огне всё делаю сам. Обычно прохлебав какие-то переговоры или какой-то контракт. Да либо просто устраивая себе весёлые ночи без сна. Лучше заранее и сразу грамотно планировать ресурсы и своё время. И по сути этому я более менее (и то не до конца) учусь сейчас.

4. "Излишняя принципиальность"

Тут я не считаю себя неправым до конца. И не считаю это грубой ошибкой. Но всё же иногда чисто с коммерческой точки зрения можно было быть мягче. У меня в контрактах прописано обычно 3 итерации правок. Была такая история что в одном контракте мы пошли в пятую итерацию, где я предварительно сказал: "Внимательно - это точно последняя". Мы их сделали и пришло ещё несколько мелких правок, на которые я сказал нет. Среди которых была одна критическая для клиента. Точнее даже так, я не сказал нет. Это проблема того что мало кто умеет вести переговоры. Я сказал: "акт и оплата сегодня и тогда сделаем". Считаю ли я себя неправым в этой ситуации - в целом нет. Но вот обязательно ли было так делать - тоже нет. Я это сделал не по коммерческим соображениям, а чисто из принципа.
🔥15
При том что в итоге я все равно сделал правку и без акта и без оплаты, потому что я понимаю что это относительно быстро, а менеджерам бы за такое бошки бы по отрывали. Я просто слишком добрый, поэтому выкурив кальян и чуть остыв, я в 2 часа ночи сел и всё сделал, и скинул билд. Потому что я патологически видимо не могу подставить людей и "гори всё синим пламенем". Но больше мы не работали.

Как-то получился пост про "внешние ошибки". При взаимодействии с клиентами в основном. Хотя можно ещё написать про истории взаимодействия с командой и разные факапы там, такого тоже было достаточно. Хотя в памяти больше всплывает как я разруливал проблемы с командой. Если пост был интересен - ставим 🔥, а я пока подумаю что бы ещё такого рассказать. Ошибки - это самый полезный опыт, когда ты на них обращаешь внимание. И я всё ещё иногда их совершаю, как человек эмоциональный, но значительно реже.

#приключения
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38
Паттерны в Unity
https://habr.com/ru/articles/826014/

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

Про паттерны как всегда стоит сказать, что это шаблоны и упрощение, но не святой грааль разработки. А то фанаты солида вообще иногда похожи не на разработчиков, а на религиозный культ. Паттерны полезно знать, так как они упрощают работу и чтобы не переизобретать велосипед. А главным в разработке я считаю старую добрую логику. Я придерживаюсь главного принципа - KISS (Keep it simple stupid)

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

#новости
🔥12
Использование встроенных шрифтов
https://habr.com/ru/articles/828620/

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

#новости
🔥3
Создание игр на Unity: С чего начать?
https://habr.com/ru/articles/828302/

Давно ничего не писал. Сейчас и образ жизни изменил, и завал по работе, так что было не до блога. Но я вернусь! Про статью - это скорее повод, статья так себе. Мне не особо понравилась. Такая из разряда "всё везде и сразу". Очень много информации которую тяжело усвоить. Я люблю всё везде и сразу, как какой-то простой и понятный справочник. Но зато она пробудила воспоминания чисто своим названием.

Не знаю как вы, а я в школе был задротом очень много играл в игры. Ну, а то же, даже в топ-3 гильдий европы в WoW в основном составе бегал бить Иллидана. И собственно как наверное у многих геймеров у меня была мысль "блин, хотелось бы уметь делать такое". Но жил я в Волгограде, поэтому курсы по разработке то было найти сложно. Не то что по игровой разработке, а просто по разработке. Это сейчас из каждого утюга рекламируется новый курс, а в те времена разработчики жили с деревянными игрушками и без дяди индуса, который объяснит любую херню в разработке. Я пытался найти репетитора или курс, чтобы начать учиться, но в те времена не нашел.

Учится разработке раньше было в разы хардкорнее. Хотя смешно, что в том же WoW мне скинули я считаю лучший мануал по написанию сайтов на HTML, с которого я наверное начал что-то разрабатывать. Что забавно начал я с веба, так как я просто не понял как скомпилировать код. Я типа чёт поковырял в плюсах на сколько я помню в 9 классе, но так и не разобрался: "А как это хотя бы запустить?". Повторюсь, тогда не было туториалов от индусов на любой чих. Тогда учиться разработке было посложнее.

И вот я уже 10 лет в разработке, больше 100 проектов за плечами и так далее. Начать было сложно, поэтому важно понимать с чего можно начать и иметь какое-то направление для старта. Теперь я уже не играю особо в игры, не особо хочу делать игры типа WoW и просто по сути нашел дело по душе. Но зато теперь я точно знаю как сделать тот же WoW 🙂

#новости
🔥15
This media is not supported in your browser
VIEW IN TELEGRAM
Реалистичный шейдер воды для VR
https://80.lv/articles/artist-showcases-a-realistic-water-shader-running-in-vr-on-meta-quest-3/

Художник, боюсь ошибиться в имени, продемонстрировал классный шейдер воды. Шейдер сделан для URP и оптимизирован для работы с тем же Meta Quest 3.

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

#новости
🔥29❤‍🔥3
Radiance Cascade в 2д в Unity
https://github.com/Youssef-Afella/RadianceCascadesUnity

Относительно недавно Александр Санников описал новый подход к расчету глобального освещения. И вот уже начинают появляться репозитории с различными реализациями. И тут у нас 2д реализация данного подхода. Всегда интересно такое поразбирать :)

#новости
🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
Процедурная анимация в стиле Doc Ock
https://80.lv/articles/unity-developer-unveiled-doc-ock-inspired-proc-animated-creature/

Классная анимация перемещения представленная разработчиком Keenan Woodall. Круто что она сделана из стандартных ассетов. Выглядит интересно.

По своей сути это довольно понятная штука. Набор детекторов + система кинематики. Единственное что на рисунке разработчик предлагает использовать рейкасты, а я бы брал детекцию через сферу радиуса распрямлённой ноги. Я делал нечто подобное давным давно для VR хоррор игры. Там противник должен был прыгать на игрока и цепляться за разные части тела (ну и начинать его резать ножом). И собственно чтобы положение игрока могло быть произвольным, а риг противника не сходил с ума, это всё делалось с помощью процедурных анимаций и инвёрсной кинематики.

#новости
🔥18
Френдзания
https://game.dobry-kids.ru

Это был длинный и интересный путь до релиза, и теперь можно рассказать про наш крутой проект - «Френдзания» для детской линейки Добрый. Мы отвечали за разработку игры в рамках большой NCP-активации бренда, которую реализует агентство The Diversity.

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

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

В общем, я рад, что в портфолио появится такой классный проект и о нём можно рассказать :)

#оработе
🔥16❤‍🔥21
Game UI Database
https://www.gameuidatabase.com/

Это что за прелесть! Вышла вторая версия большого сайта с базой данных интерфейсов более чем 1300 игр. Вот у вас бывает такое при постановке задач на GUI? "Ачивки надо сделать ну как в той игре. Да играл ты в неё. Ща поищу." И то что пинтерест и гугл не по всем играм хорошо находят геймплейные скрины и интерфейсы.

А тут целая большая база данных по 1300+ играм, как я посмотрел, почти с каждым интерфейсным экраном. Это нам нада. И сохранить и закрепить. Гуй в играх в целом часто боль, поэтому какие-то опорные материалы нужны всегда.

#новости
🔥17
Индустриальный AR помощник Hyundai
https://unity.com/blog/industry-first-ar-solution-for-construction-machinery

Я так люблю такие громкие заголовки. Первое индустриальное AR решение (ну это конечно СЕО, а не в самой статье, но забавно). Я такое впервые делал думаю эдак в году 2018. Ужас уже 6 лет прошло.

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

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

Идея того чтобы совмещать реальный объект и модель в дополненной реальности не нова. И я когда-то в различных R&D зубы сломал именно об трекинг. У меня было две задачи подобного класса, где современным системам трекинга можно было сказать: "ВЫ НЕГОТОВЫ" (с) Иллидан. Это контроль качества и AR навигация. Но первое это прям на максималках. Так как там всегда очень сложные условия для любых скажем VSLAM систем. Стационарные системы вроде Vicon неудобно эксплуатировать. Радиолокационка, магнитка, ультразвук - проблемы с точностью. Хорошей точностью в целом обладает только оптический трекинг пока.

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

#новости
🔥1
Эффект цепной молнии
https://youtu.be/eSqoJVdGbxM?si=zvabkt2qZEQvv_cR

Новый туториал от Gabriel Aguiar с эффектом цепной молнии. Смотрится симпатично. Но главное чем больше туторов по VFX разберёшь и проделаешь, тем проще делать свои кастомные эффекты.

#новости
🔥6