Это всё
Содержание:
- Управление игровыми объектами
- Замена элементов 2
- Экран Game Over
- Окно редактора Unity
- Окно редактора Unity
- Хорошие ресурсы для разработки игр в Unity
- Разметка и панели Unity
- Город тоже бы не помешал
- Расширенные возможности
- Компоненты
- Лучшие бесплатные пакеты в Asset Store
- Hollow Knight
- Идея
- Совет для новичков
- Бонус
- Чем занимается разработчик на Unity
- Встроенные компоненты Unity
- Что нужно знать, чтобы стать разработчиком игр на Unity
- Принятие пользовательского ввода
- Предотвращение замены элементов
- Заключение
Управление игровыми объектами
Когда у нас есть пользовательский ввод, мы хотим, чтобы GameObject в нашей сцене отреагировал. Мы можем рассмотреть несколько типов ответов:
- Перевод, вращение, масштаб
- Создать новые GameObjects
- Отправка сообщений существующим GameObject / компонентам
Трансформации
Все GameObjects имеют свойство transform, которое позволяет выполнять различные полезные манипуляции с текущим игровым объектом.
Вышеупомянутые методы довольно понятны , просто обратите внимание, что мы используем gameObject в нижнем регистре для ссылки на GameObject, которому принадлежит этот конкретный экземпляр компонента. В общем, рекомендуется использовать локальное , а не глобальное положение / поворот объекта. Обычно это упрощает перемещение объектов разумным образом, поскольку ось локального пространства будет ориентирована и центрирована на родительском объекте, а не на мировом начале координат и направлениях x, y, z
В общем, рекомендуется использовать локальное , а не глобальное положение / поворот объекта. Обычно это упрощает перемещение объектов разумным образом, поскольку ось локального пространства будет ориентирована и центрирована на родительском объекте, а не на мировом начале координат и направлениях x, y, z.
Преимущества локального пространства станут немного более очевидными с диаграммой!
Если вам нужно преобразовать между локальным и мировым пространством (что часто бывает), вы можете использовать следующее:
Как вы понимаете, за этим стоит довольно простая линейная алгебра, на которую намекает «Обратный» в имени метода.
Создание новых игровых объектов
Поскольку GameObjects — это в основном все в вашей сцене, вы можете иметь возможность генерировать их на лету. Например, если у вашего игрока есть какая-то пусковая установка для снарядов, вы можете захотеть создавать снаряды на лету, у которых есть собственная инкапсулированная логика для полета, нанесения урона и т. Д.
Сначала нам нужно ввести понятие префаба . Мы можем создать их, просто перетащив любой GameObject в иерархии сцены в папку с ресурсами.
Как выглядит префаб на вкладке Asset
По сути, это хранит шаблон объекта, который только что был в нашей сцене, со всеми теми же конфигурациями.
Пример пользовательского объекта-кирпича, который используется для динамического создания кубиков Lego в сцене, к нему прикреплен набор компонентов с различными значениями по умолчанию.
Когда у нас есть эти сборные компоненты, мы можем назначить их переменным инспектора (как мы говорили ранее) для любого компонента в сцене, чтобы мы могли создавать новые GameObject, как указано в сборке, в любое время.
Затем мы можем выполнить «создание экземпляра» префаба и манипулировать им в желаемом месте сцены и установить необходимые родительские отношения.
Замена элементов 2
Откройте Tile.cs, и добавьте следующий метод — SwapSprite ниже метода OnMouseDown:
public void SwapSprite(SpriteRenderer render2) { // 1
if (render.sprite == render2.sprite) { // 2
return;
}
Sprite tempSprite = render2.sprite; // 3
render2.sprite = render.sprite; // 4
render.sprite = tempSprite; // 5
SFXManager.instance.PlaySFX(Clip.Swap); // 6
}
Этот метод заменит спрайты двух элементов. Вот как это работает:
- Установите SpriteRenderer под названием render2 как параметр, который будет использоваться совместно с render для обмена спрайтами.
- Проверьте render2 на предмет соответствия SpriteRenderer текущего элемента.
Если они одинаковы, ничего не делайте, поскольку нет смысла менять два идентичных спрайта.
- Создайте tempSprite для спрайта render2.
- Замените второй спрайт, поставив его первым.
- Замените первый спрайт, поместив его на место второго (который был помещен в tempSprite)
- Воспроизведите звуковой эффект.
Метод SwapSprite реализован, теперь вы можете его вызвать из OnMouseDown.
Добавьте эту линию над previousSelected.Deselect(); в других операторах метода OnMouseDown:
SwapSprite(previousSelected.render);
Таким образом произойдет фактическая замена после выбора второго элемента. Сохраните скрипт и вернитесь в редактор.
Запустите игру! У вас должна быть возможность выбора двух элементов — они должны поменяться местами:
Экран Game Over
Игра должна завершаться, когда счетчик движений достигает 0. Откройте GUIManager.cs и добавьте следующий if оператор в MoveCounters под moveCounter = value;:
if (moveCounter <= 0) {
moveCounter = 0;
GameOver();
}
GameOver() появляется после финального движения, и чтобы комбинации добавлялись к финальному счету, понадобится создать сопрограмму, которая бы ждала, пока BoardManager.cs не завершит все перемещения. Затем можно вызвать GameOver().
Добавьте следующую сопрограмму в GUIManager.cs ниже метода GameOver():
private IEnumerator WaitForShifting() {
yield return new WaitUntil(()=> !BoardManager.instance.IsShifting);
yield return new WaitForSeconds(.25f);
GameOver();
}
Теперь замените следующую линию в MoveCounter:
GameOver();
на:
StartCoroutine(WaitForShifting());
Так все комбинации будут учтены до завершения игры.
Сохраните скрипты, запустите игру и подсчитывайте комбинации:
В дальнейшем вы сможете добавлять временные режимы, различные уровни с досками разных размеров, бонусные очки за комбинации, или же анимационные эффекты.
Окно редактора Unity
Окно редактора разделено на несколько разделов. Мы расскажем об этом очень кратко, так как будем постоянно к нему обращаться на протяжении всей статьи. Если вы уже знакомы с этим, пропустите мимо!
Просмотр сцены: позволяет размещать и перемещать игровые объекты в сцене.
Просмотр игры: предварительный просмотр того, как игрок будет видеть сцену с камеры.
Инспектор: предоставьте подробную информацию о выбранном GameObject в сцене.
Assets / Project: здесь хранятся все префабы, текстуры, модели, скрипты и т. Д.
Иерархия: позволяет вложение и структурирование игровых объектов внутри сцены.
Теперь мы готовы начать!
Окно редактора Unity
Окно редактора разделено на несколько разделов. Unity Game Objects — просмотр сцены: позволяет размещать и перемещать объекты GameObject в сцене и является основным строительным блоком проекта в игровом движке Unity. Все, что разработчик помещает на сцену в Unity, должно быть заключено в «игровой объект». Если у пользователя есть опыт веб-дизайна, он может использовать его в GameObjects, как элементы – контейнеры. Они легко расширяются для создания сложных функций или визуальных эффектов. Создание Иерархии происходит так же, как и в веб-разработке. Логика вложения игровых объектов во многом аналогична веб. Чтобы добавить контейнерам функциональности, прибавляют компоненты, которые, по сути, являются скриптами, написанными на C # или Javascript. Unity работает с моделью Actor Component, проще говоря, GameObjects — это актеры, а Components — сценарии.
Создание настраиваемого окна редактора заключается в следующем:
- Создается сценарий, полученный из окна редактора.
- Используется код, чтобы активировать окно.
- Реализуется код GUI для пользовательского инструмента.
Для создания «Окна Редактора» пользовательский скрипт нужно сохранить в папке с именем «Редактор». Создают в этом скрипте класс, производный от «Окна Редактора». А после прописывают элементы управления GUI в функции OnGUI внутри.
Хорошие ресурсы для разработки игр в 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
Перед вами пустая страница. С ней вы и будете работать, но вам потребуется время, чтобы настроить интерфейс в соответствии со своими конкретными нуждами. Лично мне удобнее, когда консоль находится рядом с игровым экраном, но если у вас маленький монитор, вы можете заменить панели вкладками.
Прежде чем перейти к созданию игры, уделите несколько минут, чтобы подготовить свой проект и сцены.
Чтобы держать все под рукой, советуем создать папки во вкладке Project (Проект). Эти папки будут созданы в папке Assets вашего проекта.
Внимание: папка Assets – это место, где хранится все, что вы добавляете во вкладке Project. Она может быть невидимой в Unity, в зависимости от выбранной разметки вкладки (одна или две колонки), но вы сможете увидеть ее, открыв приложение для экспорта файлов.. Вот пример структуры, которую мы используем в наших проектах
Вы можете адаптировать ее под свои предпочтения
Вот пример структуры, которую мы используем в наших проектах. Вы можете адаптировать ее под свои предпочтения.
Город тоже бы не помешал
Время шло. Мы, с моим другом Ильей, сидели у меня и делали игру, я писал код, рисовал графику, а он составлял мне компанию и писал музыку (Он первоклассный музыкант), подсказывал какие то идеи и т.д. Параллельно мне помогал с рисовкой предметов Саня, в тот момент он находился в армии и рисовал прямо от туда!)
Пора бы перерисовать город, а то как то скучно..Взял несколько референсови начал творить. но не долго xD
В этот момент на работе появились проблемы, завалы и так далее. Игру пришлось отодвинуть на второй план и ей я занимался меньше. Шел уже второй месяц.
Через неделю или даже две я нашел еще сил и продолжил разработку. Город расширялся, дорисовывался и менялся.
В принципе конечный результат городаДалее пошли иконкиМелкие измененияКоробка! наконец то она не просто квадрат))
Расширенные возможности
На этом движке есть масса дополнительных возможностей. Мы не будем сейчас вдаваться в подробности, но перечислить их стоит. Так пользователи будут знать, что такие инструменты для работы есть, и смогут детально изучить их.
Создание интерфейса (UI)
В Unity предусмотрено достаточно инструментов для создания пользовательского интерфейса будущей игры. Эти инструменты можно комбинировать между собой самыми разными способами, создавая эргономичные и понятные интерфейсы для игры на устройствах с различным разрешением экрана.
Рассмотрим это на примере простого интерфейса из трех кнопок. Изначально клавиши располагаются на определенных точках относительно центра прямоугольника, но если пользователь перевернет смартфон, то клавиши хоть и не поменяют свое положение относительно центра, все же сместятся в глазах игрока.
Эти особенности нужно учитывать при разработке игр, особенно в случае, если нужно получить сложный интерфейс с рядом клавиш и несколькими подпунктами каждой из них.
Расширение редактора Unity
Unity дает возможность добавлять пользовательские кнопки в инспектор. Это позволяет влиять на мир в режиме редактирования. Кроме того, можно добавлять новые пользовательские окна с определенными параметрами. Для этого используется Property Drawers, где можно задать внешний вид элементов.
Анимация
Движок имеет систему анимации на основе графиков, которая позволяет смешивать и контролировать анимации на различных объектах, таких как игроки. Система поддерживает множество аспектов создания анимированного персонажа, включая принцип тряпичной куклы (rag-dolls).
Действия персонажа в игре будут выстраиваться на основании его перемещения в пространстве конкретной сцены и анимации, которой это перемещение сопровождается. Редактировать также можно и аспекты проигрывания, например скорость и время.
Компоненты
Как вы уже поняли, игровые объекты бесполезны сами по себе. В движение они приводятся при помощи компонентов. Именно они являются функциональной частью и отвечают за то, что происходит в игре. Это своего рода скрипты, которые могут быть написаны на C# или Javascript.
Проще говоря, игровые объекты — актеры, а компоненты — это сценарии, по которым они играют свои роли. Процесс создания игр представляет собой сбор пазлов. Сначала нужно создать множество отдельных элементов и повторяющихся компонентов с различными настройками, и только потом эти небольшие компоненты собираются в большие страницы.
Преимуществом такого подхода является повторное использование и четко определенные каналы связи между элементами
В разработке игр важно минимизировать риск непреднамеренных ошибок. Они имеют тенденцию выходить из-под контроля, поэтому их сложно найти и устранить
Таким образом, создание небольших, надежных и многократно используемых компонентов имеет решающее значение.
Лучшие бесплатные пакеты в Asset Store
Как уже было упомянуто в начале, разработчики Юнити добавляют новые модули, которые изначально отсутствуют в базовой версии. Скачать их можно из Asset Store, многие пакеты бесплатно. И с их помощью будет проще делать игры в формате 2D. Итак, список лучших бесплатных пакетов в Unity:
- TextMesh Pro. Этот модуль предназначен для редактирования текстовых элементов. В Юнити вам придется много работать с такими элементами, без них мало какая игра обходится. Среди достоинств этого модуля для Unity – улучшенный рендеринг, множество динамические визуальные стили, оптимизированные инструменты для верстки. Если в вашей версии Unity этого модуля нет, смело скачивайте, при работе с 2Д игрушками он точно пригодится.
- 2D Sprite Pack. Пакет представляет собой набор спрайтов, которые пригодятся в разработке прототипов в 2Д. В Юнити спрайты – основа практически каждой игры, поэтому стоит скачать пакет для упрощения работы.
- Anima 2D. Если ваша игра содержит скелетную анимацию, этот пакет для Unity поможет ускорить работу с ней. В последних версии программы утилита включена в базовый набор, но если вы установили более старую версию Unity, стоит скачать пакет дополнительно.
- Post Processing Stack. Если вы хотите игрушку создать как профи, не обойтись без этого стека. Он покажет свои возможности при постобработке игры. С его помощью вы сможете применить полный набор эффектов, и ваша 2Д разработка станет по-настоящему зрелищной и интересной. Но нужно учитывать, что при добавлении эффектов в проект Unity для смартфонов и планшетов, устройства снижают производительность. Тут главное – найти баланс между зрелищностью и потреблением ресурсов.
- Standard Assets. Обязательный пакет для новичков, осваивающих разработку 2D игрушек. Содержит большой набор скриптов, ассетов и сцен для Unity, которые точно пригодятся при изучении возможностей программы.
Это не полный перечень бесплатных пакетов для Юнити, которые используют и новички, и более опытные разработчики 2Д игрушек. Но перечислены наиболее полезные. Конечно же, зайдя в Asset Store, хочется скачать вообще все, что там есть, потому что каждый пакет по-своему интересен. Но остановитесь вовремя, осваивайте новые возможности постепенно. Что же касается установки других утилит – сделать это можно в любой момент.
Hollow Knight
Unity завоевал славу движка, популярного среди независимых создателей игр. Например, большинство разработчиков инди-сообщества itch.io выбрали для своих проектов именно эту технологию.
Первые концепты 2D-платформера Hollow Knight появились на геймджеме Ludum Dare 27. Австралийские разработчики — Ари Гибсон и Уильям Пеллен — стали развивать свои идеи, зародившиеся на хакатоне, и запустили кампанию на Kickstarter. Собрав 57 тысяч долларов, они основали студию Team Cherry.
PC: 87
PS4: 85
XONE: 90
NS: 90
Скриншот: игра Hollow Knight / Team Cherry
Hollow Knight — метроидвания, события которой происходят в подземном городе жуков. Вымышленный мир устроен как большой лабиринт со множеством секретов, неожиданных проходов и постоянных препятствий. Геймплей жанра завязан на бэктрекинге: главный герой изучает мир, приобретает новые способности, а затем возвращается в старые уровни, чтобы найти этим способностям применение.
«Мы не задумывались о жанре нашей игры, не хотели загонять себя в жанровые рамки. Некоторые механики были взяты из Metroid и Mega Man, система амулетов — из Paper Mario. Мы не слишком беспокоились о том, чтобы Hollow Knight была именно метроидванией, просто пытались создать захватывающее приключение. Мы наполняли мир интересными персонажами в непривычном сеттинге, добавляли точки интереса и связи, сюрпризы и неожиданные события».
Ари Гибсон,создатель Hollow Knight
Система амулетов, влияющих на передвижение и бой, позволяет менять билд персонажа во время сохранения на скамейке. В зависимости от конкретного препятствия игрок может собрать подходящую комбинацию амулетов.
Скриншоты: игра Hollow Knight / Team Cherry
Скриншоты: игра Hollow Knight / Team Cherry
Скриншоты: игра Hollow Knight / Team Cherry
Минималистичная графика, мрачный и готичный арт-дизайн Hollow Knight напоминают, что красивые игры не обязательно должны быть нацелены на грандиозные технические достижения.
«Главный герой — самый обычный жук, посвящённый в рыцари. Внешность персонажа состоит из множества технических ограничений, которые иногда полезны для творчества. Надев на жука маленький плащ, игрок не сможет увидеть его конечности. Мы просто попытались создать что-то простое, потому что, каким бы ни был ваш герой, вы будете рисовать его тысячу раз. Минимализм — безусловно — помогает разработке».
Уильям Пеллен,создатель Hollow Knight
Team Cherry создала отличительный визуальный стиль из нарисованных от руки рисунков и традиционной анимации, сделанной в Photoshop. Вместо сложных 3D-систем освещения разработчики использовали мягкие прозрачные формы. Команда создавала уровни с помощью 2D-активов, наложенных на 3D-среду, используя двухмерную физику, упаковщик спрайтов и систему частиц из набора инструментов из магазина ассетов.
Ассеты Unity, нарисованные Ари Гибсоном. Скриншот: PCGamer
Студия активно использовала Unity Asset Store — внутренний магазин, в котором разработчики выкладывают в общий доступ бесплатные и платные ассеты. Движок поддерживает большинство популярных форматов файлов. Модели, звуки, текстуры, материалы и скрипты можно запаковывать в формат .unitypackage и передавать другим разработчикам или выкладывать в магазине ассетов.
Трейлер Hollow Knight: Silksong
С момента релиза в 2017 году Hollow Knight продалась тиражом свыше трёх миллионов копий. Team Cherry развивают франшизу: вышло четыре бесплатных DLC, анонсирован сиквел с подзаголовком Silksong. Главным героем продолжения станет Хорнет, которую игроки уже встречали в оригинале.
Идея
Всем привет! Не так давно, я решил, что хочу написать простую игру. У меня уже были проекты, был даже один который я уже выкладывал в google play, он даже насобирал неплохих отзывов на мое удивление, однако разошелся тиражом в 3000 копий. В этот раз решил, что хочу написать простую игру, очень простую, такую, чтоб потратить не больше месяца, выложить в маркет и радоваться положительным отзывам, ну и конечно копеечке с рекламы.
Долго думал, какой же выбрать жанр, сеттинг, механику… Что выбрать за главную фичу? Чем игра должна заинтересовать пользователей?
Решение пришло совершенно неожиданно, как это обычно и бывает. Я смотрел видео на ютубе и увидел ролик, как люди ловили предметы, которые падали из башен. Что поймал, то и унес домой. Вроде звучит достаточно просто. Не так ли?
Какого же было мое удивление, когда я смотрел видео и переживал за игроков! В этот момент меня осенило, и уже на середине ролика я горел идеей написать быстрый проект на такую тематику!
За пол часа я накидал простой прототип. Ничего сложного. Есть 2 башни, из которых падают квадраты. Другим квадратом ты ловишь эти квадраты. Выглядело это примерно так.
Первый набросок игры.
Совет для новичков
Для тех, кто планирует написать свою первую игру, не стоит недооценивать сложность и время, необходимое для написания даже самых тривиальных игр на движке Unity. Начинают с выбора с самой простой концепции и разбивают ее на небольшие достижимые этапы. Специалисты советуют максимально разделить игру как можно на более мелкие независимые компоненты, тогда будет гораздо меньше шансов столкнуться с ошибками.
Кроме того, не надо стесняться спрашивать советов у опытных разработчиков. Новичкам лучше пройти онлайн-курсы. У игрового движка есть одно из лучших сообществ в мире, и есть множество высококвалифицированных профессионалов, которые размещают контент бесплатно или почти бесплатно. Также следует посетить магазин активов Asset Store, где можно найти широкий спектр материалов: сценарии, модели, звуки, музыку или даже законченные проекты по различным ценам, включая бесплатные, которые можно включить в первый собственный проект, чтобы понять, как работает Unity.
Бонус
Небольшой совет о том, как проверять работу приложений. Естественно проверить корректность работы своей системы управления можно только на устройстве. И что же, всё время билдить миллионы версий игры и проверять работу? По счастью, нет, не нужно. Команда Unity позаботилась о своих пользователях выпустив приложение Unity Remote.
На сайте очень хорошо описано как устанавливать и настраивать, но есть пара советов. Первое, не забудьте перевести свой телефон в режим разработчика. Второе, при подключении к компьютеру выберите пункт касающийся передачи файлов. И третье, если вы всё сделали как сказано на сайте и ничего не забыли, но у вас не работает – перезагрузите Unity, не отключая телефон от компьютера.
Надеемся, эти советы помогут вам создать свою первую игру под сенсорные экраны и позволит проявить всю свою креативность.
Чем занимается разработчик на Unity
Разобраться в том, кто такой Юнити разработчик, несложно. Это специалист, который работает в программе и создает в ней игры. Видеоигры могут быть на любые платформы и любого типа (одиночные и мультиплеерные). Разработчик участвует в проекте от начала до конца, занимаясь тестированиями, доработкой, проверкой, модификациями и многим другим. Иногда специалисты на Unity делают видео-трейлеры и кат-сцены в играх.
Если специалист работает в компании, то он взаимодействует с другими разработчиками, аниматорами, сценаристами, дизайнерами и всеми остальными. Зачастую люди создают продукты на Юнити в одиночку, реализуя небольшие инди-игры.
Плюсы и минусы профессии
Профессия разработчика игр на Unity имеет свои достоинства и недостатки
Важно понимать, что большинство из них субъективны, и некоторые факторы, которые покажутся минусом для большинства, для некоторых могут быть приемлемы
Список плюсов:
- большой выбор обучающих курсов, причем большинство из них действительно полезны;
- хорошая заработная плата даже для Джунов, не говоря уже о Миддлах и Сеньорах;
- можно найти как удаленную работу, так и место в офисе;
- есть возможность проектных работ, а не только постоянное трудоустройство;
- почти всегда можно найти применение своим хобби и сторонним навыкам;
- постоянный карьерный рост, пополнение знаний и улучшение навыков;
- можно научиться всему самостоятельно;
- легко устроиться на работу за границей, так как в геймдеве все знают английский язык.
Перечень минусов:
- обучение, — особенно с нуля — займет много времени и сил;
- порог вхождения в профессию высокий, и в начале понять все будет довольно сложно;
- это сидячая работа, а значит негативно повлияет на физическое состояние;
- обязательно знание английского языка, хотя бы на уровне Intermediate;
- профессия подразумевает постоянное обучение, даже если специалист уже опытный и достиг уровня Сеньора;
- если стать Джуном можно за несколько месяцев, то переход от Junior-а до Middle-а займет в лучшем случае пару лет;
- разработчик на Unity должен не только владеть программой, но и сопутствующим софтом (ПО для тестирования, отладки, оптимизации и прочее);
- для серьезных работ обязательно знание языка программирования C#.
Внимательно ознакомившись с вышеизложенными факторами и спроецировав их на себя, уже можно понять, подходит данная профессия или нет.
Встроенные компоненты Unity
Компонентная модель актера
Сами по себе GameObjects довольно бесполезны — как мы видели, они в значительной степени просто контейнеры. Чтобы добавить к ним функциональность, мы должны добавить компоненты, которые по сути представляют собой сценарии, написанные на C # или Javascript.
Unity работает на основе модели компонентов акторов, проще говоря, GameObjects — это актеры, а компоненты — ваши скрипты.
Если вы писали какие-либо веб-приложения раньше, вы будете знакомы с идеей создания небольших повторно используемых компонентов, таких как кнопки, элементы форм, гибкие макеты, которые имеют различные директивы и настраиваемые свойства. Затем собираем эти маленькие компоненты в большие веб-страницы.
Большим преимуществом этого подхода является возможность повторного использования и четко определенные каналы связи между элементами. Точно так же при разработке игр мы хотим минимизировать риск непреднамеренных побочных эффектов. Небольшие ошибки имеют тенденцию выходить из-под контроля, если вы не будете осторожны, и их чрезвычайно сложно отладить. Таким образом, создание небольших, надежных и повторно используемых компонентов имеет решающее значение.
Ключевые встроенные компоненты
Думаю, пришло время привести несколько примеров встроенных компонентов, предоставляемых движком Unity Games.
- MeshFilter: позволяет назначать материалы для 3D-сетки GameObject.
- MeshRender: позволяет назначать материалы 3D-сетке.
- Collider: позволяет обнаруживать GameObject во время столкновений.
- Rigidbody: позволяет реалистичному физическому моделированию воздействовать на GameObjects с 3D-сетками и запускать события обнаружения на коллайдерах боксов.
- Свет: освещает части вашей сцены.
- Камера: определяет область просмотра игрока, которая будет прикреплена к GameObject.
- Различные компоненты холста пользовательского интерфейса для отображения графического интерфейса пользователя
Их еще много, но это основные, с которыми вам нужно познакомиться. Один совет заключается в том, что вы можете получить доступ ко всем документам по ним через руководство по Unity и справочник по сценариям в автономном режиме, где бы вы ни находились:
Просто нажмите на раздел справки, документация в целом довольно хороша
Что нужно знать, чтобы стать разработчиком игр на Unity
Кратко перечислим, какие технологии вам нужно освоить, чтобы стать разработчиком Unity-игр:
- Язык программирования C#.
- Инструменты среды разработки Юнити для создания интерфейса, звука, анимации, физики и искусственного интеллекта.
- Основные паттерны проектирования видеоигр и принципы геймдизайна.
- Создание игровых и поведенческих сценариев.
- Особенности 2D- и 3D-игр.
- ПО для тестирования, отладки и баг-трекинга.
Приводим пошаговую инструкцию, которая поможет вам при обучении:
- Скачайте движок с официального сайта, установите и познакомьтесь с основными опциями.
- Посмотрите, как создается самый простой интерфейс – в учебниках или в видеоуроках с Youtube.
- Составьте график и список тем для изучения. Начинайте заниматься регулярно, желательно не реже 1-2 раз в неделю.
- Сразу же закрепляйте теорию на практике, например, можно найти скринкасты опытного разработчика и повторять код.
- Когда у вас будут уверенные навыки, вы сможете практиковаться на реальных проектах, к примеру, на бирже фриланса.
Сколько стоит движок для создания игр
Для работы в Unity нужно оформить подписку – вы можете выбрать один из четырех тарифов в зависимости от потребностей и годового дохода.
Тарифный план | Personal | Plus | Pro | Enterprise |
Годовая абонентская плата в долларах | 0 долл. | 399 долл. | 1800 долл. | 2400 долл. |
Сумма в рублях в год | 0 руб. | 29,5 тыс. руб. | 133 тыс. руб. | 177 тыс. руб. |
Доход пользователя за последние 12 месяцев | До 100 тыс. долл. | До 200 тыс. долл. | От 200 тыс. долл. | От 200 тыс. долл. |
Особенности | Доступны базовые инструменты | Доступна аналитика о поведении игроков | Доступ к исходному коду, техподдержка команды Unity | Доступны специальные отраслевые решения, премиум-поддержка |
Принятие пользовательского ввода
Игра должна откликаться на действия пользователя и введенные им данные. Наиболее распространенные способы сделать это — использовать следующие коды в функции Update () компонента:
- GetKey (KeyCode.W). Пока пользователь зажимает клавишу W, происходит целевое действие. Например, автовыстрел.
- GetKeyDown (KeyCode.W). Целевое действие совершается при первом нажатии клавиши.
Есть множество особенностей при работе с функциями. Например, в случае, если использовать вместо Input.GetKey Input.GetAxis или Input.GetButton, то в конечном продукте пользователь сможет переназначать клавиши для обеспечения комфорта игрового процесса.
Предотвращение замены элементов
Доска располагает элементы вверх и вправо. Поэтому, чтобы избежать «автоматического» совпадения, придется узнать, какой спрайт находится слева от нового элемента, и какой спрайт ниже нового элемента. Для этого понадобится создать две переменные 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);
- Создайте список возможных символов для этого спрайта.
- Добавьте все символы в список.
- Удалите символы слева и ниже текущего спрайта из списка возможных символов.
Затем, замените эту линию:
Sprite newSprite = characters;
вот этой:
Sprite newSprite = possibleCharacters;
Новый спрайт будет выбран из списка возможных символов и сохранится.
Добавьте эти линии под newTile.GetComponent().sprite = newSprite;:
previousLeft = newSprite;
previousBelow = newSprite;
Атрибут newSprite будет присвоен элементам слева и снизу от текущего для следующей итерации.
Запустите игру и проверьте динамическую решетку с неповторяющимися элементами!
Заключение
Первое, что стоит понять: игровой движок не определяет успех или неудачу игры, он, скорее, влияет на процесс производства — и в первую очередь скорость. Что до успеха, здесь гораздо большее значение имеют опыт команды, маркетинг, ну и, как ни странно, качество самой игры. В конце концов, признанный всеми шедевр To the Moon канадская студия Freebird Games вообще сделала на RPG Maker — движке, на котором (из-за простоты его освоения) делается большое количество поделок низкого качества.
Практически все «успешные кейсы» в независимом геймдеве показывают, какие колоссальные усилия нужно прикладывать разработчикам, чтобы расчистить дорогу для своей мечты. Пусть вас не обольщают истории про удачные Kickstarter-кампании — чтобы впечатлить бэкеров, вам нужно показать прототип или какие-то другие наработки и иметь чёткий план развития. Нельзя просто прийти на платформу и попросить денег — об этом было сказано выше в ролике-интервью с авторами Pathfinder: Kingmaker.
Почему независимые студии выбирают Unity? Для начала, это самый универсальный и быстрый способ выпустить мультиплатформенный проект, а начинающая студия должна продавать свою игру везде, где только можно, если хочет окупить затраты.
Кроме того, у Unity самое активное и дружелюбное комьюнити среди всех конкурентов, что немаловажно для студий с небольшим опытом — всегда есть с кем посоветоваться. Об этом говорили даже Blizzard во время работы над Hearthstone — хотя, казалось бы, у них по определению не может быть вопросов
Но, само собой, успех не свалится на вас как мартовский снег — нужно много работать, и учиться, и снова работать, шаг за шагом делая «ту самую игру». Чего и вам желаем.