Разработка вашей первой игры с помощью Unity и C#
Как архитектор ПО я создал много систем, занимался обратным инжинирингом вредоносного программного кода и, в целом, мог бы достаточно легко разобраться почти в любом коде. Однако, когда дело дошло до создания игр, я слегка растерялся, даже не зная, с чего начать. На заре эпохи Windows я немного программировал графику в неуправляемом коде — не могу сказать, что это доставило мне удовольствие. Я тогда начинал разработку на DirectX, но осознал, что, хотя он обладает колоссальными возможностями, мне пришлось бы писать слишком много кода для того, что я хотел сделать.
И вот однажды я решил поэкспериментировать с Unity — инфраструктурой, способной на удивительные вещи. Это первая из четырех статей, в которой я расскажу об основах и архитектуре Unity. Я покажу, как создавать двух- и трехмерные игры и, наконец, как вести разработку с ее применением на платформах Windows.
Примеры игр
Конечно же, перед изучением чего-либо хочется более точно понимать что вы сможете получить по итогу. По этой причине мы предлагаем взглянуть на несколько проектов, что были созданы на основе движка Unity.
Среди крупных проектов можно отметить следующие проекты:
- игра «Firewatch» с красивой и насыщенной графикой;
- проект игры про Рика и Морти в формате дополненной реальности (проект «Virtual Rick-ality»);
- игра «The Forest» про выживания в дикой местности;
- мобильный нуарный проект «Inside»;
- космическая игра «Kerbal Space Program».
Это лишь мизерная часть из тех проектов, которым стоило бы уделить время. На самом деле таковых проектов несчетное количество. Если вы решили делать игры, то начать изучать движок Unity это всегда хорошая затея.
Первые проблемы
До тех пор, пока предмет был один, простой квадрат, все казалось простым. Я думал выпущу игру за неделю, ну может две, так как еще графику рисовать, нюансы всякие.. Ага, как же..
Выделив какое то время рисованию предметов я задумался: — «А как мне их теперь хранить в игре??».
На этом вопросе я залип надолго. Так как не хотел все переделывать, когда будет уже очень много предметов, скажем 500.
Самым адекватным решением было создать mySql базу и работать с ней, но раньше в играх я их не использовал, поэтому были еще варианты. Например, создать структуры классов, собрать в массивы и каким то образом их сохранять куда либо.. Но пришлось бы пилить свой редактор.. Были и еще какие то мысли, в общей сложности я решал этот вопрос 2 дня (по вечерам после работы).
Было решено разбираться в базах данных. Точнее как с ними работать из под Unity.
Посмотрел пару видео, прочел пару статей. Да вроде не сложно, подумал я и начал делать. Скачал нужные библиотеки, написал примитивный код. Работает! Но не на телефоне, тут меня ждало разочарование. Библиотека, которую я скачал из того видео, не работала на телефоне ни в какую. Я скачивал ее их разных источников, разных версий. Одна из 10 заработала! Я был счастлив и добавил все свои 10 предметов в базу.
Prefabs (Префабы)
Сохранить эти платформы как префабы. Просто перетащите их в папку Prefabs :
Таким образом вы создадите Prefab , точно отвечающий оригинальному игровому объекту. Вы увидите, что игровой объект, который вы конвертировали в Prefab , представляет собой новый ряд кнопок прямо под его именем:
Заметка о кнопках «Prefab»: При последующей модификации игрового объекта, вы можете использовать кнопку «Apply», чтобы применить эти изменения к Prefab , или кнопку «Revert», чтобы отменить все изменения игрового объекта в свойстваъ Prefab . Кнопка «Select» переместит выбранные свойства в ассет Prefab в окне проекта (они будут выделены).
Создание префабов с объектами-платформами упростит их повторное использование. Просто перетащите Prefab на сцену, чтобы добавить копию. Попробуйте добавить другую платформу таким же образом.
Теперь вы можете добавить больше платформ, меняющих свои координаты, размеры и плоскости (вы можете поместить их на заднем или переднем плане, просто установите координату Z для платформы на 0 ).
На данном этапе все это выглядит еще сыроватым, но в следующих двух главах мы добавим параллаксный скроллинг, и сцена оживет у нас на глазах.
Прежде чем двигаться дальше, мы модифицируем наши слои, чтобы избежать каких-либо проблем с порядком их отображения. Для этого просто измените позицию игровых объектов по оси Z во вкладке Hierarchy (Иерархия) следующим образом:
Слой | Позиционирование по оси Z |
---|---|
0 — Задний фон | 10 |
1 — Средний фон | 5 |
2 — передний фон | 0 |
При переключении из 2D режима в 3D, в окне «Scene» (Сцена) вы будете четко видеть слои:
Кликнув на игровом объекте Main Camera , вы увидите, что флажок Projection установлен на Orthographic . Эта настройка позволяет камере визуализировать 2D игру без учета трехмерных свойств объектов. Имейте в виду, что даже если вы работаете с 2D объектами, Unity по-прежнему использует свой 3D движок для визуализации сцены. Рисунок выше это наглядно демонстрирует.
В следующем уроке:
Вы только что узнали, как создать простой статический фон и как отобразить его должным образом. Затем мы научили вас, как сделать простые спрайты. В следующей главе мы узнаем, как добавить игрока и его врагов.
Организация проекта
Unity не ставит перед собой целью навязать конкретный способ организации игровых ресурсов в вашем проекте. Вы, возможно, предпочтете организовать их в соответствии с типами, используя отдельные папки для них, назвать их, к примеру, «Textures», «Models», «Sound effects» и т.д. В компании Unity Technologies, мы пришли к выводу, что такая структура хорошо подходит для маленьких проектов. Для более сложных проектов, нашим пользователям в большинстве своем рекомендуется организовывать ресурсы в соответствии с их функциями, возможно, группируя их в папках, как например, «Player», «Enemies», «Props», «Scenery» и так далее.
Проект данного урока был разработан группой участников нашей команды и рос взаимосвязано, и он отражает их различные условные обозначения и стили. С целью придания достоверности, мы решили оставить организацию проекта такой, какой она была при разработке, поскольку она наиболее характерна для организации «маленьких» проектов и их структуры.
Подготовка рабочего места и поиск предметов игры
Персонажем, о котором будет идти речь, является «Машинка», выбрать можно любую, от грузовика до легковушки, а так же конечно, трек, по которому она будет двигаться — «Дорога». По треку машинка ехать не будет, в свою очередь движение зададим дороге, таким образом, создадим иллюзию движения. Главное, что бы проекция на предметы была сверху, а не сбоку.
Далее делаем вход и настройку системы:
- Запускаем приложение Unity 3D;
- В появившемся окне кликаем «New Project», прописываем имя проекта, проставляем локацию для сохранения, ставим отметку напротив модуля 2Д и нажимаем кнопку «Create Project»;
- При открытии программы, можно упорядочить удобное расположение рабочих окон, передвинуть их, нажав ПКМ и перетащив;
- Выбираем File – Build Setting, если выбираемый проект компилируется под файловые системы типа Windows, MAC и т.п., то выбираем Android и нажимаем «Switch Platform»;
- Перемещаем выбранные ранее заготовки в Юнити, в папку Assets.
Окно проекта
Окно проекта (Project Window) содержит все ассеты, используемые вашей игрой. Вы можете организовать свои ассеты по папкам. Если вы хотите использовать их, вы можете просто перетащить их из окна проекта в окно иерархии.
Кроме того, вы можете перетащить их из окна проекта в окно сцены. Если вы перетащите файлы со своего компьютера в окно проекта, Unity автоматически импортирует их как ассеты.
Unity организует ассеты в окне проекта так же, как файловая система ОС.
У вас может возникнуть соблазн вносить изменения непосредственно в файловую систему, а не в окно проекта, но это большая ошибка, которая сломает ваши ассеты — и, возможно, сломает вашу игру!
Unity поддерживает метаданные для каждого ассета, поэтому перемещение ресурсов между папками в файловой системе нарушает метаданные. Если вам необходимо внести какие-либо организационные изменения в свои ассеты, особенно в префабы, всегда вносите эти изменения в окне проекта.
Поделитесь советами, которые помогут в создании игры.
Ставьте дедлайн релиза игры. Если у выхода игры нет чётко обозначенного срока, её создание может растянуться на долгие годы. Помните, что лучше выложить игру с багами, но вовремя: её начнут тестировать пользователи, и вы сможете дорабатывать игру и улучшать её в процессе.
Не забывайте тестировать приложение перед релизом. Это позволит вам заметить новые ошибки, исправить их и понять, нужно ли вообще продолжать работу над игрой в том же направлении, или необходимо радикально менять траекторию. Взаимодействие пользователя с приложением будет совсем не таким, как ваше, и только через фидбэк от игроков вы поймёте, как они его воспринимают.
Самое главное — не останавливайтесь. Создавать игры непросто, на этом пути неизбежны ошибки, но нужно помнить, что они — часть обучения. Создание игр — это сложно, но ещё и безумно интересно. Если это занятие вам нравится, вы обязательно найдёте свою нишу. Не бойтесь провалов — каждая следующая ваша игра будет лучше, если вы не бросите и будете учиться на своём опыте.
Топ-6 бесплатных приложений для новичков в создании игр
- Unity. При помощи этого движка можно разрабатывать приложения на разных платформах, с 2D- и 3D-графикой. Это очень многофункциональная программа, которую просто освоить благодаря существованию множества тьюториалов. Кроме того, в Unity есть возможность использования визуального языка программирования, что упрощает работу с движком.
- Godot — ещё один популярный игровой движок, работает с 2D-графикой. В целом представляет аналог Unity, но для работы с ним необходимо учить язык программирования. Этот движок предлагает меньше функций, но некоторым пользователям удобнее учиться работать именно в нём.
- Unreal Engine — игровой движок, с помощью которого можно добиться высочайшего качества 3D-графики и высокой производительности игровых процессов. Но при работе с этим движком нужно иметь в виду, что вам потребуются компьютер высокой мощности и значительное время на обучение.
- Figma — бесплатный онлайн-сервис для создания визуального контента в 2D. Этот сайт сочетает простые понятные инструменты с большим функционалом, что позволит вам создать персонажей, меню и любое визуальное наполнение для своих игр.
- Blender выполняет такие же функции, как и предыдущее приложение, только для 3D-контента. В открытом доступе можно найти множество видеотьюториалов по созданию анимации и игровой графики в Blender.
- Magica Voxel позволяет создать графику для игры при помощи воксельного моделирования (изображение собирается из множества кубиков).
Изображение на обложке: Bobbo Andonova / Dribbble
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter