danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

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

split97 split97

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

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

Логотип проекта Unity

Основные механизмы Unity

ВНИМАНИЕ! МНОГАБУКАФ ДЕТЕКТЕД!

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

Рассматриваемые темы в статье

  • Камеры
  • Многоугольники, ребра, вершины и меши
  • Материалы, текстуры, и шейдеры
  • Физика твердых тел
  • Столкновение (Collision)
  • Идея Unity
  • Путь падавана Unity
  • Ассеты
  • Игровой объект
  • Компоненты
  • Сценарии
  • Шаблоны игрового проекта

Игровая сцена в разметке объектов Unity

Основные механизмы Unity — Unity — DevTribe: инди-игры, разработка, сообщество
Прим. Данные трактовки названий являются свободным переводом английских наименований в интерфейсе Unity. Если вам это не нравится или вы используете свою терминологию (или еще хуже неологизмы вроде "колижены" или "геймобджекты") - это ваши проблемы :)

Камеры

Камеры существуют в трехмерном мире, поскольку они являются портами вывода (View port) результирующего изображения на экран. Камеры могут быть расположены в любой точке игрового мира Unity, имеют поле зрения (FOV), которое представляет собой форму пирамиды. Они имеют много различных свойств и могут быть заскриптованы и вписываться в необходимый сценарий вашей игры.
С изменением параметра поля зрения (FOV) трехмерной камеры - меняется и порт вывода (view port).

Основные механизмы Unity — Unity — DevTribe: инди-игры, разработка, сообщество

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

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

Многоугольники, ребра, вершины, и меши

При построении трехмерных фигур все объекты в конечном счете составляются из связки обычных двухмерных форм, известных как многоугольники. При импорте моделей из среды моделирования в Unity, все многоугольники преобразуются в треугольники, они же полигоны. В свою очередь треугольник состоит из трех вершин, связанных ребрами. Зная эти вершины, движок игры в состоянии производить вычисления точек столкновений, используя сложный алгоритм обнаружения с коллайдером Меша. Такие вычисления позволяют точно определить местоположения пересечения, например точка попадания пули в контексте разработки шутера.
Комбинируя множество связанных между собой полигонов, используя трехмерное моделирование, позволяют Вам строить сложные формы, известные, как Меши (Mesh).

Основные механизмы Unity — Unity — DevTribe: инди-игры, разработка, сообщество

Во время разработки игры, разработчику крайне важно понимать важность количества отображаемых полигонов на экране. Чем выше число полигонов, тем больше работы требуется проделать компьютеру, прежде чем вывести все необходимые объекты на экран. Это именно то, что мы могли наблюдать в прошедшие пару десятков лет - увеличения уровня детализации от ранних трехмерных игр до сегодняшнего дня. Просто сравните визуальное оформление таких игр, как ХХХ (199*) и YYYY (200*) и ZZZZ (201*). Это происходит в результате появления более производительного оборудования, и теперь разработчики могут позволить размещать на экране более высокополигональные модели и эта тенденция будет неизбежно продолжаться. Но, всегда помните, что оптимизацией не стоит пренебрегать.

Материалы, текстуры, и шейдеры

Материалы (Materials) - общее понятие ко всем трехмерным формам, поскольку они дают возможность настроить визуальных характеристики трехмерной модели. От основных цветов до карты отражения, содержащей информацию об окружающих объектов. Материал работает с шейдером (Shader), который является сценарием, который отвечает за способ отрисовки того или иного объекта, на который он был применен.

Основные механизмы Unity — Unity — DevTribe: инди-игры, разработка, сообщество

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

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

  • 16х16
  • 32х32
  • 256х256
  • 512х512
  • 1024х1024

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

Физика твердых тел

Внутри игрового движка, встроен физический движок (Physics Engine), который позволяет промоделировать взаимодействие объектов между собой по основным физическим законам реального мира. В Unity используется Nvidia PhysX, самый популярный и весьма точный коммерческий физический движок.
В движке игры не каждый объект моделируется, как физический объект. Во-первых, потому что это требует большой обработки данных, и во-вторых, потому что это просто не имеет смысла. Например, в трехмерной игре, имеет смысл сделать объект "Автомобиль" настроить, как физический объект, но для окружающий объектов, таких, как деревья, стены и т.д. - это не имеет смысла, т.к. они являются статическими объектами на сцене. Поэтому, разрабатывая игру, добавляйте компонент Твердого тела (Rigidbody, не путать с Rigidbody 2D), только тем объектам, которые вы хотите отдать под контроль физического движка.

Физический движок для игр использует Динамику) для моделирования твердого тела, создавая реалистичное движение. Это означает, что вместо статичных объектов трехмерного мира, будут динамическое объекты, имеющие следующие дополнительные свойства:

  • Масса
  • Сила тяжести
  • Скорость
  • Трение

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

Обнаружение столкновения

Один из самых важных компонентов физического движка является обнаружение столкновений - способ, с помощью которого мы анализируем наш трехмерный мир для определения, что некоторые из объектов столкнулись между собой. Добавляя на объект компонент Коллайдера (Collider), мы размещает невидимую сеть вокруг объекта. Эта сеть имеет свою форму и отвечает за сообщения о любых столкновениях с другими коллайдерами, заставляя движок игры вызывать соответствующее поведение.

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

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

Идея Unity

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

Давайте рассмотрим простой пример.

Путь падавана Unity

Если бы я хотел добавить в игру живой шар, то я начал бы со сферы. Это можно быстро и легко сделать с помощью меню Unity, это даст Ваш новый игровой объект с мешем сферы, и компонент Renderer, чтобы сделать этот объект видимым на экране. Также я могу добавить на мою сферу компонент твердого тела (Rigidbody). Это скажет Unity, что к данному объекту необходимо применить физический движок. С этим компонентом приходят такие настройки, как масса, сила тяжести, способы применения силы к объекту, коэффициенты трения и т.д.

Основные механизмы Unity — Unity — DevTribe: инди-игры, разработка, сообщество

Более того я хотел бы добавить небольшую плоскость и разместить её ниже уже созданного шара. Это делается также просто, как и создание шара - с помощью меню Unity. Если мы запустим игру, то увидим, что шар просто упадет плашмя на плоскость. Но, что, если я хочу, чтобы он повел себя, как обычный футбольный шар, который бы еще и подпрыгнул? Это просто! У компонента коллайдера (Collider) есть свойство, которое позволяет задать физический материал (Physics Material). Это свойство позволяет настраивать поведение объекта при столкновении с определенными поверхностями других объектов. Здесь мы можем выбрать уже существующие материалы, в данному случае нам подойдет - !!упругий". При повторном запуске, когда шар упадет на плоскость, он отскочит.
В итоге, простая сцена готова за пару щелчков мыши!

Такой подход является самым основном, во время разработки игры в Unity. Сперва все начинается с простых элементов и затем они постепенно обзаводятся дополнительными компонентами, или становятся часть составных. Разбивание сложной задачи на мелкие и последовательное их решение - вот основное правило разработки Unity.

Ассеты

Ассеты (Assets) - это стандартные блоки всех проектов Unity. От графики в форме файлов изображений до трехмерных моделей и звуковых файлов. Unity обращается к этим файлам, которые вы будете использовать во время создания игры, как ассеты. Это как раз та причина, почему в любой папке проекта Unity, все используемые файлы хранятся в основной папке "Assets"

Основные механизмы Unity — Unity — DevTribe: инди-игры, разработка, сообщество

Сцены

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

Игровые объекты (Game Objects)

Когда ассет используется на сцене игры, то он становится игровым объектом (Game Object). Все игровые объекты содержат по крайней мере один компонент для старта - компонент Transform. Данный компонент, позволяет движку игры управлять положением объекта в игровом мире, он указывает координаты позиционирования, вращения и масштабирования объекта для каждой из существующей в игре оси - X, Y, Z. Так же, вы можете передать это объект в параметры какого-либо скрипта и там управлять им, например установив ему необходимую позицию, угол вращения, или масштаб. От этого базового объекта вы сможете в дальнейшем с легкостью переходить к другим его компонентами. Вы так же в праве добавлять новые компоненты на игровой объект, добавляя необходимые функциональные возможности, чтобы воспроизводить сценарий игры, который Вы только можете вообразить.

Компоненты (Components)

Компоненты (Components) могут быть разных видов. Они могут быть сделаны для того, чтобы расширять поведение объекта, определять его, или влиять на другие аспекты функций объекта в игре. Прикрепляя компонент к объекту, Вы сможете немедленно применить новые части игрового движка к Вашему объекту.

Основные механизмы Unity — Unity — DevTribe: инди-игры, разработка, сообщество

Общие компоненты разработки игры уже реализованы, как встроенные в Unity, такие как компонент твердого тела (Rigidbody), освещение (Light), камеры (Camera), генераторы частиц (Particles Emitters), примитивные объекты (Primitives) и т.д. Для того, чтобы все это оживить необходимо разрабатывать сценарии (Scripts), которые также являются компонентами объектов в Unity.

Сценарии (Scripts)

Сценарии (Scripts) - это компоненты Unity, и основная часть разработки игры и поэтому заслуживают, отдельного ключевого понятия. Unity предлагает на выбор три разных языка программирования для разработки скриптов:

  • JavaScript - функциональный язык программирования с простым синтаксисом.
  • C# - объектно-ориентированный язык программирования
  • Boo

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

Для написания сценариев возможно использовать любой текстовый редактор, но лучше использовать специальную среду разработки. Во время установки Unity предлагает сразу же установить такую среду - MonoDevelop, но вы вправе и использовать такие вещи, как Visual Studio, VSCode или Sublime. Использование специального обеспечения для написания сценариев упростить Вам процесс разработки, в данные среды входят такие замечательные вещи, как автоматическая проверка синтаксиса, авто-завершение и подсказки по существующим функциям. По умолчанию, Unity будет пытаться использовать MonoDevelop, но Вы сможете изменить это в настройках Unity.

Шаблон игрового объекта (Prefab)

Использование игрового движка Unity крутится вокруг использования различных игровых объектов (GameObject), размещенных в игровом мире. Unity предоставляет возможность хранить такие объекты со всеми их свойствами как ассеты (Assets) проекта, которые Вы сможете повторно использовать в различных частях Вашей игры. Вы сможете изменить параметры и компоненты игрового объекта, основанного на шаблоне, индивидуально.

Рассмотрим "Ящик" в качестве примера. Допустим, что Вы настроили вес вашего объекта, написали скрипт поведения для её разрушения и наверняка, Вы, захотите использовать этот объект в игре ни один раз. Шаблоны (Prefab) позволяют Вам хранить объект в полной комплектации, со всеми компонентами и текущими конфигурациями. Они сопоставимы понятию MovieClip в Adobe Flash, думайте о шаблонах (prefabs) просто как о пустых контейнерах, которые вы можете заполнять объектами, чтобы сформировать набор данных, который Вы вероятно переработаете, и все эти изменения отразятся на объектах сцены, основанных на этом шаблоне.


На этом основная вводная в понятия Unity заканчивается. Оставляйте ваши вопросы в комментариях.
Буду рад конструктивной критике.

Смотрите также:


Комментарии



джва года ждал такую статью, решпект!

Кет:

джва года ждал такую статью, решпект!

Спасибо.
Планируем продолжить и разбирать каждую мелочь.

Наконец-то кто-то это сделал - будет такой своеобразный эксклюзив: первый русский перевод мануала.

GeneralElConsul:

Наконец-то кто-то это сделал - будет такой своеобразный эксклюзив: первый русский перевод мануала.

Мануал как-бы и так переведён локализаторами-энтузиастами под крылом разрабов.

Клёвая статья! Правда вышла бы она пораньше, когда я всё это изучал)

RSQR:

Мануал как-бы и так переведён локализаторами-энтузиастами под крылом разрабов.

В последнее время очень часто в него лажу и он большей частью не переведен.

GeneralElConsul, ++, а ещё там скринов не хватает часто, для наглядности.
Тут же всё кратко и по делу), хоть и поверхностно. Но для входа, то что надо, как раз.

RSQR:

локализаторами-энтузиастами под крылом разрабов.

видел я этот манул, туда лучше не смотреть, там дичайший бред перевели, так что лучше оригинал уж читать

Справка