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

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

По вопросам сотрудничества писать: @it_bizdev
Реклама в канале: https://vk.cc/cNhGLE
Download Telegram
Я не люблю программирование

Знаете — пора признаться. Я не особый фанат программирования. Внезапно, не правда ли в блоге по сути на 90% посвящённому программированию? Стоит наверное уточнить в каком смысле. Где-то в 26, когда я ещё читал мануалы процессоров, изучал ассемблер и низкий уровень, ковырялся в IL который генерит шарп. В общем изучал глубокую базу и т.п. — мне это надоело. Сейчас мне не особо интересно такое понятие как — идеальный код. Я понял, что я люблю в первую очередь решать задачи бизнеса.

Конечно как разраб влезть в какой-нить бесполезный холивар на 4 часа обсуждения — это святое. Но я не люблю поиски идеальных решений, идеального кода и так далее. Я привык решать задачи "достаточно хорошим решением". Я замечал что многие любят преждевременные оптимизации, углубляться на тему того, что вот тут то можно было бы написать лучше и удобнее. И так далее. Мне это как-то стало в определённый момент неинтересно. Решение прикладных задач в контексте бизнес требований достаточными инструментами — это быстрее и эффективнее.

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

В общем мне интереснее делать игры, делать проекты, делать визуализации данных и прочее, чем искать тот самый one piece идеальный код. Но это не значит что мой подход и моё мнение "правильное". Это просто один из подходов к работе и к разработке в целом. Как говорится "Данные мысли не являются инвестиционной рекомендацией".

#мысли
🔥53❤‍🔥6🤯2
Красивый пак моделей в стиле древнего Рима
https://80.lv/articles/roman-temple-ruins-asset-pack-for-unity/

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

#новости
🤣3❤‍🔥1🔥1
Про авто-тестирование в геймдеве

У меня тут с утра возникло обсуждение с другом бекендером собственно про тесты. Энтерпрайс бекенд в целом всё старается покрыть тестами и это нормально. Там другие сроки разработки, другие масштабы проектов, банально другое число абстракций и интеграций. В геймдеве же тесты не так распространены. И вопрос нужны ли тесты в геймдеве?

До этого хочется написать, а зачем вообще нужно покрытие тестами? Одна из основных задач тестов "контроль работоспособности абстракций". В любом коде так или иначе возникает некоторый набор абстракций. Возьмём простой пример (писать так точно не надо) У нас идёт игра Moba. У нас есть понятие Ability. От него идут Fire Ball Ability, Frost Bolt Ability и так далее. И в базовом классе описан метод Launch, который проверяет количество маны персонажа и делает всякие другие проверки. Для запуска нужен таргет. Мы создаём тест, в котором у нас должен умирать противник с такими-то характеристиками по настройкам баланса. То есть пускаем мок скилл в мок таргет. И так со всеми скиллами. Результат теста — все таргеты всегда мертвы. И при заданных характеристиках скилл вообще запущен.

Такой тест позволит отслеживать что "скиллы не сломались за счёт изменений" той же базовой реализации метода Launch в 100 скиллах. Или при изменении баланса, так как "ящик должен умирать с одного фаерболла". Классно, удобно и так далее. Но вот вопрос. А сколько таких мест в средней игре, что у нас есть какая-то абстракция на реализацию которой опирается 100 конкретных реализаций. Игры в разы конкретнее и несут (да и должны нести) в разы меньше сложных абстракций нежели возникает в серверной разработке. То есть потребность в тестировании сильно зависит от игры. Можно подобрать примеры типа WoW (хотя там опять таки больше бекенд чем клиентские разрабы обложатся тестами).

Поэтому любопытно, а как вы считаете насколько необходимо автотестирование в играх? Именно в клиентской части. Ток не на уровне "религии" — оно надо, потому что мне так сказали. А какие проблемы оно решает, чем полезно, чем удобно, чтобы как же тот же Test Driven Development стоил того, чтобы с ним морочиться.

#мысли
🔥10❤‍🔥1
Я пытаюсь объяснить геймдизайну, почему нам сложно добавить лук в шутер за один день.

P.S. Я просто обожаю эту картинку, и она мне снова на глаза попалась :)

#мем
🤣18🔥5
Неочевидный момент InputSystem

Сижу с утра разбираюсь с управлением с помощью руля в Unity (кстати вообще нетривиальная задача как оказалось). И не могу понять что происходит. Вроде нашёл какой маппинг отвечает за баранку, вроде даже чёт возвращается. Конечно любопытно что на колесе положение 0 — это +-1, поэтому нужно хранить память о знаках и т.п. Ну да пёс с ним, думаю это вопросы к конкретному рулю.

Сделал вывод в логи. И в какой-то момент значения перестают меняться. При этом лог идёт, апдейт отрабатывает. Оказывается, если нажать на инспектор то инпут система перестаёт обновляться. Весьма неожиданно. То есть апдейт работает, логи обновляются (иначе бы это как бы сам дурак Run in background нажми), а инпут систем не обновляется. Нажимаешь снова на GameView — всё работает. Забавно. Не самый очевидный прикол :)

#интересное
🤯10🤣5🔥2
Григорий Дядиченко
Неочевидный момент InputSystem Сижу с утра разбираюсь с управлением с помощью руля в Unity (кстати вообще нетривиальная задача как оказалось). И не могу понять что происходит. Вроде нашёл какой маппинг отвечает за баранку, вроде даже чёт возвращается. Конечно…
Ну да, проверил с контроллером от PS5 — та же фигня. То есть дело в InputSystem 100%, а не в конкретном хардваре. Так же обновил инпут систем до 1.6.3.

Я просто не люблю такие баги, когда что-то не работает в интеграции двух блекбоксов. Потому что часто бывает вообще непонятно что делать. Изначально я испугался, что вообще руль перестаёт возвращать значения через несколько секунд работы. Но так как это звучит как бред, то получилось догадаться, что дело не в этом. А то иначе бы пришлось молиться чтобы "так было только в редакторе" :)
🔥3
Счётчик действий
https://gist.github.com/Nox7atra/1d57515111611a141b081a91d2e90d12

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

private ActionCounter _skipLevelAction;
private void Awake()
{
_skipLevelAction = new ActionCounter(3, 0.5f);
_skipLevelAction.ResolveAction += DebugEndLevel;
}

private void Update()
{
_skipLevelAction.Process(Time.deltaTime);
if (Input.GetKeyDown(KeyCode.RightArrow) || Input.GetMouseButtonDown(0))
{
_skipLevelAction.Action();
}
}

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

#сниппет
🔥8🥱3❤‍🔥1
Бла-бла-бла про ИИ
https://blog.unity.com/games/where-might-ai-take-gamedev-next

В целом ничего нового для тех кто следит за развитием ИИ в игровой индустрии и т.п. в блоге Юнити не написали. NPC, генерация ассетов, безопасность пользователей. В списке удивил разве что геймдизайн. Я то и в ассеты без допила человеческой рукой в обозримом будущем не верю. А вот то что ИИ геймдизайн будет интересным — и подавно. Что он будет генерить что-то и можно будет говорить "вау, это сделал компьютер сам" — да. А так по сути ИИ занимается на мой взгляд копированием и сборкой гомункулов. Только у него нет этого... как же его... Вкуса.

То есть описанный в статье бесконечно процедурно генерируемый мир — это фентези. Так как там не будет сверху человека, который будет следить за адекватностью происходящего. Хотя поживём увидим. Что будет ИИ майнкрафт и без глубоких технических навык и наработки скиллов можно будет делать чёт симпатичное — это да. И что игры наконец-то может будут стоить более разумных бюджетов. Если не слышали новость, что ребята из SEGA заявляют что 70 миллионов $ станет нормой для игр. А то где же такие деньги наскребсти :)

Озвучки или что-то техническое неиронками решать кайф. И я уверен, что вот это превратится в реальные инструменты и тулы. Процедурные анимации — вообще было бы прикольно уметь даже не в реалтайме анализировать старые фильмы и брать оттуда движения и мимику актёров для игровых персонажей. Инструментарий для голосовой автоматической озвучки на все языки, с забором голоса и автоматическим липсинком. Это думаю будет и будет круто. Но что то мне всё происходящее всё равно напоминает. Как человек который побывал на хайпе метавёрсов, AR&VR, и лёгкий хайп умных часов прошёл :) В общем посмотрим.

#новости
🔥6❤‍🔥1
Розыгрыш книги в честь 2000 подписчиков!

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

Мне хочется разыграть что-то полезное, поэтому мы совместно с издательством Бомбора придумали разыграть такую вот книжку. Условия розыгрыша довольно простые:
1. Быть подписанным на мой канал
2. Скинуть в комменты любимый или просто забавный мем про разработку

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

Кроме того можете приобрести себе другие интересные серии книг по геймдеву от издательства Бомбора!
Серия Мировой компьютерный бестселлер. Гейм-дизайн
Серия Российский компьютерный бестселлер. Гейм-дизайн
Серия ЛКИ

В
общем спасибо что читаете меня. Читайте книжки Бомборы. Дальше будет ещё больше интересного.

Итоги розыгрыша подведём 29.07. Победитель выбирается случайно.

#новости
🔥23❤‍🔥1
Григорий Дядиченко pinned a photo
Забавные VR игры
https://blog.unity.com/news/storyfutures-xperience-bringing-vr-across-the-united-kingdom

Прикольная подборка компаний от Unity. Кто-то что-то в VR ещё делает. Мы последний кейс VR делали делали с инструментом геологической разведки для ГПН, хотя другие кейсы у меня вообще за NDA :) И есть один супер красивый по анализу данных. Эхх, вообще надо будет почитать сколько ещё лет действует большая часть моих NDA :)

#новости
🔥2❤‍🔥1
Разработчик-невидимка

Сегодня я пока занимался административными задачами снова зашёл в свою CRM и улыбнулся. С 2017 года я сделал 85 проектов. В каких-то писал код сам, в каких-то управлял командой и т.п. И забавен тот факт, что показать я могу от силы 10, так как остальное за NDA. И проекты были самого разного уровня.

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

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

Разные исследования в области AR, VR, трекинга. Медицинские кейсы. Кейсы для крупных западных брендов. Всё это было, и всё это большой секрет. Забавно. Но есть метрика ещё забавнее. Так как я же веду не только проекты которые мы сделали, но и которые не состоялись. За весь этот срок (хотя я вероятно не всё даже внёс в CRM) я обсудил 470 сделок (вместе с выполнеными) с совокупной оценкой (а не по всем оценки были) на почти 200 миллионов рублей.

Хз много это или мало, просто прикольные циферки. 470 проектов я обсуждал, придумывал какие-то решения, прорабатывал какой-то базовый концепт вместе с Мишей. Забавно сколько всего произошло за последние 5 лет. Ещё из прикольных циферок, что совокупный вес всех проектов на моих жёстких дисках (а у меня есть бекапы на отдельных дисках, чтобы ничего не потерять) — больше 900 ГБ :)

#мысли
🔥21❤‍🔥1
Процедурное взаимодействие с окружением
https://www.youtube.com/watch?v=Y6hJlaOwpds

Первая часть туториала объясняющая разницу между кейфреймами и ригом. Обязательно знать если не знаете. Думаю в конце мы прийдём к притягиваюнию к ключевым зонам посредством инвёрсной кинематики.

Как-то раз я так делал в VR проекте. В том проекте персонаж мог плавать. Кстати забавный способ перемещения в VR и очень трудно настраиваемый, так как нужно очень тонко подбирать скорость чтобы игрока не укачивало. Можно будет про эту механику написать. Так же там было управление через вращение виртуального штурвала. В общем много механик где нужно учитывать один факт.

В VR при тупой реализации руки будут проходить сквозь виртуальные объекты, так как их нет в реальности. В плавании по затопленным коридорам вообще важно было уметь хвататься за трубы, отталкиваться от стен. А как ты оттолкнёшься от стены, если рука сквозь неё проходит? И чтобы это выглядело достоверно? Разметить трубы и стены и доводить всё до "естественных положений" с помощью инвёрсной кинематики. Ещё прикольно как бы выталкивать игрока, чтобы фактически рука на стене была в правильном положении. Но это адекватно именно в космосе там или под водой. В обычном формате "реальная рука проходит сквозь стену, а виртуальная остаётся в точке на стене".

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

#новости
🔥5❤‍🔥3
Бетка для разработки под VisionOS
https://www.gamedeveloper.com/extended-reality/unity-opens-beta-for-visionos-development

Давно не было новостей про новый шлем эпл. И вот оно. Unity открывает запись на бету разработки под VisionOS. Когда-то я записывался на бетку Heartstone чтобы поиграть (и прошёл). А сейчас я записываюсь на бетку для разработчиков. Суть не изменилась, просто игрушки теперь взрослые XD

#новости
🤣4🔥2🤯2❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Симуляция растений для Unity Editor
https://github.com/noio/games.noio.planter

Инди разработчик Томас ван ден Берг опубликовал инструмент который использовал в своей игре Cloud Gardens. Выглядит любопытно. Пока инструмент в ранней альфе, но его уже можно скачать и опробовать.

#новости
🔥17🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
Лава лампа в Unity
https://youtu.be/HmICrwj2Exo

Туториал по тому как сделать лава лампу с помощью Unity Shader Graph. Выглядит красиво. Туториал сам по себе на испанском, но есть английские субтитры :) Хотел домой лавалампу, теперь могу виртуальную в окно инспектора поставить, если будет не лень написать такую рендерилку :)

#новости
🔥9
Разбор IK систем
https://www.youtube.com/watch?v=jOp52NQMcTo

При любой возможности я буду напоминать о том, что я не прощу эпл за покупку IKinema Orion, а точнее за то что они купив его убрали его из общего доступа. Вы посмотрите что эта штука делала по всего лишь шести отслеживающимся точкам https://www.youtube.com/watch?v=kfGcvAyNseo В те времена можно было дома на коленке собрать Motion Capture студию с расходами на это дело примерно в 3к$, что очень недорого (одна камера Vicon стоит дороже без лицензий на софт и прочей переферии). Итак, это было лирическое отступление.

А так согласен в целом с автором, если забыть лучшее решение в инвёрсной кинематике так как оно недоступно, Final IK — топ. Я его использовал для всяких кастомных механик вроде того, что противник прыгает на вас в VR игре и вы с ним боретесь. Чтобы от корректно держался за персонажа пока вы от него отбиваетесь. Выглядело прикольно. Как там с бесплатными решениями я не знаю, так что поверим автору :)

#новости
🔥8
VFX удара молнии
https://youtu.be/XPh0jiqf0iQ

Новый туториал от Gabriel Aguiar с простым VFX удара молнии. Выглядит на мой вкус простовато, но для какого-то базового спэла в рпг — попрёт.

#новости
🔥2❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Паркур в Unity
https://80.lv/articles/fluid-parkour-animations-set-up-in-unity-for-a-game/

Разработчики игры FreeJack Online показали классный сет анимаций паркура интегрированный в Unity проект. Выглядит эффектно и классный VFX :)

#новости
🔥13🥱2