“Hey you… You’re finally awake.”
Привет, меня зовут Миша. За 7 лет работы с Unity я делал кучу крутых проектов. Шутеры, пошаговые тактики, платформеры, сити билдеры, три-в-ряд, казуалки, гиперказуалки и так далее. Дал жизнь тонне проектов на фрилансе, в том числе и VR, AR проекты.
Работал и в крупных студиях, и в мелких, и в инди-командах, и в качестве фрилансера.
Активно занимаюсь менторством и помогаю начинающим или состоявшимся специалистам на их карьерном пути. Найти меня как ментора можно здесь.
В жизни каждого разработчика наступает момент, когда его голова начинает заполняться (большей частью бесполезными) знаниями. И чтобы не растерять эту свою “экспертизу”, я решил поделиться ей с тобой!
Переходи на мой Youtube за еще большим количеством контента! И подписывайся на Boosty чтобы увидеть его раньше остальных
Получай удовольствие и не стесняйся все комментировать, ведь это поможет мне сделать канал лучше!
Привет, меня зовут Миша. За 7 лет работы с Unity я делал кучу крутых проектов. Шутеры, пошаговые тактики, платформеры, сити билдеры, три-в-ряд, казуалки, гиперказуалки и так далее. Дал жизнь тонне проектов на фрилансе, в том числе и VR, AR проекты.
Работал и в крупных студиях, и в мелких, и в инди-командах, и в качестве фрилансера.
Активно занимаюсь менторством и помогаю начинающим или состоявшимся специалистам на их карьерном пути. Найти меня как ментора можно здесь.
В жизни каждого разработчика наступает момент, когда его голова начинает заполняться (большей частью бесполезными) знаниями. И чтобы не растерять эту свою “экспертизу”, я решил поделиться ей с тобой!
Переходи на мой Youtube за еще большим количеством контента! И подписывайся на Boosty чтобы увидеть его раньше остальных
Получай удовольствие и не стесняйся все комментировать, ведь это поможет мне сделать канал лучше!
🔥5❤4
Unity + FFmpeg
Сшивать видео в игровом движке, кому такое вообще может прийти в голову?! Но и не такое может случиться, когда сталкиваются заказчики с одного из центральных телеканалов и чувак, который в основном разбирается только в Unity…
Забавно, что FFmpeg поставляется не библиотекой, которую можно нативно вызвать из своего кода, а exe-шником. Поэтому ничего не остается кроме как общаться с ним через System.Diagnostics.Process.
Вообще удивительно что за столько лет всех этих проектов ни разу не было необходимости в таком функционале. Поэтому добавлю этого Франкенштейна в своюпомойку коллекцию полезнейших репозиториев, а после обязательно поделюсь им здесь.
Сшивать видео в игровом движке, кому такое вообще может прийти в голову?! Но и не такое может случиться, когда сталкиваются заказчики с одного из центральных телеканалов и чувак, который в основном разбирается только в Unity…
Забавно, что FFmpeg поставляется не библиотекой, которую можно нативно вызвать из своего кода, а exe-шником. Поэтому ничего не остается кроме как общаться с ним через System.Diagnostics.Process.
Вообще удивительно что за столько лет всех этих проектов ни разу не было необходимости в таком функционале. Поэтому добавлю этого Франкенштейна в свою
❤🔥2🔥2❤1😁1
Какое-то время назад на ютубе появились такие ребята и взорвали мой мир “туториалов на ютубе”, полный довольно второсортного контента. Что не удивительно, когда те самые туториалы начинают пилить архитектор, тимлид и техдиректор знаменитого Raid: Shadow of Legends (ловлю флешбеки от их бесконечной рекламы даже когда читаю название). Там было про адресаблы, юнит тесты, CI и так далее.
Одной из их фичей на курсах была стейт машина, которая целиком контролирует приложение. Загрузка - стейт, главное меню - стейт, уровень - стейт. Я все это время не понимал такого подхода так как:
- Глобальных стейтов у игр не то чтобы много - загрузка, меню, кор игра, а остальное уже внутрянка самих стейтов.
- Запрашивать стейт нам как правило не нужно. Так как сложно представить одинаковые модули, которые бы создавались на многих стейтах, но вели бы себя по разному в зависимости от них.
Короче выглядело, как явное нарушение KISS во имя сомнительного выигрыша по… стабильности? консистентности? простоты?
Удивительнее всего что в конечном итоге такой подход мне пригодился не на огромном проекте, в котором можно “Collect over 700 Champions and take down your opponents!” (простите), а на обычном фрилансе.
Выпал проект который как раз можно разбить на много глобальных стейтов (скрин в комментариях), но при этом последовательность некоторых из них была критична. Изначально я делал на собственномкостыле фреймворке для управления интерфейсом, но благодаря паре менти вспомнил об этом подходе и вуаля!
- Смена экранов привязалась к смене стейта вместо их ручного переключения
- Пропали все перекрестные ссылки между модулями, интерфейс и сервисы для звука и обработки видео стали работать тоже от своих стейтов
- Все модули проекта переехали с pull-модели на push-модель взаимодействия, из-за этого исчез этот вечно раздутый бутстрап, в который приходилось залезать для каждой правки
Вывод: чаще смотри ютуб и лучше слушай тех, кому помогаешь!
P.S. Поддержите огоньками для более подробной статьи на хабре
Одной из их фичей на курсах была стейт машина, которая целиком контролирует приложение. Загрузка - стейт, главное меню - стейт, уровень - стейт. Я все это время не понимал такого подхода так как:
- Глобальных стейтов у игр не то чтобы много - загрузка, меню, кор игра, а остальное уже внутрянка самих стейтов.
- Запрашивать стейт нам как правило не нужно. Так как сложно представить одинаковые модули, которые бы создавались на многих стейтах, но вели бы себя по разному в зависимости от них.
Короче выглядело, как явное нарушение KISS во имя сомнительного выигрыша по… стабильности? консистентности? простоты?
Удивительнее всего что в конечном итоге такой подход мне пригодился не на огромном проекте, в котором можно “Collect over 700 Champions and take down your opponents!” (простите), а на обычном фрилансе.
Выпал проект который как раз можно разбить на много глобальных стейтов (скрин в комментариях), но при этом последовательность некоторых из них была критична. Изначально я делал на собственном
- Смена экранов привязалась к смене стейта вместо их ручного переключения
- Пропали все перекрестные ссылки между модулями, интерфейс и сервисы для звука и обработки видео стали работать тоже от своих стейтов
- Все модули проекта переехали с pull-модели на push-модель взаимодействия, из-за этого исчез этот вечно раздутый бутстрап, в который приходилось залезать для каждой правки
Вывод: чаще смотри ютуб и лучше слушай тех, кому помогаешь!
P.S. Поддержите огоньками для более подробной статьи на хабре
🔥5❤2❤🔥2
Сейчас учусь на последнем семестре прикладной информатики в экономике. И эта война с их фронтедерами принимала самые разные обороты:
- Сначала на их тестах нельзя было просто копировать, поэтому мы драг-н-дропали вопрос в гугл
- Потом они в какой-то семестр что-то поломали и все правильные ответы были первыми, поэтому в этот семестр я был круглым отличником)
- А сейчас новый виток эволюции - уже и текст нельзя выделить.
Буду считать это за мета-экзамен - зачем бы еще они меня поверхностно учили веб разработке, если не ради выдергивания вопросов из верстки.
Жаль, что не успею застать как они начнут отрисовывать всю страницу на канвасе, чтобы еще и это победить...
Бонусом в комментариях сможете посмотреть какими невиданными знаниями надо обладать чтобы учиться в Синергии😂
- Сначала на их тестах нельзя было просто копировать, поэтому мы драг-н-дропали вопрос в гугл
- Потом они в какой-то семестр что-то поломали и все правильные ответы были первыми, поэтому в этот семестр я был круглым отличником)
- А сейчас новый виток эволюции - уже и текст нельзя выделить.
Буду считать это за мета-экзамен - зачем бы еще они меня поверхностно учили веб разработке, если не ради выдергивания вопросов из верстки.
Жаль, что не успею застать как они начнут отрисовывать всю страницу на канвасе, чтобы еще и это победить...
Бонусом в комментариях сможете посмотреть какими невиданными знаниями надо обладать чтобы учиться в Синергии😂
😁3
Tips and tricks для адептов консольного гита
Иногда меня тянет наизвращения поработать с консольным гитом. Но каждый подход к нему начинается с боли - перейти в папку с проектом через проводник и оттуда через контекстное меню открывать гит.
Однако после какого-то принятия в свою жизнь Syster.Diagnostics.Process, стало возможно оптимизировать этот процесс и открывать гит прямо из проекта.
А теперь сможете и вы! GitHub Gist
Если у вас git-bash лежит в другой директории, то придется подменить его ручками в коде… или наставить мне огонечков под постом, чтобы я оформил это в полноценный пакет, в котором не будет такой необходимости
Но вообще обычно я пользуюсь Fork - это единственный клиент, горячие клавиши которого не сломают тебе пальцы через пару дней) Пишите в комментарии какими оболочками пользуетесь вы
Иногда меня тянет на
Однако после какого-то принятия в свою жизнь Syster.Diagnostics.Process, стало возможно оптимизировать этот процесс и открывать гит прямо из проекта.
А теперь сможете и вы! GitHub Gist
Если у вас git-bash лежит в другой директории, то придется подменить его ручками в коде… или наставить мне огонечков под постом, чтобы я оформил это в полноценный пакет, в котором не будет такой необходимости
Но вообще обычно я пользуюсь Fork - это единственный клиент, горячие клавиши которого не сломают тебе пальцы через пару дней) Пишите в комментарии какими оболочками пользуетесь вы
🔥3
Коротко про Unity keynote
Начали с извинений за Runtime Fee в виде пацанских цитат, про то что “Доверие не то что мы говорим это то что мы делаем” - ауф
Еще раз порекламили DOTS и SRP, показывая как они поднимают фпс с 10 до 30 (видимо остальные кадры решили придержать до следующего keynote, иначе без работы останутся)
Дальше пиарят свой мультиплеер (который как говорят и правда неплохой), но при этом почему-то лаги в их демке было видно даже на презентации…
Представили еле рабочую интеграцию с нейронками, которая выглядит как чей-то пет проект после скилбокса: "ой мы теперь умеем генерировать картинку и класть ее в папку проекта"
С ним же проанонсировали средства борьбы с юными любовниками чужих матерей - сервисы для цензуры и определения токсичных игроков
В конце был Unity cloud, про который вдруг вспомнили но забыли докинуть хоть каких-то фичей и сказали про поддержку новых VR-шлемов от бесконечности и яблока
Как итог в очередной раз: “это я не плачу, это демка пятого unreal в глаза попала”
Начали с извинений за Runtime Fee в виде пацанских цитат, про то что “Доверие не то что мы говорим это то что мы делаем” - ауф
Еще раз порекламили DOTS и SRP, показывая как они поднимают фпс с 10 до 30 (видимо остальные кадры решили придержать до следующего keynote, иначе без работы останутся)
Дальше пиарят свой мультиплеер (который как говорят и правда неплохой), но при этом почему-то лаги в их демке было видно даже на презентации…
Представили еле рабочую интеграцию с нейронками, которая выглядит как чей-то пет проект после скилбокса: "ой мы теперь умеем генерировать картинку и класть ее в папку проекта"
С ним же проанонсировали средства борьбы с юными любовниками чужих матерей - сервисы для цензуры и определения токсичных игроков
В конце был Unity cloud, про который вдруг вспомнили но забыли докинуть хоть каких-то фичей и сказали про поддержку новых VR-шлемов от бесконечности и яблока
Как итог в очередной раз: “это я не плачу, это демка пятого unreal в глаза попала”
😁5😢2
Свет управляется звуком (NAudio)
За такую фразу можно было легко получить двойку за уроке физики. Но спустя столько лет это оказалось вполне возможно, когда работаешь со проф световым оборудованием. Сигналы для него кладутся в звуковую дорожку, которая звучит как старый модем.
Проблема в том, что отправлять на свет эту звуковую дорожку нужно через определенный порт на компе, и ,само собой, не включать это пользователю. Чтобы он не сбежал от этого поросячьего визга к твоим конкурентам. А проблема юнити в том, что она не умеет включать звук в определенный звуковой порт. Что же делать?
Тут на помощь пришла NAudio - по сути обертка на другие библиотеки для работы со звуком. С помощью нее можно работать со звуками практически в любом формате. Можно их проигрывать, записывать, конвертировать, сшивать, микшировать и тд. В том числе можно указать на какое именно устройство отдавать выбранную звуковую дорожку.
Из минусов - за такими звуками и их проигрышами нужно следить вручную. То есть, держать на все ссылки и по необходимости все выключать и диспоузить. Иначе можно словить ситуацию в которой поросячий визг будет играть даже при выключенном приложении и ровно до тех пор пока не выключишь ПК.
Надеюсь, что следующим проектом надо будет сделать диджейский пульт на юнити, чтобы еще разок поработать с этой библиотекой)
За такую фразу можно было легко получить двойку за уроке физики. Но спустя столько лет это оказалось вполне возможно, когда работаешь со проф световым оборудованием. Сигналы для него кладутся в звуковую дорожку, которая звучит как старый модем.
Проблема в том, что отправлять на свет эту звуковую дорожку нужно через определенный порт на компе, и ,само собой, не включать это пользователю. Чтобы он не сбежал от этого поросячьего визга к твоим конкурентам. А проблема юнити в том, что она не умеет включать звук в определенный звуковой порт. Что же делать?
Тут на помощь пришла NAudio - по сути обертка на другие библиотеки для работы со звуком. С помощью нее можно работать со звуками практически в любом формате. Можно их проигрывать, записывать, конвертировать, сшивать, микшировать и тд. В том числе можно указать на какое именно устройство отдавать выбранную звуковую дорожку.
Из минусов - за такими звуками и их проигрышами нужно следить вручную. То есть, держать на все ссылки и по необходимости все выключать и диспоузить. Иначе можно словить ситуацию в которой поросячий визг будет играть даже при выключенном приложении и ровно до тех пор пока не выключишь ПК.
Надеюсь, что следующим проектом надо будет сделать диджейский пульт на юнити, чтобы еще разок поработать с этой библиотекой)
👍3