Продолжительность 55:06
16+
Воспроизвести
Видео

ECS в разработке игр — хорошая архитектура приложений для всех

Кирилл Надеждин
Ведущий программист в Kumo Kairo
  • Видео
  • Тезисы
  • Видео
DevGAMM Minsk 2017
16 ноября 2017, Минск, Беларусь
DevGAMM Minsk 2017
Запросить Q&A
Видеозапись
ECS в разработке игр — хорошая архитектура приложений для всех
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
В избранное
8,82 K
Мне понравилось 0
Мне не понравилось 0
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
  • Описание
  • Расшифровка
  • Обсуждение

О спикере

Кирилл Надеждин
Ведущий программист в Kumo Kairo

В компании Sand Sphere Games Кирилл занимался общим и графическим программированием (Ancient Rivals), был ведущим программистом в CarX Technologies (CarX Highway Racing), Kumo Kairo (Road Trip Overdrive).

Перейти в профиль

О докладе

Убираем ООП и заменяем его ECS (Компонентной системой сущностей). Кирилл расскажет вам об отличной архитектуре приложений для всех.ф

Поделиться

во-первых У меня вопрос кто что-то вообще хотя бы исчез отлично А кто уже пробовал делать что-то с исчез Так а кто активно уже работает с исчез А чем собственный отлично Я очень надеюсь на клиника мир за вопрос Это в конце Отлично Вы мне очень нравитесь Ну в таком случае я думаю мы начинаем если от сложности иерархии ваших классов у вас уже болит голова а добавление нового функционала скорее похоже на нежели на рабочий процесс вы пришли по адресу сегодняшнем докладе я вам обещаю научить вас делать идеально архитектура

ваших игр которые позволят вам наконец-то начать радоваться жизни и рабочему процессу но во-первых о том Кто я вообще такое Чего сюда пришёл на слайде показаны примеры проектов в которых принимал участие либо делал сам и всё из них выключен А кроме Аватар пешки в правом нижнем углу последние 2,5 года до Иры 2017 я работал компания карекс Technologies мы делали игру carx Highway Racing который сейчас доступна в Play Маркете и последние полгода работы Я занимал должность ведущего программиста и с июля мы с товарищами спайсом работаем собрались и подумали почему бы вам не сделать свою

собственную игру и чтобы не ходить вокруг да рассмотрим примеры исчез именно на примере нашей игры наш игра называется Road Trip Over Drive это такое сайд скроллеры Runner про машинку которая достаточно быстро по различному хамам прыгает и во время прыжков мы можем выполнять различные количества трюков трюки свою очередь складывается в Квеста то есть трюки это такая Такой хлеб игры и нужно очень много и часто возвращаться к началу продумывать Какие трюки нам нужно сделать с какие-то трюки нас перестают устраивать

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

прописан вообще весь функционал на полторы тысячи строк Я смотрел пример подобной игры и у них трюки были сделаны Именно таким образом и вообще говоря это поскольку вы чувствуете свой собственный контроль над тем как у вас работает игра это дает начальной ощущение контроля Но всем знакома ситуация когда Какая 1.000 которой мы сами придумываем или который нам приносят HTC Desire она просто физически не умещается в текущую архитектуру которую мы так долго придумывали то есть наше чистый код который мы в поте лица долго думали и

считали что он будет расширяем до самого конца он просто перестает работать это продолжается добавление нового функционала и наращивание костылей вокруг от архитектуры продолжается до тех пор пока не возникают ситуации когда все кто то или кто-то один разработчики решают что нужно переписать архитектура Мне кажется достаточно такая общая ситуация среди разработчиков может быть у кого-то была такая ситуация когда хотелось переписка Ну я думаю если Посмотрите на руки то видно что это вообще проблема то есть я когда Начинал

работать программистом Я читал что я буду писать Идеальный кот который не надо будет перепиши и что те кто переписывает они просто ну не умеет программировать а в итоге из этого никуда не деться поскольку процесс похож на порочный Круг То есть мы архитектура она перестает работать Мы все переписываем если нам дают время если не дают но мы просто живем и мечтаем спим мечтаем как мы все перепишем Неужели нет способа написать нашу игру и витчи таким образом чтобы не приходилось каждые полгода садится и переписывать

проект под новые требования которые в любом случае тканей в конечном итоге и ем предлагают сейчас попробую сделать как раз на примере трюков то есть предложенном геймдизайнер принёс документ в котором он говорит что нам на третью Backflip биг-эйр высокий полет и это время полета над треком и мы вместо того чтобы делать какой-то менеджер трюк в котором мы эти трюки описан в отдельных классах по пять строчек поскольку сами трюки Как вы можете представить они по функционалу достаточно тривиальны

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

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

парадигмы в сущностях и компонента компонент это атомарный единица данных без логики данном случае очень важно отметить факт что Никакой логики не должно быть Например если компонент трюка которые мы как раз в систему которая только что посмотрела есть одно единственное Павлик Воля Stand Type is Sunday может быть любым и нам или любым ключом который уникально идентифицирует этот трюк сущность это соответственно Просто набор компонентов это какие сущности находятся

в данный момент на компоненте идентифицирует её как сущность того или иного типа есть Более сложный пример с машиной Когда у нас на сущности висят различные компоненты главным из которых в данном случае является Random Card Data это как раз те данные которые на ваш геймдизайнер если мы будем и всего нашего и все наши куча сущности и пытаться найти машину мы будем скорее всего искать её Именно по этому компоненту также мы можем добавить компоненты которые могут содержать либо текущее степень нажатия педали либо текущий пройденное расстояние

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

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

системы смотрит интересует ли эти данные или нет И случай если интересует эти данные она может поменять их удалить или добавить новое после чего другие системы смотрят появился информация которая интересует их и таким образом происходит постоянно работы приложения поскольку система общаются в кавычках между собой только через общие данные Они полностью независимы друг от друга Это позволяет нам просто взять и вырубить какой-то участок функционала либо целую кучу на мы для процесса отладки можно вырубить систему которая сжигает топлива у нас в

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

реализовать функционал сохранение или загрузок совершён тривиально то есть вопросы вырубаем системы меняем данные на те которые нас будут сохранены и включаем систему обратно системы видит что у нас появились новые данные их совершенно не напрягает я не просто работаю с ними так как будто эти данные были имя сами таким образом можно сказать что состояние становится вообще всем имеющий нравится цитаты Максима ЗАГСа это один из разработчиков библиотеки МСС это состояние события события это состояние сервисы Независимости это тоже состояние

то есть чем у нас ещё раз становится состоянии Ну и простых примеров потому что именно в примерах чаще возникает вопрос о том что вроде как Но всё равно вроде прикольно вроде Понятно Как это работает на самом деле там очень простой план вот наша компонент трюк который мы уже видели у неё есть поле тип трюка есть система которая в данном случае вот мы более подробно остановимся можно сказать что интересует по крайней мере 4 разных компоненты это высота трека высота

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

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

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

факт нажатия педали в машинке То есть просто если на машинке висит компонент острота значит машинка не тормозит а газует едь вперед также у нас есть компонент с бустером у которого содержится обычно значение оставшегося объём бак своеобразный типа топлива Но для большего ускорения и есть система которая как раз определяет У нас у машины педаль газа или нет И как видно Эта система интересуется если на машинке Boost и если у машинки и топливо больше нуля то мы считаем что машинка газует они тормозит и опять же добавляем Всем

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

события которые пришли от интерфейса и опять же чтобы всё тело работало нам нужно систем куда добавить записано pipeline для добавления любовичи и любого функционала 99 процентах случаев сводится к какому алгоритму то есть Сначала мы думаем Какие данные нам нужны для этого функционала затем мы думаем Какие системы нам нужны для того чтобы это всё работало потом мы добавляемся вообще список и проверяем что Всё работает Где этот твой план покрывает Ну практически все

генпланист люди которым вам придется писать одним огромным преимуществом подобного подхода является факт что написание тестов для игр становится совершенно тривиальной задачей кто пишет тест для игр А кто хотел бы писать тесты для игр отлично в общем если вам когда-нибудь в руки попадётся книжка по test-driven development или вообще написание тестов для игр в контексте исчез там скорее всего будет всё Три строчки поскольку логика у нас и так уже настолько модульное что убирать зависимости

просто уже больше никуда алгоритмом написание тестов будет являться вот такой небольшой списочек в первую очередь мы готовим состояние то есть наш почтовый ящик наполняем всеми данными с которыми будет работа наша система потом мы прогоняем система сверяем результат Таким образом мы можем проверить и отдельные системы что они сами по себе работает правильно то есть написание Unit тестов и написать важнейшие интеграционные тесты вплоть до того что мы можем сделать так чтобы у нас и тест вообще проходил игру от начала до конца и говорила Можно ли пройти игру или нет В случае

если мы допустим поменяли баланс это очень удобно Ну вроде Так выглядит и может быть Посмотри на пару проектов или по крайней мере на жанра которые лучше всего использовать исчез во-первых это Mach3 это вообще прям Если вы работаете смотрится но Берите не пожалеете поскольку Mach3 достаточно богаты на разном план уникальной функции особенно когда от игры к игре меняются правила и прочие вещи поскольку нас данные о нашем поле всегда перед глазами мы можем просто взять одну один набор систем который отвечает за один функционал и прямо в рантайме поменять на другой функционал при

этом всё продолжает работать совершенно идеально также если кстати говоря вас детерминированный то я везла пример игры Mach3 которые поскольку Игорь Безбокова включаться не пишет никто а не просто запоминали каждую сессию фрукт Apple запоминались ID текущего поля и случай если происходил какой-то баг они отправляли себе на сервер записана вот эти даче и разработчик мог взять себе локально скачать Запусти посмотреть какой момент что перестал работать также Это очень полезно для проверки направлен настройки уровень То

есть если вы не слишком легко пройти то скорее всего есть какой-то пацан него то есть Ну достаточно такая крутая вещь причем делать очень-очень Просто второй пример это real-time стратегии причём не только типа Clash of Clans Ну вообще любые стратегия где надо зенитами отрядами А поскольку вы изначально по умолчанию абстрагированный от управления конкретным юнитом то есть мы не каждое конкретное О нет отдельно описываем изначально а чуть-чуть выше то есть мы в системе обрабатываем их набор мы можем управлять говоря рассылать

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

подобного рода игры Wargaming движок написали на принципах исчез на хабре есть статья про то как они 2-3 года а так вот они сидят два или три два или три раза переписывали движок как раз вот Про того кота очень стену пока не пришли kcs и не понял что всё можно больше не переписываться и движок от находится в открытом доступе Где можно скачать К сожалению разобраться с документацией получилось но пытливый ум и мотивация вас спасет очень часто спрашивают ну как бы смотри Это вроде Понятно с этими РТС Ну

вроде как да тоже А как насчёт шутером можно на вашем месте я шутил сделать отлично Я даже не успел задать вопрос вся геймплейное логика написано в overwatch с использованием отходов с причём они тоже можно ли стоит движок закрытой сессии дождевалка сожалению она закрытая у них есть доклад где они описывают вот эти подходы и там они описывают исчез как передовую технологию использует для создания широкого разнообразия геймплея исчез используется для существенного сокращения трудозатрат даже с учетом

постоянного добавления новых безумных механик вы Подождите это мне еще куча времени доклад Вы же не думаешь что я спишь так рано В любой игре наверняка можно выделить какие-то горячие данные которые мы в большом Работаем каждый кадр и стандартный объектно-ориентированный подход или компонентно ориентированный подход где у нас компонентов содержится и данные и логика памяти то есть только у нас располагаются объекты в памяти он достаточно хаотичный а процессоры

очень не любит хаос и они очень долго общаются со мной памятью для сравнения обращение к своей памяти может происходить до 10 раз медленнее чем вычисление квадратного корня а квадратный корень это как раз то самое операция которую всех разработчиков игр избегать чуть не сам детского сада Ну все из-за сальника случае продашь квадратный корень из дорого да да как раз про магические константы исчез нам позволяет расположить компоненты в памяти Линейная То есть можно сделать написать исчез так чтобы помимо

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

этом увеличивая производительность и это именно то чем занимается сейчас Unity со своей Аньке коммунистам и Стеша басистом причём линейное расположение объектов памяти они ещё и занимаются распараллеливание и созданием приборка для безопасного многопоточного программирования Сколько стоит чем сегодня сестра рассказывала lenten Что же касается чисто архитектурного подхода Если вы работаете с Unity Elise шар или пишется нативное приложение на объекте или на сайт Я очень советую посмотреть нам как раз с помощью этого фреймворка было написано шерауты powerdrive

и там есть очень активные часик из очень заинтересованных людей которые всегда готовы помочь в этом чате сижу и надеюсь что тоже отношусь к числу этих людей я попросил для этого доклада оставить пару отзывов Про институт и вообще про исчез целом и вашим не получилось не очень нравится институт нет никакого смысла отказываться если проекте используется cefsharp на данный момент мы работаем над проектом уже больше полугода я должен сказать что никогда не удавалось мне с такой легкостью это как раз опять же отсылка к тому самому нашему веселому коту который любит

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

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

из-за того что подход выглядит новым и старым но не стоит забывать что первый раз напоминание про исчез было в далеком 1998 году в игре Editor Project К сожалению слайды из какого-то металла пытали они делали его внутреннем то ли какой там был очень локальным слайд презентация стали доступны буквально там ну может быть год назад Tele2 не туда этом не знал что Ну они вот первым Попали в точку и по моему мнению основная проблема это нужно переключить мозг на другую другой способ работы я об этом потом скорее чуть-чуть попозже более подробно расскажу

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

парадигма defacto в течение 50 лет не 50 А 5-10 имя подручные средства Рита доклад через 5 лет и узнать насколько я был близок к этой оценки и я могу только сказать что Зачем ждать 5 лет если можно начать пользоваться уже сейчас я По служебным положением и перехвачу микрофон так что Ждите хорошо тут такое ощущение что я видел только что Святой Грааль и ещё серебряную пулю поэтому и При всём при этом я ни черта не понял А есть ли примеры Я не знаю ещё какие-нибудь статьи habr gamasutra gameworld куда смотреть

куда капать желательно живым проектом А если что-нибудь Где можно посмотреть ножевом проекте архитектуру вообще вот есть очень много примеров на интерес но они вообще примеры которые делают разработчики приморка необычным заканчиваем турбаза функционалом когда мне очень нужны были пример разработки игр на месяц я просто скачал игру с тортиком фильмы посмотрю как они сделаны Вот это какой самый такой рабочий способ Но вообще по исчез есть большой цикл статей а вот как раз Потом расскажу большой цикл статей там чувак написал

что что-то про будущее Муму игры Что такое там очень подробно рассказывает как бы он причём он какой-то как да Именно ты машин точкам Спасибо Да промокод на Джаве есть порт носить шарфы там ещё есть встроенный многопоточность но к сожалению вот прямо вот полноценный проектов как ну вообще считай движок если там не будет примеров которые будут отражать полный цикл разработки от начала до конца то есть вот идея прототипа до релиза К сожалению мы до сих пор вынуждены пользоваться такими отпуск но почитать в последнее время Особенно я был удивлён что уже год назад

проектор стоимость рассказывали и Unity Store это делать и близок рассказывать но здесь и в общем я думаю что в ближайшее время такой небольшой взрыв произойдёт это всё дело и люди начнут смотреть все более подробное кто-то наверняка сделает пример сквозного приложения или что-то такого я вот на одном Юнайтед в прошлом или позапрошлом году у них на Ютюбе есть это видео ребята рассказывали про Mach3 2016 и 2015 самый крутой чувак я тогда не обратил на это ну как-то не было такой вот презентация мотивирующие Ну да классно что-то

непонятное вы там делаете вы так извращает тему Набери поскольку меня вообще куча времени я расскажу как я хочу и съест А кто не делал тестовые задания для интерсол сверчки В общем если вы нанимаете и вам нужно сделать дать программиста тестовые задания вам хочется посмотреть на тесты задания от интерсол у них прямо готовый по карта без с которым просто не хотела сделать игру и я воспринял как способ изучить они потому что я очень давно хотел Во сколько первый

доклад не Юнайтед в 2015 году это интернет я вообще-то сейчас и когда я делал этот проект я параллельно развиваются из библиотекой и с парадигмой и в конце разработки меня поразило насколько было в конце разработки богов то есть обычно там что ты похожа На круглой к примеру у Unity там где ходишь по клеточкам и там дерёшься не с вампирами а там трусы прыгают и дерутся с носками то есть Найдите в общем этот тест тесты проекта интерсол вот и это не настолько сильно замотивировать

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

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

и при этом смог использовать утилита мне 70% кода который писал для своих проектов то есть в его случае carsharing очень пригодился и по-моему я не помню точно срок он сказал по-моему либо две недели либо месяц то есть ну Крепись Достаточно долго Но вот как я понял из его слов этого стоило Но опять же Вот видите если Судя потому отзыву что не хотим учить новая технология вообще лично очень тоже с этим сталкивался когда-то же просил какой собеседования Обычно говорят Если хочешь быть

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

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

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

всё круто но сожалению он является частью движка поскольку он решил с заняться appletime он продаёт rosslyn как часть пакета вас история вот я его приобрел и очень сейчас сразу жизни то можно генерировать код даже с конкретным утоляющая стоит 45 долларов Спасибо Здравствуйте был вопрос про переписывание проекта а скорее тоже в эту степь немножко если уже есть проект который давно пишется насколько реально какие-то части его сделать начать писать с этим подходом и подружить с тем что было ранее

написано как попало на самом деле я тоже задавался вопросом я понял ваш вопрос Я просто пытаюсь вспомнить что я сам поэтому подумал потому что я тоже задавалась таким вопросом поскольку тот проект на котором я работал Может я тоже какое-то время хотел писать на этом является частью людей поэтому это можно говорить Вот Но в общем как-то там не срослось Я думал как бы как можно покушать и можно взять и выделить какие-то вещи которые не являются Core частью вашего геймплея то

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

броню разобьётся это серебряная пуля где этот подход не работает сейчас я тебе потом расскажу Вообще говорят что нужно подбирать инструмент по задаче Если вы общаетесь что этот инструмент вам не подходит Ну допустим я не считаю что это идеальный способ создания например потому что в overwatch ключевой момент имеет именно комбинация вот этих вот различных абилок взаимодействие между персонажами то есть ещё один такой как раз данный момент есть когда пишет что-то на УП и возвращаешься в исчез у меня было два или три таких момента когда Блин что за фигня этот

исчез и потом через какое-то время я ловлю себя на мысли что я пытаюсь насест писать так как я раньше писал Но LP То есть тут важно отличать момент когда вам инструмент И когда вы пытаетесь использовать неправильно то есть вообще любую задачу можно решить с помощью data-oriented подхода с этим исчез но в некоторых это не так оправдана наверное если у вас изначально предполагается хорошая расширяемость или Ну в общем по месту конкретно смотреть О'кей повыше поднимите руку чтобы позвонить Лена спасибо большое Вы очень интересно Вопрос такой упоминалось что система не взаимодействует

напрямую А только через компоненты Напрямую это выглядело бы так одна система Ну грубо говоря вызывает публичный метод другой системы А если они общаются через компоненты то получается одна система меняет какой-то компонент потом другая система об этом узнаёт получила этот компонент Ну и запускает свою логику во-первых такое чувство что начинает значение Порядок в котором вызывается экзекуции у систем и Ну все сложности Я думаю вытекают и во-вторых на первый взгляд такое чувство что вот-вот

вместо прямого взаимодействия во-первых усложняет накладку а в Астану гибок а во-вторых при массовости вроде бы должно повышать нагрузку нагрузка на процессор хороший пример когда такая такой подход наоборот Наоборот приводит к увеличению производительности а что касается важности порядка Да это одна из ключевых особенностей с то есть вас сроки и порядок вызова систему и допустим вам нужно выйти нажатии кнопки обработать вытащить друкарь а в этот наш Как вы сказали массив И детей

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

что-то новенькое и у нас получается такие локальные В общем локальные денисовой которые можно чуть-чуть отловить логически но с большим количеством систем очень важно иметь инструменты или возможность отладки того как у нас меняет сущность и в случае со Стасом есть очень хорошие вещи называется Visual дебаггинг там про список всех сущностей и мы можем и отключать интересуюсь системы причём систем можно группировать по какому-то общему функционалу то есть мы можем отключить несколько систем которые

описывают функционал и мы знаем что вот эти 57 они описывают допустим логику передвижение машинки вперёд а вот эти 12 м они описывают обработку событий и по сути это другой вопрос инструментарий скорее нежели сложность отладки и ответь на вопрос Здравствуйте Большое спасибо за доклад было очень полезно А у меня такой вопрос есть ли смысл Сейчас плагины поинте или лучше подождать 18 июнь использовать уже там я очень ждал от вопросов и это на самом деле самые животрепещущие темы которые сейчас обсуждаются в чате как там жизнь смысле Unity сделать свою исчез во-первых один плюс вы заранее

подготовите свой мозг к новой парадигме это 1 2 + это немного разные подходы 71 первую очередь ставят именно архитектурный подход там есть такие так называемые реактивные системы в Unity же подход чисто производительность это есть Unity берёт как раз через доклады про По большей части про доступ до на майонез именно по архитектуре и я более чем уверен что эти две вещи с могут уживаться более чем полноценно то есть преимущество одной и преимуществ другой

то есть во время вашей можно переводить водпроект начинается их уже на каком-то плане и потом если перейти там на 18 uncinata всё будет нормально Если вы хотите изначально использовать исчез для увеличения производительности то вам скорее всего лучше там закрытый бета есть регистрации лучше сделать так если вам вот именно это интересно Если же вас интересует чисто подход кто вы можете фольксвагеном То есть я вообще лично против того чтобы проект который сейчас в 2 года в продакшене переделывается на исчез просто потому что это помощью nic.ru

время скоротечно это домашка Красавица когда я не стою не пускают А сейчас выйдет то есть но как утверждает что надо поэтому я бы не на вашем месте не проснулся сейчас прям переписываться но посмотреть и подумайте Возможно это можно будет использовать для новых проектов или для проекта которые начались буквально недавно Спасибо Привет Хотела у тебя уточнить чем jcs всё-таки лучше чем CS А вот этот интерес товарищ работает в автобоксы он сделал доклад на Казанском Андреем этапе про компоненту системы и мысли потом обсуждали отличие

компонентной системы от Incity компании систем и отличия главное заключается в том что при компонент на Литейном подходе То есть то что мы видим в июне у нас компоненты имеют и данные и логику и компоненты взаимодействуют между собой выполняют друг друг друга какие-то методы то есть мы Если я правильно помню пример там было пуля которая при падении попаданий на другого робота она в общем вызывала там Толи или то ли отравление истории что такое но она много всего сделал заключалась в этого компонента пуля с отравлением мы пишем логику если мы

попали на робота то мы берем у этого робота компонент жизнь и вызываем у него там всегда мечтал допустим если ядовитый политова на этот сайт со временем уменьшает вызывает если она обычно не поля там там система эффектов которые всячески меняет да Ну ладно я короче сделаю общем когда просто component System всё очень удобно классно тоже очень развязана всё очень весело А когда становится очень много эффектов когда система разрастается то встает вопрос кто за кем выполняется Вот и тогда прицельная делается

система общая только для вот этой системы общего тут вашей терминологии делается только там в принципе тоже но кот этой компании всё ещё хранится там ну то есть комбинированные Вещи тоже вполне работает особенность Откройте War Watch 1 не решили как бы не делать вообще смейся А мы не знаем мы не знаем насколько У них везде этот патрон работает Ну понятно что когда дело касается affected люди говорят что знаю ты всё время так как рассказал Дайте пожалуйста не красавица потом Что ладно

на самом на ГБЦ волк есть лекции от компании Blizzard и соответственно они рассказывают очень детально как они работают у них в их собственном движке ИТС там есть ряд я бы сказал если говорить про общий исход который Ну вот сейчас в интернете описан во многих фреймворках вот в этот Артемис там у них есть ряд нововведений таких как например фингал компоненты что тоже достаточно интересное решение которое позволяет обойти Какие ограничения подходы которые встречаются в истории компании Да ну вот походу Они наверное это и взяли Вот

соответственно девчонка всё описанное рассказано как как это делать на яйце подходе они его используют Вот и я хотел ещё сразу сказать Спасибо Очень полезная лекция я получается 3 наверное 3 года назад на диаграмме читал тоже лекцию про компоненты и уже 3 года назад собственно Мы начинали заниматься и хотелось бы сказать такую вещь Многие спрашивают как сложно большой проект взять и переписать на СТС и вот у нас в этом есть просто колоссальный опыт Мы практически

на ходу переливали весь движок потом вместе И у нас всё найдётся если практически сейчас Ну ещё есть старые Legacy Какое но вы можете реально вот кинул Вы можете посмотреть как мы на i.com историю sabi отлично и собственно 3D у нас изначально была полностью в объектной парадигме и полностью приехали на СТС Я не уверен что эта часть истории полностью милость но можно посмотреть коллекцию мы Большое спасибо очень классно электро Спасибо за отличное дополнение Так у нас ещё блин просит

спасибо очень приятно было послушать А у меня такой немножко вопрос синергии подходов А вот есть исчез Да это О'кей круто замечательно А где стоит машины Михеева и что-то для искусственного интеллекта то мы что-то такого как Например мне не совсем понятно как можно исчез подружиться остыть машиной вообще-то дружиться вы это делали на практике или нет Я очень много примеров того как это делают другие люди там опять же очень часто задают вопрос как так сейчас что будет являться состоянием там вообще очень нас

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

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

акцента но мне очень нравится вот эта часть цитаты сервиса Независимости это тоже состояние Если друг не стал необходимо использовать с какой-то внешний привод для фсм допустим playmaker и все грамотные синусом им допустим очень хороший пример это встроенный в Unity Физика и вообще И что он приходится делать нам как бы в любом случае придется вызывать методы в этих объектов и мы Просто берем и вот Ну наверняка Степанов injection Конечно когда-то я работал в компании которая занималась разработкой на

asp.net и там процесс внедрения зависимостей можно сказать сегодня ночью обычно больших проектах внедрения зависимостей выглядит как 200 строчек контейнер контейнер я чувствую этот добавлении в систему общий список и для внешних систем которые на который вы можете сами связаться вызывать вопросы делать отдельный компонент допустим компонент офис-менеджер и наборы системы просто вращаются этому компоненту говорить говорить ему Дайте мне менеджера и работать с ним вызывает То

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

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

зависимости то есть мы регистрируем вот эти внешние части системы как зависимости потом общаемся Спасибо микрофон у ребят которые никто сделали них последний доклад про то как прикрутить Unity UI icons его там они довольно неплохо описывают вот как прикручивать такие документы Неси канистра с посмотреть Ой да очень хороший Ремарка делается опять же тоже Ну просто на ура если кто-нибудь работал actionscript 3 и использовал версию PowerAMP на другом языке есть такие ну не так много очень Суть в том что это такое стандартный вести подход и я просто интерес при подготовке доклада

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

А я думаю вы знаете если не знаете опять же в мобильном приложении есть информация о том чего где А докладчиков я думаю вы еще сможете словить Всё Всем спасибо и до завтра

Комментарии для сайта Cackle

Купить этот доклад

Доступ к видеозаписи доклада «ECS в разработке игр — хорошая архитектура приложений для всех»
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно

Доступ ко всем записям докладов мероприятия

Доступ к записям всех докладов «DevGAMM Minsk 2017»
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Билет

Интересуетесь тематикой «Разработка и программирование»?

Возможно, вас заинтересуют видеозаписи с этого мероприятия

29 августа 2019
Москва
7
49
геймдев, игры, киберспорт, медиа, разрвлечения

Похожие доклады

Валентин Симонов
Field Engineer в Unity Technologies
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Мария Хоменко
Программист в Ice-Pick Lodge
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Альберт Жильцов
Креативный продюсер в 1C Game Studios
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно

Купить это видео

Видеозапись

Доступ к видеозаписи доклада «ECS в разработке игр — хорошая архитектура приложений для всех»
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно

Conference Cast

ConferenceCast.tv — архив видеозаписей докладов и конференций.
С этим сервисом вы можете найти интересные лекции специально для вас!

Conference Cast
1158 конференций
32530 докладчиков
14480 часов контента