Когда речь идет о бизнес приложениях, принято писать несколько копий под каждую из популярных мобильных платформ. Это вполне оправдано, т. к. Android/iOS/etc платформы столь специфичны, что реализовать по принципу «Code at once — run everywhere» довольно сложно. Однако, ситуация совсем иная, когда речь идет о мобильных играх. У игр как правило свой собственный стиль графических элементов — кнопок, меню и т. д., и вся графика построена либо на спрайтах, либо на 3D (прим. — в дальнейшем речь будет идти только о 2D движках). Появляется вполне закономерное желание написать приложение один раз и собирать его под разные платформы.
Достичь этого нам поможет кросплатформенный фреймворк MOAI.
Рубрика «Lua» - 20
Краткое введение в MOAI Framework
2013-04-16 в 6:40, admin, рубрики: android, iOS, Lua, moai sdk, mobile development, Разработка под android, разработка под iOS, метки: android, iOS, lua, moai sdkУчим язык, смотря сериалы: vlc + lua + stardict + wordnet + anki = l’amour
2013-02-19 в 11:07, admin, рубрики: anki, Lua, StarDict, vlc, WordNet, английский язык, изучение иностранных языков, разработка, Учебный процесс в IT, метки: anki, lua, StarDict, vlc, WordNet, английский язык, изучение иностранных языковОчень уж мне нравится смотреть сериалы, а еще я учу с их помощью языки. И если раньше я прилежно останавливал видео на непонятном месте, перематывал назад, включал субтитры и забивал незнакомые слова в Анки, то сейчас я делаю то же самое. Разве что лень заставила этот процесс автоматизировать, что привело к созданию расширения Say It Again для проигрывателя VLC со следующими особенностями:
- Навигация по субтитрам (переход к предыдущей, следующей фразе) — клавиши y, u;
- Сохранение слова, его транскрипции и перевода вместе с контекстом (см. скриншот) — клавиша i;
- Функция «Еще раз»: переход к предыдущей фразе, показ субтитра и пауза — клавиша backspace;
- Подключение любых словарей в формате Stardict (в сети лежат словари из Lingvo x3);
- Экспорт в Anki или другую программу, понимающую файлы в формате csv;
Шаблоны с переменным количеством аргументов на примере обертки для Lua
2013-01-14 в 10:44, admin, рубрики: c++, c++11, Lua, templates, tuple, ооп, метки: c++, c++11, lua, templates, tupleПонадобилось мне прикрутить Lua к проекту на C++. Писать обертки в ручную — лень (слишком много писать), готовые не подходили по тем или иным причинам. Решил написать свою. А потому задался вопросом, как максимально упростить интерфейс? От одной только мысли об этом в голову лезли жутчайшие конструкции из шаблонов. Так оно в последствии и оказалось, но гораздо проще, чем представлялось.
В C++11 появились шаблоны с переменным числом аргументов, это позволяет писать шаблонные функции/классы так, как в C++03 было невозможно вовсе. Такие шаблоны сильно упрощают задачу.
Первым делом понадобилось написать обертку над простейшими действиями с интерпретатором (можно было бы обойтись простыми вызовами к C API Lua, но держать в памяти кучу индексов различных значений в стеке мне не хочется. Поэтому я обернул их в несколько функций, которые помимо того, что избавляют от необходимости передавать в каждую функцию указатель на состояние интерпретатора, практически не требуют индексов, так как они имеют значения по умолчанию.
В итоге хотелось увидеть интерфейс близкий к следующему:
lua.export_function(some_function);
Большое обновление ObjectScript 0.99-vm3. Часть 1: Регистровая виртуальная машина
2012-11-06 в 3:47, admin, рубрики: javascript, Lua, ObjectScript, open source, ruby, метки: javascript, lua, ObjectScript, rubyObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua, Ruby и PHP. Вы можете ознакомится с первоначальным синтаксисом языка в этой статье.
ObjectScript 0.99-vm3 — новая быстрая виртуальная машина и новые возможности.
Убраны некоторые операторы, например, clone, numberof
и др. заменены функциями. Последнее значение в функции возвращается автоматически. Добавлена короткая запись для доступа к членам объекта — @varname
, новый короткий синтаксис для объявления функций и мн. др.Читать полностью »
ObjectScript, разработаем спецификацию совместно: операторы сравнения
2012-10-10 в 1:05, admin, рубрики: api, javascript, Lua, ObjectScript, objectscript api, open source, php, Программирование, спецификация, метки: javascript, lua, ObjectScript, objectscript api, open source, PHP, спецификацияObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua и PHP. Синтаксис в основном взят из JavaScript, множественное присваивание — из Lua, работа со свойствами — из PHP.
Проект ObjectScript совсем молодой, только недавно появились первые рабочие и стабильные версии. Тем не менее вопрос о спецификации некоторых моментов языка не решен окончательно и находится в стадии проработки. Например, операторы сравнения в разных скриптовых языках работают по-разному, это зависит от того, какие типы данных участвуют в сравнении и какой алгоритм используется в конкретном языке программирования.
Вопрос довольно щекотливый, т.к. от результата булевского выражения зависит, не много не мало, выполнится кусок кода или нет. Русская пословица «одна голова хорошо, а много лучше» подсказывает мне, что лучше обратится к программерскому сообществу и разобраться наверняка в том, какое поведения при сравнении (это операторы >=, >, <=, <, ==, !=) разных типов данных в скриптовом языке является наиболее уместным. Выработать коллегиональное решение и закрепить результат в спецификации ObjectScript.Читать полностью »
ObjectScript API, интеграция с C++. Часть 4: подключение пользовательских классов и функций на C++
2012-10-09 в 13:57, admin, рубрики: api, binding, c++, integration, javascript, Lua, ObjectScript, objectscript api, open source, php, Программирование, метки: binding, c++, integration, javascript, lua, ObjectScript, objectscript api, open source, PHPObjectScript — новый встраиваемый объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua и PHP.
По результатам предыдущих статей было много вопросов о том, как подключать свои классы и функции на C++ к ObjectScript. Имеющийся в первых сборках OS способ подключения едва ли удовлетворял потребности и я решил сделать более мощный и удобный биндинг, который теперь идет в комплекте с OS поумолчанию.
В чем собственно преимущество нового биндинга: теперь можно подключать любую функцию, с любыми параметрами, любым возвращаемым значением без дополнительных оберток. Сразу подключаете ту функцию, которая у вас есть и все, готово.Читать полностью »
ObjectScript — новый язык программирования, быстрее чем PHP и JS
2012-10-04 в 2:52, admin, рубрики: api, javascript, Lua, ObjectScript, objectscript api, open source, php, Программирование, метки: javascript, lua, ObjectScript, objectscript api, open source, PHPObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua и PHP. Синтаксис в основном взят из JavaScript, множественное присваивание — из Lua, работа со свойствами — из PHP.
ObjectScript 0.97-vm2 быстрее, чем PHP 5.3.3 и JS на 34% и 61% соответственно.
Как тестировалось
Для тестирования был взят алгоритм Fannkuch. Довольно удобный тест, одна функция с параметром, при увеличении параметра на 1, количество вычислений увеличивается примерно в 10 раз.Читать полностью »
ObjectScript API, интеграция с C++. Часть 3: подключение модуля с функциями на C++
2012-10-01 в 12:59, admin, рубрики: api, javascript, Lua, ObjectScript, objectscript api, open source, php, Программирование, метки: javascript, lua, ObjectScript, objectscript api, open source, PHPObjectScript — новый объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua и PHP.
Часть 3: подключение модуля с функциями на C++
Давайте создадим свой модуль с фунциями, которые будут доступны в коде на OS. Назовем модуль my
, он будет содержатьЧитать полностью »
ObjectScript — новый язык программирования
2012-09-26 в 8:21, admin, рубрики: javascript, Lua, ObjectScript, php, Песочница, Программирование, метки: javascript, lua, ObjectScript, PHPСколько же существует всяких языков программирования, еще один? Ну можно и так сказать, а можно сказать и по другому: я программист и пишу программы на разных языках программирования для разных задач. В одних языках есть одни плюсы, в других — другие. Вот я и решил предложить свой универсальный язык программирования для множества задач.
ObjectScript — новый объектно-ориентированный язык программирования с открытым исходным кодом. Сами исходники занимают 459 Кб (парсер, компилятор и виртуальная машина) и находятся в двух файлах sourceobjectscript.h
и sourceobjectscript.cpp
. Скачать их можно по прямой ссылке тут. ObjectScript — очень легкий, предназначен для вставки в приложение на C++.
ObjectScript сочетает в себе возможности таких языков, как JavaScript, Lua и PHP. Например, синтаксис в основном взят из JavaScript, множественное присваивание — из Lua, работа со свойствами через перегружаемые методы — из PHP.
Кроме унификации нескольких существующих языков программирования, ObjectScript добавляет также и свои уникальные и полезные фишки.Читать полностью »
Interplay Medium (часть II). Микро-сервер AXOD (aka Digital Axon)
2012-09-02 в 2:15, admin, рубрики: diy или сделай сам, internet of things, interplay medium, linux, Lua, open source, дизайн интерфейсов, метки: internet of things, interplay medium, linux, lua, дизайн интерфейсовЭто продолжение серии публикация о проекте Interplay Mеdium (первая статья здесь). В этой статье я расскажу о том, как устроено «сердце» Interplay Meduim кластера — микро-сервер AXOD.
Пара слов касательно этимологии: в wiki и на сайте проекта кое-где все еще фигурирует старое название — AXON. Так я и планировал назвать микро-сервер сперва. Однако позднее, размышляя над графическим решением интерфейса, я пришел к идее о четырех базовых фигурах, которые, кроме всего прочего, просились расположиться именно так, чтобы образовать собою название (с буквой N я, после некоторых сомнений, тогда решил примириться). С одной стороны название — суть, отсыл к Маклюэну (и ранее к Хайдеггеру) с их интерпретациями роли технологий и языка (см ссылку в предыдущей статье). С другой — референция к античным представлениям о базовых элементах. Кроме этого, в процессе этимологического исследования я натолкнулся на древнеегипетские источники, содержащие интерпретации фигур, как нельзя кстати рифмующиеся с задуманным мною разделением на «органы чувств». Таким образом, получившееся воплощение, как это порой случается, оказалось сильнее изначальной интенции. В итоге, буква N приобрела новое для нее амплуа и стала буквой D, как намек на электронно-цифровую сущность все затеи :)
Архитектура микро-сервера AXOD
AXOD представляет из себя набор кастомизированных скриптов, предназначенных для контроля логики периферийных устройств (отдельных объектов или являющихся морфологической частью общего с микро-сервером объекта), именуемых «Дендриты» (Dendrites) + модульный веб интерфейс. В качестве препроцессора используется язык LUA. О последнем стоит сказать пару слов отдельно. LUA был изначально придуман, как интерпретируемый язык для описания логики в компьютерных играх, однако последнее время завоевал популярность у разработчиков встраиваемых систем, как удобное, нетребовательное к ресурсам и весьма проворное решение. В частности популярный дистрибутив для рутеоров OpenWRT вот уже несколько лет использует LUA в качестве HTTP препроцессора. Это, в свою очередь, также стало аргументом в пользу такого выбора.
Как я уже ранее написал, AXOD имеет два набора интерфейсов. Один, именуемый «Дендриты» — для периферийных устройств (т.е. по сути — это физические интерфейсы. За работой дендритов следят скрипты, являющийся частью синаптических модулей). Другой набор — это интерфейсы направленные во вне — «Синапсы». Т.е. пользовательские графические интерфейсы и API для соседних AXOD-ов (или любых внешних элементов кластера).