Путь дурака. Игра на Unity с нуля до выпуска. Часть 1 - Подготовка и первые шаги
Для тех, кто не в курсе - это серия туториалов по написанию игры с нуля до выпуска, основанное на моей уже готовой и развивающейся игре. Пост с введением тут. Уровень сложности туториала подходит для орков или маленьких детей. Я рассчитываю, что вы умеете в элементарные операции наподобие: открыть сайт, скачать картинку/программу, переименовать файл, создать папку, помнить где она.
Мы будем делать текстовую RPG с элементарной (но приятной) графикой, сюжетом, прокачкой, открытым миром на движке Unity и языке программирования C# (си шарп), а также будем разжевывать все используемые моменты движка и языка по мере использования. А то многие туториальщики просто бросают в меня кусок кода, как будто я знаю, что с ним делать.
Список того, что нам понадобится:
• Unity. Скачать с официального сайта
• Adobe Photoshop или любой другой удобный вам графический редактор
• Notepad++. Скачать. (очевидно, что подойдёт любой другой редактор кода)
Это наш минимальный набор для начала работы.
Первое, что нам нужно сделать - это правильно установить Unity. Информацию об этом можно найти быстрее, чем узнать, где живёт Джон Коннор, но я обещал с нуля. По ссылке скачивается программа Unity Hub, которая служит этаким вахтёром на пути к работе с движком. Открываем её. Нам нужно сделать две вещи - скачать редактор и создать проект.
Далее следует Очень Важный Момент Который Нельзя Пролюбить! Я сам порой его упускаю. Здесь мы должны выбрать компоненты для установки. Не хотите заморачиваться - выбирайте все пункты.
Минимально необходимый уровень, если вы работаете на Windows:
Всё. Дальше не прерываем процесс и ждём, пока установится. Только после этого можно будет создать свой проект. Попейте чаю и погуляйте с собакой, подготовьте себе рабочее место.
Небольшой оффтоп. Что я узнал для себя за пару лет работы в домашних условиях:
• Соцсети отвлекают - закройте их, отключите уведомления на телефоне
• Стул должен быть удобным, клавиатура должна стоять под комфортным углом, а помещение нужно регулярно проветривать
• Музыка может помочь в работе - ищите такую, которая не заставит вас подпевать, танцевать или махать хаером. Рекомендую Lo-Fi, Binaural Beats и прочую динамически ровную музыку без слов.
• Ходите гулять!
Второй этап - создание проекта.
В следующем окне вы увидите много шаблонизированных проектов, с которыми у вас будет прекрасная возможность ознакомиться самостоятельно. В их числе есть даже обучающие сэмплы. Нам нужен самый простой вариант.
Далее спокойненько ждём пока Unity создаст необходимые файлы для проекта и откроет его. Вуаля! Первый восторг, первое достижение "Открыл редактор" получено!
Тут важно сделать два замечания:
• Я буду знакомить вас с интерфейсом только по мере необходимости. Это мой подход
• Мы будем делать игру с расчётом на мобильные устройства, а не большие экраны стационарных компов и ноутов. Разницу и смысл этого буду объяснять по мере работы
Нам нужно переключить проект в режим Android. Для этого жмём File - Build Settings - Android - Switch Platform (подробно на скрине)
Теперь мы разберемся в проекте и настроим его иерархию. Нам нужно зайти по пути D:/Unity Projects/Piter Quest (ну или путь, который вы выбрали) и открыть там папку Assets. Именно в этой папке будут храниться все наши ресурсы - картинки, текст, скрипты, слёзы. Эта папка - самая главная (намёк на бекапы).
Как вы это всё там расположите движку практически безразлично, а вот нам нет.
Нам понадобится содать папку для хранения всех ресурсов игры под названием Resources. Для хранения сцен уже есть папка Scenes. Для хранения скриптов сделаем папку Scripts.
Папка Resources должна быть сделана именно в таком написании с заглавной буквы. Это специальная папка для движка - впоследствии мы будем получать доступ к её содержимому малюсеньким кусочком кода. Подробнее о ней, а также о других специальных папках можно почитать по ссылке.
Далее поговорим про святая святых - наше рабочее пространство. Ниже скриншот рабочего стола по умолчанию. Можете оставить всё как есть, но как по мне - такое расположение окон не очень удобно для нашей игры.
Настроим интерфейс рабочего поля редактора под меня под себя. Это проще показать, чем объяснить. На видео я перетаскиваю вкладки и меняю размер окон (мамкин программист). Вернуть как было или попробовать заготовленные пресеты можно в Window - Layouts.
"Эй! Мы игру-то делать будем сегодня?!". Да-да, сейчас начнем. Оговорюсь сразу - мы делаем резиновую верстку под альбомную ориентацию.
• Альбомная ориентация - это когда вы переворачиваете телефон (он типа широ-о-окий)
• Резиновая верстка - это термин верстальщиков. Означает, что все элементы оформления интерфейса, которые мы будем создавать в игре, будут автоматически подгоняться под формат экрана мобильного устройства. Их размеры будут задаваться не в пикселях, а в процентах.
Итак, давайте начнём делать нашу первую сцену - Главный Экран Игры или в простонародье главное меню.
Я уже успел переименовать сцену. Чтобы это сделать - кликните правой кнопкой мыши (ПКМ) по SampleScene и выберите Save Scene As. Назовите её MainScene (или как хотите). Затем удалите SampleScene.
В первую очередь нам понадобится главный холст - или как его кличут в Unity - Canvas. В нашем случае Canvas будет содержать в себе все элементы интерфейса игры за исключением фона. Фон мы сделаем позже.
Для начала нажмите на плюс в левом верхнем углу окна Hierarchy или щёлкните ПКМ по пустому месту в этом окне, выберите UI - Canvas.
В иерархии у нас появилось два объекта - Canvas и EventSystem. EventSystem отвечает за все взаимодействия пользователя с игрой и обязательно должен присутствовать в каждой сцене (иначе ни одна кнопка работать не будет). Сейчас мы немного настроим Canvas. Нажмите на него в иерархии и давайте посмотрим что о нём говорит Inspector.
В компоненте Canvas Scaler установите UI Scale Mode --> Scale With Screen. В появившихся новых настройках:
- Reference Resolution установите как 1600 и 900
- Screen Match Mode --> Match Width Or Height
- Match --> 0
- Reference Pixels --> 100
Это мои настройки под мою мою игру, которую мы создаем в этом туториале. Используйте их, если вы пока слабо разбираетесь в Unity. Если же вы разбираетесь неплохо, то устанавливайте свои.
Для поднятия морального духа и понимания того, как мы дальше будем делать главное меню, давайте сделаем симпатичный фон. Нам понадобится сделать новый объект с компонентом Sprite Renderer. Для этого щелкните ПКМ на пустом месте в иерархии или нажмите на плюс в верхнем левом углу и выберите Create Empty. Это пустой объект, к которому мы сами будем добавлять компоненты.
У нас появился новый объект GameObject. Потяните его и перенесите в иерархии выше Canvas.
С этого момента я больше не буду подробно писать как создать объект в Unity. Надеюсь, с двух раз вы запомнили и научились ;)
Переименуем его в Background (через инспектор или нажатием ПКМ) и добавим к нему компонент Sprite Renderer. Для этого в инспекторе нажмите Add Component и выберите Sprite Renderer. Тут есть два способа. Первый - искать по категориям (Render - Sprite Renderer), второй - начать набирать в строке название и Unity отфильтрует лишнее. Мне удобнее второй.
Нам потребуется фоновая картинка. Чтобы не нарушать авторские права возьмите своё творчество, купите или найдите необходимое на бесплатных фотостоках. Рекомендую Pixabay (потребуется VPN). Когда найдёте нужную, создайте в папке проекта Assets/Resources новую папку Backgrounds и поместите картинку туда. Не забудьте переименовать.
Для того, чтобы фон всегда заполнял экран при любом разрешении и не появлялось пустых участков, нам понадобится изменить размер картинки на 2400x1200 в Фотошопе. Этот способ я выработал сам для своей игры и под свои настройки (это важно). Откройте картинку в Фотошопе и сейчас мы её немного трансформируем.
- Изображение --> Размер изображения
- Ширина --> 2400 пикселей. Ок.
- Изображение --> Размер холста
- Высота --> 1200 пикселей. Ок. Сохраняем как jpeg
Формат изображений для Unity не jpeg, а png. Однако, в данном случае нет смысла тратить время на сохранение фонов в png. Unity при сборке сама всё прекрасно переконвертирует. Это только для фонов! К элементам интерфейса мы подойдём гораздо внимательнее.
В компоненте Sprite Renderer объекта Backgroung в поле Sprite выберите нашу новую картинку или перетяните её в это поле из списка файлов проекта (Assets - Resources - Backgrounds). В компоненте Transform измените значения поля Scale (масштаб) на x = 1.2, y = 1.2, z = 1. Этот нехитрый способ поможет нашему фону аккуратно и без пробелов смотреться на экранах с соотношением сторон до 23:9 (это такой длинный смартфон-лопата).
Если вы работаете на не самом новом ноутбуке или мониторе, то выставьте предварительное разрешение на 1280х720. На моем ноуте с разрешением 1600х900 это идеальный вариант.
Заканчивается место в посте. Главное меню будем делать в следующем. Я как раз его пишу и увидим мы его ночью или завтра утром.
Небольшое послесловие. Скорее всего эта серия постов растянется надолго. Моя задача - объяснить вам разные важные моменты, ничего не упустив, и усовершенствовать свои знания. Пока я писал этот пост, я нашел в своих знаниях несколько пробелов и с удовольствием их восполнил. Пишите комментарии - в них сила - только старайтесь сильно не бугуртить. Я критику воспринимаю спокойно и с юмором (с недавних пор).
Не ждите новых постов - занимайтесь игростроем самостоятельно и сами ищите информацию.
Содержание туториала (Google Docs с ссылками на Пикабу)