Разработка вашей первой игры с помощью unity и c#

Хорошие ресурсы для разработки игр в Unity

Сообщество разработчиков игр — одно из лучших среди всех, и в индустрии есть множество высококвалифицированных профессионалов, которые размещают контент бесплатно или почти бесплатно. В этой области требуются 3D-моделисты, концептуальные художники, геймдизайнеры, программисты и так далее. Я связал несколько отличных общих ресурсов, с которыми я столкнулся, для каждого из этих полей ниже:

Watch this video on YouTube

Watch this video on YouTube

Watch this video on YouTube

Концептуальное искусство

  • Школа дизайна Фэн Чжу (более 90 часов уроков по концепт-арту)
  • Тайлер Эдлин Арт (Великое арт-сообщество BST с отзывами профессионалов о ежемесячных испытаниях)
  • Art Cafe (Интервью и мастер-классы с известными концепт-художниками)
  • Трент Канюга (иллюстратор и 2D-художник, который также создает свою собственную игру)

3D моделирование

  • CG Cookie (лучшие основы моделирования сетки в Blender, у них есть множество другого отличного контента для блендера)
  • Тор Фрик (модельеры и скульпторы твердых поверхностей в Blender)
  • Глеб Александров (Краткие мощные уроки по рендерингу в Blender)

Игровой дизайн

  • DoubleFine Amnesia Fortnight (разработчики игр, которые проводят двухнедельный хакатон и записывают весь процесс проектирования)
  • Инструментарий GameMakers (изучает принципы игрового дизайна)

Программирование

  • Handmade Hero (Написание игры и движка с нуля на C)
  • Джонатан Блоу (инди-разработчик, транслирующий свою разработку игры)
  • Brackeys ( хорошие учебные пособия по Unity)

Окно редактора Unity

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

  1. Сцена (Scene). Позволяет размещать объекты на сцене, перемещать и трансформировать их.
  2. Проект (Project). Здесь хранятся картинки, текстуры, скрипты и все, что может использоваться в проекте.
  3. Иерархия(Hierarchy). Здесь перечислены в порядке иерархии те объекты, которые есть на сцене.
  4. Игра (Game). Позволяет увидеть, как будет выглядеть игра глазами игрока.
  5. Инспектор (Inspector). В графе можно найти подробную информацию об объекте на сцене.

Работа с иерархией

В иерархии отображаются все объекты, расположенные на сцене, независимо от того, видны они игрокам или нет. Объекты можно объединять в блоки, с которыми удобнее работать. При удалении блока будут удалены все объекты, из которых он состоит.

С точки зрения позиционирования, в среде также есть удобные инструменты. Например, если нужно сохранить положение одного объекта относительно другого. Рассмотрим это на примере. Итак, вы создали питомца, который все время должен находиться рядом с игроком, где бы он ни был. В таком случае его нужно создать как дочерний объект, привязанный к основному — игроку.

Ori and the Will of the Wisps

Ori — серия двухмерных платформеров в жанре метроидвания, разработчиком выступила Moon Studios. Австрийская студия была основана в 2010 году, уже в 2011-м началось партнёрство с Xbox Game Studios, которая издаёт Ori. Обе части сначала вышли на платформах Microsoft — Windows и Xbox.

Основатели Moon Studios — бывший художник персонажей Blizzard Томас Малер и бывший главный графический инженер Animation Lab Геннадий Король. Студия работает полностью удалённо — по сути, это международное сообщество разработчиков, до этого занимавшихся ААА-играми.

PC: 88

XONE: 90

XBSX: 92

NS: 93

Аниматор Джеймс Бенсон о создании анимации для Ori and the Blind Forest на GDC

Главный герой — чёрно-белый дух леса Ори — выполнен минималистично. Самым важным для разработчиков был силуэт — для быстрой ориентации игрока и контраста с окружением. С помощью хвоста персонажа аниматоры подсказывают направление движения Ори.

Левел-дизайнер Крис Макенти разбирает уровень Ori and the Will of the Wisps на канале GMTK

Главными референсами при создании геймплея были классические платформеры Rayman и Metroid. На сюжет повлияли мультфильмы «Король Лев» и «Стальной гигант». Художники окружения и персонажей вдохновлялись аниме студии Ghibli. Команда хотела перенести в свои игры эстетику и эмоциональный тон фильмов Миядзаки — сильнее всего на Ori повлияли «Принцесса Мононоке» и «Унесённые призраками». К тому же в аниме Миядзаки всегда яркий детализированный фон и простые, минималистичные персонажи. Подобный подход переняла Moon Studios.


Ни один фоновый нарисованный элемент в играх серии не дублируется. Скриншоты: игра Ori and the Will of the Wisps / Moon Studios
Ни один фоновый нарисованный элемент в играх серии не дублируется. Скриншоты: игра Ori and the Will of the Wisps / Moon Studios

В сиквеле Ori and the Will of the Wisps разработчики улучшили графику, добавили новые игровые механики, усложнили битвы с боссами и ввели в повествование NPC, которые дают игроку побочные задания.

«Мы хотели поднять игру на новый уровень, чтобы люди подумали: „Мы пропустили вторую игру? Это Ori 3?“ Мы тесно сотрудничаем с Unity, вносим много улучшений в движок, чтобы сохранить уровень графики и стабильную производительность в 60 FPS на консолях и 120 или 240 Герц на ПК. Движок сильно изменился, большинство наших инструментов в Unity мы разработали сами. В студии идёт постоянная доработка софта и совершенствование рабочего процесса: у нас в разработке много социальных инструментов, ведь мы работаем в распределённом режиме — с 70 или 80 людьми это всегда непросто».

Томас Малер, СЕО Moon Studios

Количество покупателей Ori and the Will of the Wisps превысило два миллиона человек за первые три месяца с релиза. На премии Golden Joystick Awards 2020 метроидвания получила награду в номинации «Игра года для Xbox». В 2015 году первая часть франшизы также стала победителем в этой номинации.

Замена элементов 1

Основная механика геймплея игр три в ряд: мозаичные элементы выстраиваются в линии из трех элементов, когда пользователь перемещает их на экране.

Но для этого нужна дополнительная работа со скриптами. Вначале нужно выбрать элемент.

Откройте Tile.cs в редакторе кода. Для удобства скрипт уже содержит несколько переменных и два метода: Select и Deselect.

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

Чего недостает, так это возможности для игрока взаимодействовать с элементами.

Левый клик мыши представляется подходящей опцией управления.

В Unity присутствует встроенный метод MonoBehaviour: OnMouseDown.

Добавьте следующий метод в Tile.cs,  ниже метода Deselect:

void OnMouseDown() {// 1
if (render.sprite == null || BoardManager.instance.IsShifting) {
return;
}

if (isSelected) { // 2 Is it already selected?
Deselect();
} else {
if (previousSelected == null) { // 3 Is it the first tile selected?
Select();
} else {
previousSelected.Deselect(); // 4
}
}
}

  1. Удостоверьтесь, что игра позволяет выбирать элементы. Пользователям не всегда это нужно, например, когда игра заканчивается, или когда элемент пустой, это лишнее.
  2. Оператор if (isSelected) определяет, когда выбирать или не выбирать элемент.
  3. Проверьте, выбран ли еще какой-то элемент. Когда у компонента previousSelected нулевое значение, он — первый, поэтому выберите его.
  4. Если он не первый, отмените выбор всех других элементов.

Сохраните скрипт и вернитесь в редактор.

Теперь у вас должна быть возможность выбора/отмены элементов кликом левой кнопки мыши.

Теперь можно добавить механизм замены.

CryEngine

Движок, созданный немецкой студией Crytek, автором Far Cry и Crysis. С 2004 года CryEngine обзавёлся несколькими итерациями, и его технические возможности улучшаются до сих пор. Чтобы в этом убедиться, достаточно сравнить первую часть Far Cry и современный MMO-шутер Hunt: Showdown. После выхода Crysis фотореалистичные шутеры от первого лица стали визитной карточкой технологии, однако движок подходит и для разработки игр в других жанрах, а также для неигровых проектов.

Разработчики CryEngine практикуют подход What You See Is What You Get — «что видишь, то и получишь». Когда разработчик создаёт в редакторе CryEngine Sandbox сцену и переносит её в игру, она выглядит и работает так, как задумано, и ей не требуются дополнительные правки. В 2016 году Crytek открыла доступ к исходному коду движка, чем воспользовались многие студии. Например, Warhorse Studios сильно модифицировала CryEngine для разработки ролевой игры Kingdom Come: Deliverance. Известно, что все актуальные части серии Far Cry, права на которую сейчас принадлежат Ubisoft, сделаны на движке Dunia Engine, а в его основе находится как раз CryEngine.

Презентационный трейлер движка


Скриншот из Hunt: Showdown — игры, созданной на CryEngine. Скриншот: Hunt: Showdown / Steam

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

  • мультиплатформенность (Windows, Linux, PlayStation 4, Xbox One, Oculus Rift, OSVR, PSVR, HTC Vive), в будущем возможно портирование на Android — сейчас идёт бета-тестирование;
  • огромный выбор инструментов «из коробки»;
  • подходит для масштабных игр AAA-уровня, особенно для игр с видом от первого лица;
  • у перспективных проектов (в том числе неигровых) есть возможность получить кастомную лицензию.

Недостатки:

  • не так популярен, как его конкуренты Unity 3D и UE4;
  • сложно найти специалистов по движку из-за небольшого размера комьюнити;
  • если проекту требуется функциональность, расширенная в сравнении с той, что есть в «коробке», большинство сетевых модулей и инструментов придётся создавать с нуля: по словам разработчиков, то, что представлено в GameSDK, либо устарело, либо перегружено лишними функциями.


Скриншот из Kingdom Come: Deliverance — игры, созданной на CryEngine. Скриншот: игра Kingdom Come: Deliverance / Steam

Игры на движке: Kingdom Come: Deliverance, Deceit, Evolve, Prey, Hunt: Showdown.

«С CryEngine тяжело работать, если нужно создать динамичный шутер. Его физический движок не подходит для такой концепции. Также не стоит делать на его основе сложные RPG. Инструменты разработки недостаточно гибкие, и вам потребуется много ресурсов, чтобы построить все основные системы с нуля. <…> На данный момент сообщество CryEngine совсем небольшое, но очень отзывчивое. Большинство специалистов хорошо осведомлены о различных аспектах разработки, так как сами знакомы с движком ещё со времён моддинга Crysis. Кроме того, разработчики технологии часто делятся своими знаниями в Discord и тематических статьях

Дмитрий Шевченко, тимлид студии TALLBOYS (Pandemic Express).

«What is the best game engine: is CryEngine right for you?», январь 2020 года


Скриншот из Pandemic Express — Zombie Escape — игры, созданной на CryEngine. Скриншот: игра Pandemic Express / Steam

«Ключевая механика Deceit — смена дня и ночи в игре. С наступлением тьмы роли игроков меняются: „плохие парни“ становятся ещё ужаснее, что может напугать и ввести в замешательство „хороших“. CryEngine отлично подчёркивает эту атмосферу с помощью освещения и теней. <…> Динамика движка хорошо сочетается с итеративной разработкой, что помогает при нелинейных пайплайнах. В этом плане CryEngine значительно выделяется на фоне конкурентов. Арт-отдел тесно сотрудничает с отделом геймдизайна на всех этапах проекта, чтобы настроить освещение и разместить объекты по ходу разработки. Это преимущество помогает тестировать различные идеи и стирать границы между концепцией, дизайном и фазами препродакшна.

<…> CryEngine отлично работает с рендерингом в реальном времени, позволяя изменять огромное количество визуальных эффектов на лету. Параллельная работа наших технических специалистов со SpatialOS (технология симуляции действий) даёт нам понимание того, что наиболее релевантно для игрока. Всё это помогает добиться в игре детализированности окружения без лишних нагрузок на «железо»».

Сэм Хиллс (Sam Hills), бывший комьюнити-менеджер Automaton Games (Deceit).

«Why Developers Choose CryEngine?», сентябрь 2018 года


Скриншот из Deceit — игры, созданной на CryEngine. Скриншот: игра Deceit / Steam

Первые проблемы

До тех пор, пока предмет был один, простой квадрат, все казалось простым. Я думал выпущу игру за неделю, ну может две, так как еще графику рисовать, нюансы всякие.. Ага, как же..

Выделив какое то время рисованию предметов я задумался: — «А как мне их теперь хранить в игре??».

На этом вопросе я залип надолго. Так как не хотел все переделывать, когда будет уже очень много предметов, скажем 500.

Самым адекватным решением было создать mySql базу и работать с ней, но раньше в играх я их не использовал, поэтому были еще варианты. Например, создать структуры классов, собрать в массивы и каким то образом их сохранять куда либо.. Но пришлось бы пилить свой редактор.. Были и еще какие то мысли, в общей сложности я решал этот вопрос 2 дня (по вечерам после работы).

Было решено разбираться в базах данных. Точнее как с ними работать из под Unity.

Посмотрел пару видео, прочел пару статей. Да вроде не сложно, подумал я и начал делать. Скачал нужные библиотеки, написал примитивный код. Работает! Но не на телефоне, тут меня ждало разочарование. Библиотека, которую я скачал из того видео, не работала на телефоне ни в какую. Я скачивал ее их разных источников, разных версий. Одна из 10 заработала! Я был счастлив и добавил все свои 10 предметов в базу.

Почему Unity?

Если вы хотите делать игры

Когда дело доходит до разработки инди-игр, вариантов действительно очень мало. Если вы хотите создавать игры, есть три основных варианта: Unreal, Unity или GameMaker.

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

В Unity есть множество очень успешных игр, таких как Escape from Tarkov (FPS), Monument Valley (Puzzler) и This War of Mine (Стратегия / Выживание).

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

Если вы хотите прототипировать пользовательский опыт

Поскольку Unity — это всего лишь движок с кучей физики, анимации и 3D-рендеринга в реальном времени, это также отличное место для создания полноценных интерактивных прототипов для исследований UX.

Unity полностью поддерживает VR и AR и, следовательно, может стать отличным инструментом для изучения архитектуры, автоматизации и моделирования с помощью клиентов.

Этапы создания игр

Делаем  простую игру

Под простой игрой подразумевается самый незамысловатый сюжет. На примере рассмотрим такую идею: человечку необходимо преодолеть препятствия, чтобы благополучно добраться до финиша. К тому же, по дороге желательно собирать монетки. Согласитесь, воспроизвести такую картинку с помощью Construct 2 довольно просто и интересно. Рассмотрим приблизительные ориентировочные действия:

  • Создаем фон любого цвета, в нашем случае для натуральности лучше выбрать зеленый;
  • Делаем главного персонажа, им может выступать и животное, и человечек;
  • Проектируем монетки и расставляем их по всему фону; аналогичное проделываем и с препятствиями (изображение камней, дров – лучший вариант);
  • Теперь определяем взаимодействие персонажа с окружающей средой. Споткнулся о камень – игра окончена, поймал монетку – она продолжается, добежал до края фона – финиш.

Для пошаговых действий и подробной инструкции смотрите видео, которое прилагается к этому разделу.

Делаем карточную игру

Для такого жанра лучше всего использовать программу Unity 3D. Здесь же рассмотрим направления и шаги:

  • Делаем основной фон для карт;
  • Проектируем сами карты, то есть, инвентарь;
  • Задаем взаимодействия;
  • Определяем количество игроков;
  • Переводим меню игры из 3D в 2D;
  • Определяем конец игры.

Создаем РПГ-игру

Отличной программой для такого жанра является программа RMXP или тот же Unity3D, выпущенная японской компанией. Для создания подобной игры нужно время и внимательность, но ни с чем сложным вы не столкнетесь.

  • Придумываем основную идею будущей Андроид игры;
  • Пишем основной сценарий;
  • Рисуем базовую карту и добавляем объекты;
  • Создаем события.

Как создать онлайн-игру для Андроид

Отдельной схемы для создания именно онлайн игры не существует. Приложение данного типа делается с помощью вышеперечисленных программ, а куда публиковать свое творение – напрямую в Android и iOS, либо в браузеры – решать вам.

Обратите внимание! Создание игры без использования ПК стандартными методами невозможно. Большинство популярных программ ориентировано только на компьютеры

Ключевые встроенные компоненты

Ниже вы найдете примеры некоторых встроенных компонентов, которые предлагаются в базовой версии Unity.

  1. MeshFilter. Меш фильтр считывает геометрию объекта и передает ее для отображения.
  2. MeshRender: Позволяет отображать ассеты (объекты) для 3D-сетки.
  3. Collision Module. Позволяет контролировать то, как объекты ведут себя во время столкновений и взаимодействий с твердыми объектами.
  4. Rigidbody. Присваивает объекту свойства физического твердого тела, позволяет физическому моделированию воздействовать на объекты.
  5. Light. Позволяет добавить на сцену источники света.
  6. Камера(Camera). Определяет, как будет выглядеть сцена глазами игрока.

Что находится на сцене и что показывает камера

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

Создание компонентов

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

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

Управление игровыми объектами

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

  • Перевод, вращение, масштаб
  • Создать новые GameObjects
  • Отправка сообщений существующим GameObject / компонентам

Трансформации

Все GameObjects имеют свойство transform, которое позволяет выполнять различные полезные манипуляции с текущим игровым объектом.

Вышеупомянутые методы довольно понятны , просто обратите внимание, что мы используем gameObject в нижнем регистре для ссылки на GameObject, которому принадлежит этот конкретный экземпляр компонента. В общем, рекомендуется использовать локальное , а не глобальное положение / поворот объекта. Обычно это упрощает перемещение объектов разумным образом, поскольку ось локального пространства будет ориентирована и центрирована на родительском объекте, а не на мировом начале координат и направлениях x, y, z

В общем, рекомендуется использовать локальное , а не глобальное положение / поворот объекта. Обычно это упрощает перемещение объектов разумным образом, поскольку ось локального пространства будет ориентирована и центрирована на родительском объекте, а не на мировом начале координат и направлениях x, y, z.

Преимущества локального пространства станут немного более очевидными с диаграммой!

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

Как вы понимаете, за этим стоит довольно простая линейная алгебра, на которую намекает «Обратный» в имени метода.

Создание новых игровых объектов

Поскольку GameObjects — это в основном все в вашей сцене, вы можете иметь возможность генерировать их на лету. Например, если у вашего игрока есть какая-то пусковая установка для снарядов, вы можете захотеть создавать снаряды на лету, у которых есть собственная инкапсулированная логика для полета, нанесения урона и т. Д.

Сначала нам нужно ввести понятие префаба . Мы можем создать их, просто перетащив любой GameObject в иерархии сцены в папку с ресурсами.

Как выглядит префаб на вкладке Asset

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

Пример пользовательского объекта-кирпича, который используется для динамического создания кубиков Lego в сцене, к нему прикреплен набор компонентов с различными значениями по умолчанию.

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

Затем мы можем выполнить «создание экземпляра» префаба и манипулировать им в желаемом месте сцены и установить необходимые родительские отношения.

Создание пользовательских компонентов

Встроенные компоненты в первую очередь управляют физикой и визуальными эффектами, но для того, чтобы действительно создать игру, вам нужно будет принимать вводимые пользователем данные и манипулировать этими стандартными компонентами, а также самими игровыми объектами.Чтобы начать создание компонентов, перейдите в нужный GameObject> Добавить компонент> введите имя вашего нового компонента в строке поиска> новый скрипт (c #).

В качестве общей рекомендации я бы не советовал использовать Javascript в Unity. Он не обновлялся со всеми замечательными вещами, которые поставлялись с ES6, а большая часть более продвинутых вещей основана на материалах C #, перенесенных на Javascript … По моему опыту, это просто становится одним гигантским обходным решением.

Совет новичкам по Unity

Если вы планируете написать свою первую игру, не стоит недооценивать сложность и время, необходимое для написания даже самых тривиальных игр. Помните, что над большинством игр, которые выходят в Steam, команды работают над ними в течение многих лет!

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

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

Настройка интерфейса

В стандартном интерфейсе проекта шесть элементов рабочей области:

  1. Верхняя панель инструментов — в ней находятся стандартные вкладки File, Edit, Help, как во многих других интерфейсах, а также вкладки Assets, GameObject, Components и Window.
  2. Scene — окно сцены, в котором выстраивается игровое пространство (элементы игрового мира, текстуры, фигурки персонажей и прочее).
  3. Games — это окно игры, в котором можно посмотреть глазами пользователя, как будут двигаться элементы и работать игровые механики.
  4. Hierarchy — окно иерархии, в нем перечислен список всех элементов (GameObject), которые помещены в окно Scene.
  5. Project — это система папок, в которых хранятся ассеты по категориям (текстуры, шрифты, звуки и т.д.).
  6. Inspector — окно для изменения элементов игры, их размера, цвета, положения в пространстве и других характеристик.

Создание случайных объектов на игровом поле

Откройте скрипт BoardManager и добавьте эти строчки кода в метод , сразу под выражением .

Эти строчки делают ключевые вещи:

  1. Устанавливают для всех тайлов компонент BoardManager в качестве родительского, чтобы упорядочить иерархию в редакторе.
  2. Случайно выбирается спрайт из нескольких, которые были ранее добавлены.
  3. Устанавливается заново созданный спрайт тайла в случайно выбранный спрайт.

Запустите игру, чтобы увидеть игровое поле с различными фишками.

Как вы могли заметить, игровое поле может генерировать совпадающие комбинации из трех объектов в начале, и это немного забавно вообще-то.

Добавление объекта

Объекты на экран Scene можно добавить из Asset Store. Для этого на панели инструментов нужно кликнуть на вкладку Window –> General –> Asset Store.

В строке поиска можно по названиям найти нужные компоненты, например, сет Free Platform Game Assets.

Как и другие ассеты, он загружается с помощью кнопки Import.

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

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

Шаг 2. Перенести в область Scene

Разработка в самом разгаре

Далее я начал разрабатывать инвентарь и его «дизайн». Первые наброски, были выполнены из стандартных плашек и кнопок.

Одна из первых версий инвентаря

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

Некий промежуточный результат. Предметы, квадратный герой, часть города, синее небоРешил немного побаловаться и проверить быстродействие системы)и еще немного xD.

Хотя тут я немного забежал вперед. Я так же нарисовал машины, сделал небо градиентным и нарисовал предметов побольше. На тот момент, кажется, их было порядка 20.

Предотвращение замены элементов

Доска располагает элементы вверх и вправо. Поэтому, чтобы избежать «автоматического» совпадения, придется узнать, какой спрайт находится слева от нового элемента, и какой спрайт ниже нового элемента. Для этого понадобится создать две переменные Sprite в методе CreateBoard

Sprite[] previousLeft = new Sprite;
Sprite previousBelow = null;

Эти переменные устанавливают связь с соседними элементами, таким образом вы можете заменить символы characters.

Произвольный набор символов извлекается из списка и присоединяется к элементам слева и внизу. Это исключает вероятность появления трех одинаковых символов с самого начала.

Для этого добавьте следующие линии над Sprite newSprite = characters;:

List<Sprite> possibleCharacters = new List<Sprite>(); // 1
possibleCharacters.AddRange(characters); // 2

possibleCharacters.Remove(previousLeft); // 3
possibleCharacters.Remove(previousBelow);

  1. Создайте список возможных символов для этого спрайта.
  2. Добавьте все символы в список.
  3. Удалите символы слева и ниже текущего спрайта из списка возможных символов.

Затем, замените эту линию:

Sprite newSprite = characters;

вот этой:

Sprite newSprite = possibleCharacters;

Новый спрайт будет выбран из списка возможных символов и сохранится.

Добавьте эти линии под newTile.GetComponent().sprite = newSprite;:

previousLeft = newSprite;
previousBelow = newSprite;

Атрибут newSprite будет присвоен элементам слева и снизу от текущего для следующей итерации.

Запустите игру и проверьте динамическую решетку с неповторяющимися элементами!

Добавление дороги

Создайте пустой объект и назовите его Road — в нём будут размещаться все машины и дорожные блоки.

Добавьте в него первый блок:

У объекта Road координаты должны быть по нулям, а у блока X можно поставить на ноль либо на -24.69 — столько он занимает места. Эта цифра нам понадобится, чтобы добавлять новые блоки.

Теперь для блока нужно подключить коллайдеры Box Collider. Но добавлять их нужно не на сам блок, а на дорожное полотно (Plane) и бордюры (Plane_002).

Для полотна сразу установите тег Road (его нужно создать, нажав на Add Tag). Затем приступайте к бордюрам. Это один объект, поэтому нужно просто добавить два коллайдера:

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

Примеры работы

Примеры успешных проектов на Unity:

  • Call of Duty Mobile. Очень популярный шутер для мобильных устройств, распространяющийся бесплатно. В год в игру заходит несколько миллионов человек.
  • Cuphead. Необычный платформер, выполненный в стиле старых мультфильмов. Продажи к сентябрю 2019 года достигли 5 миллионов копий.
  • Dreamfall Chapters. Эпизодическая игра в жанре квест, продолжение легендарной серии игр.
  • Escape from Tarkov. Игра в жанре шутер от первого лица, разработанная российской студией. Пользуется большой популярностью и регулярно получает крупные обновления.
  • Pokémon Go. Одна из самых популярных игр на мобильные устройства. Сделана в жанре дополненной реальности с использованием местоположения и камеры.
  • Hearthstone. Очень популярная карточная игра от известной компании Activision Blizzard.
  • Rust. Игра в жанре симулятора выживания с постоянным мультиплеером. Ежемесячно онлайн игры может достигать до 100 тысяч игроков одновременно.

Шаг 6. Дорожная карта и сборка

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

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

Например, ваша дорожная карта может выглядеть примерно так:

  1. Добавить систему монет.
  2. Добавить здоровье и урон игрока.
  3. Основные враги.
  4. Проверка ошибок.
  5. Улучшить базовое искусство.
  6. Создавайте игровые сценарии и выигрывайте.
  7. Добавить элементы пользовательского интерфейса.
  8. Добавить систему меню.

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

Знать это расстояние важно, так как у вас не всегда есть неограниченное время и внимание, которые можно вложить в игру

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

Заключение

Первое, что стоит понять: игровой движок не определяет успех или неудачу игры, он, скорее, влияет на процесс производства — и в первую очередь скорость. Что до успеха, здесь гораздо большее значение имеют опыт команды, маркетинг, ну и, как ни странно, качество самой игры. В конце концов, признанный всеми шедевр To the Moon канадская студия Freebird Games вообще сделала на RPG Maker — движке, на котором (из-за простоты его освоения) делается большое количество поделок низкого качества.

Практически все «успешные кейсы» в независимом геймдеве показывают, какие колоссальные усилия нужно прикладывать разработчикам, чтобы расчистить дорогу для своей мечты. Пусть вас не обольщают истории про удачные Kickstarter-кампании — чтобы впечатлить бэкеров, вам нужно показать прототип или какие-то другие наработки и иметь чёткий план развития. Нельзя просто прийти на платформу и попросить денег — об этом было сказано выше в ролике-интервью с авторами Pathfinder: Kingmaker.

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

Кроме того, у Unity самое активное и дружелюбное комьюнити среди всех конкурентов, что немаловажно для студий с небольшим опытом — всегда есть с кем посоветоваться. Об этом говорили даже Blizzard во время работы над Hearthstone — хотя, казалось бы, у них по определению не может быть вопросов

Но, само собой, успех не свалится на вас как мартовский снег — нужно много работать, и учиться, и снова работать, шаг за шагом делая «ту самую игру». Чего и вам желаем.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector