alexprey alexprey

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

alexprey alexprey

EfReeZe, о да, тогда было знатное время и игра казалась сделано круто :D До сих пор иногда играю на телефоне от скуки)

EfReeZe EfReeZe

Это был наш далёкий 2014...

Jusper Jusper

Запись трансляции на YouTube

Jusper Jusper

Случайно сделали битву сварщиков
https://devtribe.ru/p/slash-polygon

Jusper Jusper

Внезапно на сайте потерялся 15-й выпуск. Перевыложили.

Jusper Jusper

Я вам еще не закончил писать обратную связь по боевке, есть много вещей которые немного смутили, но они поправимы. Завтра, если перестанут дергать - чиркану. Спасибо за демку!

Jusper Jusper

ruggaraxe,

Да, в этом плане все ок. Логично, что графен на старой машине, если не упарываться, не взлетит. Но я рад, что это было не 5 фпс, как даже в некоторых АА (типа Pillars of Eternity в некоторых схватках...

Jusper Jusper

ruggaraxe,

Подкреплю ее к публикации.

ruggaraxe ruggaraxe

Jusper, вот ссылка на анкету (я затупил со ссылкой с топике, сорри)
https://docs.google.com/forms/d/e/1FAIpQLSd_Wn53lJFrnfGpWI2IX...

ruggaraxe ruggaraxe

Jusper, честно говоря, да на 800х600 даже не проверяли... :) сорри. Ориентировались на FullHD и выше. Хотя над интерфейсом конечно же надо еще хорошенько поработать.
Тултипы постараемся сделать обязательно к следующей версии...

GenElCon GenElCon

Jusper,

Наверное. В прошлом они сделали Endless Legend - посмотри и сразу станет ясно в какую сторону они работают.

Jusper Jusper

GenElCon,

Я не очень понял по трейлеру геймплей. Это что-то типа цивы? Или это RTS?

GenElCon GenElCon

Humankind от разработчиков Endless Legends (и Space, но тут важно именно Legends).
А также согревающие сердца олдов трейлеры Port Royal 4 и Knights of Honor.

Jusper Jusper

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

Jusper Jusper

Первое, оно же самое тяжелое - UI. Я конечно, понимаю, что 800x600 совсем уже не в моде (завтра проверю на нормальной широформатной машине). Заблюренный текст я еще прочитать могу, но вот конкретно размер его крайне мал...

...
Jusper Jusper

ruggaraxe, я поиграл на старом маке 2012 года (Macbook Pro, Intel HD 4000), рад что с учетом довольно нагруженной по свету и теням картинке игруля не лагает как последняя сволочь (лагает конечно, но очень терпимо...

Логотип проекта 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:

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

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

Справка