Найти тему
/*lexlab*/

Простейшая игра на андроид с помощью Corona SDK (1 часть)

Оглавление

Всем привет!

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

Почему Corona?

coronalabs.com
coronalabs.com

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

На данный момент лидером у инди-разработчиков является Unity. Он бесплатен (для инди), универсален (2D, 3D, любые ОС), имеет большое комьюнити. Однако Юнити может показаться довольно сложным для новичков...

В этот момент на сцену выходит мощный и простой движок КОРОНА. Он лёгкий как сам по-себе (180 МБ), так и в освоении.

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

Где писать код?

Писать код можно во всех популярных редакторах. В своих туториалах я буду использовать Atom. С пакетом autocomplete-corona и language-lua.

Концепт игры

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

Да, это довольно ленивый ход, но прогресс в создании первой игры должен разжечь интерес и азарт.

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

-2

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

Самое начало

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

Итак, после загрузки и установки движка на рабочем столе появиться ярлык "Corona Simulator". Это основной исполняемый файл движка, который позволяет тестировать и собирать игры. Помимо этого в папке куда установлена Corona есть "Corona.LiveServer", но это отдельная история, до которой мы доберёмся только в другом проекте...

Запустив ярлык с рабочего стола мы попадаем в меню выбора проектов. Нажмём на кнопку создания нового проекта, назовём его и выберем пресет для телефонов.

-3

После подтверждения откроется окно симулятора и редактор кода (в моём случае Atom)

-4

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

-5

Если редактор не открылся, вы можете самостоятельно открыть файл "main.lua" из папки с проектом.

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

-6

Делается это так:

-7

Здесь задаётся имя файла (если расположен не в папке с проектом, то полное имя), и его размеры. Т.к. начальный размер фона был 1080х1920, появилась необходимость пропорционально уменьшить картинку до 320x570, если масштабирование не нужно, лучше использовать display.newImage()

После сохранения main.lua в окне с игрой будет это:

-8

Движок автоматически установил положение картинки на (0;0), что является левым верхним углом. Чтобы отцентровать, добавим пару строчек:

-9

Подобным образом добавим гитару на которую будем кликать. Изначально она выглядит так:

-10

Помимо изменения масштаба, необходимо повернуть гитару, для этого напишем следующее:

-11

Вооот, теперь это больше напоминает концепт. Осталось добавить счётчик и можно радоваться жизни)))

-12

Создаём переменную counter и экземпляр объекта newText с нужными параметрами. Чтобы не оставлять чисто белый цвет у счётчика, воспользуемся командой setFillColor() (цвет выберем пипеткой из фона):

-13

Как вы могли заметить, цвет задаётся в промежутке от 0 до 1. Чтобы перевести из обычного формата в этот, достаточно разделить имеющееся число на 255.

Теперь можно добавить функцию которая будет увеличивать счётчик:

-14

Вызывать её будет "слушатель события" присвоенный кликабельному объекту (гитаре):

-15

Всё! Теперь вы можете всласть натыкаться в свою гитарку, пока ждёте продолжения этого туториала...

-16
Итоговый код
Итоговый код