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

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

По вопросам сотрудничества писать: @it_bizdev
Реклама в канале: https://vk.cc/cNhGLE
Download Telegram
Я знаю тех, кто и события не юзает по неизвестной мне причине и делегаты. Код получается лучше, компактнее и логичнее с ними. Зачем это знать? Ну для простой аналогии писать код не зная всех инструментов это тоже самое, что писать книгу имея словарный запас в сто слов. Книга то у вас получится, может даже сюжет, нить повествования там будет. Но читать её будет совершенно невозможно.

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

У меня всегда одна сцена. Я не делаю кучу сцен. Дополнительной может быть лаунчер сцена, чисто чтобы пользоваться механизмами загрузки самой Unity при первом запуске приложения. Чтобы грузить аппу с её онбордингом "моментально".

А так схемы MVC, MVP, MVVM. Данные зависят от масштаба проекта. На небольших синглтоны, на побольше статик контейнеры и т.п. Не использую ток широкие шины событий, как как считаю их совершенно не дебагельными и трудно читаемыми. А так всё стандартно.

Всякими Zenject и т.п. не пользуюсь, так как в своей специфике не вижу смысла. Я люблю писать максимально конкретно и просто. Без сложных абстракций, которые умеют кофе варить.
——————————————————————————————————————————————————————

Вух. Дописал. Задавайте ещё вопросы. С удовольствием отвечу. Ссылка на форму тут.
🥰5
ИРИ и Watt Games

Бродил я как обычно по новостям и наткнулся на такую вот историю. И хочется вставить свои пять копеек :)

Сразу хочется сказать: «ну когда же вы научитесь писать ответы». Вроде бы организация в теории должна заниматься как бы имиджем РФ. Но в ответе нельзя писать так сухо и прямо.

При том что безусловно это правда. Я посмеялся над этим грантом, что он на «постоплате». Аля мне кажется тут немного нарушается суть грантования и поддержки :) Учитывая подход «вы сначала сделайте, а потом если будете успешными, мы вам дадим деньги» — это интересный подход. Я рассматривал подобные гранты и подумав (так как я могу найти финансирование на мои проекты) так и не понял зачем мне в текущем рынке скидка на привлечение траффика :) Игра, чтобы в такое вписываться, должна быть готова. Лишних денег конечно не бывает. Но зачем мне с успешной игрой связываться с гос. деньгами, если это по сути условие выполнения гранта? (можно почитать на сайте ири, что оплата идёт за охваты) Финансирование разработки — понятно. Скидка на закупку траффика? Ну оно просто не нужно и мотивирует траффик накручивать, чем я заниматься не буду :) Оно того не стоит)

Но чем мне не нравится ответ? Можно было сформулировать по доброму, подумать как отработать PR, а не напрямую писать. "Мы даже шли навстречу, но условия гранта давно определены." Да хотя бы без «наезда», а принести извинения и сказать, что таковы условия. И привести доки конкурса. Мне это было бы понятно. На норм креатив я не надеюсь, а придумывать мне его ни к чему сейчас.

И по поводу Watt Games. Не нужно надеятся, что можно с горящими глазами договориться, при взаимодействии с госом особенно. Читать условия действительно нужно внимательно. И заранее всё планировать. Хотя может ребята просто позитивные инди, хз. Я понимаю негодование, но ребята в отличии от ИРИ написали корректно. По сути никого не обвинили, а сказали что не потянут проект. Молодцы в плане формулировок!

Конечно проще было бы написать что ИРИ плохие, а Watt Games жертвы. Watt Games все сказали максимально корректно, просто переоценили свои силы. Можно это было сделать тихо, но в целом ничего криминального. Ответ ИРИ мягко говоря странный, но тоже справедливый и честный. Ну как всегда главное чтобы не началось ничего неадекватного. А сейчас — просто рабочий момент. С предложенными условиями ребята не справились, ИРИ предложить ничего лучше не может. Что условия нереальные для небольших ребят — это скорее дискуссия в общем на тему подобного грантования. Я то инвестиций избегаю и стартапов. Гранты вещь чуть приятнее, но опять таки отвечать перед государством. Особенно если делать честно, без накруток, как я бы и стал что-то делать. Ну это просто слишком высокие риски.

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

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

#новости
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
👍5
Григорий Дядиченко
Video message
Ну и текстом. Если кому-то неудобно слушать.

Не подскажешь куда копать, читать и что смотреть по теме сжатия Unity билдов?

Хорошая идея для статьи. Напишу в след году в начале. Про настройки оптимизации текстур и ассетов в юнити и в общем про техники «как подужаться»

Как используешь namespace? С одной стороны удобно разделять логику, но по итогу лишь задолбался от этого. Да и так мало кто делает, судя по коду в интернете. Может продолжу использовать namespace, но без разделения на всякие ProjectName.UI, ProjectName.Utils и тому подобные. Оставлю лишь название проекта и все.

В соло проектах смысл не так очевиден. А в крупных.

Во-первых, чтобы не попасть в ад длл и конфликт в именах, когда подключаются какие-то плагины.

Во-вторых, я по специфике сам не всегда этим пользуюсь в аутсорсе. А в продуктах идея в том, что если есть namespace Core и UI, то удобно завести контракт что Core никогда не обращается в UI. Это простое правило делает сопровождение логичной архитектуры проще. И косяк сразу видно на ревью по подключенному неймспейсу.
👍7
Скрыть папки в Unity

Иногда многие не знают про какие-то удобные мелочи. Так как они о них не задумываются. У нас сейчас в проекте под айос не собирается Yandex AppMetrica. (Ошибка 'YandexMobileMetrica/YandexMobileMetrica.h' file not found) А тестировать основной функционал всё равно надо. И есть по сути с такими ошибками сборки два пути.

Удалить метрику целиком. Но это странный диф в репозитории или коммит, который потом ревёртить.

Или же скрыть папку на препроцессинге билда (ну либо руками, диф будет просто меньше, и понятнее как вернуть. Просто заменив символ). А в Unity чтобы скрыть папку достаточно прописать ~ в конец её названия. Так например с метрикой папка будет называться AppMetrica~.

Мелкая фича, а бывает довольно удобной :)

#трюки
🤯17👍9🔥3
EscapeUrl и Uri Scheme

В операционных системах есть такая удобная фигня как uri scheme. На ней строится функционал диплинков. И есть много удобных схем типа mailto. Пользуясь такими схемами не стоит забывать, что это обращение по URL. И соответственно правила там точно такие же. И проблемы возникают аналогичные.

У нас недавно была проблема, что mailto работал на андроид, но не работал на айос. И почему? Так как в шаблоне тела письма были "пробелы". Решается это довольно просто (как на скриншоте). Главное помнить, что обращение по uri схеме обладает такими же ограничениями, как обращения по урлу. И не все веб клиенты автоматически эскейпят нужные символы. Думаю кому-то понимание этого вопроса может сэкономить время

#советы
👍7
С Новым Годом!)🍾🎁🎈🎉
🍾2910🎄4🔥2
Игра с помощью Chat GPT в Unity
https://www.youtube.com/watch?v=u4vYtmaOerA

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

Прикольное видео про создание игры с помощью нейросетей. И очень крутой результат. Вообще надо поковырять будет ChatGPT как-нибудь, но думаю недолго осталось до момента, когда кто-то встроит нейросеть в свою IDE.

Вероятно появится обучение по тому "как правильно писать промты". Но программистов конечно же эта штука не заменит. А вот для прототипирования просто гениальная штука. Выглядит круто конечно :)

#новости
👏5👍1
Неиронки и лабы
https://youtu.be/L9oA58siF3k

Год у нас прям начинается с ИИ. Но думаю, какое-то время в этом году это будет довольно активным трендом. Наткнулся на такой видос на ютубе и задумался. Как теперь проверять студентов?

Проблема существует и с ассетами, но с нейросетями люди станут ещё меньше писать код. Для профессионалов это просто полезный инструмент. Но любопытно не приведёт ли это к деградированию среднего специалиста в разработке в целом :)

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

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

#мысли
👍7
Код Хаффмана
https://www.youtube.com/watch?v=B3y0RsVCyrw

Классное виде про код Хаффмана. Очень полезно знать идеи кодирования и декодирования информации. Логики алгоритмов сжатия и т.п. Данные знания позволяют делать очень много прикольных оптимизаций. У меня например как-то стояла задача сжать 3д модели с весьма специфичной структурой вертексов. И это получилось сделать разработав свой простенький формат в который перегонялись вертексы и другие параметры модели, и так же оптимизировав данные по идеям кода Хаффмана.

#теория
👍6🆒1
Работа на дядю

Последние годы я вижу какой-то тренд, что «не модно» работать на дядю :) Тут хочется вставить свои пять копеек со стороны человека не работающего «на дядю» уже 5 лет.

На дворе второе января, а я уже работаю. Над задачами за которые мне никто напрямую не платит. Так сказать административочка. Сверстать бюжет на 2023, посчитать баланс, прикинуть планы как искать клиентов в НГ и т.п. Не работая на дядю иногда завидуешь работающим. Так как сделал задачи и отдыхай спокойно на праздниках или в отпуске.

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

Почему же я ещё нигде не работаю? Бизнес такая штука и предприниматель такой человек, что он просто не может заниматься чем-то другим. Ему скучно, там нет того драйва. Я когда последний раз был в крупной компании уволился до конца испытательного срока, так как мне было тупо скучно.

Спустя 5 лет в бизнесе уже тяжело пойти на работу и не умереть от скуки. А то что это свобода и богатство, я считаю красивой сказкой. Это просто новый вид работы. И вместо одного дяди, ты отвечаешь перед кучей дядь :)

#мысли
👍27👌3
KeenTools AR Geo Tracker
https://80.lv/articles/keentools-geotracker-for-after-effects-officially-released/

Вышла прикольная тулза для афтера, которая позволяет притречиваться к объектам. По рекламному ролику работает прям хорошо :)

#новости
2👍1
Appmetrica и ARCore

Программирование было бы простой работой, если бы всё работало из коробки. Забавное наблюдение. Это конечно не коснётся вас если вы юзаете ARCore XR Plugin 5.0 в Unity (так как это баг аркора до 1.24 версии, которая в 4+ ARCore Unity). Гугл и его депенденси.

Если же вы подключаете что-то, что скажем использует com.android.installreferrer.installreferrer-2.2-runtime.jar то вместе с ARCore у вас вызовет ошибку.

Duplicate class a.a.a found in modules arcore_client-runtime.jar (:arcore_client:) and com.android.installreferrer.installreferrer-2.2-runtime.jar (:com.android.installreferrer.installreferrer-2.2:)

В версиях старше ARCore 1.24 оно пофикшено (ох уж эти одинаковые классы в двух либах от гугла). Но для версии 1.24 (которая ща в Unity основная) — нет. И есть два пути решения проблемы, которые оба очень неочевидные для Unity разработчика.

Первое переезд на ARFoundation 5.0.3. Но чтобы это стало квестом Unity почему-то не дало права выбирать версию в менеджере пакетов. А нужно лезть в манифест и править руками. Инструкция есть тут. И всё соберётся, так как 5.0.3 опирается на ARCore 1.31 и соответственно там уже нет конфликта с installreferrer.

Второе же. Удалить installreferrer. Но не файл, он будет постоянно появляться. А в градле. Для этого вы создаёте кастомный темплейт градла и добавляете в него запись — как на скриншоте. Она исключит эту либу из сборки. Это костыль-костыль. Метрику почему-то он не ломает (мне не совсем ясно почему). Но если вы никак не можете переехать на 5.0.3 — как временное решение может сработать. Мне оно не нравится, но ничего элегантнее я не нашёл.

В общем разработка это просто говорили они. Там всё легко. Поэтому я не люблю делать что-то на сторы XD

#советы
👍6
Наса рассматривает возможность использования AR в костюмах космонавтов
https://80.lv/articles/nasa-is-exploring-the-idea-of-using-ar-in-spacesuits/

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

#новости
🐳2
Баланс в играх
https://habr.com/ru/post/709012/

Прикольная обзорная статейка про баланс в играх. Это конечно задача геймдизайнеров балансом заниматься, но в общих чертах всё равно полезно понимать. А уж в инди там ты и сам себе программист, и сам себе геймдизайнер. Помню когда ещё работал геймдизом читал Fundamentials of Gamedesign. Классная книжка.

#новости
👍3
Appmetrica и IOS

Настоящий кроссплатформенный разработчик — это не тот, кто знает кроссплатформенный фреймворк. А тот кто ещё понимает нюансы самих платформ. Итак, андроид мы победили (обновив ARFoundation до 5.0.3) Теперь поговорим про айос.

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

'YandexMobileMetrica/YandexMobileMetrica.h' file not found

При этом не будет файла xcworkspace, только xcproject. Дело в том, что обычно такие плагины и зависимости подключаются через cocoapods. Чинится это довольно просто. На макбуке.

1. Установить cocoapods
2. Установить гит (если он не стоит для терминала)
3. Сделать cd в папку с собранным xcode проектом
4. Сделать команду pod install в ней
5. Зайти в появишийся xcworkspace файл
6. (Возможно) потребуется ещё а проекте Pods-Unity-Iphone поставить Enable Bitcode в Build Options

И вуаля. Всё соберётся. Под макосью такая проблема тоже может возникнуть, если кокоаподс не стоит или стоит как-то криво. Чисто по той причине, что юнити не вернёт вам ошибку, а просто не соберёт xcworkspace.

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

#советы
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Рисуем график
#задачка

Давайте элегантно нарисуем график функции y = x ^ 2 в UI в Unity. Задачку нужно решить с использованием MaskableGraphic и VertexHelper.

Решение: https://github.com/Nox7atra/Unity-Test-Tasks/blob/master/Assets/Unity-Test-Tasks/Task_2/Scripts/GraphRenderer.cs

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

Плюс добавлю опрос. Интересен ли такой формат задач или слишком сложно?
👍13
Григорий Дядиченко
Рисуем график #задачка Давайте элегантно нарисуем график функции y = x ^ 2 в UI в Unity. Задачку нужно решить с использованием MaskableGraphic и VertexHelper. Решение: https://github.com/Nox7atra/Unity-Test-Tasks/blob/master/Assets/Unity-Test-Tasks/Task…
Комментарий к решению задачке "Рисуем график"

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

В Unity есть замечательная возможность через меш генерацию делать свои кастомные UI элементы. По сути для этого нужно унаследовать класс от MaskableGraphic. Переопределить метод OnPopulateMesh(VertexHelper vh) и сделать свою реализацию этого метода. Но тут есть несколько нюансов, которые стоит знать, чтобы "чудо произошло".

Чтобы график в целом нарисовался, помимо самого скрипта на объекте должен находится CanvasRenderer. Иначе ничего не будет рендерится и не будет вызываться метод OnPopulateMesh

Помимо этого можно затереть базовую реализацию этого метода, так как она делает лишние вещи.

Дальше нужно немного понимать в меш генерацию. И сделать генератор нужного нам меша с VertexHelper.

Дальше нужно разобраться с системой координат. Там много способов сделать самые разные варианты.

Моё решение выше, оно как бы общее. Можно было бы элегантно сгенерить меш под график y = x ^ 2, но по сути данное решение позволяет легко нарисовать любой график.

Важно понимать, что суть задачи не в конкретной реализации (как и всех задач в будущем, так как у всех реализация будет разная). А в сути на что это упражнение и какие нюансы нужно знать, чтобы его в целом сделать. Тут нужно в первую очередь знать про CanvasRenderer и про то, как делаются кастомные UI элементы. Причём проще всего наследоваться от MaskableGraphic, чтобы просто не прокидывать логику реализации масок и т.п.
🔥6👍2