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

Отрицание, Гнев, Торг, Депрессия, Решение или создание игры с открытым миром на Unity

Мария Хоменко
Программист в Ice-Pick Lodge
  • Видео
  • Тезисы
  • Видео
DevGAMM Minsk 2017
16 ноября 2017, Минск, Беларусь
DevGAMM Minsk 2017
Запросить Q&A
Видеозапись
Отрицание, Гнев, Торг, Депрессия, Решение или создание игры с открытым миром на Unity
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
В избранное
13,64 K
Мне понравилось 0
Мне не понравилось 0
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
  • Описание
  • Расшифровка
  • Обсуждение

О спикере

Мария Хоменко
Программист в Ice-Pick Lodge

Два с половиной года назад Мария присоединилась к студии-разработчику Ice-Pick Lodge в качестве программиста игровой логики. На данной позиции она работала над такими проектами как «Мор» Pathologic 2 и Pathologic: The Marble Nest. Также Мария работала QA Lead (тестировщиком) финального издания оригинальной «Мор. Утопии» — Pathologic Classic HD. Мария любит комбинировать деревья поведения (ориентированный ациклический граф, узлами которого являются возможные варианты поведения робота) со стейт-машинами (маши

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

О докладе

Pathologic 2 «Мор» — это триллер с большим открытым миров разработанный на Unity. В данном докладе, Мария расскажет, с каким огромным количеством проблем они столкнулись во время разработки систем игры Pathologic 2. А также вы узнаете, какие виды решений они нашли.

Поделиться

Здравствуйте меня зовут Хоменко Мария и сегодня Вам расскажу про особенно разработки игр с открытым миром на Юнити на примере такой замечательной игры мор утопия это секретный неопубликованный фермора. видео немножко лагает мор утопия это скрывал Adventure трейлер про город в эпидемии и трёх врачей прибыли в этот город чтобы решить его судьбу в этой игре вам нужно выживать лечить людей убивать людей вырезать органы сделать всякие другие интересные вещи самое главное попытаться понять что же на самом деле происходит

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

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

примерно до 3:00 мы с легкостью портировали на возможно устройство от Playstation надо Андроидов и чудным микроволновке уже её запустили и не было Ни единой проблемы с Unity вообще-то есть всё прошло идеально Ну и почему тогда не сделает наш большой можно Unity решили мы что имей в виду когда говорю что может небольшой проект Ну наверное лучше тебя с корицей момент в игре около шестиста сны нашей исходники весят от 100 до 500 Гб в общем-то Это довольно много и Мы понимали

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

с короткими рукавами есть человек с гигантской головой есть человек очень длинными ногами и не делайте так Никогда потому что ретаргетинговые тебя становится очень плохо Мы с ним изначально собирались использовать фонарик для наших персонажей Это первый прототип боевке который был сделан ещё наверное в 2014 году короче персонажи у нас не только плохо ритор катится А ещё мы не могли использовать гуманоидные рейд потому что в нём всего 2 спального Такси

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

вручную простые таких от походки и тут произошло чудо Unity добавили третью кость гуманоидные Ирик Теперь мы можем к нему вернутся и можем его и потому что спина уже Не гнется плохо всё ещё остались проблемы с ретаргетинга на сложных контактах анимациях вы не можете сделать касание от ретаргетинге конечности проходит сквозь Но для таких простых анимаций как походке мы можем использовать гуманоидный Рик и сейчас мы собираемся хранить 2 Аватара одновременно собираем сохранить гуманоидное Аватар и generic avodart generic из-за сложных

анимации кат-сцен и Гуманоиды для простых походок Ну вот можно посмотреть Прогресс 2014 но ещё Не идеально конечно но уже лучше ты так у нас есть персонажи У нас есть игровая логика Нам чего-то не хватало нам не хватает качество картинки есть Умора очень интересные особенности в принципе необычная игра но она необычная во всех смыслах во всех его проявлениях в море 90% времени либо дождь либо туман понятно что там нужно динамическая смена дня и ночи потому что мы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

объекты это entity все содержат компоненты что применение есть и сервер есть на обращение не подниму там какой-то очень тонкий момент довольно интересной Давай тогда иди ко мне попозже я с ребятами которые писали архитектуру Ну что я специализируюсь на игровой логики её не ударялась зебры для персонажей Как много компонентов вас потому что в разных играх Разный подход вот там 5 компонентов до сотен Ну смотри сейчас мы комбинируем behavior Tree машины Когда мы этого не делали Настей машинах нам приходилось действительно увеличивать количество компонентов это было так неудобно

нам приходилось писать отдельный компонент для движения назвал сумму выплат для драки отдельный компонент Ну для всего что мы хотим Но теперь за счёт деревьев поведения насчёт этой гибкости Нам нужен только один компонент behavior всё остальное уже в баре интересная логика происходит здесь внутри то есть вот этот behavior Tree уже не Standalone внутри Unity и он имеет доступ напрямую и компонентам аниматором и ты пишешь просто Но то что ты хочешь за персонажа сделал потом соединяешь что дерево Ну допустим есть дерево для вот этот пример огнеметчика

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

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

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

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

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

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

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

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

Гигантское перо осложнённое дерево 1.000 не то чтобы совсем отстоя behavior Tree круто не совсем так очень здорово использовать несколько подходов сразу И сейчас мы на том чтобы ну не всерьез ещё думаем Но возникали случаи когда мы думали о системе приоритетов для AE и вот это сосед позволяет внутри поддерживать Так что возможно мы добавим еще и третий подход в на шее чтобы была совсем здорова и вообще разделение Люба Это здорово извини А я вот сразу вдогонку немножко не понимаю как вы именно комбинируйте это у тебя внутри

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

любом случае О'кей Здравствуйте спасибо за доклад А мы делаем мобильную GTA и у нас можно ездить на скорости в 200 км на машине Вот это проблема с прогрузкой - это конечно прям душевно какой делали допустим когда собираешь как большая 30-летних слушать Это опять-таки вопрос не ко мне а к нашему ведущему программистов этим занимался Так что я боюсь что не смогу на него ответить единственное что я понимаю что мне кажется что мы запакованный только префабов bangla То есть я не уверена что мы шарад ресурсами что-то делаем

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

но мы собираемся это сделать потому что она мне нравится ситуация что все наши текстур и мы собираемся как раз написать систему чтобы персонажи если нужно использовать одну текстуру ссылались на неё они копировали Но это нам еще предстоит сделать То есть такое у нас пока нет а что с джинном Ну если это очень интересная история попытались его использовать его во-первых тоже нужно запекать в эту систему Umbro запекать для всех центр сразу если ты меня поправят но у нас она давала В итоге больше проблем чем пользы потому что нас очень сложная геометрия грузится такой high poly 3D и было

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

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

Когда вы загружаете регион как prefab и в нём тучи домов это как-то не очень удобно а что если всё разбить на префабы то есть вот дом коробка это отдельно при этом придется заранее обдумывать в том грузить или нет посмотри один персонаж который очень простой очень маленький загружается 8 секунд асинхронное сосед bangla чтобы нам нужно было сделать сигну гигантский дом загрузить асинхронный нас обманывали Сколько баллов поезда может разбиться на префабы если вас мобильная игра и там нет high poly 3D Это для вас Это скорее всего будет лучшим вариантом для нас Но мы просто не можем отгрузить

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

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

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

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

запустится игру вы не увидите правильно он съел или неправильно но во всяком случае так было предыдущих версиях Unity А теперь благодаря timeline мы можем закинуть мальчиков цену в сцене посмотреть садится Он правильно или нет 11 вообще решающий момент потому что наш наша игра в Unity сейчас грузится но минут 8 наверное и менять маленькую смещение ждать 8 минут чтобы посмотреть Как садиться мальчик не очень удобно ещё я знаю что мы ждём с освещением что deferred decals какие-то там должны быть

переписаны и что-то это про что мне рассказывал Андрей скрипит rendering pipeline В общем Ждём с нетерпением насколько я понимаю разборки речь шла про Шлыкова эмблема которые у нас есть сейчас посадит транспорт в 17.3 Она ведь есть она в принципе работает Ну давайте прекрасно экономит время на сборку Да ещё всё не очень стабильно Как там используется что мало ли что пойдет не так А как вообще вот у вас с политикой переходом на новые версии вы как-то вот начали наверняка работать где-нибудь в районе дом 45 Начинать надо с после версии ещё и у вас политика менялась вовремя

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

раз мне ответ Снеговичок помощник который говорит что в нашей деревне слетели потому что мы используем церкви шейдеры и проблем не было вообще никаких и мы уже перешли на 17:20 а потом оказалось что фиг Света который нам нужен вышел 2017.1 и сейчас мы откатились на 2017 1 неделю назад то есть в данный момент мы очень бодренько переходим в версии я не испытывая затруднение Но конечно Мы надеемся что все табелируется и мы так долго делать ещё не сможем Ещё раз привет

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

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

дело а каким образом у вас подействует команда кто За что отвечает Сколько человек вот кто сидит она игровой логики Кто её пишет в своей части Кто в Unity Кто там это очень интересный вопрос потому что всё-таки мы больше чем обычные Энди команда но мы всё-равно Теле2 командой и у нас нет очень четких каких супер супер сложные границ у нас вообще больше В чём здесь указано просто не все мне помогали Да у нас есть у нас есть главный программист движка который

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

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

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

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

изменять значения в инспекторе у всего всей нашей иерархии можем рантайме её загрузить грузите поменять Toyota Мне нужно даже перезагружать всё это постоянно иногда можно прямо в роддоме носить изменения и сохранять Их Спасибо большое, Мария Я думаю мы можем тебя уже отпустить, и у нас сейчас Будет перерыв на обед. Спасибо ещё раз.

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

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

Доступ к видеозаписи доклада «Отрицание, Гнев, Торг, Депрессия, Решение или создание игры с открытым миром на Unity»
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно

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

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

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

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

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

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

Кирилл Надеждин
Ведущий программист в Kumo Kairo
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Валентин Симонов
Field Engineer в Unity Technologies
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Альберт Жильцов
Креативный продюсер в 1C Game Studios
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно

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

Видеозапись

Доступ к видеозаписи доклада «Отрицание, Гнев, Торг, Депрессия, Решение или создание игры с открытым миром на Unity»
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно

Conference Cast

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

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