Как создать игру на unity, 2d

Введение

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

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

Данный урок проведет вас через процесс построения самодостаточного уровня с видом от третьего лица для трехмерной игры-платформера. Он включает все, от управления игроком, определения столкновений, некоторый продвинутый скриптинг, размытые тени, базовый ИИ, добавление игрового HUD, сцены-заставки и сюжетные аудио-эффекты.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Raycasting

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

Есть два сценария, в которых это может пригодиться (вероятно, их гораздо больше):

  1. Если вы разрабатываете систему оружия для игры, вы можете использовать raycasting для обнаружения попаданий и даже настроить длину луча, чтобы предметы ближнего боя «поражали» только на коротких дистанциях.
  2. Создайте луч от указателя мыши к точке в трехмерном пространстве, то есть если вы хотите, чтобы пользователь мог выбирать юниты с помощью мыши в стратегической игре.

Пример 2, подробно описанный выше

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

Принятие пользовательского ввода

Игра должна откликаться на действия пользователя и введенные им данные. Наиболее распространенные способы сделать это — использовать следующие коды в функции Update () компонента:

  • GetKey (KeyCode.W). Пока пользователь зажимает клавишу W, происходит целевое действие. Например, автовыстрел.
  • GetKeyDown (KeyCode.W). Целевое действие совершается при первом нажатии клавиши.

Есть множество особенностей при работе с функциями. Например, в случае, если использовать вместо Input.GetKey Input.GetAxis или Input.GetButton, то в конечном продукте пользователь сможет переназначать клавиши для обеспечения комфорта игрового процесса.

Еще больше хитростей

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

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

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

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

Источник записи: https://www.androidauthority.com

Изучение интерфейса Unity

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

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

Окно проекта (Project) показывает пользовательские библиотечные активы, которые доступны для использования, когда разработчик импортирует активы в свой проект.

Вид сцены (Scene View) позволяет разработчику осуществлять визуальную навигацию и редактирование. Он может отображать двухмерную или трехмерную перспективу, в зависимости от типа проекта, над которым работает.

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

Окно Инспектора (Inspector) позволяет просматривать и редактировать все свойства выбранного объекта. Так как объекты имеют различные свойства, макет (дизайн) и содержимое Окна Инспектора будут меняться.

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

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

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


Одинаковые деревья-шаблоны

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

Raycasting

Рейкастинг представляет собой метод, в рамках которого можно направить луч из камеры в точку в пространстве. Это делается, например, для того чтобы игрок мог увидеть детали объекта и приблизить его. Кроме того, метод пригодится и в других случаях.

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

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

Организация проекта

Unity не ставит перед собой целью навязать конкретный способ организации игровых ресурсов в вашем проекте. Вы, возможно, предпочтете организовать их в соответствии с типами, используя отдельные папки для них, назвать их, к примеру, «Textures», «Models», «Sound effects» и т.д. В компании Unity Technologies, мы пришли к выводу, что такая структура хорошо подходит для маленьких проектов. Для более сложных проектов, нашим пользователям в большинстве своем рекомендуется организовывать ресурсы в соответствии с их функциями, возможно, группируя их в папках, как например, «Player», «Enemies», «Props», «Scenery» и так далее.

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

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

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

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

Причины создания неигровых приложений в Unity

Зачем вам разрабатывать неигры с помощью Unity, если у вас есть отличная IDE в Android Studio? Есть несколько веских причин.

Быстрое развитие

Первый вариант использования заключается в том, что Unity во многих ситуациях ускоряет и упрощает разработку приложений для Android. Например, Unity позволяет использовать C #, а не Java или Kotlin. Хотя C # не всем нравится, обычно считается, что с ним немного проще разобраться, чем с Java. Более того, если вы уже знакомы с C #, вы обнаружите, что это гораздо более простой переход. IDE также скрывает файловую структуру вашего Android-приложения, и вам не нужно беспокоиться о таких вещах, как AndroidManifest или папка ресурсов.

Вдобавок к этому Unity использует особенно интуитивно понятный и быстрый пользовательский интерфейс. Во многом это связано с перетаскиванием, и для создания пользовательского интерфейса не требуется знания XML. При создании неигровых приложений в Unity вам нужно будет делать гораздо менее реальное кодирование, и многие вещи, такие как добавление изображения к кнопке или использование пользовательского шрифта, чрезвычайно просты. Так и должно быть, но если вы попробуете что-то из этого с Android Studio, вы обнаружите, что это вызывает головную боль!

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

Кросс-платформенная разработка

Unity – это кроссплатформенный инструмент, а это означает, что вы можете легко создавать приложения для Android, iOS и Windows с минимальными изменениями. Если вы разработчик и хотите охватить максимально широкую аудиторию, это значительное преимущество (хотя справедливо отметить, что другие инструменты, такие как Xamarin, также позволят вам это сделать).

Мощные функции

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

Совет для новичков

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

Кроме того, не надо стесняться спрашивать советов у опытных разработчиков. Новичкам лучше пройти онлайн-курсы. У игрового движка есть одно из лучших сообществ в мире, и есть множество высококвалифицированных профессионалов, которые размещают контент бесплатно или почти бесплатно. Также следует посетить магазин активов Asset Store, где можно найти широкий спектр материалов: сценарии, модели, звуки, музыку или даже законченные проекты по различным ценам, включая бесплатные, которые можно включить в первый собственный проект, чтобы понять, как работает Unity.

Как стать разработчиком на Unity

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

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

Это важно как и на протяжении самой работы, так и при изучении C#.. К тому же, владение языком программирования это как раз-таки самый сложный этап в освоении профессии

Пошаговый план действий:

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

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

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

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

Первые шаги использования Unity

Начинают работу с наиболее простого — загружают и настраивают Unity. Закачку свежей версии выполняют с официального сайта, после чего запускают установку. Редактирование в Unity 4 и выше выполняет редактор MonoDevelop. Для тех, кто использует Windows, специалисты рекомендуют применять в качестве альтернативы Visual Studio 2013 (C#), после этого в опциях движка меняют его по умолчанию.

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

Далее появится экран, разделенный на различные рабочие области окна, организованные определенным образом в макет:

  1. Сцена — это место, где происходит игра, а разработчик добавляет спрайты и ресурсы для взаимодействия друг с другом.
  2. Иерархия — тут расположены все спрайты, объекты и ресурсы, добавленные на сцену, но сгруппированные по иерархии.
  3. Инспектор — при выборе объекта из «Сцены» или «Иерархии» он сообщает все его детали и характеристики: положение, размер и другие.
  4. Проект — здесь отображаются доступные ресурсы — активы игры.
  5. Кнопки симуляции — именно они позволяют начать проект или приостановить его.
  6. В разделе «Ресурсы» находятся ресурсы, которые будут использованы в игре. Вначале эта область будет пустой, но можно заполнить ее изображениями, если добавить спрайты.

Перед тем как перенести ресурсы в проект Unity, лучше распределить их по папкам. Затем можно легко переносить их, щелкнув правой кнопкой мыши на «Активы» и выбрав «Показать» в Проводнике. Далее заходят в папку «Активы» и копируют туда нужные ресурсы. В проекте также есть возможность использовать хранилище ресурсов: Window-> Asset Store или нажав Ctrl + F9.

Город тоже бы не помешал

Время шло. Мы, с моим другом Ильей, сидели у меня и делали игру, я писал код, рисовал графику, а он составлял мне компанию и писал музыку (Он первоклассный музыкант), подсказывал какие то идеи и т.д. Параллельно мне помогал с рисовкой предметов Саня, в тот момент он находился в армии и рисовал прямо от туда!)

Пора бы перерисовать город, а то как то скучно..Взял несколько референсови начал творить. но не долго xD

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

Через неделю или даже две я нашел еще сил и продолжил разработку. Город расширялся, дорисовывался и менялся.

В принципе конечный результат городаДалее пошли иконкиМелкие измененияКоробка! наконец то она не просто квадрат))

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

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

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

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

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

Компоненты — это строительные блоки игровых объектов. Без них игровой объект не сделает ничего интересного.

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

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

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

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

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


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

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

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

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

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

Шаг 1. Идея

Шаг первый довольно прост. Вы легко можете сделать это в уме.

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

  • Это платформер, игра с видом сверху или, может быть, изометрическая?
  • Какая будет тема и основная история?
  • Как это будет выглядеть?
  • Какой движок вы будете использовать?
  • Главное, чем ваша игра будет выделяться? Какую новую механику или идею он представляет или что будет хорошо?

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

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

Как только у вас появится несколько идей о том, что делать, у вас будет руководство, с которого можно начать. Теперь можно переходить к прототипированию.

Cities: Skylines

Cities: Skylines — градостроительный симулятор, разработанный студией Colossal Order, до этого известной по двум транспортным симуляторам Cities in Motion. Издателем выступила Paradox Interactive, специализирующаяся на глобальных стратегиях — например, Europa Universalis и Crusader Kings.

Игровой процесс Cities in Motion основан на строительстве и менеджменте транспортных сетей. Опыт разработки подобных симуляторов оказал влияние на Cities: Skylines. Colossal Order детально проработала системы проектирования дорог и городской трафик. Всё как в жизни: скажем, пробки — одна из главных трудностей виртуальных и реальных градостроителей.

PC: 85

PS4: 81

XONE: 81

Проектировщик городов строит свой город в Cities: Skylines

Разработчики создали сложную систему имитации передвижения горожан с учётом имеющихся дорог и общественного транспорта. Система определяет наиболее быстрый маршрут и позволяет с большой точностью анализировать эффективность городского транспорта. Cities: Skylines стала инструментом градопланирования.


Скриншоты: игра Cities: Skylines / Colossal Order
Скриншоты: игра Cities: Skylines / Colossal Order
Скриншоты: игра Cities: Skylines / Colossal Order

Игра открыта для модификаций — встроенный интерфейс API позволяет создавать моды на языке С#. Подробнее про моды мы писали в другом нашем материале.

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

Мариина Халликайнен,CEO Colossal Order

За первые четыре года с момента релиза Cities: Skylines купили свыше шести миллионов игроков. К игре вышло 33 платных и бесплатных DLC. Команда Colossal Order энергично поддерживает сообщество — часть дополнительного контента разрабатывали его активные участники. Например, Content Creator Pack: Art Deco создал известный моддер Мэтт Shroomblaze Круз. Часть прибыли от продаж дополнения получает его создатель.

Геймдизайнер Каролина Корппо показывает созданные игроками города в Cities: Skylines

«С помощью Frame Debugger в Unity Editor мы быстро выявляем и устраняем проблемы с нашим рендерингом, построенным поверх пайплайна рендеринга Unity. Контроль над плагинами движка и дополнительными сборками помог нам навести порядок в структуре проекта, ведь с его помощью можно „пометить“ их платформу и архитектуру».

Дамьен Морелло, программист Cities: Skylines

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

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

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

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

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

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

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

Сценарии Unity

Для того чтобы сделать видеоигру на движке, разработчику придется немного программировать. Сценарии Unity могут быть выполнены на 3 языках программирования: Boo Script, Javascript, C #.

Чтобы создать скрипт, нажимают правой кнопкой мыши на окне проекта-> Create-> C # Script. Это создаст скрипт с любым именем NewScript. Чтобы отредактировать его, нужно дважды щелкнуть мышью, и откроется MonoDevelop, который представляет собой редактор, интегрированный с Unity.

В этих скриптах нет конструктора, потому что в этом нет необходимости, и добавлять его также контрпродуктивно, так как это может вызвать проблемы. В сценарии класса могут быть добавлены переменные класса, по умолчанию они имеют публичную видимость. Переменные будут видны в окне «Инспектора» и доступны для редактирования. Unity в «Инспекторе» будет показывать имена переменных особым образом, для удобства чтения он ставит пробел перед заглавными буквами. Переменные также могут быть приватными, в этом случае они не будут видны в «Инспекторе».

После того как будет создан сценарий, можно добавить его к объекту «Сцены», просто перетащив сценарий и поместив его на объект. В окне «Инспектора» он появляется в списке компонентов, которые есть у спрайта. И также можно добавить его, нажав на Sprite, и в окне «Инспектора», щелкнув Добавить компонент-> Сценарии-> NAME_OUR_SCRIPT_NAME.

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

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

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

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

Окно редактора разделено на несколько разделов. Unity Game Objects — просмотр сцены: позволяет размещать и перемещать объекты GameObject в сцене и является основным строительным блоком проекта в игровом движке Unity. Все, что разработчик помещает на сцену в Unity, должно быть заключено в «игровой объект». Если у пользователя есть опыт веб-дизайна, он может использовать его в GameObjects, как элементы – контейнеры. Они легко расширяются для создания сложных функций или визуальных эффектов. Создание Иерархии происходит так же, как и в веб-разработке. Логика вложения игровых объектов во многом аналогична веб. Чтобы добавить контейнерам функциональности, прибавляют компоненты, которые, по сути, являются скриптами, написанными на C # или Javascript. Unity работает с моделью Actor Component, проще говоря, GameObjects — это актеры, а Components — сценарии.

Создание настраиваемого окна редактора заключается в следующем:

  • Создается сценарий, полученный из окна редактора.
  • Используется код, чтобы активировать окно.
  • Реализуется код GUI для пользовательского инструмента.

Для создания «Окна Редактора» пользовательский скрипт нужно сохранить в папке с именем «Редактор». Создают в этом скрипте класс, производный от «Окна Редактора». А после прописывают элементы управления GUI в функции OnGUI внутри.

Компоненты

Как вы уже поняли, игровые объекты бесполезны сами по себе. В движение они приводятся при помощи компонентов. Именно они являются функциональной частью и отвечают за то, что происходит в игре. Это своего рода скрипты, которые могут быть написаны на C# или Javascript.

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

Преимуществом такого подхода является повторное использование и четко определенные каналы связи между элементами

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

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

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

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

Adblock
detector