Как сделать кки на юнити
🎲 Разработка игр на Unity: с нуля до профессионала
Кто такой разработчик игр Unity/Game Developer
Поддерживаются операционные системы как для ПК, так и мобильных устройств.
Unity-разработчики участвуют во всех этапах жизненного цикла производства игр: создании, тестировании, доработке, поддержке, обновлении и модификации. Работа не останавливается на релизе игры – нужно постоянно тестировать продукт на корректность работы с новыми версиями операционных систем и новым оборудованием, следить за жалобами пользователей и оперативно исправлять ошибки, выпускать дополнения и модификации игры.
Как стать разработчиком игр: где и чему учиться
Где учиться – на курсах по созданию игр, по книгам или видеоурокам на YouTube – сугубо личный выбор. Мы рекомендуем обучение разработке игр на систематических курсах, которые дают представление о геймдеве в целом и разработке игр на Unity в частности.
Язык программирования C#
В дальнейшем понадобится изучить язык в полном объеме, но для начала сгодится следующий набор тем:
Если вы планируете создавать сетевые игры, то крайне желательно знать ASP MVC – фреймворк для создания веб-приложений, который упрощает сетевое взаимодействие и работу с базами данных.
Кроме языка программирования и алгоритмов, обязательны для изучения шаблоны проектирования – используемые программистами продуманные архитектурные решения. Нужно хорошо понимать, как и в какой ситуации использовать тот или иной шаблон.
Большинство обучающих и справочных материалов написаны на английском языке, а потому мы советуем овладеть языком, как минимум на уровне Intermediate. Знание английского языка – не специфическое для Unity-программистов, а стандартное для IT требование.
Редактор Unity3D
Большую часть времени Unity-разработчики проводят в редакторе, так что его нужно изучить досконально. Кроме того, программные библиотеки Unity требуют дополнительного изучения – Unity-проект существенно отличается от обычного C#-приложения. Чтобы стать профессиональным Unity-разработчиком, нужно изучить следующее:
Инструменты командной работы
Нужно иметь представление о следующих инструментах:
Профессиональный Unity-разработчик должен разбираться в том, какие специалисты работают над проектом и каковы их обязанности. Прежде всего это гейм-дизайнеры, обычные и 3D-художники. Надо помнить, что чем крупнее компания, тем более узкой становится специализация конкретного специалиста. Например, программист может заниматься исключительно системой искусственного интеллекта, 3D-художник – только моделированием, над текстурированием и анимацией будут работать другие люди.
Обучающие материалы, курсы по созданию игр
Без качественного и всестороннего обучения стать востребованным Unity-разработчиком невозможно.
Программирование
Unity
Обучение разработке игр, погружение в профессию и карьерные перспективы
Чтобы начать карьеру Unity-разработчика, нужно не только освоить язык и систему, но и иметь практические навыки.
Начинайте с несложных 2D-игр вроде тетриса или flappy bird. Простые игры легче реализовать в одиночку, но они дают навыки работы с базовыми функциями: загрузка сцен, создание интерфейса пользователя, работа с ресурсами. Далее можно переходить к 3D-играм. Здесь тоже лучше начинать с простого, постепенно внедряя новые функции и меняя архитектуру игры. Так вы составите портфолио, с которым в дальнейшем пойдете на собеседование.
По квалификации разработчики делятся на три условных уровня: Junior/Middle/Senior.
Junior – начинающий разработчик, работающий в команде под управлением более опытных коллег. Джуниору чаще всего поручают простые, некритичные задачи. На этом уровне работник обычно держится 1-1.5 года, после чего повышается до Middle. Junior Game Developer должен иметь следующие компетенции:
Middle – опытный специалист, способный выполнить всю порученную работу. Решает как критически важные, так и рутинные задачи. Имеет достаточную квалификацию, чтобы управлять джуниорами. Все основные инструменты и технологии Unity должны быть известны middle-разработчику. Многие работают на уровне middle годами и десятилетиями. Чтобы стать сеньором, нужны большие и целенаправленные усилия.
Senior – программист с высочайшей квалификацией. Может выполнить любую задачу в рамках своего набора технологий. У сеньоров огромный опыт, широкий кругозор, часто – отличные управленческие навыки. Чтобы вырасти от джуниора до сеньора нужно от 6 до 8 лет.
Team Lead Unity Developer – программист уровня middle, который занимается преимущественно управленческой деятельностью. Именно тимлиды создают условия для продуктивной работы команды. Им платят не за написанный код, а за соблюдение сроков и качество проекта в целом.
Также выделяют Unity VR Developer – специалиста, работающего в сфере виртуальной реальности. Такой программист должен иметь специальные знания, связанные со специфическим оборудованием – очками и шлемом виртуальной реальности. Unity AR Developer – похожая специализация, но связана не с виртуальной, а дополненной реальностью.
Востребованность Unity-разработчиков растет, как и количество вакансий. С уверенностью можно говорить, что и через 3-5 лет профессия разработчика игр на этом движке будет перспективна.
Unity-разработчик в среднем получает 65 тыс. руб. в месяц. Минимальная зарплата – 40 тыс. руб. в месяц, максимальная – 135 тыс. руб. в месяц.
Где учиться на разработчика игр
Если вы только начинаете изучать разработку игр, мы рекомендуем обратить внимание на курс Факультета Разработки игр онлайн-университета Geekbrains. В этом курсе систематизирована вся основная информация, необходимая для того, чтобы стать профессиональным Unity-разработчиком.
В курсе уделено большое внимание практике – по окончании обучения у вас в портфолио будет 4 реальных проекта, с которыми можно идти на собеседование. Кроме того, у каждого ученика есть личный наставник-куратор, с которым всегда можно прояснить непонятные места.
Как создать игру на Unity c 0 не имея навыков!
Не так давно был объявлен Народный Джем с призовым фондом 131 000 рублей.
Такие события часто притягивают как совсем ничего не умеющих новичков, так и опытных разработчиков и в этом году мы, школа ЯЮниор решили поддержать джем!
Наша школа стала одним из спонсоров народного геймджема, мы учредили 2 номинации:
25 000 рублей за лучшую игру на Unity
25 000 рублей за лучший код на Unity
Немалое количество разработчиков вошло в разработку игр случайно, именно с такими джемами! Они видят, что джемы открыты для всех, что для них подбираются материалы по разработке игр, что это их шанс попробовать.
Мы хотели бы немного помочь самым начинающим ребятам и выпустить статью о том, как же собрать самую простую игру в Unity
В этой статье не будет сверхумных и тяжелых приемов, эта статья написана специально для нулевых ребят, самым простым языком, чтобы каждый мог это осмыслить.
Сегодня мы с вами напишем самый простейший тир.
В нашем тире под волнами спрятаны уточки, раз в определенное время случайное количество уточек поднимается из воды, а ваша задача выстрелить по каждой из уточек
Давайте приступим к разработке
Первым делом мы скачиваем графический пакет и переносим все файлы из папки Spritesheets(папка в архиве с графикой) в наш проект. Все файлы вашего проекта хранятся в папке Assets(находится в корне проекта если искать через проводник), в окне Project.Чтобы не захламлять папку ассеты разношерстными файлами мы стараемся всё структурировать, к примеру для графических файлов мы создадим папку Sprites, а уже в неё простым перетаскиванием мыши закидываем наши спрайты.
Как вы могли заметить, в проекте также присутствуют папки для скриптов, префабов, анимаций. Я создал их заранее, чтобы потом сразу размещать нужные файлы. Приучать себя к порядку в проекте нужно с самого начала, потом это будет сделать труднее.
Давайте посмотрим, в каком виде у нас спрайты.
Это атлас, он удобен при разработке, он экономит место, но его следует ещё подготовить. Чтобы пользоваться каждым спрайтом по отдельности его нужно нарезать. Для этого мы нажимаем ЛКМ по атласу, в окне Inspector теперь отображается информация о выбранном файле
Чтобы его нарезать, мы сменяется Sprite Mode с Single на Multiply и нажимаем кнопку Apply, тем самым разрешая нарезку атласа.
Теперь нажимаем кнопку Sprite Editor, у нас открывается окно для нарезки атласа. Для того, чтобы автоматически нарезать атлас на спрайты вы можете нажать Slice в верхней части окна.
Не забудьте нажать Apply
Если вы всё сделали правильно, то около атласа в окне Project появится стрелочка и раскрывающийся список, в котором видно видно все ваши спрайты.
Теперь их можно использовать по отдельности, чтобы выстроить уровень, чем мы с вами и займемся.
Переходим к окну Scene и переводим камеру в 2D режим
Теперь вы можете просто перетаскивать нужные спрайты из окна проекта на сцену и они на ней появятся.
Но и тут нужно подходить с умом, на нашей сцене будет множество различных элементов и потом будет трудно среди всех ориентироваться, для этого мы всё будем структурировать. В окне Hierarchy отображаются все объекты на нашей сцене, нажам ПКМ по этому окну мы создаем новый пустой объект, назовем его Background.
Этот пустой объект будет служить нам хранилищем для всех объектов, которые представляют окружение.
Давайте начнем с заднего фона.Перетащите спрайт задней стены на сцену, у вас появился небольшой квадрат.Он очень мал, чтобы покрыть всю сцену, если его потянуть, то он теряет качестно, но и создавать много таких квадратов — это захламление. В этом случае мы можем сказать, что отрисовывать этот спрайт стоит не как обычную картинку, а как повторяющийся спрайт!Для этого выбираем лкм нужный объект и в окне инспектора Draw Mode сменяем на Tiled.
Теперь при растягивании ваша текстура будет повторятся, тем самым вы создадите задний фон.
Таким же образом следует создать траву и воду, ведь они тоже повторяются!Во время построения следите за слоями, каждый отдельный объект находится на определенном слое, слои — это Order In Layer.
Он нужен для четкого указания того, на какой позиции он должен стоять. К примеру, фон — это самый дальний объект, он должен стоять позади всех, по этой причине порядок на слое у него будет 0.Трава уже идет выше стены, слой у неё будет 1, чтобы она всегда была выше, далее будет 3 уровня воды, и у них будут слои 2,3,4, чтобы каждый четко шел за следующим.
В итоге у вас должна получиться похожая картина.
Это почти готовый тир, теперь давайте сделаем мишени.
Первым делом создаем пустой объект, назовем его Target, он будет хранить нашу цель. Далее создаем ещё один пустой объект внутри Target, назовем его Base. Он нужен для будущей анимации.Далее в него уже помещаем деревянную палочку, на которой будет стоять мишень и уточку на эту палочку, чтобы вид получился следующий.
Наша мишень почти готова, нам осталось добавить ей заднюю часть, чтобы её можно было первернуть выстрелом. Для этого добавляем заднюю часть дочерней к самой уточке, оставляем их на 1 слое, но заднюю часть сдвигаем чуть назад(можете вернуть сцену в 3d для просмотра)
Таким образом мы сможем перевернуть нашу мишень при удачном выстреле.Чтобы уточку можно было создавать множество раз, нужно сохранить её как префаб(шаблон), для этого просто из окна иерархии перетащите корневой объект уточки в окно проекта, в специально обозначенную папку(Prefabs), теперь вы всегда можете вновь создать уточку просто перетащив её из окна проекта.
Наша мишень имеет различные состояния. Она может быть спрятана и находиться под водой, она может всплыть и её могут выбить. Для всех этих состояний нужны анимации и вы сможете их сделать.
Нам нужно открыть окно анимаций, для этого нажмите Window → Animation →Animation
Откроется окно, в котором вам предлагают создать аниматор. Сначала нажимаете на объект, который хотите анимировать, а потом нажимаете Create и выбираете куда вы хотите сохранить вашу первую анимацию.
Моя первая анимация — Show, она будет проигрываться при показе уточки.Всё анимированние в Unity работает на изменении различных полей, к примеру на изменение положения, поворота или размера.
Как вы можете заметить, тут видна вся иерархия нашей уточки, мы выбираем Base и Position. Зачем такие сложности? Дело в том, что если мы будем анимировать базовое положение, а не то, которое внутри нашего контейнера, то все наши уточки будут принимать одну позицию в мире. А в данном случае у нас получается, что уточка проигрывает все эти анимации внутри коробочки и это очень комфортно.
Также требуется сделать анимацию выбивания мишени и анимцию покоя, для этого нажимаем создать новую анимацию.
Для выбивания уже интереснее, мы будем анимировать сразу по 2 полям, по повороту и положению.
Анимации готовы, теперь их надо соединить в общую цепочку, показать как они будут взаимодействовать.
Обратите внимание, что на вашей уточке появился новый компонент, Animator.
Он создался автоматически при создании анимции, 2 раза нажмите на таргет и у вас откроется окно аниматора.
Первым делом, нам нужно указать тут стартовую анимацию, для этого жмем ПКМ по анимации idle и выбираем пункт Set As layer default state.
Далее жмем пкм по idle и выбираем make transition, появившуюся стрелочку протягиваем и закрепляем при помощи лкм на show. Таким образом вы должны создать такую картинку.
Это то, как анимации будут проигрываться, как они будут переходить от одной анимации, к другой. Остается только настроить переходы.Мы должны перейти в параметры и нажав на + создать 2 триггера, Hit и Show, они будут помогать нам из кода вызвать определенную анимацию.
После создания триггеров мы должны сказать, при каких условиях одна анимация сменит другую. Для этого жмем на белую стрелочку, которая идет от Idle к Show, нажимаем + и настраиваем такое условие. Оно говорит, что анимация перейдет только тогда, когда этот триггер будет включен.
Также следует отключить на всех переходах Has Exit Time для четкости проигрывания.
Переход от Show к Hit будет выглядеть так
А переход снова в Idle трогать не нужно.
Чтобы переместить все готовые анимации на другую утку, добавьте к ней компонент Animator и укажите тот же контроллер, что и делали для первой утки.
Готовая утка выглядит так
Для доп практики можете проанимировать движение воды.
Мы подготовили сцену, анимировали уточек, осталось дать им жизнь. Сейчас попрошу создать 3 пустых объекта и наразмещать в них уточек в по такому примеру
То, что мы сделали префаб из уточки позволяет нам легко её воспроизвести.
В итоге у нас получилась следующая картина
При запуске все уточки будут под водой, ибо из-за аниматора они не могут всплыть, пока триггер Show не заработает, давайте начнем писать скрипты!
Первым делом напишем с вами скрипт для уточки. Нажимаем пкм по окну проекта и создаем C# скрипт Target.
Мы с вами пишем вот такой простенький скрипт.В нем мы получаем с нашей уточки компонент аниматор при старте игры, а после в 2 методах Hit и Show обращаясь к нему устанавливаем триггеры, чтобы анимация проигралась. Hit и Show публичные методы, к ним будут обращаться из вне и говорить, что в них попали или же, что их надо показать.
Скрипт нужно добавить к каждому из префабов(не на объект на сцене, а на префаб в окне проекта)
Далее напишем скрипт для группы мишеней, чтобы на определенной волне можно было их открыть(группой играет как раз TargetRow, в котором мы объединили уточек)
В этом скрипте при запуске игры мы собираем всех уточек которые содержатся внутри нашего объекта(наши дети) в единый список. Как вы уже видели, все уточки изначально под водой, ибо состояние idle держит их там, а при вызове метода ShowRandomTarget случайная уточка из ряда будет показана.
Этот компонент нужно добавить к объектам, в которых содержатся уточки.
Остается написать главный компонент, который будет управлять появлением уточек.
Заметьте, тут поля помечены SerializeField, это позволяет открыть поле для редактирование в инспекторе, т.е. этот компонент мы настраиваем сами под себя.
У нас есть задержка между появлениями show Delay, есть текущее время, current Time, когда текущее время становится больше, чем нужное время для показа, то происходит генерация числа показываемых уток, а после цикл, в котором создастся такое количество уток на разных волнах, после чего время обнуляется.
Этот комопнент мы добавим на новый пустой объект Shooting Gallery и настраиваем следующим образом.
В массив TargetsGroup мы помещаем все 3 волны уточек.
После этого раз в Show Delay секунд будет показываться рандомное количество уток от Min Show Count, до Max Show Count.
Теперь утки показываются, но выбивать мы их ещё не можем.
Чтобы уток можно было выбивать, им нужно добавить физическое тело, для этого переходим к префабу утки и добавляем комопнент Circle Collider.
Колайдер дает нам возможность физически прикоснуться к объекту, но как вы видите, кружок не на утке, это надо исправить, для этого вам нужно подредактировать offset y, чтобы кружок встал ровно.
После этого мы сможем выбить уточку, для этого создаем компонент Shooter.
Самый технически сложный код в этом проекте, давайте разберем подробнее.
При старте мы запоминаем камеру, чтобы к ней потом обращаться для создания луча.
Update же выполняется каждый кадр, каждый кадр мы проверяем — игрок нажал левую кнопку мыши? И если да, то мы запоминаем позицию, где находится мышка игрока, создаем при помощи камеры луч в той позиции, где была мышка и проводим рейкаст. Как это выглядит — мы кликаем мышкой и ровно в том месте вниз летит невидимый луч, он ударяется о колайдер уточки и запоминает его.
Осталось добавить только перекрестье, чтобы было удобно целиться(на скринах для удобства оставлял, сейчас добавим и вам:))
Берем спрайт перекрестья и создаем его на сцене, после чего создаем скрипт
Для этого скрипта требуется небольшое пояснение, координаты мышки идут экранные, т.е. где мышка в рамках экрана, а само перекрестье у нас в мировых координатах в unity, по этому нам нужно сначала перевести координаты мыши в мировые, после чего присвоить местоположению перекрестье координаты мировые нашей мышки.
Этот скрипт добавьте на объект перекрестья и он будет следовать за вашей мышкой всегда)
По сути мы с вами сделали простейший тир, в котором вам нужно выбивать утят)
Эта статья получилась очень большой, но надеемся, что для некоторых она станет первым маленьким шагом к изучению большого количества материала. Ведь если с минимумом приемов можно сделать небольшую игру, то представьте, что будет если вы изучите больше?
Если вы начинающий, главное практика после теории, без практики никак не выдет, по этому также мы бы хотели поделиться с вами нашими бесплатными курсами, которые смогут вам помочь в освоении этой профессии.
Курс БОРИС расскажет вам о разработке игр в целом, C# введение и Unity введение дадут вам понятие о самых азах разработки игр, а бесплатные курсы по созданию кликера и змейки помогут вам закрепить это на практике.
Методика разработки игр на Unity
Методика разработки игр в Unity
Когда первый раз начинаешь делать игры на Unity, то не понимаешь с какого конца приступать.
После некоторого времени и множества прочитанных книг и форумов начинаешь понимать методику разработки.
Начинаешь с одной сцены — где тестируется ваша корневая механика игры.
Если это платформер — то один длинный уровень с минимальным набором механик (прыжок, упасть и разбиться и простой враг).
И не надо боятся делать всё в методике «graybox», когда у тебя лишь треугольники или пирамидки на твоём уровне.
Это даже хорошо, когда ты просто берешь примитивы и делаешь игру.
Ничего не отвлекает от общего процесса игры и разработки её.
Некоторые разработчики даже остаются на минимализме и вполне успешные: Thomas Was Alone, Mini Metro и похожие.
И важный момент — когда ты творишь, даже используя «арт программиста» — то тебя ничто не останавливает.
В момент создания механики или уровня нельзя отвлекаться и раздражаться — плохо скажется на игре.
Поэтому рисуйте или используйте готовые шаблоны и создавайте такой геймплей как вам нужно.
С художниками успеете поработать позже — на этапе полировки.
После того, как вы определились с уровнем, и накидали базовых коллайдеров, можно переходить к созданию механик.
Создаём объект игрока — просто кидаем коробку (или спрайт с квадратом) на уровень и начинаем думать — какое поведение нам надо.
Для каждого поведения и возможности надо создать компоненты: жизнь, передвижение, сенсоры врагов и столкновения с окружением, управляющий модуль (центральный мозг персонажа).
Причём лучше по порядку — от простого: движение и столкновение, а также управляющий модуль.
После этого, а также настроив параметры (благо Unity позволяет играть с параметрами во время теста, а потом сбрасывает при возвращении к нормальной работе) — можно приступать к созданию prefab-а для персонажа.
Prefab — это способ Unity создавать экземпляры вашего объекта динамически, каждый раз не настраивая и обходясь без компоновки.
Расположили и просто играете с ним.
Так как игрок — центральный персонаж, то и уровень для теста у него уже есть.
Для мелких механик, врагов и опасностей надо собирать отдельный тестовый уровень, чтобы проверить как они работают по отдельности, а также в совокупности (чтобы можно было использовать комплексы механик для разнообразия геймплея)
После тестирования объекта (или механики геймплея) можно начать собирать уровень.
Это уже сильно проще — надо собрать базовый уровень и накидать туда различных врагов, препятствий, настроить периодичность волн (если у вас они присутствуют — защита башнями или бит-ем-апы часто используют волны)
И пробуете пройти этот уровень от начала и до конца. И выставляете рейтинг.
После можно отдавать на тестирование вашим друзьям или профессиональным тестировщикам.
Как уровень будет готов, его можно положить в папку «К обработке»
В этой папке будут храниться уровни для полировки.
Из них, вынимаешь уже когда почти все уровни готовы и начинаешь вставлять графику, и заполнять деталями.
Дизайнер уровней тут уже вовсю работает с художником (даже если вы всё сами делаете — это всё равно две разные направленности и их надо разделять)
И вот, когда у вас уже набралось уровней на эпизод, можно их располагать.
Кто делает историю — то в хронологическом порядке выставляете.
Кто просто уровни — то сортируйте по сложности.
Но не забывайте про кривую вовлечённости.
Она должна быть в виде возрастающей кривой с падением после климакса, чтобы игрок чувствовал, что он преодолевает проблемы, а потом выходит победителем из главной схватки.
Для настройки удобнее всего использовать json или ScriptableObject — тогда вы сможете настраивать геймплей без переработки сцен.
А это очень удобно, когда у вас один префаб на десятке сцен в десятках вариаций.
Последнее время Unity позволяет использовать композицию prefab-ов. И этим стоит пользоваться — поскольку так вы сможете управиться с работой малой командой или один.
Постоянная переработка уровней — основной убийца мотивации. Ты много работаешь, а отдачи нет, а то и сломать можешь.
Поэтому ограничивайте количество итераций.
И по бюджету времени (и денег) это тоже важно — знать когда остановиться (достаточно хорошо уже хорошо).
Перфекционизм до хорошего не доведёт.
И главное — как говорит Джон Блоу: «Не пытайтесь быть как большие компании»
Ваш путь уникален, и копировать коллектив в 10-100 человек, просто надорваться.
Есть поговорка: «Широко шагать — штаны порвать»
Лучше сделать меньше, но в лучшем качестве, чем растягивать резину скуки на много часов.
Для игры отзыв «скучно» — это приговор.
Игры должны развлекать и увлекать. Учить и направлять.
Лучше начните другой проект, как этот сделаете.
Хотя некоторые предпочитают вести сразу несколько проектов.
И это тоже выход — прокрастинируя на одном проекте от другого в сумме получится сделать оба.
Да, времени уйдёт больше — но если не отдыхать, сменяя деятельность, то проект может ждать участь многих заброшенных. Постепенно теряешь энергию, а на воле далеко не проедешь.
Через полгода уже делать будешь «через нехочу», что скажется на качестве проекта.
Отсутствие энтузиазма сразу видно.
Когда ты делишься наработками с людьми — они это видят.
А репутация — это пока единственное, что есть у молодой студии (или инди-разработчика игр).
По совету МакМиллена: «Делать надо то, к чему душа лежит. Самые интересные получались именно на взлёте энтузиазма»
Так что заканчивать надо, но при этом поддерживать огонь в душе тоже нужно.
И этот баланс трудно достичь.
Но к нему можно и нужно стремиться.
Столько странной информации в сплошной стене текста
Это цитаты Стэтхема
Статье явно нужно больше гифок!
Больше видео с коллайдерами и префабами!
Методика разработки игр на Unity:
Не используй GetComponent() в Update;
Не злоупотребляй Instantiate;
Следи за DrawCalls / Batches;
По возможности избавиться от Update и переложить все на события;
Не качать 100500 ассетов и готовых скриптов, которые начинают позже конфликтовать друг с другом;
Пользоваться ObjectPool вместо создания/удаления объектов;
Привыкнуть к тому, что первый десяток концептов не выстрелит в готовую игру, а завернется где-то по дороге, это просто часть опыта.
Не используйте FindGameObjectsWithTag() и аналогичные методы для получения списка объектов с определённой последовательность — это работает только в редакторе, лучше заранее указывайте объекты в инспекторе.
Старайтесь разделять большие скрипты по функционалу на более маленькие, а не запихивайте всю логику в один скрипт.
Думайте о локализации на другие языки заранее — на начальных этапах разработки, а не уже к концу разработки.
В принципе не стоит использовать любые функции, где в качестве параметра фигурирует string. И все функции поиска тоже лучше не трогать.
А инкрементальная сборка мусора, появившаяся в относительно свежих версиях, еще сильнее слаживает проблему лишних аллокаций, и позволяет вольно обращаться с памятью, особенно на PC.
Жесть. Спасибо, очень полезно. Про foreach я услышал от разраба мобильных игр где-то год назад и потом даже нашел пруфы этого в виде статей. Надо было самому всё протестить и убедиться, что это не так. Про новую чистку мусора, распределенную по времени, я естественно знаю.
А с какой версии появился этот новый сборщик? Сейчас работаю на 2019.4
Вроде бы, уже должен присутствовать, но я не уверен.
Этот комментарий полезнее чем вся статья.
Прошу прощения, а что это? Набор рандомных советов от автора? Притом советы не очень хорошие, не особо правильные и так себе расписаны.
PS Интересно кто плюсы ставит, как и при каких обстоятельствах эта статья может помочь? Без негатива, возможно это я глуп и ничего не понял.
Как обмен опытом и личными мыслями, неплохо. К тому же, мотивирует
Стиль статьи напоминает Сунь-Дзы: Искусство Войны
А чем плохи советы? Можно детально обьяснить для тех кто не из индустрии?
Для новичков эти советы ни о чем не говорят
После некоторого времени и множества прочитанных книг и форумов начинаешь понимать методику разработки.
Какие книги? Какие форумы? Какая методика? Методика автора, про которую мы еще ничего не знаем?
Ну и методика это все же конкретика, а не набор рандомных советов из программирования и геймдизайна.
Советы хорошие, но подойдут не каждому (разные люди, разные игры)
Надо было оформить это в табличку в стиле Черногорских заповедей, с физиономией какого-нибудь видного девелопера сбоку )
Когда где-то услышал, что разбитие текста на абзацы улучшает читаемость и не смог остановиться.
Комментарий удален по просьбе пользователя
Это скорее не про Юнити (за исключением пары пунктов), а про самоорганизацию и мотивацию. И наверное, если сам не делал игры, не поймешь, о чём тут написано. Возможно, стоило подкрепить текст личными историями из разработки, обоснованиями и прочей конкретикой, на ДТФ такое любят. А я просто лайкнул, потому что согласен с написанным 🙂