- Terevaka — фреймворк высокого уровня на Lua для мобильных платформ
- Спрайтовый графический редактор
- Фрагментация разрешений экранов
- Разное
- Резюме
- Cocos2d-x: Пишем на Lua
- Что нам понадобится?
- Установка
- Немного теории
- А теперь сам код
- Расширение файла LUA
- Что такое файл LUA?
- Программы, которые поддерживают LUA расширение файла
- 3 шага, чтобы открыть файл с расширением LUA
- LUA расширение файла
- Как открыть файл LUA?
- Шаг 1: Установите программу, которая поддерживает LUA файлы
- Подсказка для пользователей Mac OS
- Шаг 2: Найти и скачать подходящее программное обеспечение
Terevaka — фреймворк высокого уровня на Lua для мобильных платформ
Дорогие друзья, сегодня я расскажу вам о фреймворке высокого уровня на Lua для мобильных платформ собственной разработки. Как вы уже, наверное, догадались из названия, этот фреймворк использует другой низкоуровней фреймворк для отрисовки графики и для взаимодействия с системой. В качество него выступает MOAI. Для минимального ознакомления с ним, я рекомендую прочитать мою предыдущую статью habrahabr.ru/post/176765
Прежде всего, какие задачи должен был решить новый фремворк?
Во-первых, проблемы с фрагментацией экранов. А во-вторых (та-дам), хотелось иметь какой-то, пусть и простейший, графический редактор интерфейсов. В третьих, фреймворк должен был определить архитектуру и файловую структуру приложения в целом. Хочу сказать, что кода получилось немного (менее 600 строк), поэтому, даже если фреймворк вам не подойдет, как есть, будет несложно разобраться с его работай и заточить его под свои нужды.
Warning: фреймворк заточен под landscape приложения, поэтому если вам нужен портретный режим, то скорее всего придется потратить некоторое время на доработку.
Вернемся к фрагментации экранов.
Чтобы решить проблему фрагментации, нужно, чтобы приложение учитывало:
- Разные размеры экранов
- Разные разрешения
- Разные пропорции
Для того, чтобы решить все эти три задачи одним махом, Corona SDK или Gideros предлагают выбрать policy масштабирования всего приложения. Наиболее адекватный из этих режимов — так называемый letterbox. Это когда приложение равномерно масштабируется до размеров экрана, но при этом остаются черные полосы по краям в случае несовпадения пропорций.
В MOAI как такового режима нет, но есть снипетс, как реализовать это в несколько строк, манипулируя параметрами viewport.
Понятно, что такая полумера не может удовлетворить по-настоящему хорошее приложение. Экраны мобильных устройств и без того малы, чтобы еще их площадь съедалась черными полосами.
Очевидно, что не обойтись без эластичной верстки (решаем проблему размеров/пропорций).
Что касается разных разрешений экрана, то это легко решается набором разной графики или же ее масштабированием. Однако, в Android/iOS эти механизмы работают по-разному, поэтому придется реализовывать его самим.
Спрайтовый графический редактор
Графический редактор был написан при помощи PyQt. Он довольно прост и умеет манипулировать только спрайтами, то бишь картинками.
MOAI поддерживает отображение текста, но ни графический редактор, ни Terevaka не могут его показывать. На практике это означает, что если поверх кнопки нужно нанести текст, то это нужно сделать программно после загрузки спрайта кнопки (либо нанести текст прямо на спрайт кнопки, лол).
Тем не менее, графический редактор — это мощный инструмент, т. к. позволяет не только разместить элементы графически, но и отделить вид от логики программы.
Графический редактор хранит файл проекта в JSON файле и экспортирует слой во внутреннее представление Terevaka (Lua файл) по принципу один файл — один слой.
Слои бывают двух типов- elastic и scalable.
Elastic слой при отображении размещает элементы в зависимости от сторон привязки. Т.е. если вы хотите, чтобы элемент при масштабировании следовал правому верхнему углу, то нужно указывать координаты относительно этого угла.
Пример, слой в редакторе:
Iphone 3.5 Inch:
Iphone 4 inch:
Ipad:
Scalable слой — это другой тип слоя, который масштабируется пропорционально, наподобие letterbox. К примеру, главное меню имеет смысл делать именно при помощи scalable слоя, но фон, однако, лучше сделать на весь экран.
Пример, слой в редакторе:
Iphone 3.5 Inch:
Iphone 4 Inch:
Ipad:
В редакторе, пропорции scalable слоя указаны фиксировано 427×320. Это пропорции айпада, уменьшенные до размера iphone. Вы можете выбрать более удобные для себя параметры, однако нужно помнить о разрешении графики, которая будет использоваться в дизайнере и непосредственно в приложении. Для себя я использую 853х640 (изменять параметр нужно прямо в исходниках графического редактора) и заливаю в редакторе retina графику. В самом приложении, как правило, использую текстуры еще более высокого разрешения, чтобы графика соотвествовала большим ретина экранам, а во время загрузки слоя указываю параметр dpiMultiplier, чтобы спрайты загрузились нужного размера.
Причина по которой я захардкодил 427х320 попорции — с размерами/разрешениями легко запутаться, поэтому кто понимает что к чему, разберется, как адаптировать это под свой случай.
Так, комбинируя подходы, можно довольно быстро создавать гибкую графику.
Файлы со слоями хранятся в директории ./res/layout/ по аналогии с Android.
Фрагментация разрешений экранов
Разные разрешения экрана поддерживаются двойным набором графики.
Набор графики с обычным разрешением хранится в ./res/drawable-mdpi/, а ретина — в ./res/drawable-xhdpi/. Если разрешение экрана не совпадает с одним из этих, то будет взят наиболее подходящий набор и смасштабирован. Директории ./res/drawable-ldpi и ./res/drawable-hdpi пока не поддерживаются движком.
Важный момент — при загрузке слоя желательно использовать упакованные спрайты в одну текстуру для того, чтобы оптимизировать объем расходуемой памяти. В фрейворке поддерживается MOAI формат, в который умеет конвертировать платный TexturePacker.
Warning: не используйте в TexturePacker упаковку текстур с удалением пустых областей, т. к. в экспортере в формат MOAI есть баг и графика в итоге поплывет.
Разное
Для получения спрайта из слоя используйте функцию findPropById (опять-таки аналогия с Android)
Для обработки нажатия на спрайт, достаточно приаттачить специальный callback (см. пример в terevaka-samples).
Другие различные примеры использования смотрите в проекте terevaka-samples. Чтобы запустить пример, скопируйте tereavaka в папку примера, а еще лучше — сделайте в нее симлинк.
Чтобы протестировать приложение под разными экранами, вовсе не нужно много разных устройств — используйте профили запуска. Готовые профили лежат в каталоге ./terevaka/profiles.
Для запуска с профилем, используйте команду moai ./terevaka/profiles/ipad.lua main.lua, где ipad.lua — профиль айпада. В профиле как правило 3-4 строки, вы можете с легкостью создать свои профили.
Спрайты для ui builder нужно сохранять в разрешении mdpi.
Резюме
Изначально проект начинался, как выделение некого общего кода из кода моей новой игры. В попытке структурировать, как сам код, так и требования к нему, привели к появлению фреймворка, а затем, используя мои старые наработки, и графического дизайнера к нему. Помимо этого, пришлось дорабатывать и сам MOAI, однако благодаря быстрому отклику его разработчиков, все изменения уже внесены в основной репозиторий.
Также — это показательный опыт, что не нужно боятся писать свои библиотеки, если четко понимаете требования к ним, а также если пишете на скриптовом языке 🙂
Источник
Cocos2d-x: Пишем на Lua
Доброго времени суток.
Начнем с того, что я не нашел на хабре туториалов по Cocos2d и Lua, поэтому мне пришлось много страдать и чтобы вы не повторяли моих ошибок я решил написать пост. В этой статье я расскажу как создать простую игру используя Сocos2d-x, Cocos Code IDE и Lua. Ранее, я уже писал про создание игр на Love2d. В этой статье я адаптирую старый туториал для кокоса и как это запустить на андроиде (Ни яблока, ни мака у меня нет).
Что нам понадобится?
Установка
Немного теории
А теперь сам код
Создадим новый проект. И у нас будет два файла в исходниках: hello2.lua и main.lua. Если вы не хотите посмотреть на чудо китайского гейм дева, то первый можно сразу удалять, а второй очистить. Он создан для демонстрации возможностей require. Открываем main.lua и видим кучу кода которая нужна чтобы понять как использовать порт под lua. Чтобы увидеть, что это такое нажимаем F11. Можно поиграться. Вот это бегающие существо это собака, а не белка как вы могли подумать. Посмотрели, поигрались и хватит. Удалите hello2.lua и весь код в main.lua и очищаем папку res. В папку res добавляем картинку и называем ее habr.png. Теперь пишем в main следующий код:
В функции main мы вызываем файл mainScene.lua. В нем находится главная сцена игры. Создадим его и напишем туда следующий код:
Теперь немного о помощи с поиском ответов. Во-первых: Порт на луа практически идентичен С++ и основные отличия можно прочесть здесь. Во-вторых: как я ранее писал, если вы не можете найти что-либо в порте С++, то попробуйте поискать эту проблему для JS движка. Он более популярен чем луа, однако в нем есть множество отличий, но очень часто он мне помогал. Чтобы запустить то, что у нас вышло нажмите F11. Чтобы запустить на андроид нажмите на кнопку «Debug configurations» и выберите андроид. Для запуска нужен настроенный adb, но про это и так много статей, поэтому я не буду писать здесь об этом. На этом все Спасибо за прочтение (:
Вот что вышло в итоге:
Источник
Расширение файла LUA
Lua Source Format
Что такое файл LUA?
Файл с расширением .LUA содержит исходный код расширения программы или приложения , обычно игры, написанный на языке сценариев Lua. Исходный код представляет собой набор команд, инструкций и определений переменных, написанных с использованием определенного синтаксиса. LUA — это текстовый файл, который можно открывать и редактировать любым текстовым редактором; однако рекомендуется открывать такие файлы в инструментах редактирования, которые поддерживают подсветку синтаксиса. Файл LUA может содержать ряд коротких команд , а также полный программный код расширения или приложения. Язык Lua использует синтаксис, аналогичный синтаксису языка программирования Pascal, и использует ассоциативные массивы и расширяемую семантику. Язык Lua описывается его разработчиками как:
- Надежный и проверенный — язык используется многими известными разработчиками программного обеспечения, например, он использует инструмент Photoshop Lightroom или веб-сайт Википедии, используется в системах видеонаблюдения, для программирования компьютерных игр (WoW или Angry Birds),
- Быстрый — считается самым быстрым интерпретируемым языком сценариев,
- Кроссплатформенный — код Lua распространяется в виде независимых от платформы пакетов C, которые могут работать на Linux, Windows Android, iOS, встроенных системах или компьютерах мэйнфреймов,
- Встраиваемый — хорошо документированный, легко интегрируемый с кодом, написанным на других языках, классических или скриптовых,
- Простой и мощный — предлагает поддержку мета-функций, которые могут быть расширены при необходимости,
- Легкий и бесплатный — добавление кода Lua в приложение без ущерба для его производительности и языка с открытым исходным кодом.
Lua была создана в 1993 году компьютерными инженерами Роберто Иерусалимши, Вальдемара Селес и Луизой Энрике де Фигейредо в Папском университете Рио-де-Жанейро. Он поддерживается исследовательской лабораторией LabLua , которая является частью факультета компьютерных наук в указанном университете . Lua означает «луна» на португальском языке. С момента его создания было разработано несколько версий языка — последняя стабильная версия, Lua 5, была выпущена в 2018 году.
Программы, которые поддерживают LUA расширение файла
Ниже вы найдете указатель программ, которые можно использовать для открытия файлов LUA, разделенных на категории 3 в соответствии с поддерживаемой системной платформой. Файлы с расширением LUA, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.
Источник
3 шага, чтобы открыть файл с расширением LUA
Обычно решить проблему с файлом LUA просто — просто установите соответствующее программное обеспечение и откройте файл. Прочтите руководство и откройте файл LUA прямо сейчас!
- 1. LUA расширение файла
- 2. Как открыть файл LUA?
- 2.1 Установите программу, которая поддерживает LUA файлы
- 2.2 Найти и скачать подходящее программное обеспечение
- 2.2.1 Программы, поддерживающие файлы с расширением LUA
- 2.3 Проверьте LUA файл на наличие ошибок
- 3. Подобные расширения файлов
LUA расширение файла
- Тип файла Lua Source Format
- Разработчик файлов N/A
- Категория файла Файлы разработчика
- Рейтинг популярности файлов
Как открыть файл LUA?
Может быть несколько причин, по которым система не поддерживает данный файл. В случае расширения LUA вероятно, что ни одна из установленных программ не поддерживает данный тип файла. Поэтому пользователь должен предпринять следующие шаги
Шаг 1: Установите программу, которая поддерживает LUA файлы
Если приложение, поддерживающее файлы LUA, установлено в системе пользователя, но не используется для открытия таких файлов по умолчанию, щелкните правой кнопкой мыши значок файла и выберите в меню пункт «Открыть с помощью». Затем выберите подходящее приложение и установите флажок «Всегда использовать выбранное приложение для открытия файлов такого типа». Система будет хранить эту информацию в своем реестре и использовать выбранную программу для открытия файлов с расширением LUA по умолчанию.
Подсказка для пользователей Mac OS
Для пользователей Mac OS процедура аналогична — откройте меню файла, щелкнув правой кнопкой мыши по файлу LUA, выберите опцию «Информация» и выберите опцию «Открыть с помощью программы». В подменю выберите приложение и нажмите кнопку «Изменить все».
Шаг 2: Найти и скачать подходящее программное обеспечение
Невозможность открыть файлы LUA также может быть связана с отсутствием какого-либо приложения, поддерживающего данный файл, устанавливаемого в системе. В этом случае пользователь должен загрузить и установить одно из следующих приложений. После установки система автоматически свяжет вновь установленное приложение с файлами LUA. Если этот шаг не пройден, см. Шаг 1.
Источник