Архив рубрики: Dev

Категория, содержащая различные информационные заметки или посты об интересных проектах.

Портирование Gish на Android OS: использование библиотек OpenAL и GL4ES

В средних классах школы я любил прогуливать скучные гуманитарные предметы и вместо них проходить самые разные компьютерные игры. Но одному играть было чертовски скучно, поэтому я часто приходил в гости к своему другу. Мы покупали различные вкусности, собирались вместе в его комнате, включали компьютер и погружались в захватывающие игровые миры. Как-то раз, холодным зимним вечером, мой одноклассник показал мне забавную и интересную игру под названием Gish, которую он недавно скачал в Интернете. Это была достаточно своеобразная двумерная аркада, отличительной особенностью которой являлся необычный одноименный персонаж, представляющий собой небольшой жидкий шарик из чёрной смолы. К сожалению, сейчас я не помню, смогли мы тогда пройти эту замечательную игру до конца или нет (она была достаточно хардкорной), но её мрачный сеттинг, чёрный юмор, классная музыка и необыкновенные головоломки, связанные с физикой игрового мира, остались в моей памяти навсегда. В графическом плане Gish был достаточно простым, но благодаря оригинальной рисовке, интересным локациям и классной работе освещения, создавалось впечатление достаточно современной игры. Нам с другом было весело играть в Gish’а по очереди, проходя сложные уровни всё дальше и дальше. Таким образом, эта игра стала одной из моих любимых аркад для PC и отличным платформером для небольшой компании друзей.



Порт игры Gish, запущенный на Android-устройстве Motorola Photon Q.

История разработки инди-игры Gish берёт своё начало в 2003 году. Именно тогда независимая компания Chronic Logic, занимающаяся изданием и разработкой видеоигр, заключила контракт с художником и геймдизайнером Edmund’ом McMillen’ом, который впоследствии станет известным благодаря таким популярным инди-играм, как Super Meat Boy и The Binding of Isaac. Пока Edmund работал над графикой, программисты Alex Austin (под псевдонимом Cryptic Sea) и Josiah Pisciotta занимались написанием игрового движка. Разработка Gish была завершена весной 2004 года и уже в мае Chronic Logic выпустила игру на рынок США, где аркада получила восторженные и положительные отзывы критиков. Благодаря успеху игры, её дистрибуцией в 2004 году занялась такая компания, как Stardock, а в 2007 году Gish был добавлен в библиотеку игр в Steam’е. Кроме того, в 2010 году платформер был включен в первый сборник инди-игр под названием Humble Indie Bundle, который собрал более одного миллиона долларов. В знак признательности поддержавшему их сообществу, Cryptic Sea объявил о том, что исходный код игры Gish будет открыт и выпущен под лицензией GNU GPL v2.0, но ресурсы игры нужно будет приобретать отдельно.

Читать далее Портирование Gish на Android OS: использование библиотек OpenAL и GL4ES

Android, Dev

Портирование Adamant Armor Affection Adventure на Android OS

Когда-то давно, ещё до того, как была создана операционная система Android, в узких кругах гиков всего мира были распространены портативные игровые консоли, работающие под управлением GNU/Linux. Наибольшую известность из них получили девайсы от южнокорейской фирмы GamePark Holdings (GPH), которая на протяжении нескольких лет пыталась безуспешно конкурировать с Sony и её очень популярным в те времена карманным устройством PlayStation Portable в его различных вариациях. К сожалению, все крупные игровые издатели и разработчики не проявили интереса к маленькой и неизвестной компании GPH и её нескольким девайсам. А потому эти устройства так не стали популярными и не получили каких-либо эксклюзивных игр AAA-класса. Тем не менее, в этой печальной истории есть и светлый момент: портативные игровые консоли от GPH приглянулись множеству хакеров и гиков. И это не только из-за ядра Linux на борту устройства, но ещё и потому, что компания приветствовала создание игр и программ сторонними разработчиками и даже выложила в общий доступ несколько наборов SDK. Эти действия создали своеобразную атмосферу и сообщество вокруг этих девайсов и их немногочисленных обладателей. Разработчики, при спонсорской поддержке со стороны GPH и некоторых других компаний, проводили различные конкурсы, на которых писали свои собственные эксклюзивные игры и эмуляторы или делали порты уже существующих. Таким образом, изначально скудную библиотеку игр удалось значительно расширить, а в плане эмуляции консоли от GPH до сих пор могут похвастаться широкой поддержкой старых игровых платформ. Не обошла стороной устройства и демосцена, на популярном сайте-агрегаторе демок www.pouet.net для них даже было сделано несколько разделов. Несмотря на скромные продажи, у этих девайсов имеются поклонники и на просторах СНГ, они сосредоточены на нескольких русскоязычных форумах, посвящённых околоигровой тематике.



Порт игры Adamant Armor Affection Adventure, запущенный на Android-устройстве Motorola Droid 2.

В далёком 2011 году энтузиастами было организовано мероприятие RIOT Tag-Team Coding Competition, целью которого было увеличение количества Homebrew-игр на различных карманных игровых устройствах на базе ядра Linux, в том числе и на девайсах от компании GPH, которая, кстати, была основным спонсором конкурса. Одной отличительной особенностью этого мероприятия являлось то, что Homebrew-игру необходимо было разрабатывать командой, а игры от «одиночек» на конкурс не принимались. Именно поэтому двое российских разработчиков «старой школы»: Don Miguel и quasist решили объединить свои усилия и начали работать над эксклюзивным игровым проектом для актуальных на тот момент времени консолей от GPH: GP2X Wiz и GP2X Caanoo. В GPH-тусовке это были достаточно известные личности, поскольку они и раньше разрабатывали игры на родственные платформы. В 2002 году Don Miguel сделал популярную игру Super Plusha для старой и самой первой портативной консоли от GPH: GP32. Разработчик quasist был известен несколькими интересными играми под GP2X, такими как FleshChasmer: The Eve, Worship Vector и Adamant Armor Affection.

Читать далее Портирование Adamant Armor Affection Adventure на Android OS

Android, Dev

Обновления приложений и новые утилиты (октябрь 2016 — март 2017)

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



Лаунчеры обновлённых приложений для Android OS, скриншоты с Motorola Photon Q.

Постепенно, для некоторых приложений, над которыми я работал, накопились важные обновления, исправления некоторых ошибок и другие патчи. Я решил описать все изменения тоже в этой статье. Таким образом, она будет представлять собой небольшой дайджест произошедшего примерно за четыре месяца и будет довольно объёмной и полной. Больше всего изменений получилось для моих приложений на Android OS, поэтому я вынесу информацию о них в конец этого поста. Кроме того, обновления затронули и некоторые другие проекты, об этом тоже будет написано подробнее. Но начнём с отдельных приложений.

Читать далее Обновления приложений и новые утилиты (октябрь 2016 — март 2017)

Android, Dev, EZX, MotoMAGX, Others

Обновление дизайна блога: создание шаблона Moto Juice для WordPress

Как вы уже наверное заметили, в последний месяц я много экспериментировал с внешним видом своего блога. Наконец, этот долгий этап подошёл к концу и то, что вы сегодня можете наблюдать на страницах этого ресурса, является финальной версией дизайна сайта. Скорее всего будет ещё несколько незначительных изменений и улучшений, но общая концепция останется прежней. В соответствии с современными тенденциями внешнего вида интерфейсов, дизайн блога стал более простым и «плоским», без различных градиентов и выпуклых кнопок, чтобы ничего не отвлекало от чтения полотна текстовой информации. Кроме того, яркие оранжевые цвета, раздражающие многих посетителей ресурса, были изменены на нейтральные синие и серые тона. Но для тех, кому нравился яркий оранжевый цвет, была оставлена возможность его возвращения путём переключения цветовых схем. Благодаря этому механизму удалось сделать поддержку тёмного скина, который тоже может приглянуться посетителям моего блога.



Новый дизайн ресурса, выбран скин «Серая безмятежность», скриншот сделан в браузере Safari.

Делать собственную тему с нуля для блога на движке WordPress, не имея опыта работы с ним, достаточно накладно и сложно. Поэтому было решено пойти по самому простому пути. Я попробовал найти какой-нибудь красивый и популярный WordPress-шаблон и изменив вёрстку, дизайн и функциональность, превратить его в эксклюзивную тему для моего ресурса. Я достаточно долго перебирал огромное количество кастомных шаблонов, но так и не находил ничего из того, что мне бы сразу безоговорочно понравилось. На самом деле то, что я искал, лежало всегда на виду. Я слишком поздно заглянул в стандартные темы WordPress’а, решив что там не будет ничего интересного. И очень даже зря, стоковый шаблон Twenty Fourteen выглядел весьма симпатично. На его основе я и решил создать тему Moto Juice, немного упростив вёрстку и добавив требуемые возможности. Эта тема отлично смотрелась и работала не только на настольных компьютерах, но и на мобильных устройствах.

Читать далее Обновление дизайна блога: создание шаблона Moto Juice для WordPress

Dev, Manuals, Others

Часы на кривых Безье для рабочего стола KDE Plasma 5: Bezier Clock

В графическом окружении рабочего стола KDE Plasma 5 для дистрибутивов GNU/Linux появилась замечательная возможность создания анимированных обоев с использованием технологии Qt Quick и декларативного скриптового языка QML. Благодаря переходу KDE Plasma 5 на современный и богатый возможностями фреймворк Qt 5, в новой версии Qt Quick 2.0 анимированные обои стали не только бережнее относиться к ресурсам компьютера, но и получили поддержку множества новых переходов, эффектов, шейдеров и даже системы частиц. Помимо этого увеличился FPS и повысилась плавность самой анимации.



Анимированные обои Bezier Clock на рабочем столе KDE Plasma 5.

Так как я уже достаточно давно являюсь счастливым пользователем KDE, я решил реализовать что-нибудь интересное для этого окружения, такое, чтобы радовался глаз. Создать анимированные обои с красивой анимацией было бы весьма кстати, поскольку стандартные совсем скучные и не демонстрируют мощь и функциональность технологии Qt Quick, а я как раз хотел опробовать язык программирования QML в разработке прикладных приложений.

Читать далее Часы на кривых Безье для рабочего стола KDE Plasma 5: Bezier Clock

Dev, Manuals, Others

Snooder 21 — мой ремейк игры Snood™ 21 для Android OS: Процесс создания

Когда-то давно я учился в старших классах школы и у меня был очень популярный в то время мобильный телефон: Motorola C350. Именно на этом телефоне я впервые и познакомился с игрой Snood™ 21. Хотя Motorola C350 был в использовании у меня совсем недолго, я всё равно успел провести очень много времени в этом интересном и своеобразном карточном пасьянсе, играя в него в различных очередях и на очень скучных уроках. На мой взгляд, Snood™ 21 является просто отличной убивалкой времени и поможет скрасить томительное ожидание в самых различных ситуациях. Спустя годы, мой лучший друг напомнил мне об этой замечательной игре и я решил сделать её ремейк для Android OS, чтобы снова иметь возможность раскладывать карты по знакомым стратегиям и на современных смартфонах.



Snooder 21 на Motorola Droid 4 и Snood™ 21 на Motorola C350.

История Snood™ 21 берёт своё начало с оригинальной игры Snood, которую разработал David M. Dobson в 1996 году для персональных компьютеров Mac от Apple. Именно с этой игры и началась история незамысловатых и забавных персонажей, которые называются Снудами. Вселенная Снудов включает в себя огромное количество самых разных настольных, карточных и аркадных игр, которые теперь доступны на официальном сайте под различные платформы. К несчастью, я не смог найти там игру, аналогичную Snood™ 21. Видимо она выходила только на мобильные телефоны от Motorola.

Читать далее Snooder 21 — мой ремейк игры Snood™ 21 для Android OS: Процесс создания

Android, Dev

Портирование AstroSmash на Android OS: декомпиляция Java ME MIDlet’а

История игры AstroSmash берёт своё начало из далёкого 1981 года. Именно тогда John Sohl разработал её для игровой консоли Intellivision от компании Mattel Electronics. Первоначально разработчик хотел выпустить простую аркаду Meteor!, которая являлась обычным клоном популярной в то время игры Asteroids, но юристы компании хотели избежать судебных притязаний и John’у Sohl’у пришлось в срочном порядке переделывать механику уже готовой игры. Так и появился на свет AstroSmash, который быстро завоевал расположение любителей поиграть в видеоигры и стал коммерчески успешной игрой. Всего было продано около миллиона копий Astrosmash, что сделало эту игру одной из самых продаваемых на приставке Intellivision. Огромная популярность дала свои результаты — по лицензии Mattel Electronics начали выходить похожие игры и для других консолей, например, AstroBlast для Atari 2600. В начале 2000-ых годов о старых-добрых играх вспомнили и производители программного обеспечения для мобильных телефонов.



Порт AstroSmash на Android OS, на фотографии Motorola Photon Q.

Впервые я столкнулся с игрой AstroSmash в 2002 или 2003 году на мобильном телефоне Motorola T720. Это был очень дорогой и функциональный девайс, который поддерживал возможность установки и запуска Java-приложений, что было большой редкостью в то время. Среди предустановленных игр на этом телефоне был и ремейк AstroSmash, выполненный на Java ME. Несмотря на своё примитивное оформление и простейший геймплей, игрушка очень сильно затягивала и я часто соревновался с другом в том, кто больше наберёт в ней очков и попадёт в таблицу рекордов.

Читать далее Портирование AstroSmash на Android OS: декомпиляция Java ME MIDlet’а

Android, Dev

Портирование Ken’s Labyrinth на Android OS с помощью библиотеки SDL 2.0

Игра Ken’s Labyrinth была разработана Ken’ом Silverman’ом и выпущена компанией Epic MegaGames в далёком 1993 году. Ken Silverman в первую очередь известен как американский программист, создавший игровой движок Build Engine для компании 3D Realms, на нём впоследствии будут выпущены такие известные игры, как Duke Nukem 3D, Blood и Shadow Warrior. Движок, используемый в Ken’s Labyrinth, является неким прародителем Build Engine, в техническом плане он сопоставим с движком Wolfenstein 3D от id Software, но имеет несколько интересных преимуществ, например, интерактивные спрайты и текстуры, благодаря которым в игре реализованы карты уровней и специальные игровые автоматы, известные как слот-машины «однорукий бандит». Спустя несколько лет после выхода игры, когда её продажи практически прекратились, Ken Silverman выложил наиболее полный дистрибутив Ken’s Labyrinth на свой сайт и игра стала доступна для свободной загрузки. Немного позднее был опубликован и её исходный код.

После открытия исходного кода Jan Lönnberg портировал игру на современные операционные системы, используя библиотеку OpenGL для вывода графики, библиотеку SDL для обработки событий ввода, а также для вывода звука и эмулятор AdLib, написанный тоже Ken’ом Silverman’ом, для воспроизведения игровой музыки. Так родился проект LAB3D/SDL, предоставляющий возможность запустить Ken’s Labyrinth на любых операционных системах, на которых доступны библиотеки OpenGL и SDL. Позже Jared Stafford, использующий никнейм jspenguin, внёс некоторые улучшения в проект LAB3D/SDL, добавив способ загрузки PNG-текстур высокого разрешения, метод рендеринга теней и световых бликов в корректной перспективе, правильную скорость анимации и множество других исправлений. В 2010 году разработчик Scott Smith, использующий никнейм Pickle, переписал рендеринг LAB3D/SDL с OpenGL на OpenGL ES, что позволило запускать Ken’s Labyrinth на различных портативных игровых устройствах, таких как GP2X Caanoo или Pandora.



Порт игры Ken’s Labyrinth, запущенный на Android-устройстве Motorola Droid 4.

Впервые в Ken’s Labyrinth я поиграл в 2010 году на портативной консоли GP2X Caanoo, имеющейся у моего друга. Меня сильно привлекают подобные старые игры, поэтому я решил портировать Ken’s Labyrinth и на своё мобильное устройство: Motorola ZN5 на платформе MotoMAGX. Увы, но этот смартфон не имел графического 3D-ускорителя с поддержкой OpenGL ES, а потому портирование без переписывания значительной части движка, отвечающей за вывод графики, было бы весьма затруднительным. Время шло, у меня появлялись новые интересные гаджеты на Android OS и вот, спустя пять лет, я вспомнил про ту неудачную попытку портирования игры и решил её повторить, но уже для современных смартфонов, которых у меня на момент написания статьи несколько: Motorola Droid 4 и Motorola Photon Q. Эти устройства на Android OS имеют на борту графические 3D-ускорители, обладающие достаточной производительностью и функциональностью для подобного рода игр.

За основу будущего проекта я решил взять исходные коды порта LAB3D/SDL, модифицированные jspenguin’ом и применить к ним патчи для поддержки OpenGL ES от Pickle: таким образом задействуются возможности OpenGL ES версии 1.0, что благоприятно отразится на списке поддерживаемых Android-устройств. Как и в оригинале, на компьютере LAB3D/SDL при своём первом запуске отображает специальный конфигуратор, где можно настроить различные опции и параметры, а после выхода из него и по повторному запуску исполнительного файла уже запускается сама игра. Я бы хотел сохранить подобное поведение приложения и в Android-версии порта.

Читать далее Портирование Ken’s Labyrinth на Android OS с помощью библиотеки SDL 2.0

Android, Dev

Экскурс в прошлое: портирование графической оболочки OPIE на Ritmix RZX-50

Эта статья достаточно долго провалялась у меня в черновиках и так и осталась незаконченной. И вот, спустя три года, я обнаружил её, разгребая залежи своих BackUp’ов. Простенький интерфейс старого доброго OPIE на скриншотах так меня обрадовал и навеял столько хороших воспоминаний, что я незамедлительно решил довести статью до ума и опубликовать её в блоге. К сожалению, я уже давно не являюсь владельцем портативной игровой приставки Ritmix RZX-50, но возможно ещё остались счастливые обладатели этого устройства, которым будет интересна нижеизложенная информация.

Расшифровывается аббревиатура OPIE как Open Palmtop Integrated Environment — это графический интерфейс с открытым исходным кодом, предназначенный для работы на карманных компьютерах или любых других устройствах, работающих на ядре Linux. В основном он использовался на коммуникаторах и PDA, произведенных фирмой Palm, а также на устройствах Sharp Zaurus. На самом деле OPIE является форком Qtopia — окружения для встраиваемых систем, которое когда-то разрабатывала ныне почившая компания Trolltech. OPIE изначально задумывался как графическое окружение для дистрибутива операционной системы GNU/Linux под названием Familiar. Familiar, в свою очередь, предназначался для работы на различных карманных компьютерах и предлагал на выбор два графических окружения — GPE и, соответственно, OPIE. Благодаря тому, что OPIE работает в режиме Framebuffer’а и не использует в своей работе оконную систему X Window System, на слабых устройствах удается сэкономить немного памяти и повысить отзывчивость интерфейса. Помимо этого преимуществом OPIE является бинарная совместимость с Qtopia. OPIE может быть установлен в самые различные карманные компьютеры или даже на мобильные телефоны, например, он мог запускаться параллельно EZX-окружению в смартфонах Motorola E2/E6/A1200/E680i или являться полноценной оболочкой в Siemens SX1.



Внешний вид интерфейса OPIE: Одна из вкладок Launcher’а и приложение opie-console, являющееся эмулятором терминала.

Последняя версия OPIE — 1.2.5, она датирована концом 2010 года. Увы, проект давным-давно не развивается и считается практически мёртвым. Функциональность этого графического окружения застряла где-то в 2005-2006 годах, и чтобы допилить его до юзабельного состояния на конкретном устройстве, нужно потратить очень много собственных сил и времени. Но запуск OPIE на таком гаджете, как Ritmix RZX-50, как говорится, just for fun, может быть интересным занятием на несколько вечеров. Ведь эта графическая оболочка своего рода одна из ветвей истории развития интерфейсов для мобильных устройств и встраиваемых систем.

Читать далее Экскурс в прошлое: портирование графической оболочки OPIE на Ritmix RZX-50

Dev, Dingux

Портирование Spout на Android OS: первый опыт работы с NDK, JNI и OpenGL ES

Когда-то давно я портировал на платформу MotoMAGX простенькую, но сильно затягивающую игру Spout. Цель этой игрушки весьма проста: необходимо подниматься на кораблике всё выше и выше по экрану, набирая очки и сражаясь с гравитацией. Кораблик управляется с помощью реактивной струи, частички которой могут служить не только средством передвижения, но и грозным оружием. Реактивной струёй можно разрушать стены и препятствия, преграждающие путь наверх. Если управляемый вами кораблик столкнётся с преградой или упадёт в самый низ экрана, то вы проиграете. С увеличением набираемой высоты плотность расположения препятствий постепенно увеличивается, что сильно влияет на игровую сложность. Пространство, по которому поднимается кораблик, разделено на равные части, границы которых отмечены горизонтальной полоской чёрного цвета, которую, кстати, тоже нужно разрушать. На преодоление первой части пространства вам даётся ровно одна минута, а после того, как вы пересечёте чёрную черточку, к оставшемуся времени снова добавится 60 секунд. Таким образом, быстро пролетая первые части пространства, вы сможете сохранить драгоценное время для более сложных участков выше. Звучит очень просто, но на практике постоянная борьба с гравитацией и набираемой скоростью — весьма сложное испытание.



Порт игры Spout, запущенный на Android-устройстве Motorola Photon Q.

Игра настолько сильно захватила меня простотой своего исполнения и в то же время достаточной сложностью, что я решил портировать Spout и на современные устройства под управлением Android OS. В первоначальном варианте движок Spout, портированный на MotoMAGX, работал через библиотеку SDL. Благодаря этому игра могла запуститься на всей линейке MotoMAGX-устройств, для которых была портирована библиотека SDL. В случае с портированием игры на Android OS, я решил использовать только библиотеки и средства, доступные в стандартной поставке, поэтому зависимость от SDL отпала за ненадобностью. Было решено не переписывать движок Spout с языка программирования C на Java, а воспользоваться Android NDK и стандартным механизмом JNI (Java Native Interface) для взаимодействия между Java-прослойкой и нативным кодом на языке C. В качестве библиотеки для отображения игрового контекста на экране, был взят OpenGL ES; эта библиотека доступна практически в каждом Android-устройстве, которое имеет возможность аппаратного ускорения графики посредством GPU. Таких устройств большинство, Android-девайсы, которые могут обходиться только программным рендерингом, давно уже исчезли с витрин салонов сотовой связи. Игровой контекст будет рендериться на текстуру, которую я и буду выводить на экран устройства. К моему огромному сожалению, обладателей Android-устройств с эргономичной физической клавиатурой остались единицы, поэтому для удобного управления корабликом в Spout мной было реализовано простейшее сенсорное управление.

Читать далее Портирование Spout на Android OS: первый опыт работы с NDK, JNI и OpenGL ES

Android, Dev