- PVSM.RU - https://www.pvsm.ru -
Эта статья для тех, кому быстро надоедает играть в Angry Birds, 2048 или Lord of Rings и в чьих головах начинают зреть сценарии собственных игр. Я полагаю, на местном ресурсе таких индивидуумов не менее 95 процентов. Оставшиеся 5 процентов (скорей всего уже реализовавшие собственные идеи в виде приложений) могут пока погулять.
Знаете, еще 100 лет назад каждый приличный человек писал стихи. Сейчас каждый приличный человек пишет собственную 2Д игру. И самый главный вопрос — как быстро проверить играбельность своей идеи? Что увлекательней и рациональней — тыкать пальцем или кликать мышкой? Где сидят твои пользователи? На Андроиде или iOS-е? Под Windows, Linux или Mac? Каким инструментом пилить дерево познания?
Я проверил один из инструментов. Не исключено, что он может подойти тебе, приятель.
Как максимально быстро написать свою 2D инди-игру? Скажем, крейзи-домино или секс-пакман. Расскажу про собственный опыт.
Все начинается с обыкновенного телефона. В который звонят. Который с тобой в минуты ожиданий или одиночества. Разумеется, ты начинаешь делать игру под свой телефон. Забаву, в которую интересно играть именно тебе. Если у тебя iPhone (говорят, еще есть Андроид), то тебе надо
На все три пункта уйдет 30 минут + 30 дней + 30 недель твоей драгоценной жизни. Это, конечно, немного, но утомительно.
Однако, к тому времени, когда ты станешь профессионалом в iOS разработке, собачка может подрасти. Блондинка сменит брюнетку. Жизнь изменится. Тебе заново придется изучать Джаву, Эклипс или Андроид-студию. А это еще год жизни. Мало того! Тебе захочется приспособить свою мобильную игру под десктоп (как мне через 7 лет iOS разработки) — и снова давай! изучай! новый инструмент!, язык! и настраивай эко-среду!
Что же делать? Как быть? В чем сила, брат?
Вот мой ответ, читатель.
Март 2018 года. В мире существует три популярных бесплатных инструмента для создания универсальных 2Д игр. Это
Чисто филологически я выбрал Corona. Представьте, если бы я взял cocos2d?!
Тебя спрашивают: -На чем сидишь?
-На кокосе…
Звучит двусмысленно, даже криминально…
Defold — тоже что-то определенно старое. Definitely old)
В общем, я выбрал Corona [1] и отчитываюсь о содеянном.
Есть еще один резон, почему я примерил корону, но об этом в следующей статье.
Заняло 30 минут. Действовал строго по инструкции. Скачиваем SDK, затем любой из рекомендуемых текстовых редакторов (можно использовать свой любимый редактор) и плагин для редактора.
Я установил Atom. Это универсальный бесплатный редактор, которым я никогда в жизни не пользовался. К Atom-у установил плагин для языка LUA (подсказки, автодополнения). Да, все что вы будете творить в Corone, пишется на языке LUA. На сленге русских разработчиков — ЛУНА. По мне, это смесь php, python и swift. Несколько старомоден и очень рационален. Для тех, кто знает больше одного языка программирования — изучить новый не представляет труда. Достаточно бегло прочитать неплохие статьи на местном ресурсе [2].
Кстати, язык lua чудесным образом вернул меня к воспоминаниям молодости. Лет 8 назад я загружал популярные игры из Appstore на свой Мак в виде *.ipa файлов.
Вы знаете, если *.ipa переименовать в *.zip и распаковать, то можно в 2 клика вытащить из чужого приложения все картинки и звуки. Так вот — распаковав знаменитый тогда Angry Birds, я, кроме картинок и звуков, обнаружил кучу файлов с расширением *.lua. Будучи полным невежей, я посчитал их за скриптовые файлы описания уровней игры и проигнорировал. Каково же было мое вчерашнее удивление, когда я узнал, что Angry Birds написан на языке lua. И эти файлы — исходный код игры!
Любая мобильная игра состоит из 3-х действий
Дотошные ботаны скажут, что есть игры, где надо набирать текст на клавиатуре. Для создания таких игр 2D движки не очень подходят, с моей точки зрения. Кроме того, есть игры где движение картинки управляется голосом или наклоном телефона. Такое возможно сделать в Короне, но я об этом не скажу ни слова.
Итак, не отвлекаемся, а посмотрим, как реализуется на языке программирования каждое из 3-ех ключевых действий. Замечу, что на моем любимом Swift надо написать кода в 7 раз больше, чем на Lua.
Исходный код состоит из двух строчек.
-- рисуем на экране картинку из файла, можно рисовать сразу в определенную позицию
bird = display.newImageRect( "Assets/bird_0.png", 72, 72 )
-- двигаем птичку в новую позицию за время 25 миллисекунд
transition.to( bird, { time=25, x=xNew, y=yNew } )
Исходный код состоит из двух строчек.
-- загружаем звук из файла
birdSound = audio.loadSound( "Assets/bird_shout.mp3" )
-- птичка заорала, переменная birdChannel в принципе не очень нужна
birdChannel = audio.play( birdSound )
Исходный код состоит не из двух строчек, все несколько старомоднее и длиннее.
-- регистрируем функцию в которую приходим при нажатии на экран
addEventListener( "touch", onObjectTouch )
-- а вот и сама функция, куда приходим теперь при любом нажатии на экран
local function onObjectTouch( event )
if ( event.phase == "began" ) then
selectedItem = selectCell(event.x, event.y)
print( "Touch event on: " .. selectedItem )
elseif ( event.phase == "moved" and selectedItem>0 ) then
moveCell(selectedItem, event.x, event.y)
elseif ( event.phase == "ended" ) then
unselectCell(event.x)
end
return true
end
Внутри функции код, взятый из моей первой игры, созданной при помощи Corona. На все ушло 12 дней (изучение Lua, Corona.sdk, работа с симулятором, прокрастинация и борьба с синтаксисом).
Итак, я почувствовал, что готов клепать игры с не меньшим энтузиазмом, чем на Swift.
Идея второй игры, сделанной на Lua, примерно следующая — на поле MxN набросаны цветные кубики со значениями кратными степени двойки. 2, 4 и так далее. Любые два соседних абсолютно одинаковых кубика можно схлопнуть в один. При этом значение нового кубика удваивается. Под действием силы тяжести кубики проваливаются в образовавшуюся дыру, а сверху падают новые случайные кубики. Надо набрать максимальное число очков, пока не закончатся возможные ходы.
Рис. 1 Скриншот эмулятора с игрой
На проверку играбельности моей следующей игры под Corona ушёл один день, длинный, как карамель — по-моему, Corona очень и очень неплохой инструмент для быстрого прототипирования казуальных игрушек.
Я еще не проверил, как быстро я смогу выложить игру в три магазина (Appstore, Google Play, Mac Store) — это тема для следующей статьи, обещаю рассказать не только о процессе деплоя, но и о способах монетизации игр при помощи Corona.
Возможно, разработка под Corona станет моей новой специальностью.
Мой предыдущий югославский контракт закончился 1 марта и продлевать его я не собираюсь. Устал я жить далеко от родины…
Автор: Вадим Башуров
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/besplatno/275438
Ссылки в тексте:
[1] Corona: https://coronalabs.com
[2] неплохие статьи на местном ресурсе: https://habrahabr.ru/post/344304/
[3] Источник: https://habrahabr.ru/post/349432/?utm_source=habrahabr&utm_medium=rss&utm_campaign=349432
Нажмите здесь для печати.