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

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

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

https://publik.tuwien.ac.at/files/PubDat_220935.pdf
👍2
Lua в модах

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

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

В чём плюсы луа?

— Его быстро учить (я нашёл вообще замечательную ссылку)
— Его часто используют для модов Roblox из последнего. World of Warcraft и многие другие игры брали за основу луа, так как он простой. А значит мододелы и игроки его знают (хотя бы иногда, в отличии от вашего замечательного своего языка). Даже в TableTopSimulator используется Луа https://steamcommunity.com/sharedfiles/filedetails/?id=842872619
— У него есть бесплатные и открытие интерпетаторы типа https://github.com/moonsharp-devs/moonsharp
— Это именно скриптовый язык, который не оброс миллиардом фреймворков и комьюнити программистов

Просто если брать другие интерпретируемые языки. Тот же Python. Да, под него тоже есть забавные тулзы, типа https://ironpython.net/ (пиши на питоне используя .Net фреймворк, даже с юнити можно связать при желании) Или http://pythonnet.github.io/ И как интерпретируемый язык, его можно в целом грузить в рантайме и обрабатывать построчно. Можно в установочнике игры поставить (на ту же винду) Пользователю питон, пип, чёрта в ступе) И научить его ML, вместо написания модов для игры XD

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

Конечно есть ещё Lisp или как его ещё называют язык смайликов или Forth. У которых так же легковесные интерпретаторы) Но они не сравнятся по популярности с Луа, да и по удобству) В общем рекомендую ознакомится с луа на досуге :)
👍5
Игры про хитрости

Есть много прикольных неочевидных вещей в играх, чтобы игра игралась приятнее. Я обожаю ритм геймы, по сути первая игра которую я разработал была ритм геймом. Ну и Beat Saber вообще сейчас заменяет собой зарядку. И в ритм геймах тоже есть прикольные хитрости. Вот казалось бы, как можно сделать ритм игру. Возьмём несколько примеров

1. Geometry Dash — там музыка не подстраивается под игрока, но трасса выверена по ритму. Когда-то давно я такое строил просто на слух. Так как в далёком прошлом у меня за плечами 7 лет музыкалки по классу скрипки, конструктор представлял из себя то, что я просто под музыку нажимал пробел, ставились препятствия, а потом я сохранял результат. Это очень долгий путь. И неточный, так как нельзя нажать пробел моментально) И я думаю разумнее такие ритм-трассы строить попросив саунд дизайнера (либо самостоятельно) выделить биты из трека, сделав визуализатор саунд вейва, который от скорости движения будет менять свою длинну, и расставлять прям по битам в треке. В разы быстрее и удобнее)

2. Beat Saber — тут уже по разрезанию кубов идёт дополнительный бит сочетающийся с треком. И казалось бы, использовать подход выше и всё хорошо. Суть +- та же, под биты расставить кубы, да пусть режут в своё удовольствие, по коллизии воспроизводить звук. Но ритм штука такая, что чуть опоздал и уже не звучит) Поэтому тут делается ещё одна дорожка с битом саунд дизайнером, сочетающимся с треком. И кубы ставятся по нему. А коллизия запускает проигрывание нужной части этого бита, в нужный момент времени в треке. По сути кубы получаются чем-то вроде маски для дополнительного саундтрека. Тогда это действительно будет хорошо звучать

К чему это я? Часто новички в отсутствии опыта стараются делать всё слишком "буквально", забывая что игры или любые другие интерактивные шутки в первую очередь должны быть не "точными", а интересными)
👍5
Простые лицевые анимации в Unity

Найду время напишу полноценную статью и свой инструмент, так как Unity в своём репертуаре. Мне иногда кажется, что ребята просто не любят рассказывать про фичи своего движка или недостаточно говорят, так как удивительно, что я разрабатываю на Unity 6 лет и постоянно нахожу что-то прикольное. Просто Unity разработчик — это не разработчик, а археолог. Вторая беда Unity — это просто патологическая не любовь к стандартным решениям. Почему-то в их пакете всё сделано "по-своему", так что наверное я всё же чуть позже оформлю свой пакет для +- той же задачи. Хотя чего удивляться, я всегда говорю, что: "у Unity свой путь". Так вот. Есть такой прикольный пакет. Он позволяет достаточно дёшево записывать простые лицевые анимации с помощью айфона. Я в целом люблю такие инструменты для инди и небольших студий, которые не могут себе позволить камеры по 10к$ и другой очень дорогой софт для "взрослого трекинга". А упрощать процесс создания контента надо всем. Цены бы Unity не было делай они часть своих пакетов на отъе... Ну да не суть)

Этот пакет, пусть и довольно странный с точки зрения рига, позволяет записать анимацию в Unity анимации (меканимовские) и использовать в своём проекте. Поэтому рекомендую поковырять на досуге, мало ли вдруг пригодится. Ниже скину видео, как работает. В целом меня всегда радует демократизация технологий, хотя я и не прощу эплу покупку IKinema Orion, так как благодаря ему раньше можно было собрать сетап за 3к$ и делать такой фуллбади мокап, что для игр и небольших проектов — кайф . Может показаться, что 3к$ — это много, пока ты не знаешь, что настоящая фулбади мокап студия стоит по 5-10к$ за камеру, а их нужно саааамый минимум 3. А со всей переферией там выходит 50-60к$, что уже может быть ощутимой частью бюджета проекта. Если конечно ещё xsense и подобные, стоящие по 4к$ за костюм (что не дешевле). Но у них ещё и свои нюансы. В общем раньше покупаешь Vive, комп, несколько Vive tracker и лицензию на Ikinema orion за 500 фунтов. И с этим уже можно работать)

Если кому-то интересно, то я могу побольше рассказывать про трекинг, про дешёвые инструменты трекинга, компьютерное зрение (в контексте применения к проектам на Unity), да и в целом технологии, которые стали сильно дешевле за последние 10 лет. Так как всё-таки с этим я был в основном связан последние 6 лет. Систем много, технологий много, и некоторые из них по карману даже небольшим студиям и командам. Та же лицевая запись с айфона, отличный пример. Да, качество не Faceware безусловно, но работать в целом можно :) И если нужно несколько блендшейпов для диалогов, или набор анимаций для простенького синематика по-быстрому сделать, то это вполне неплохой путь)
👍9
Разработчики спорят о том, какой движок лучше) Отличный сериал кстати

https://www.youtube.com/watch?v=-axORNoikkI
Инверсная кинематика

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

В Unity есть встроенная инвёрсная кинематика и для 2д и для 3д. Правда инвёрсную кинематику встроенную в Unity удобно использовать только для персонажки, для 3д она вообще работает только для гуманоидов. Хотя скажем делать ловушки с "агрессивными растениями" и щупальцами с помощью ИК очень удобно, и выглядят они интереснее, так как могут реагировать на произвольную позицию пользователя (просто при входе в триггер выставляется таргет на кость персонажа, чтобы его "схватить") Скажем если растение не убивает пользователя сразу, а хватает его за ногу, бьёт несколько раз и отпускает. Например подобным образом :)

Алгоритмы и реализации ИК бывают разные, одну из самых крутых, как я вчера говорил, купил Apple. Поэтому она больше недоступна для покупки. Пожалуй для 2д, я бы использовал кинематику в пакете Unity, а для 3д сейчас оставшийся Final IK. С помощью ИК как можно делать анимации (хотя зачем это делать в Unity, если для этого есть специализированный софт, но ничто не мешает), но основное — это реакция на препятствия и объекты)

Ну и конечно же нельзя не вспомнить главное применение ИК — это VR. Чаще всего пользователь в VR представлен несколькими точками. Голова и два контроллера. А при этом аватар очень сильно помогает погружению и восприятию себя в VR. Инвёрсная кинематика позволяет сделать по трём точкам движение целого скелета (правда в паре с технологией Locomotion, которая так же теперь есть в виде Unity пакета) Я когда-то делал механику перемещения в невесомости цепляясь за трубы. И там как раз виртуальная рука хваталась за трубу, когда реальная проходила за неё или сквозь неё. Но так как любое "рука вошла в стену", отталкивало пользователя в невесомости, воспринималось в VR это очень прикольно)

И ещё для фильтрации шумных данных, от того же arkit в XR, так как шаг кинематики позволяет получить данные в разы аккуратнее, чем то что возвращают технологии компьютерного зрения. В том же трекинге рук достаточно 5 точек пальцев и центр кисти, а остальное уже можно построить по кинематике, её проще сгладить и отфильтровать не создавая лишних артефактов)
👍8
Вот этот :)
🔥7👍2
Unity собирается закрыть Unity Answers

Как сделать скандал на ровном месте? Убрать инструмент у которого есть комьюнити и которым пользуются все. Unity недавно объявило, что они собираются закрыть Unity Answers, так как он не пользуется особой популярностью. Хотя многие им пользуются думаю каждый день. В итоге вроде они дали заднюю, и решили повременить с этим великолепным решением

Изучив всё по теме, чем обосновано решение. Так как моя первая мысль была "Маленькой инди-компании жалко баксов на хранение ДБ и доступа к ней?". Ладно режим ридонли с альтернативами лучше ещё можно понять. Но просто положить всю базу знаний собираемую комьюнити годами. Это уровень. Даже для Unity. Причины, что эта штука базируется на легаси платформе, которую сложно поддерживать, и что мало кто сейчас отвечает на вопросы на сервисе. Но из-за этого класть огромную базу знаний — это уровень

Вроде как получив кучу хейта ребята дали заднюю и пока думают дальше. Так как если они его всё-таки просто положат и вопросы перестанут индексироваться — ну это прям "со дна постучали". Больше всего мне понравилась в ветке шутка про "Unity убивает Unity Answers", "Unity открывает платное вики с доступом по подписке")
👍5
Я пока в запаре, так что не успеваю что-то новое писать сюда) Ноооо скоро я разгребусь и вернусь. Честно-честно. Просто запуск нескольких проектов, миллиард дел, а ещё книгу нужно таки дописать, а то с меня её скоро спросят XD

А пока могу посоветовать почитать блог моего бывшего комрада по вектору 2 и в целом крутого левел дизайнера https://news.1rj.ru/str/vskobelev Если интересуетесь левелдизайном, то думаю он вам будет полезен, как минимум со статьями на хабре я бы рекомендовал ознакомиться точно. Да и если просто интересуетесь играми, то вам думаю тоже будет интересно :)

А я скоро вернусь и если соберусь с силами, то первую статью из цикла уже завтра выложу :)
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Каустика

Довольно забавный эффект про которые написано куча статей, одна из моих любимых по простейшей реализации https://www.alanzucconi.com/2019/09/13/believable-caustics-reflections/

Для разминки написал подобную версию, которая чуть-чуть более логична, так как использует не uv, а мировые координаты и ложится на поверхность как бы сверху + на URP и шейдер графе. Мало ли кому-то пригодится)
👍15🔥3
Сходил на эпиккон, прикольный конвент, косплеи классные, было интересно, хотя как разработчику стендов не хватает дигитала) Ну и конечно же «За Альянс!» :)

Надо на следующей неделе таки добраться до моей статьи по ИИ :)
Шейдертой

Один из неплохих способов разобраться в шейдерах, ковырять чужие шейдеры. И для этого есть неплохой ресурс — https://www.shadertoy.com

Он не единственный, но и там огромная коллекция интересных шейдеров. Написаны они правда на glsl, а шейдерлаб Unity используют hlsl. И часто написаны не очень хорошо, но эффекты там всё равно красивые и можно вдохновится интересными эффектами и посмотреть разные подходы)

Кроме того есть классный проект переводящий шейдертой шейдера в шейдеры для Unity https://github.com/smkplus/ShaderMan Он позволяет на основе шейдера из шейдертоя сгенерить шейдер для Unity, что бывает полезно. В общем советую попробовать поделать на основе шейдеров с шейдертоя поделать свои эффекты, пооптимизировать описанные там. Да и в целом иметь на вооружении при работе всю библиотеку шейдертоя бывает очень полезно :)
👍13🔥1