thinniesins

thinniesins

На Пикабу
Дата рождения: 19 августа
100 рейтинг 0 подписчиков 0 подписок 2 поста 0 в горячем
Награды:
5 лет на Пикабу
9

Разработка текстового квеста на Android без шелухи

Идея

Шел 10167 день карантина. Сидеть дома было скучно и я придумал неплохой челлендж – сделать игру на Android за пару дней. Я давно занимался написанием рассказов, романов, всевозможных книжечек и решил воплотить в жизнь старую идею – интерактивная новелла в стиле старого доброго “Choose Your Own Adventure”. Может, для профессиональных разработчиков эта статья покажется слишком простой, а меня они посчитают ленивым – ведь я буду задействовать один из лидирующих конструкторов текстовых игр. Но, думаю, для новичков в деле геймдева это станет хорошим подспорьем, а кого-то это, может быть, даже подтолкнет на разработку своей игры на Android, которая долгое время откладывалась ввиду отсутствия необходимых навыков и времени. На самом деле, при определенном усердии, здесь все просто. А при использовании средств, которые я использовал при разработке игры за два дня, вообще покажется детской забавой.

Что получилось

Если коротко, то получится код JavaScript внутри AndroidStudio, при этом ни одной возможности AndroidStudio не будет использовано - только JS, HTML и CSS в обёртке AS. Ни сохранений, ни меню (которое, хоть и криво, но можно будет реализовать через Ink), ни регулировки саундтрека. На написании самой истории ушло полтора дня, на написание кода (90% кода сделали за меня Ink, Cordova Android Studio) - оставшиеся полдня. При этом я работал примерно 4 часа в сутки, так что в целом на работу было потрачено примерно 8 часов.

К делу - история

Начнем с самого сюжета. Работать будем в редакторе Inky. Скачиваем на официальном сайте, запускаем из коробки и пишем первую историю с несколькими выборами. О тонкостях написания новел на Инке есть большой отдел на GitHub, изучайте и становитесь мастерами. Там есть много всего – функции, ветвления, “стежки” и тому подобное.

Разметили начало квеста, сделали три выбора. Редактор Ink сразу показывает нам то, что будет видеть пользователь (конечно, не совсем «то», интерфейс у JavaScript в браузере будет немного другой). Так, «+» означает выбор, к которому потом можно будет еще раз вернуться. Однажды выпитое кофе под «*» уже невозможно будет выбрать еще раз, вернувшись к этому этапу снова. Все это вы найдете в документации Ink, не хочу погружаться в это сейчас (может, позже и напишу для этого отдельный туториал – хотя их полно). Историю дальше развивать не будем, и так сойдет. Переходим к экспорту проекта.

«Export for web» создаст папку с файлами – там и главный HTML с CSS, и JavaScript, на котором работает Ink. Откроете index.html – все заработает в браузере.

“Written in Ink” (этот висячий элемент можно запросто удалить в файле HTML), название игры и сама она с самого начала. При последующих правках файла игры.ink нужен только “Export story.js only”, этот экспорт будет перезаписывать одноименный файл в папке игры (в моем случае это Untitled.js).

Игра готова, не так ли? Пусть в ней три выбора, после каждого из которых она заканчивается, но все же. Теперь перенесем папку игры на платформу Android. Простыми словами, эта игра будет воспроизводиться точно так же в приложении Android (а, вернее, в ее внутриигровом браузере, как и при запуске index.html, но уже при поддержке Cordova).

Перенос на Android

Для дальнейших махинаций нам понадобится еще кое-что. Command Line Interface (CLI) Cordova для «перепрошивки» игры на новую платформу, Node.js. и git клиент (в документации Кордовы в разделе «Установка CLI Cordova») для того, чтобы все работало. Параллельно можно устанавливать Android Studio (если у вас ее еще нет, первая ее установка – процесс долгий). Все скачивается и устанавливается под вашим контролем - как гигантский пазл собирается воедино.

Создаем новую папку для игры, отдельную от созданной Ink’ом, заходим в нее через командную строку (команда «cd», как на Лине). Далее прописываем «cordova create game com.moses.game HelloWorld», где game и Game – название игры, а moses – ваше имя. Командную строку пока не закрываем.

В папке созданы новые папки, в них еще, все понятно. Нужно найти там одну с именем “www” и скопировать в нее все содержимое папки, сгенерированной Ink, с подтверждением замены (заменится только index.html, остальное для Кордовы будет в новинку).

Возвращаемся в командную строку, заходим в папку, которая была создана Кордовой, пишем «cordova platform add android» и наслаждаемся добавлением платформы.

Теперь можно зайти в папку, сгенерированную Кордовой, найти там /platform/android и скопировать папку “android” куда-нибудь целиком (остальное можно удалить). Загружаем Android Studio, там - импорт проекта и выбираем ту самую папку “android”. Ее, к слову, до этого можно было уже переименовать во что-то более приемлемое. Например, "Game".

Обновляем все, что просит Android Studio (AS, конечно, обгоняет Cordova по количеству обновлений для всех граней геймдева, поэтому встанет много свеженьких штучек).

Все обновилось, все встало как нужно, игра собрана и готова посредством Кордовы воплощать ваш HTML в приложении Android. Как видно в дереве файлов, все, что вы писали, сейчас в папке “www”. После редактирования файла игры и экспорта story.js можно просто копировать все, что появляется в папке Ink-игры, сюда.

Инк поддерживает экспорт картинок внутрь этой связки HTML+JS, добавление тэгов, внутриигровой музыки (бесконтрольной, так как это HTML и CSS) и так далее. Пока нам все это не нужно – молодой разработчик, конечно, хочет сразу увидеть плод своей работы. Поэтому мы начинаем билд. (Тестирование через эмулятор Android Studio не советую - много тормозов, и все скомпилированное через Cordova там отображается совсем не так, как на живом устройстве) Сначала нам подойдет простой билд, для Play Marketa уже понадобится подписываемый.

Перед билдом можно, конечно, изменить логотип приложения, создав Image Asset и загрузив в него будущее лого (выбрав Path, где находится изображение). Если вы этого не сделаете, то у приложения будет лого Кордовы.

Еще можно поменять название, версию и автора приложения в манифесте проекта. Так, android:label="Название" – редактирование названия для игры, android:versionCode="10000" (номер версии для сравнивания пакетов в Маркете) и android:versionName="1.0.0" – версии.

Все готово

APK собран, можно отправить его себе на телефон, установить и играть.

Надеюсь, этот туториал был полезен. Я постарался избежать всевозможной шелухи, считая, что интернет предоставляет более чем обширные поля для исследования (английский язык становится не просто подспорьем в этом исследовании – он будет вам верным проводником и помощником). В эту игру можно добавлять еще целую кучу всего - меню, сделанное на Java или Kotlin в Android Studio, контролируемый саундтрек, сохранения прогресса и так далее, до бесконечности.

Советую изучить детальную документацию Ink, о которой я уже упоминал, понять, как работает HTML в связке с CSS, увидеть возможности Apache Cordova как средства для переноса HTML-связанного кода на различные платформы (а также ее документацию). Эта простая разработка станет хорошим началом чего-то нового. Может, через пару месяцев вы уже будете сидеть за C# в Unity и делать свою первую тыкалку, понимая, что геймдев не так уж и страшен.

Успехов.

Показать полностью 22

Старый отрывок

После очередной вечеринки мы возвращаемся домой, все уже порядком устали, но Франк был неутомим, он гнал машину с нами на борту через груды автомобилей на перекрестках.

- Куда мы так спешим? – побелев, спрашивает Эн.

- Навстречу жизни. Чтобы воскреснуть, для начала нужно умереть.

История подходит к концу, и нужно оставаться Иисусом до конца. Семь человек за тридцать секунд до смерти – магическое число семь – я оборачиваюсь посмотреть, чем каждый занимается перед смертью. Эн с ужасом созерцает дорогу с переднего сидения, рядом с ней Лина скребет по стеклу. Остается двадцать секунд. Около меня Боб и Люсьен переговариваются о чем-то незначительном для такой значительной ситуации, а Бад сидит в стороне и пытается к ним прислушиваться. У нас еще десять секунд. Вцепившись в руль, сверкая глазами, на месте водителя сидит Франк, а где-то впереди нас поджидает бампер чужой машины. Пять секунд. Все как в замедленной съемке, история подходит к концу. И воскрес он через три дня. Одна секунда.

Удар. Нас больше нет.


Я вдруг оказался в цветущем саду. Рай? Посреди сада стоял трон, а на нем Кто-то сидел. Бог, догадался я. Сидящий на троне сиял, как драгоценные камни, от трона исходили молнии, а перед троном горели семь факелов.

- Где же все, Боже? – спросил я, не найдя получше, что сказать.

Бог переливался всеми возможными образами как калейдоскоп, за секунду Он менялся от красивого юноши до седовласого старика.

- Мы одни, - голос Его звучал и громко, и в то же время нежно.

Он встал с трона и положил мне руку на плечо, предложив прогуляться по саду.

- Христианство было право? – спросил я.

- В чем именно?

- Перерождения нет? Вот и кончилась моя жизнь, и я стою здесь с Тобой.

- Нет правых и неправых, - ответил Бог. – Все блаженны. А вот перерождение и правда есть.

- Почему же о нем не сказано в Библии?

- Если люди не в силах что-то принять, Я не даю это. Через некоторое время ты снова родишься, но уже в новом теле, и забудешь об этом разговоре.

- Зачем же мы говорим с Тобой? – я посмотрел в глаза Богу, они лучились любящей добротой.

- Мне нужно узнать, готов ты или нет.

- К чему? – я начинал понимать.

- К освобождению и переходу в Вечный Мир. В Нирвану, если хочешь.

- Но ведь Ты всемогущ, Ты и так знаешь, готов я или нет!

- Все люди сотворены по Моему подобию. Один из признаков этого – свободная воля. Адам и Ева тоже ей обладали.

- У них было право покинуть Рай?

- Конечно. Поэтому у тебя есть право, как войти в Мой Дом, так и остаться жить в материальном мире.

- Но я хочу жить с Тобой!

- А ты готов? – Бог усмехнулся, прищурился и посмотрел на меня.

Взгляд этот проник в мое сердце, и я вспомнил все свои прегрешения и честно ответил:

- Я не готов.

- Еще одна жизнь среди миллионов грешников, - шутливо констатировал Господь.

- Как же мне очиститься?

- Все просто. Ты помнишь, во всех религиях, что есть искажения Моего истинного Учения, заповедь одна.

- Любить, - прошептал я.

- Точно! Любить всех, как Я люблю всех, ведь все мы суть одно, все мы часть единого целого. И создал Я всех лишь из любви и для любви.

Я задумался:

- Ты говоришь, что любишь всех, но посылаешь людям страдания.

- Я думал, ты давно уяснил это механизм.

- Какой? – не понял я.

- Дело в том, что есть такое понятие, как карма. Поступки прошлых жизней накладывают отпечаток на настоящую.

- Это я знаю.

- Отсюда и инвалиды с рождения. А когда несколько кармических грешников собираются вместе…

- Случайно? – перебил я.

- Случайность – это инструмент, которым Я уравновешиваю вселенную. Когда грешники собираются вместе, хоть они об этом и не подозревают, случаются ураганы, цунами, землетрясения. Люди не знают, что в прошлой жизни они грешили, но все же они родились людьми, а значит у них есть шанс излечиться от грехов.

- Души умерших, допустим, при наводнении, летят прямиком в Вечный Мир?

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

- Все это очень сложно для понимания.

Мы гуляли по саду, а я задавал вопросы. Ответы были добры, терпение Бога лучилось во все стороны.

- Почему Ты предстаешь для всех в разных образах? – спросил я.

- Кто как понимает, тот так и принимает. Ты осознаешь Мою абсолютность, поэтому маски Мои для тебя меняются ежесекундно. Но вот к Моей истинной сущности не готов никто.

- А что насчет Иисуса?

- А как ты думаешь, кто это?

- Это Ты?

- В своем мире Я могу принять любой образ, от Христа и Будды до бродяги, который просит у тебя милостынь.

- Зачем же Тебе наряжаться бродягой?

- Проверить человека и посмотреть, готов ли он.

Мы еще долго говорили, а потом я задал последний вопрос:

- Я могу запомнить этот разговор?

- Ты действительно хочешь сойти с ума? Проповедовать на улице голышом? Молиться без остановки и нарушить естественный цикл перерождения?

Я задумался, а Бог продолжал:

- Я вижу, ты действительно этого хочешь. Хорошо, добро пожаловать обратно!

- Куда? – спросил я.

Но ответа не последовало. Я оглянулся, сад начал медленно меркнуть, лицо Бога все так же меняло свои очертания, неподвижной оставалась лишь Его добрая улыбка. Меня вдруг окружили белые стены, грудью я чувствовал легкие покалывания, а лицо Бога становилось все напряженнее. Я сделал резкий вдох.

- Есть пульс! – закричал кто-то в стороне.

Надо мной склонилось напряженное лицо врача:

- Добро пожаловать назад!

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества