Как я делал свою первую игру
Это будет нетипичный лонг по созданию игры, я начну с самого начала. Первое что нужно знать, что я никогда не разрабатывал игры.
Почему Unity?
Ну, начнем с того, что YouTube просто забит уроками, как на русском, так и на английском. Поэтому изучение программы на начальном этапе довольно простое.
Вы можете спросить меня: "А как же C#?" А он разве сложный? Весь код, который будет использоваться на начальном этапе есть в интернете. Тут главное понимать, что он делает.
"Но есть же Unreal" — может возразить юный хейтер, но где ты видел инди разработчика, который в одиночку создает игры? И не нужно приводить в пример корейца, который заканчивает очередную игру, пока ты спишь.
Как по мне, Unity будет намного проще на начальном этапе, так как с самого начала на нем учат делать 2D-игры.
Мотивация
Конечно же Деньги! Я зашел на Head Hanter и посмотрел вакансии. А чем я хуже? Вообще хорошей мотивацией могут стать различные ролики по Game Jam. Их на ютюбе навалом, можно смотреть не переставая.
Обучение
Итак, ролики я посмотрел. Что дальше? А дальше — просмотр обучающий роликов! Подойдут любого качества, главное чтобы тебе было понятно, правда от местного кода может стать плохо.
Я начал с курса от loftblog. Мало того, что в коде не было нормальной читаемой структуры, так он еще оператор if-else не перенес на следующую строчку!
Меня хватило на пять уроков, поэтому я решил создать новый проект и сделать все по нормальному.
Концепция
У меня нет опыта в Unity, поэтому нужно сделать игру, которая будет простая, но с одной интересной механикой. Поразмыслив, я решил, что у меня будет персонаж, который движется вперед и прыгает через препятствия. Но затем, я сменил препятствия на специальные «шарики», при поедании которых персонаж увеличивается и уменьшается.
Выглядит довольно просто, теперь осталось нарисовать графику, анимации, меню и прочее. Звучит довольно просто.
Графика
Для рисования пиксель арта я использовал Aseprite. Программа несложная, правда я хотел использовать фотошоп. К сожалению, программа лагает при включении пиксельной сетки.
Далее в поисковике и смотрим картинки, у меня был слайм (слизь). Конечно, ничего оригинального здесь особо не придумаешь, поэтому я решил добавить немного милоты.
В итоге у меня получился вот такой набор:
Настройки для пиксельных картинок. Учите, что Pixels Per Unit — это размер вашей картинки. У меня 16х16.
Префабы
В Unity есть возможность рисовать префабами через Grid. Я перекинул объекты в Prefab и создал там палитру в новом гриде. Теперь открываем новую палитру в редакторе и перекидываем спрайты с префаба в редактор. Чтобы ровно расположить объекты нужно использовать Box Collider 2D. Затем для рисования используйте GameObjectBrush.
Вот подробное видео.
Для грида использую следующие настройки:
Прыжок
Прыжок реадизован довольно просто, но с учетом гравитации. Более подробно можно прочитать здесь.
Звуки
Звуки для игры я брал с сайта, остальное по ключевым словам.
Постпроцессинг
Для игры я использовал постпроцессинг. Его добавлять довольно просто, нужно добавить два компонента и создать профайл.
Для Post-proccess Layer нужно создать новый слой.
Канвас
В проекте у меня несколько канвасов. Для создания функции OnClick нужно перемещать сам конвас на кнопку, чтобы появились методы, которые вы накодили.
Промежуточный Итог
В итогу у меня появился вот такой вот уровень.
«Паралакс» сделал с учетом позиции камеры и скоростью игрока.
Камера
В игре используется плагин Cinemachine, поэтому нужно указать метод обновления камеры. В моем случае Last Update.
Сборка
Когда три уровня было готово, я начал собирать проект. Здесь я столкнулся с одной проблемой — у меня лагала игра. Я не мог понять в чем проблема, но потом выяснил, что в Project Settings — Physics 2D стоит Fixed Update, а у меня все вызовы перемещения через Update, поэтому игра лагала, но не только.
Еще был включен VSync, хотя после переключения в Physics 2D игра стала работать нормально, но я все равно его отключил.
Очень важно при сборке установить минимальное разрешение и режим работы приложения — В Окне. Иначе игра будет запускаться на полный экран т это неудобно. Минимальное разрешение в котором запускался проект — это 1280х720
Иконка
Иконку я делал в midjourney. Потребовалось около 20 генераций, а дальше картинки стали криповыми. Далее отфотошопил, чтобы более подходило по цвету, а так же убрал фон.
Сборка под Linux
Всегда хотел делать игры для линукс, поэтому собрал сборку без труда. Затем установил Ubuntu 22.10 на виртуальную машину (Virtual Box).
В настройках задал общую папку.
Для открытия папки без root потребуется вести команду, потом перезагрузи систему:
Для запуска игры открой папку через терминал и запустите (файл должен быть исполняемым.)
chmod +x ./файл-игры — делает файл исполняемым.
./файл-игры — запуск игры.
Производительность так себе, учитывая объем памяти, но запуск проверить можно.
Игра
Rumle - это платформер раннер, состоящий из 5 гонок. Прыгай и собирай монетки. Игра полностью бесплатна.