Как сделать таблицу рекордов unity

Добавил пользователь Алексей Ф.
Обновлено: 04.10.2024

Независимый разработчик Дмитрий Лукаш рассказал ЦП о том, как выжать максимально красивую графику для вашей игры на Unity, а также об особенностях пятой версии популярного движка.

Итак, небольшой обзор рендера Unity. Изначально он создавался с оглядкой, да что там с оглядкой, в основном под мобильные платформы, поэтому его сделали максимально гибким и минимально привязанным к какому-то конкретному железу. То есть если очень хочется попользоваться какими-то специфичными функциями от нужной нам железяки — Nvidia или AMD, — не всегда получится.

Из преимуществ: в Unity есть два варианта рендера (в Unity5 три) — forward, deferred, и, для Unity5, legacy deferred (deferred от Unity4). Различие, если кратко, в принципе просчета освещения.

  • быстрый и достаточно хорошо кастомизируемый графический движок, который работает даже на очень старом РС-шном железе и новых мобильных платформах достаточно быстро;
  • позволяет использовать разные пути расчета в зависимости от задач;
  • неплохо документирован, возможность замены любых стандартных шейдеров (идут в комплекте в исходном коде) на свои — это огромный плюс;
  • батчинг деревьев и их билбордов.
  • сложность системы освещения — недостаточное количество информации в G-Buffer Unity4 делает написание шейдеров освещения для него затруднительным;
  • сложность понимания и взаимовлияния между проходами (хотите узнать, где у вас тень на меше в диффузном шейдере, — а тут не так все просто);
  • ограниченные возможности расширения G-Buffer, ограниченные возможности в deferred-режиме для различных моделей освещения и материалов;
  • система террейна и встроенный конструктор деревьев — очень интересные, но очень нелогичные вещи, заточенные на оптимизацию, но никак не на удобство.
  • 64 бита. Наконец-то. Можно делать большие уровни и использовать 8К-текстуры;
  • при наличии напильника можно без особой боли перепилить старый проект под новый движок. Если нет лайтмаппинга, разница почти незаметна;
  • возможности GI (global illumination), PBS (physically based shading) из коробки и прочие вкусности, новые PCF-тени (менее жесткие и быстрые);
  • высокая кастомизация — исправление встроенных шейдеров, дописывание своей логики в редактор, возможность использования и расширения разных путей рендера.
  • измененная логика проходов (зависимость попадания источника тени с Z-Buffer: кто не отбрасывает тень, в Z-Buffer не попадает. Чертовски неудобно местами, убран проход Shadow-Collector);
  • встроенные деревья работают очень странно (были непонятные артефакты по контурам веток);
  • обычный deferred не так уж и быстр — при буфере в 192 бита на пиксель скорости не добавляется;
  • все еще в бете, работа GI и лайтмаппинга постоянно дорабатывается.

Думаю, читателя больше всего интересует, как быстро сделать, чтобы его игра или проект стал красивым и нарядным. Желательно, сразу и одной кнопкой. Попробуем сделать это в Unity4.

Краткая инструкция для тех, кому очень невтерпеж. Для остальных более подробно попозже.

1. Определить, где происходит действие — внутри или снаружи помещений. Будет ли использовано большое количество источников света. Если снаружи, и нет множества источников света — проще использовать forward, если внутри или есть много световых источников — deferred. Если свет запекается — почти все равно.

2. Определиться со сменой погоды и временем суток. Если смены нет — все проще. Одно небо в HDR. Если есть — нужно подготовить несколько вариантов неба. Потом написать процедурную смену.

Теперь за работу. Есть несколько наборов пакетов, которые позволяют достаточно серьезно поменять картинку. Первый из них — Marmoset SkyShop. Второй на выбор — Alloy, Lux или Shader Forge. Все эти пакеты шейдеров дают красивую дополнительную картинку для корректного отображения физических материалов. Однако обычно хватает SkyShop.

Третий — Amplify Color, ProFlares или SSAO Pro. Хорошие и профессиональные цветокорректоры, профессиональные блики от линз, и SSAO с дополнительными параметрами (для отключения влияния затенения на туман).

Сразу замечу — все пакеты платные.

Поставьте и подключите SkyShop. Настройте небо и переключите шейдеры сцены, где нужно. Поставьте Lux (если это действительно нужно) и подстройте оставшиеся шейдеры.

Итак, мы активировали IBL-освещение. Для краткого понимания, что это такое: когда-то отражения в воде делали через cubemap от текущего skybox. Вода всегда отражала окружающее небо и ничего больше — очень быстро и очень просто. Этот же подход позже применили для освещения объектов окружающим их skybox. То есть небо и окружение вносит свой вклад в освещение всех элементов сцены, что делает общее впечатление от сцены гораздо более реалистичным.

Установите Amplify Color и настройте цветокоррекцию. Добавим эффекты SSAO Pro (screen space ambient occlusion — дополнительное затемнение в зависимости от геометрии сцены) и SkyShaft (он же GodRays — пробивающиеся лучики солнышка из стандартных пресетов), не забывая указать на источник света, GLobal Fog — и вот картинка уже гораздо веселее.

1. Основная составляющая картинки для фотореалистичного рендера — освещение. Если с освещением плохо, убедить игрока полностью не получится. Субъективно, ощущение от освещения — 40% ощущения от картинки. Освещение — сложная тема. Рассмотрим ее подробнее. Для понимания, как это работает, проще рассмотреть пошаговое изменение картинки, при включении всех возможностей, которыми мы хотели бы воспользоваться. Для начала я убрал цвета текстур (albedo), чтобы лучше видеть влияние освещения.

Здесь нет ничего, кроме контуров геометрии. Включаем один источник света. Да будет свет!

Мы включили источник освещения без теней. Все цвета albedo установлены на 50% серого. Включим тени и изменим цвет на белый.

Здесь у нас один источник, жесткие тени и белый цвет. Прохладно. Заменим тени на мягкие.

Картинка становится интереснее, однако освещение все еще очень искусственное. Добавим SSAO — систему затемнения на стыках геометрии внутри сцены.

Получается достаточно натурально. А теперь добавим IBL — освещение сцены в зависимости от окружающего неба.

Вот этот коричневатый оттенок — влияние окружающего освещения на картинку. Для лучшего понимания включим цвет на небе.

А теперь сравним, что получится, если мы сменим небо на другое.

Замена неба очень сильно влияет на картинку. В данном случае в IBL-компоненте присутствует и дифузная, и спекулярная составляющие.

Посмотрим на детальный срез технологий и улучшение картинки в черно-белом варианте.

Вот визуальное отличие. Каждая дополнительная технология освещения вносит свою долю реалистичности в картинку. Теперь отключаем IBL и включаем цвет.

Темно и грустно. Попробуем добавить SSAO.

Реалистичнее, но еще темнее. Попробуем увеличить интенсивность источника света.

Вот этот вариант более похож на стандартное освещение Unity4. Либо все темное, либо выглядит очень искусственно и пересвечено. Убираем интенсивность источника, убираем SSAO, включаем IBL.

Получилось почти то, что нам надо. Посмотрим на эту же картинку с другим небом. Положение и интенсивность источника света оставим без изменений — то есть дорожка к солнцу будет расположена некорректно. Однако нам это необходимо.

Картинка сильно изменилась. И выглядит очень натурально. Сравнение:

Здесь присутствуют стандартные постпроцессы: SSAO, Bloom, SunShafts, GlobalFog. Получилось практически то, что нужно. Можно еще добавить по вкусу эффект глубины резкости — для размытия контуров дальних деревьев.

Итак, работа над картинкой завершена. Посмотрим с другого ракурса:

Пока же просто покажем, как модель, воссозданная по фотографиям, чувствует себя среди IBL-освещения. В данном случае я взял модель коряги, восстановленную после фотограмметрирования по 170 фотографиям. Геометрия модели достаточно сложная, однако удалось восстановить её достаточно детально. Затем сделать низкополигональную модель и снять нормали. Скриншоты модели из MeshLab.

Сменим небо. Поскольку мы восстанавливали геометрию очень детально, все плюсы проявились при смене освещения. Практически как настоящая.

IBL действует очень хорошо. Стоит заметить, что для натуральных природных вещей спекулярный компонент влияет крайне незначительно, как и френель.

Итак, с базовыми элементами освещения разобрались.

2. Модели — текстуры и геометрия.

Создание хорошей и качественной геометрии и текстур — задачка тоже не из легких. Однако если раньше требовалось специально оптимизировать меши и соединения вершин, то сейчас все несколько упростилось. Напомню, что в картинке по-прежнему максимум 2 млн треугольников и до 2 тысяч drawcalls для PC. Если вы делаете шутер и хотите 60 и более FPS — и того меньше. Не забываем модный нынче PBR и текстурки для него в моделях.

Замечу, что Marmoset SkyShop в Unity4 использует не совсем полную поддержку PBS, однако в большинстве случаев ее хватает с головой. Также стоит определиться, какой подход для создания текстур и материалов вам более удобен. Сейчас их два — металлик и спекулярный.

Unity5 официально поддерживает оба подхода, однако SkyShop поддерживает урезанный спекуляр-подход. Для металлик-подхода можно использовать другие пакеты шейдеров, однако их совместимость с IBL от SkyShop периодически оставляет желать лучшего. Разница в подходах детально описана здесь. Где найти модели.

3. Если игра на природе — позаботьтесь о деревьях, траве, кустах. Тут, как и с освещением. Долгая история. Особенно в Unity.

4. В некоторых играх важно не забыть о воде. Речной, озерной, океанской. Динамической или статической.

Встроенная вода Unity в 99% случаев решает проблему, если не нужна динамическая вода. С динамической водой готовые решения очень и очень неоднозначны.

5. В постэффектах сложно соблюсти правильные пропорции.

Многие увлекаются DOF, bloom и прочими вкусностями. Рекомендации — хороший туман и ленсфлар с SSAO. Bloom по вкусу, но лучше не переборщить. Для линейного цветового еще tonemapping. Обычный GlobalFog и SSAOPro неплохо сочетаются.

6. Тени. В Unity они есть, очень неплохие из коробки. Можно не трогать (неужели тут что-то все-таки можно не трогать?).

7. Небо. Проще всего использовать один или несколько статических скайбоксов в Marmoset. Так как если делать IBL, то динамическое небо резко становится несколько проблемным.

Самый большой враг картинки — производительность. То есть всегда можно сделать красиво, но это не будет работать быстро. Начинаем тюнить картинку.

Для десктоп-систем стоит ориентироваться на два вида — офисные и игровые. Офисные компьютеры более слабые, имеют встроенные видео-подсистемы. Игровые или домашние обычно несколько более продвинуты.

Чтобы получить хорошую картинку, нужно обратить внимание на два фактора — drawcalls (в Unity5 — batches), и миллионы треугольников в сцене. Для офисных систем это, в идеале, около 1 тысячи drawcalls и 1 млн треугольников. Для игровых — 1,5-1,8 тысяч drawcalls и 1,5-2 млн треугольников (или даже больше).

Это необходимое, но недостаточное условие. Уменьшение числа drawcalls обязательно, иначе процессор просто не будет успевать подготавливать данные и обмениваться с видеоадаптером. А вот что касается треугольников и вершин — здесь производительность зависит уже от используемых шейдеров и модели освещения. Чем тяжелее шейдеры, тем меньше треугольников. То есть прямой зависимости нет.

Первым делом уменьшаем количество геометрических фигур. Для уменьшения треугольников используем LODs, oclussion culling, правильно настраиваем появление billbords-деревьев и pixel error в террейне. Следим, чтобы количество треугольников не сильно менялось в зависимости от угла зрения.

Затем занимаемся drawcalls. Здесь есть два варианта — уменьшение количества используемых в сцене материалов и батчинг мешей — объединение геометрии различных статических мешей в одну. Сильно оптимизировать стоит только если очень хочется заморочиться. Можно просто взять один из компонентов из Asset Store, который неплохо это делает. Однако важно помнить, что для успешного объединения меши должны разделять один материал. Хорошо справляется с задачей Advanced Foliage System, но он не совсем совместим с Marmoset.

Все это можно увидеть в информации Stats на панели Game.

В Unity Pro также есть профайлер, который позволяет посмотреть, что именно рендерится дольше всего или вызывает задержку — CPU, GPU, или что-то еще.

Итак, мы оптимизировали геометрию и материалы. Следует предостеречь от использования двусторонней геометрии (автозашивание — создание второго слоя геометрии, для листьев, например). Используйте шейдеры для односторонней геометрии, иначе рискуете столкнуться с Z-fighting — стробированием близко стоящих элементов геометрии, или их теней.

Тени. Включение теней добавляет два drawcalls на каждый материал с тенью. Один на прием тени, один на отбрасывание. Итого, включение теней умножает количество drawcalls на два в Unity4. В Unity5 проход приема теней отключен, потом drawcalls меньше. Динамические тени следует использовать аккуратно, существенно уменьшив расстояние их появления.

Подключаем воду, если нужно. Вода — тема бесконечная, но Unity-вода очень даже неплохая.

Подключаем эффекты. Все, что подключили и настроили, ослабляем чуть больше чем вполовину. Рекомендуется поставить SSAO (подпилить, чтобы через туман не пролезал — или просто купить SSAO Pro), GlobalFog (подпилить, чтобы не пролезал через воду), SunShafts стандартный, ToneMapping (если HDR), и далее — по желанию. Можно также настроить Amplify Color и Motion Blur, Bloom, Dirt Lenses и Lens Flares.

Настройки картинки для постпроцессов — это отдельная история.

Здесь, например, стандартный SSAO, Bloom, SunShafts (Blur 3), Depth Of Field (DX11) с Bokeh. Но в постпроцессах главное правило — не переборщить, и не совать всё что есть, без разбора.

Эффекты едят производительность. Особенно SSAO и прочие. Если используется deferred, можно поставить antialiasing постэффектом — так как MSAA нормально работать не будет. Но встроенные antialias-фильтры не слишком хороши. Посмотрели производительность эффектов, ненужное выбросили.

В итоге получили неплохое освещение — lightmapping + dynamic + shadows + soft shadows (осторожно, мягкие тень кушают производительность). Если поставили Marmoset — получите отличный IBL с переключаемыми зонами, хиленький и не очень честный PBR (ограничение архитектуры буфера глубины и нормалей в Unity4), и все это достаточно неплохо смотрится и почти не тормозит даже на достаточно слабых компьютерах.

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

Вот и все, продолжение следует.

Forward позволяет быстро рассчитывать четыре источника света per pixel, еще до четырех в режиме per vertex, и еще два в режиме сферических гармоник. В случае первых четырех на каждый, кроме первого, используется свой дополнительный проход.

Deferred позволяет получить очень большое количество источников света, которые не отбрасывают теней. Ограничение — в варианте Unity4 в базовых шейдерах deferred доступно только освещение по схеме Blinn-Phong.

G-Buffer — буфер, в котором происходит хренение промежуточных значений и расчетов в Unity4, сделан специфически. В нем хранятся, по одним данным, — нормали и шероховатость, по другим, — нормали и спекуляр с шероховатостью. Преимущество — не нужно рендерить в несколько текстур (все успешно хранится в одной). Это дает возможность работать на железе, которое не поддерживает MRT. Минус — расплачиваться за это приходится двумя дополнительными геометрическими проходами. Ну и добавить что-то свое уже сложнее.

Deferred в Unity5 состоит из:

  • diffuse color (rgb);
  • specular color (rgb);
  • smoothness (a), была заменена на roughness позже;
  • world normal (rgb, 10.2);
  • emission/light — Floating Point 16, если включен HDR;
  • Z-buffer: depth.

Требует OpenGL ES 3.0 на мобильных платформах и не работает на старом РС-железе (десятилетней давности). Для сравнения в Crysis 3.0 — 96 бит на пиксель MRT3 (D24S8, 32,32).

🏓 Создаем 2D-игру на Unity: инструкция для новичка

Недавно мы рассказали о том, как научиться разработке игр на Unity . Продолжим тему на практике и покажем, как новичку создать на этой платформе первую 2D-игру.

Если вы хотите получить более систематическое образование в области разработки игр, мы рекомендуем рассмотреть факультет разработки игр онлайн-университета GeekBrains.

Двумерные игры сравнительно просты: для них не требуется сложных 3D-моделей, программный код по сравнению с 3D-проектами выглядит понятнее. Такие игры популярны как на десктопах, так и на мобильных устройствах. Unity также позволяет разрабатывать игры и для браузеров.

За последние годы вышло много популярных двумерных игр:

Программная реализация 2D-игр проще не только из-за отсутствия третьего измерения: на самой сцене меньше объектов, вместо трехмерных моделей плоские спрайты, вместо скелетной анимации – покадровая. А еще 2D-игры проще портировать на другие платформы – легче найти новую аудиторию.

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

Предварительно рассмотрим основные понятия Unity, без понимания которых будет проблематично создать игру:

Предполагаем, что вы уже установили редактор и создали аккаунт на портале Unity.

В первую очередь создадим новый проект и откроем его настройки (Edit → Project Settings). Во вкладке Editor установим параметр Default Behaviour Mode в значение 2D

Настройка проекта Детальная настройка проекта

Следующим шагом сохраним текущую активную сцену, назвав ее, например, Scene1. Теперь создадим основные игровые объекты: ракетку, мяч и менеджер игры, в котором будет храниться основная логика игры.

1. Создаем пустой объект, переименовываем в GameManager.

Создаем пустой объект

Создаем пустой объект

3. Создаем квадратный спрайт, называем его Pad (Assets → Create → Sprites → Square). Аналогично создаем круглый спрайт Ball (Assets → Create → Sprites → Circle). Масштабируем спрайт Pad со следующими параметрами – x:0.5, y:2.5, z:1.

Создаем спрайты

Создаем спрайты

4. Создаем префабы для Pad и Ball, после чего добавляем к ним компонент Box Collider 2D (включаем параметр Is Trigger) и компонент Rigidbody 2D (выставляем параметр Body Type в значение Kinematic).

Добавляем .компонент Box Collider 2D Настраиваем.компонент Box Collider 2D Добавляем компонент Rigidbody 2D Масштабируем спрайты

6. Заполняем скрипты следующим кодом.

GameManager.cs Ball.cs Pad.cs

6. Добавляем к префабу Ball и Pad теги с аналогичными именами. Выделив префабы, в инспекторе мы можем видеть выпадающий список тегов. Там же расположены и кнопки для добавления и редактирования тегов.

7. В настройках камеры выставляем параметр Projection в значение Orthographic, а параметр Clear Flag – в значение Solid Color.

Настройка камеры

Настройка камеры

8. Настраиваем кнопки, как показано на следующих скриншотах (Edit → Project Settings → Input Manager).

Настройка ввода, основное Настройка ввода, первый игрок Настройка ввода, второй игрок

Вот и всё, игра готова!

Пинг-понг, итоговый результат

Пинг-понг, итоговый результат

Билд для платформы Windows

1. Официальный туториал от Unity, где детально рассмотрен процесс создания roguelike RPG.

2. Youtube-канал Brackeys , где можно найти серию видеоуроков по созданию 2D-платформера.

3. Youtube-канал N3K EN содержит множество уроков как по отдельным компонентам Unity, так и полноценные серии уроков по созданию игр с нуля.

Если у вас мало опыта в разработке игр на Unity, мы рекомендуем обратить внимание на факультет разработки игр GeekBrains . Материал хорошо структурирован и содержит все необходимое для того, чтобы стать профессиональным Unity-разработчиком.

В числе прочего вы разработаете 2D-платформер с физическими загадками и динамическим освещением, научитесь портировать его на мобильные устройства. Кроме того, разработаете полноценную браузерную стратегию, а также игру в жанре двухмерных гонок.

По окончании обучения вы будете иметь портфолио из 4 игр, которое можно показать на собеседовании. Если же какая-то часть материала будет непонятна, вы всегда можете обратиться к персональному преподавателю.

Unity поддерживает текстурированные 3D модели, созданные в различных программах. Это краткое руководство было создано игровыми художниками и разработчиками в Unity, чтобы помочь вам в создании ассетов, которые будут работать лучше и эффективнее в вашем Unity проекте.

Масштаб и единицы измерения

  • Установите единицы измерения системы и проекта в вашем программном обеспечении для согласованного использования с Unity, например, метрические.
    • Работа в правильном масштабе может быть важна как для освещения, так и для симуляции физики.
    • Учтите, что, например, в Max единицы по умолчанию - дюймы, а в Maya - сантиметры.
    • В Unity масштаб импортируемых FBX и файлов 3d приложений - разный; проверьте настройку масштаба импортируемого FBX в инспекторе.
    • Если вы сомневаетесь, экспортируйте метрический куб (куб с длиной ребра в 1 метр) с вашей сценой для сравнения с встроенным в Unity метрическим кубом.

    Файлы и объекты

    • Моделируйте с эффективной топологией. Используйте полигоны только там, где они необходимы.
    • Оптимизируйте вашу геометрию, если она содержит слишком большое количество полигонов. Многие модели персонажей должны быть грамотно оптимизированы или даже пересобраны художником, особенно если они получены/собраны из:
      • Данных 3D захвата
      • Poser
      • Zbrush
      • Других высокоплотных Nurbs/Patch моделей, предназначенных для рендера

      Метод, который вы используете для сборки объектов может значительно влиять на количество полигонов, особенно, если не производить оптимизацию. На изображении выше показан один и тот же shape меш, со 156 треугольниками справа и 726 слева. 726 может звучать не так серьёзно, когда речь идёт о полигонах, но если такой меш использован на уровне 40 раз, вы начнёте замечать разницу. Хорошее правило для применения на практике - начинать с простого и затем добавлять детали по мере необходимости. Всегда проще добавить полигон, чем удалить.

      Если вы создаёте текстуры с размером, кратным степени двойки (напр., 512x512), текстуры будут более эффективны и не потребуется изменение их масштаба во время сборки проекта. Вы можете использовать до 4096x4096 пикселей (хотя на некоторых видео картах и платформах максимально возможный размер - 2048x2048). Поищите в сети советы экспертов по созданию хороших текстур. Некоторые из этих советов могут помочь вам в получении наиболее эффективных результатов в вашем проекте:

      • Работайте с исходным файлом высокого разрешения вне проекта Unity (напр., PSD или файл Gimp). Вы всегда можете отмасштабировать размер исходной графики в меньшую сторону, но не наоборот.
      • Используйте требуемое в сцене разрешение для текстур (сохраните копию, например оптимизированный 256x256 PNG или TGA файл). Вы можете судить по тому, где будет отображаться текстура и где она будет видна.
      • Храните файлы текстур в одном месте в вашем Unity проекте (например: \Assets\textures).
      • Убедитесь, что ваш рабочий файл с 3D контентом ссылается на эти текстуры для сохранения целостности при сохранении / экспорте.
      • Используйте свободное место в вашей текстуре, но учтите, что разные материалы могут работать с разными частями одной и той же текстуры. Это может привести к многократному использованию / загрузке этой текстуры.
      • Разделяйте текстуры для альфы (cutout) и элементов, которые могут обрабатываться различными шейдерами. Например, одиночная текстура, показанная ниже (слева) была заменена тремя меньшими по размеру текстурами (справа).
      • Используйте тайлинг текстуры (те, которые могут повторяться бесшовно), тогда вы сможете использовать более высокое разрешение на повторяющихся участках.
      • Удаляйте из вашего изображения повторяющиеся элементы, которые легко заметить и будьте осторожны с контрастностью. Если вы желаете добавить деталей, используйте декали и объекты для разряжения повторений.
      • Unity заботится о сжатии для целевой платформы, так что, если ваш исходный файл уже не является JPG верного разрешения, лучше использовать lossless формат для ваших текстур.
      • При создании текстуры из фотографии, уменьшайте её используя отдельные модульные секций, которые могут повторяться. Например, вам не нужны 12 одинаковых окон, использующих текстурное пространство. Таким образом, вы можете иметь больше деталей на пиксель для этого одного окна.
      • Организуйте и именуйте материалы в вашей сцене. Таким образом вам будет намного проще редактировать ваши материалы в Unity после импорта.
      • Вы можете выбрать создание материалов в Unity из:
        • имя материала> либо: or
        • - убедитесь, что вы знаете, какой из вариантов выбрать.
        • Diffuse цвет, Diffuse текстура и имена обычно поддерживаются
        • Shader model, specular, normal, другие вторичные текстуры и настройки субстанций не будут опознаны/импортированы (должно появиться в Unity 3.5)

        Unity может использовать два типа файлов: сохранённые файлы приложений для 3D моделирования и экспортированные 3D форматы. Выбор в пользу одного из них может быть довольно важен:

        Сохранённые файлы приложений для моделирования

        Unity может импортировать путём конвертации: файлы Max, Maya, Blender, Cinema4D, Modo, Lightwave & cheetah3D, напр., .MAX, .MB, .MA и т.д. см. раздел Импортирование объектов для дополнительной информации.

        Преимущества:

        • Быстрый итеративный процесс (сохраняете изменения и Unity их “подхватывает”)
        • Изначально просто

        Недостатки:

        • Лицензионная копия программы (чей формат используется) должна быть установленна на всех машинах, на которых используется проект Unity
        • Файлы могут быть неоправданно большими из-за ненужных данных
        • Большие файлы могут замедлить “живое” обновление Unity
        • Меньше проверок и сложнее отлаживать поблемы

        Экспортированные 3D форматы

        Unity также может читать FBX, OBJ, 3DS, DAE & DXF файлы. Для подробного руководства по экспорту, вы можете обратиться к этому разделу.

        По данным сайта Game Developer, в 2021 году 49,48% всех платных игр, вышедших в Steam, разработаны на Unity. А в сфере мобильных игр этот показатель уже давно превысил 50%.

        Благодарим за помощь в подготовке материала fullstack-разработчика DECA Games Рашида Гайнутдинова и технического геймдизайнера Banzai Games Дмитрия Лукичева.

        Разработка игр на Unity: почему этот движок так популярен, кто работает с ним и сколько зарабатывает

        Владимир Семыкин

        Простота, универсальность, гибкость — ключевые особенности игрового движка Unity

        Unity — один из самых популярных игровых движков в мире. Его ценят за простоту — у движка низкий порог входа, поэтому он доступен новичкам, универсальность — с его помощью можно сделать игру для любой современной популярной платформы (ПК, iOS, Android, Nintendo Switch, PlayStation 4 и 5, Xbox One, Series X|S), гибкость — Unity можно настроить под конкретный проект, чтобы сделать разработку максимально эффективной.

        Разработка игр на Unity: почему этот движок так популярен, кто работает с ним и сколько зарабатывает

        Благодаря особенностям движков, в индустрии произошло разделение: если компания разрабатывает ААА-игру, то предпочтение отдают Unreal Engine, поскольку он более производителен и имеет больше готовых функций, а Unity чаще всего используют для инди-проектов или мобильных игр — в движке меньше стоковых функций и его можно охарактеризовать как песочницу, из которой можно создать мастерскую, удобную для работы над конкретным жанром или серией игр.

        Главное преимущество Unity — это простота и гибкость.

        Разработка игр на Unity: почему этот движок так популярен, кто работает с ним и сколько зарабатывает

        Рашид Гайнутдинов

        Fullstack-разработчик DECA Games

        Вам не нужна команда разработчиков с большим опытом, чтобы сделать качественную игру, потому что в Unity уже реализовано и отполировано большинство необходимых функций. Вам нужно лишь научиться ими пользоваться.

        Гибкость Unity позволяет компаниям в короткие сроки и с минимумом вложений подстраивать движок под собственные нужды — они могут расширять набор функций под конкретный проект. Это касается как масштаба, так и жанра — Unity одинаково хорошо подходит как для создания небольшой головоломки, так и для огромной классической RPG.

        Разработка игр на Unity: почему этот движок так популярен, кто работает с ним и сколько зарабатывает

        Дмитрий Лукичев

        Технический геймдизайнер Banzai Games

        Если вы новичок или работаете в небольшой независимой команде, то Unity — однозначно ваш выбор.

        Unity подходит даже для соло-разработки. Создатель медитативной приключенческой игры A Short Hike Адам Робинсон сделал её в одиночку всего за четыре месяца — до этого он часто участвовал в геймджемах и просто экспериментировал с механиками, поэтому к моменту начала разработки он отлично разбирался в движке и его инструментах.

        Разработка игр на Unity: почему этот движок так популярен, кто работает с ним и сколько зарабатывает

        Канадский разработчик Адам Робинсон, известный как adamgryu, в одиночку разработал игру на Unity. На это ему потребовалось четыре месяца

        Кроме того, в магазине движка есть большое количество разнообразных ассетов — и платных, и бесплатных. Можно найти как простые 3D-модели и незамысловатые механики, так и сложные системы, которые помогут реализовать отдельные игровые аспекты: искусственный интеллект, инвентарь и так далее.

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

        Разработка игр на Unity: почему этот движок так популярен, кто работает с ним и сколько зарабатывает

        Читать также

        Разработка игр на Unity: почему этот движок так популярен, кто работает с ним и сколько зарабатывает

        Что делает геймдизайнер и как им стать

        Unity удобнее и востребованнее большинства альтернатив — конструкторов и самописных движков

        Помимо Unity и Unreal Engine 4 существует множество игровых движков, но они или сложнее для освоения, или обладают меньшим количеством функций и ограничивают возможности разработки, или являются игровыми конструкторами — программами, с помощью которых можно создать простую игру без особых навыков и долгого обучения. Такие движки и программы не отличаются особой популярностью среди разработчиков-профессионалов: с ними обычно работают или одиночки-энтузиасты, или маленькие инди-студии.

        Разработка игр на Unity: почему этот движок так популярен, кто работает с ним и сколько зарабатывает

        Дмитрий Лукичев

        Технический геймдизайнер Banzai Games

        Многие игровые конструкторы могут упростить создание игры, но если ваша конечная цель — стать востребованным специалистом в игровой индустрии, то лучше изучать востребованные инструменты. Чаще всего в вакансиях требуется знакомство с Unity или Unreal Engine 4, а знание GameMaker или Construct может оказаться лишь незначительным плюсом, так как в работе это вряд ли потребуется.

        Разработка игр на Unity: почему этот движок так популярен, кто работает с ним и сколько зарабатывает

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

        Разработка игр на Unity: почему этот движок так популярен, кто работает с ним и сколько зарабатывает

        Рашид Гайнутдинов

        Fullstack-разработчик DECA Games

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

        Читайте также: