- 59
- 158 839
Руслан Смирнов • Game Development
Ukraine
เข้าร่วมเมื่อ 16 เม.ย. 2023
Senior Game Developer, создавший более 50 игр. Работал в Blackwood Games (ex. Crytek Ukraine), Rage Quit Games, RetroStyle Games и над такими играми как Cat Simulator 2, Last Pirate: Island Survival, Last Fish, Human Fall Flat Mobile (clone), Medieval Rat Simulator Mobile. В сумме игры набрали более 15 млн. скачиваний.
Также публиковал собственные игры с охватом аудитории около 150 тыс. пользователей.
На этом канале я расскажу, как стать продвинутым разработчиком игр, в частности - Unity Developer'ом. Как создаются игры, с чего начать, какие основные подходы - все это ты узнаешь на канале.
Помимо этого, даю советы как построить свою карьеру в IT / GameDev, и что делать если нет опыта работы.
Настраивайся на продуктивное обучение!
Также публиковал собственные игры с охватом аудитории около 150 тыс. пользователей.
На этом канале я расскажу, как стать продвинутым разработчиком игр, в частности - Unity Developer'ом. Как создаются игры, с чего начать, какие основные подходы - все это ты узнаешь на канале.
Помимо этого, даю советы как построить свою карьеру в IT / GameDev, и что делать если нет опыта работы.
Настраивайся на продуктивное обучение!
Делегаты в C# и Gamedev. Понятное объяснение
Что такое делегаты, зачем они нужны, как применяются в C#, Unity, Gamedev - в этом видео. Ты узнаешь как применять принципы ООП, используя делегаты, и придерживаться лучших практик программирования
00:00 - О чем это видео?
00:45 - Зачем нужны делегаты?
06:17 - Как применять делегаты?
08:45 - Еще один способ применения делегатов
11:40 - Встроенные делегаты C#
00:00 - О чем это видео?
00:45 - Зачем нужны делегаты?
06:17 - Как применять делегаты?
08:45 - Еще один способ применения делегатов
11:40 - Встроенные делегаты C#
มุมมอง: 460
วีดีโอ
Как нейросети и ИИ помогают создавать крутые игры?
มุมมอง 1.1K5 หลายเดือนก่อน
Узнай как работают нейросети в играх, и как ИИ создает самый качественный контент. Способно ли машинное обучение заменить настоящего человека? Могут ли NPC быть умными, а боты обыгрывать человека? 00:00 - Главное про нейросети и ИИ 01:34 - Умные NPC и ботов 03:48 - Максимальное качество картинки 06:14 - Может ли ИИ написать историю? 08:07 - Отлов багов от нейросети
Главные ошибки поиска работы в 2024 - советы от опытного сеньора #поискработы #работа_it #gamedev
มุมมอง 7406 หลายเดือนก่อน
Как найти работу в наше трудное время - советы и практика от опытного разработчика. Дам советы по поиску работы в Украине и за рубежом. Что ни в коем случае нельзя делать, а что наоборот - обязательно делать когда ищешь работу в IT и геймдеве. 00:00 - Ты (не) найдешь работу 00:51 - Не подходишь для рынка - до свидания 03:19 - Как всем угодить 04:57 - Точно ты это умеешь? 07:32 - А что если вооб...
MVC в Unity - разбор тестового с рефакторингом и рекоммендациями
มุมมอง 9186 หลายเดือนก่อน
MVC в Unity - разбор тестового с рефакторингом и рекоммендациями
Насколько оптимально использовать MonoBehaviour? Подробности реализации
มุมมอง 9357 หลายเดือนก่อน
Насколько оптимально использовать MonoBehaviour? Подробности реализации
Первая игра на Unity (Survivor.io) / Часть 5 / Эффекты
มุมมอง 58410 หลายเดือนก่อน
Первая игра на Unity (Survivor.io) / Часть 5 / Эффекты
Первая игра на Unity (Survivor.io) / Часть 4 / UI
มุมมอง 50111 หลายเดือนก่อน
Первая игра на Unity (Survivor.io) / Часть 4 / UI
Полный разбор и рефакторинг тестового - рисовалка / Unity C# / Ультимативный рефакторинг
มุมมอง 55211 หลายเดือนก่อน
Полный разбор и рефакторинг тестового - рисовалка / Unity C# / Ультимативный рефакторинг
Универсальное использование корутин / Часть 2 / Циклы и последовательности
มุมมอง 312ปีที่แล้ว
Универсальное использование корутин / Часть 2 / Циклы и последовательности
Универсальное использование корутин / Часть 1 / Отложенный вызов
มุมมอง 614ปีที่แล้ว
Универсальное использование корутин / Часть 1 / Отложенный вызов
Разбор тестового задания Unity / Создание инвентаря / Принципы ООП
มุมมอง 751ปีที่แล้ว
Разбор тестового задания Unity / Создание инвентаря / Принципы ООП
Как учиться эффективно программированию?
มุมมอง 619ปีที่แล้ว
Как учиться эффективно программированию?
Анимация в Unity: Скелетная анимация. Часть 3
มุมมอง 1.2Kปีที่แล้ว
Анимация в Unity: Скелетная анимация. Часть 3
Анимация в Unity: покадровое движение (Часть 2)
มุมมอง 525ปีที่แล้ว
Анимация в Unity: покадровое движение (Часть 2)
Что такое корутины в Unity и как их использовать?
มุมมอง 873ปีที่แล้ว
Что такое корутины в Unity и как их использовать?
Как войти в GameDev? Путь к профессионалу индустрии
มุมมอง 1.1Kปีที่แล้ว
Как войти в GameDev? Путь к профессионалу индустрии
Первая игра на Unity (как Survivor io) / Принципы ООП для модуля апгрейдов / Часть 3
มุมมอง 1.5Kปีที่แล้ว
Первая игра на Unity (как Survivor io) / Принципы ООП для модуля апгрейдов / Часть 3
Создаем первую игру на Unity (как Survivor io). Часть 2
มุมมอง 2Kปีที่แล้ว
Создаем первую игру на Unity (как Survivor io). Часть 2
Разбор кода тестового задания Unity / Принципы SOLID
มุมมอง 2.3Kปีที่แล้ว
Разбор кода тестового задания Unity / Принципы SOLID
MonoBehaviour и ScriptableObject. Для чего нужны и как использовать?
มุมมอง 9Kปีที่แล้ว
MonoBehaviour и ScriptableObject. Для чего нужны и как использовать?
Простой способ создать РПГ в Unity (создание игры на основе ассета)
มุมมอง 1Kปีที่แล้ว
Простой способ создать РПГ в Unity (создание игры на основе ассета)
Ссылочные и значимые типы в C#. Понятное объяснение
มุมมอง 2.9Kปีที่แล้ว
Ссылочные и значимые типы в C#. Понятное объяснение
Критичные ошибки при обучении программиста
มุมมอง 1.3Kปีที่แล้ว
Критичные ошибки при обучении программиста
Как использовать ChatGPT в геймдеве? Анализ кода ИИ в Unity на пригодность
มุมมอง 474ปีที่แล้ว
Как использовать ChatGPT в геймдеве? Анализ кода ИИ в Unity на пригодность
Создаем первую игру на Unity (как Survivor io). Часть 1
มุมมอง 7Kปีที่แล้ว
Создаем первую игру на Unity (как Survivor io). Часть 1
ТОП 5 навыков в Unity для НОВИЧКА разработчика
มุมมอง 2.1Kปีที่แล้ว
ТОП 5 навыков в Unity для НОВИЧКА разработчика
Как правильно составить РЕЗЮМЕ в 2024 году? Чем заменить отсутствие ОПЫТА РАБОТЫ?
มุมมอง 371ปีที่แล้ว
Как правильно составить РЕЗЮМЕ в 2024 году? Чем заменить отсутствие ОПЫТА РАБОТЫ?
Как создать ПОРТФОЛИО программиста в GameDev чтобы НАЙТИ РАБОТУ в 2024
มุมมอง 1.6Kปีที่แล้ว
Как создать ПОРТФОЛИО программиста в GameDev чтобы НАЙТИ РАБОТУ в 2024
Есть ли полное видео по теме?
Да, вот: th-cam.com/video/UBpo2E5V0s4/w-d-xo.html
было полезно спасибо
А почему нельзя с таким же успехом не наследовать класс ни от чего и прокидывать его синглтоном через zenject?
Ее совсем к какой части видео это относится (все уже не помню), но если речь про то, чтобы вместо создания монобехаов создавать обычный классы - да, норм, но полностью избавиться от монобехов не получится. Если нам нужно управлять объектом на сцене, то все равно же нужен скрипт, который бы связывал GameObject с кодом.
Понравилось
У меня вы гостинной такие же обои))) Были
Плохое объяснение, нужно было еще показать ref, out
все в одно видео не впихнешь
А FixedUpdate?
Для физики
Ого, а можно подробнее про это? Не нашёл подобное видео на ютубе, а ведь казалось бы.
да, вот полное видео: th-cam.com/video/t9lkekE4_vk/w-d-xo.html
знатно сокращает работу, спасибо!
Не знал об этом! Спасибо!
Спасибо, всё понятно!
Все супермега понятно, жаль всего два видоса по урокам шарпика :(
Спасибо. Постепенно буду делать еще ;)
Примеры и проблемы, которые были выбраны для решения с помощью делегатов интересные, но есть много непонятных моментов, мало рассказано про проблемы, которые могут возникнуть при использовании делегатов и т.д. А самое печальное это нудное повествование, без четких логических пауз и рассинхрон речи и того, что показано на экране. Из-за чего пример с анимированной кнопкой было сложно сходу понять как, что и в какой последовательности происходит/вызывается. Надеюсь следующие видео будут только лучше
Спасибо за комментарий и фидбек, будем улучшать)
Наконец то хоть кто то обьяснил правильно, а не смешал все в кучу.
Написал так и теперь делю на классы 😂
А зачем "ManualBehaviourRenderUpdate" в примере наследуется от "MonoBehaviour"? Для инспектора?
По большей части для чистоты эксперимента (чтобы показать разницы сугубо в апдейтах) и удобства, но это хорошее замечание - в идеале эти классы могут быть вообще не монобехами.
Интересно, насколько правильно с точки зрения инкапсуляции делать делегат параметром для метода, ведь технически мы можем передать любой метод подходящей сигнатуры, есть ли возможность, скажем разрешить передачу ссылки на метод одного конкретного класса, допустим я создаю публичный метод с делегатом в параметрах, и хочу чтобы конкретный класс вызвал этот метод, но у меня в параметрах делегат, но если кто-то возьмёт этот метод и передаст в параметры делегат подходящий по сигнатуре, мой метод будет работать некорректно, или вызовет ошибку, надеюсь понятно объяснил, если на примере допустим у меня есть метод который делит константу на результат который мне предоставит делегат с возвращаемым типом и я ожидаю что делегат будет давать ссылку на метод который суммирует два числа,которые будут больше 0, но гарантировать я это никак не могу, или всё же есть такая возможность? Спасибо за ответ, и за видео которые выходят, они очень полезные)
хороший вопрос. вообще с точки зрения метода, в который передается делегат - ему зачастую все равно что ему передают, если только это не ломает состояние объекта, которому он принадлежит. И для этого в самом методе можно организовать проверки на валидность, например не является ли делегат null (очень частая ситуация), и бросать исключения если что-то не так. но то, что вернет делегат и как он там внутри вычисляет - уже ответственность клиента (того, кто передает делегат). надеюсь правильно понял вопрос. и рад быть полезным)
@@RuslanSmirnovGameDev Спасибо за ответ, интересно а есть вариант добавить что-то вроде where только для параметра делегата, я создал метод с делегатом для использование его только таймерами, я могу как-то более явно заявить о своих намерениях, я так понимаю в целом очень важно чтобы код был максимально предсказуемым,для этого ведь многие конструкции и придуманы(readonly, const и тд)
я думаю можно попробовать сделать ещё какие-то ограничения на дженериках. придумать какой-то класс-обёртка над данными, и пропускать аргумент-делегат с этим ограничением). Хотя без конкретного кода-примера сложно сказать)
6.50 -"ты мог заметить аналогию с паттерном наблюдатель." Уж поверь,если я заметил аналогию,то мне нафиг не нужно объяснять,что такое делегат и как его использовать. На какой уровень подготовки вообще рассчитаны данные уроки?
Не соглашусь. Если человек пришел например из джавы (мой кейс, хотя конечно сейчас там уже есть аналог делегатов) , и/или прочел книгу по паттернам до того, как ознакомился с некоторыми фичами C#, то он абсолютно может не знать про делегаты, но очень быстро войдет в тему, когда ему предоставят знакомую аналогию. Ну а так, данный ролик конечно больше для новичков рассчитан, но которые уже знают основы C# (делегаты я основой все же не считаю)
@@RuslanSmirnovGameDev делегаты,события,лямбды-это все букварь,пусть и его финальные страницы..Не зная этого вообще нечего лезть в архитектуру(в смысле читать книжки по паттернам). Это мое мнение. Спасибо.
нет проблем) просто ООП штука такая, что можно без знания чего-то одного обойтись другим, и все равно получится неплохая архитектура. Вот как раз ситуация с делегатами - заменяем на интерфейсы (то что и делали в джаве), и получаем почти то же самое с точки зрения функционала.
Спасибо за урок, хотел бы предложить написать урок по поводу патерна состояния, во всех уроках про этот патерн, все убирают монобех и делают переклюячение в стейт машине, а как использовать тогда в игре если допустим в состоянии спокойствия, ты можешь подобрать камень а в других состояниях нет?Тоесть связи с объектами на сцене как пробрасывать?
планирую сделать уроки по паттернам, как появится больше времени. по поводу вопроса - как вариант хранить интерактивные объекты как коллекцию в какой-то сущности, с доступом по ключу (мб строке-имена). И при создании объектов состояния давать им ссылку (если организован DI), либо через синглтон напрямую обращаться.
А можно пожалуйста пару роликов по UI Builder сделать? Нигде качественного контента в ру сегменте не смог найти
да, надо бы сделать, возьму на заметку
Но ты продолжай
Очень интересно, но абсолютно нихрена непонятно
Не как не помогают
как скажешь
Есть какие-то примеры, подтверждающие твои слова, касательно контента и QA, либо это спекуляция?
да, есть полно примеров, которые я в том числе приводил и в видео. вот еще: news.ubisoft.com/en-us/article/61RI3EnTzPx29I0q4NtN5m/how-ubisoft-is-using-ai-to-make-its-games-and-the-real-world-better aibusiness.com/ml/how-ubisoft-is-using-ai-in-game-development news.ubisoft.com/en-gb/article/6Mv4hZqUMJoY1xpf1yiQPi/ubisoft-la-forge-pushing-stateoftheart-ai-in-games-to-create-the-next-generation-of-npcs
Собственно мы почти пришли к тому, чтобы создать симуляцию в нашей симуляции!))
да, и кто знает сколько таких циклов симуляции на самом деле :)
@@RuslanSmirnovGameDev Вот именно, мы создадим симуляцию в которой будет все как в реальности, и чтобы полностью погрузиться, мы будем временно погружать себя в амнезию, чтобы мир симуляции был как реальный. А потом будет сложно как понять где реальность а где...) Симуляция колеса Сансары. )
@user-lc6lf5wn7p звучит стремно)
Спасибо за ролик! С теперешними достижениями в нейросетях действительно может начаться настоящая революция в создании игр!
Привет! Я что-то не понимаю. У меня есть в планах создать на сцене 100 врагов и если он будут брать данные о своем здоровье из скриптбобжекта, то тогда, получается что если я одного врага уничтожу , то и все тоже уничтожатся? Или нужно иметь поле со здоровьем у врага и присваивать ему при создании параметры из скриптбобжекта и тогда получается каждый враг будет не зависим друг от друга, но в итоге ведь получается все равно память кушают? Или нет? Или я что-то не так понял?
давай по порядку: то, что 100 врагов будут брать данные из SO, означает лишь то, что у них будет *ссылка* на сам SO, который будет храниться как ассет в проекте. Если враг уничтожается, это никак не затронет оригинальный ассет, хоть даже все враги уничтожатся. Касательного второго тезиса - да, если явно хранить поля у врагов, и инициализировать (по сути копировать) со скриптабл обжекта, то у каждого врага будут свои копии данных, которые и будут кушать память. Поэтому посыл такой - те данные, которые статические и не меняются по ходу игры (например, максимальное хп, скорость ходьбы, урон и тд) - лучше хранить в SO, и назначать ссылку на него во врагах. В общем точно также как в видео
Просто под мобилку» пытался экспортировать билд с компа на Андройд и на iOs -ничего не получилось Пс ГоДат
Итог: нужно учиться работать руками. Там и зарплаты как у сеньоров, и нужен ты всем и всегда, и не появляется каждый год новых техник которые нужно учить
тоже как вариант) правда думаю все же сложнее продвинуться до такого уровня, чем в It
@@RuslanSmirnovGameDev сложнее? На сварщика уходят после 9 класса и к 19 годам уже заканчивают техникумы, 50-70к уже будут получать. Если также уйти после 9го, то может тоже до таких зарплат дойдёшь к 19. А если через вышку, то начинают обычно подрабатывать по специальности на 3-4 курсе, обычно там 70к и не пахнет, ибо нам нужен специалист с законченными проектами, с опытом от 3х лет, умеющий и в код и в железо, с высшим образованием и всё это за 50к)) И в целом, как ты вы с этим самосовершенствованием в IT всё демпингуете и демпингуете оплату труда. У нас взносы по ипотеке сейчас для провинциального города 100-150к если брать на 30 лет, какие ещё джуновские зарплаты в 50-100к? Не, это было бы нормально, если бы брали вообще без опыта и образования, как курьеров, сами всему научим, но нет, туда ещё нужно пробиться
Руслан, приветствую! Очень хорошие все выпуски, большое спасибо за передачу опыта. Я всего полгода в разработке в Unity. Посоветуйте, пожалуйста, что делать гуманитарию, когда уже готов серьёзный 3d проект в качестве собственного техн. документа, и поняты основные игровые механики (на курсах), но самое главное - кодинг, никак не даётся. Пробовал прибегать к chat gpt, но он только по частям скриптами помогает, и такие объёмы программирования механик реализовать не поможет. А проект пока не разглашаю. Остаётся только создать второй тех. документ без оригиналов основных материалов (спрайтов, текстов, изображений) для стороннего разработчика и договориться о программировании всех механик кого-то ответственного?
Спасибо за отзыв! Не совсем понял правда что имеется ввиду под техническим документом - это про ГДД речь, или про тех задание?) И какая у вас цель - научиться кодить или более общее : создать готовый продукт? Если 2е то в действительности не обязательно даже кодить - проще найти готовые ассеты на ассет сторе, там по и по контента, и по тулзам, в общем можно готовую игру склепать. А если речь про освоение программирования, то тут надо начинать наоборот с малого - нет смысла браться за супер-пупер проект мечты, так только выгорите) Попробуйте разделить ваш проект на отдельные части (например часть квестов, инвентаря, персонажа), и работать над ними как отдельными проектами, не смешивая. А в каждой части выделить ещё под-механики - для персонажа это может быть хождение, стрельба, управление. Для квестов - диалоги, прогресс, награды. И вот когда уже все это реализуете на более приемлемо уровне - тогда имеет смысл пытаться это все объединить в один большой проект
@@RuslanSmirnovGameDev @RuslanSmirnovGameDev Руслан, спасибо за ответ. Технический документ схож с диз. доком, только он не имеет маркетинговой составляющей. Тех. документ я написал очень лаконично в тетради, где по пунктам расписал от жанра и сюжета до всех игровых механик. Так я экономлю время на переработку проекта в самом Unity. Да, я понимаю, что надо разбить свой проект на отдельные части по реализации механик, не спешить всё сразу осуществить. Но в том-то и дело, что я уже использую свои 3d lowpoly объекты и 2d спрайты, большую часть объектов по плану будут мной созданные. Вы мне как блогер очень понравились в плане подачи материала, сейчас сложно найти такие понятные изложения материала. С Вами можно связаться в Telegram или WhatsApp? Я очень хочу набраться опыта, получить несколько советов, и вообще было бы здорово с Вами пообщаться в сфере 3d проектов на Unity.
Это хорошо что вы пытаетесь расписывать и планировать игру, но как бы это странно ни звучало - в каком то плане вредите себе) Штука в том, что у вас в голове идеальная игра, а на практике не получается, и это сильно демотивирует. Сам через такое проходил. Я думаю лучше все же создать другой документ для другой игры, взять ваши объекты и спрайты, но постараться придумать что-то попроще, реалистичнее. Пусть это будет самая простая казуалка. Зато на ней вы сможете отточить все базовые механики. Возможно сниму как-то видео даже на эту тему :) По поводу связи - как раз подумываю создать telegram канал или что-то вроде того, а пока можете писать на почту: rsmirnov.dev@gmail.com
@@RuslanSmirnovGameDev Руслан, спасибо большое! Да, соглашусь, я понимаю, что всё не реализую, буду делать по частям. Главное, что меня это очень увлекает, и есть необычные идеи, но и тем сложнее получается во всём разобраться. Не помогает особо TH-cam и документация Unity, так как там разбираются самые ходовые темы, а у меня же нюанс на нюансе. Зато так намного качественнее обрастаешь опытом, это как с новым городом, когда ты моментально запоминаешь незнакомые улицы, кварталы только если заблудился и спросил дорогу у местных, чем идти по карте в телефоне. Я Вам обязательно напишу, спасибо за контакт! (Яков Р.)
Спасибо за советы, это действительно важно
Как то грустно после этого видео стало.
все будет хорошо, не грусти 😉
@@RuslanSmirnovGameDev th-cam.com/video/wTCSwX5AuwQ/w-d-xo.html
СПАСИБО . ДА СОХРАНИТ ТЕБЯ ГОСПОДЬ. НЕ ДУМАЛ ЧТО ПОМОЩЬ ПРИЙДЁТ В ВИДЕ ТВОЕГО ВИДЕО . Я пытался связать между собой колёса в авто и кузов
рад что был полезен 😉
Спасибо за классный урок! Подскажи пожалуйста, каким уровнем обладать, чтобы написать этот код самомстотельно? Джун, мидл?
думаю стронг джун, т.е. что-то посередине) на мой взгляд, просто джун должен быть способен просто реализовать подобные механики в игре, даже если это будет топорно, ли ж бы работало. А вот мидл должен сделать это более-менее расширяемым, с наследованием, декомпозицией.
А если не использовать встроенные методы даже пустые, в чём недостаток наследования от MonoBehaviour, кроме того что слот под наследование занят?)
В таком случае самый основной - это затраты на создание такого объекта. По схожему образу с вызовами, создание монобеха проходит тучу итерацией, и получаем сильно выше время (хотя и память тоже, но то уже такое) на инстанциирование кучи объектов, и соот-но загрузка сцены с большим кол-вом монобехов будет грузится в разы дольше, чем если б это были обычные классы.
@@RuslanSmirnovGameDev Понял, спасибо)
Это ж UI игра по сути, тут на MVVM написать кайфово было бы
можно было, но я так понял у автора было требование использовать MVC
А это разве не MVP? В MVC обработка ввода в controller должна быть, а у вас на картинке на View
как правило, получение данных ввода пользователя должны быть на вью, причём и в Mvp и в Mvc, а вот их интерпретация (валидации, обработка) - уже ответственность контроллера (ну или презентера). Хотя как я говорил, интерпретация может разниться. Но отличия в Mvc и Mvp больше в зависимостях между компонентами, в частности в более пассивной вью.
@@RuslanSmirnovGameDev MVC классический был создан на основе философии компьютера, где controller это устройство ввода, view это устройство вывода, а model это бизнес модель. Но я согласен, что интерпретируют это все несколько по-разному сейчас.
@@sergeypogorelov7059 Разная интерпритация конректного паттерна от незнания кем и для чего "создавался" данный паттерн. Обычно такие люди не могут отличить MVC, MVP, MVVM, MVA. В особенности MVVM и MVA, так как у них "стрелочки почти одинаковые". Сейчас бы оригинальный MVC назвали сильно связанным, и любой di контаинер типо Zenject при попытке резолва такой зависимости выдал бы ошибку о "говнокоде" ) Да, перейти на события здравая идея (Как на схеме в начале видоса), но это уже и не MVC, тогда уж лучше пользоваться MVVM.
@@PragmaGames это да, в MVC действительно слишком много зависимостей, это очень непрактично, ну и как результат - почти нигде не используется (если говорить сугубо про геймдев).
Спасибо, инфа полезная! Но склеек! это просто *опа.....
Физикс?) или может фиксет
оговорился, да fixed update)
А почему ты используешь Transform для перемещения, а не Rigidbody ? Я слышал что это плохая практика. И почему Update, а не FixedUpdate ?
я выбрал такой способ для простоты, в нем ничего страшного нет, если у тебя нет сложных физических вычислений, либо нагруженного рендера. Но с увеличением числа юнитов стоит перейти на физическое обновление, согласен
Mono и ооп подход где 10000 юнитов - это а еще затея, надеюсь, ecs c устоявшимся api все таки вскоре релизнут
может и релизнут, но думаю разработчики будут переходить на него еще лет 5 )
В каких проектах на твоей практике 50к объектам нужен Update, кроме стратегий? В чём преимущество мануального Update перед ECS, который изначально заточен на производительность с большим кол-вом сущностей?
почти во всех коммерческих, далеко не стратегий; объектам, которым потенциально может понадобиться апдейт, если не проводить никаких оптимизаций. Против ECS ничего не имею против, да, при правильной организации он явно производительнее привычного подхода, но это все таки абсолютно другой подход к архитектуре проекта; ролик больше про сравнение привычных подходов
@@RuslanSmirnovGameDev Если проекты коммерческие, то ты сможешь назвать их, что бы мы посмотрели на них ) я на своей практике даже 5к не встречал... кроме того ты показал время вызова пустых методов, если эти методы заполнить чем-то, будет 10фпс что так, что так )
@@PragmaGames чем-то могу поделиться, чем-то нет, из недавнего play.google.com/store/apps/details?id=com.swiftappskom.catsimulator2 естественно сейчас там много оптимизаций, и не 50к апдейтящихся монобехов, но вполне могло быть если втупую везде создавать монобехи. насчёт пустых методов - в том то и прикол, что затраты на логику далеко не всегда > затрат на оверхед. Можно создать монобех с какой-то минимаььной функциональностью в апдейте, например простым движением юнита - и навесив его на кучу объектов получить фризы из ничего. Как раз чаще всего так и происходит
Спасибо👍
Большое спасибо за видео!
Рандомное направление через скрипт делать?
да, для рандомизации нужно через код делать - очень хороший вариант библиотека DoTween. Ну либо топорная альтернатива - сделать несколько пресетов анимаций, и проигрывать каждый раз рандомную
Лайк, подписка однозначно. Продолжай пилить такую годноту
Руслан, здравствуйте, благодарю за контент. Было бы классно, если бы вы сняли серию видео по разработке мультиплеерной игры
добрый день. возможно в будущем запишу такие ролики)
Запиши сначала на листочек что хочешь сформулировать. Не совет а поток сознания
Ну значит игра простая
хочешь сказать для сложной игры этот принцип не работает?
@@RuslanSmirnovGameDev деление на классы со своей ответственностью этот верный подход, но строить классы внутри класса не запрещенно, в том числе анонимные.
@@Частныйсектор-х4я а чем это поможет в этой ситуации?
@@RuslanSmirnovGameDev разработчику возможно пользуется поиском и ныряет в свой код как ему удобнее по поисковому запросу, а не по классам. Возможно он хотел простой код, а потом стал усложнять. Конечно поддерживать такой код тяжелее, чем зеленный на классы. Но раз код написан, работает, он сделал так к примеру ради отработки анонимных классов.