
Часть из них лежат в этой теме: http://forum.blackstrip.ru/viewtopic.php?t=614
Когда стали выходить телефоны с экраном побольше - в какие-то пришлось добавлять маломальское масштабирование, а какие-то забросить, т.к. вспомогательные функции, встроенные в телефон, да и выпускающиеся в то время новые мидлеты с лихвой перекрывали по возможностям эти поделки ранней явы)
Microemu позволит превратить J2ME-миниутилиту в ее андроид-версию.
Таким образом, можно делать разные мини-проги, которые сразу будут работать на андроиде, и на j2me-телефонах для цифрового детокса и любителей древностей. Понятно что это будут именно мини-проги чтобы они шли на всём сразу.
Каким должен быть этот мидлет чтобы пойти и на любой яве, и на любом андроиде сразу
По результатам тестов на крупных и мелких телефонах можно собрать тот минимум параметров, которым должна удовлетворять ява-программа чтобы работать много где: viewtopic.php?f=4&t=972&p=3633#p3633
Память
Вопрос с памятью (ява-хипом) можно решить, пытаясь уместить требования утилиты/игры в несколько десятков килобайт. Ну у Siemens SL45i и C55, как самых слабых телефонов черно-белых, было около 150 килобайт хипа.
Управление
Вопрос с управлением на разных моделях разных марок j2me-телефонов тоже можно решить, например, используя для управления стандартные коды клавиш. Или использовать getGameAction(keyCode) чтобы управлять и джойстиком по клавишам LEFT,RIGHT,UP,DOWN,FIRE (какие это клавиши на физическом устройстве - известно только самому телефону, на котором вызвана эта функция getGameAction). А можно вообще добавить в мидлет мини-назначатель клавиш, но это усложнит его. Лучше всего, наверное, использовать стандартные клавиши с подписями/дублирующими экранными кнопками типа "5 - начать", "0 - выход".
Экран
Получается, наша мини-прога запускается на экране начиная со 101x64 пикселя (Siemens C55) и заканчивая андроидовскими 1500x2200 пикселей и больше. Нужно ввести универсальное масштабирование всего - шрифтов, графики и т.д.
Бывает еще, например, Nokia 3510i с поддержкой явы, у нее цветной экран 96x65, это даже меньше сименсов по ширине, но высота примерно такая же Т.е. минимальная высота экрана у мобильников с явой - все равно 64 пикселя, вроде как.
Т.к. прога будет запускаться и на андроидах, и на j2me-нокиях с гироскопом типа Nokia 5530 - то предполагаем что экран может вращаться. И после поворота высота экрана может стать шириной, а ширина высотой.
Шрифт можно использовать мелкий, но масштабировать его не как сейчас "шрифт окон" в PaintCAD Mobile рисуется просто большими пикселями квадратными, а каким-то сглаживающим алгоритмом типа advMame x2, x3. Доращивать его на старте программы до необходимого размера чтобы по минимальному размеру (ширине/высоте) экрана влезало заранее условленное нужное количество строк.
Если минимальная высота экрана 64 пикселя (представим что Siemens C55 повернул экран воображаемым гироскопом, которого в нем нет), и хочется чтобы влезало 10 строк по высоте, то высота буквы шрифта должна быть от 64/10 = 6 пикселей и далее растимая масштабированием до бОльших высот.
По ширине экрана для комфортного отображения, хорошо бы, влезало 15-20 символов. Тогда ширина буквы будет от 64/15 = 4 пикселя. А символы M, W, @ придется сделать пошире, 6-7 пикселей чтоб читались.
Т.е. должен быть микрошрифт с буквами, в среднем, 6x4 пикселя, масштабируемый до гигантских размеров и рисующийся красиво на больших размерах. Интересно, возможно ли это)
Можно еще использовать векторный шрифт из линий и эллипсов, записанный, например, прямо в код или в отдельный файл координатами и типами фигур. С ростом разрешения линии будут утолщаться, а фигуры масштабироваться.
Для графики тоже использовать не "мыло" линейной интерполяции, а какой-то умный пиксельный алгоритм.
Мультимедиа
Если захочется использовать в таком приложении музыку и звуки - используем возможности из j2me. Надо будет только посмотреть насколько хорошо они поддерживаются в microemu.
3D
В телефонах без M3G-технологий простенькое 3D можно отрисовать на экране и по паре простых формул, проецирующих точку трехмерного пространства на двумерный экран. Если выкинуть текстуры, а использовать монотонно раскрашенные полигоны, и отрисовывать их от дальнего к ближнему, то что-то получится похожее на 3D. Вопрос какой будет FPS на Siemens C55, наверное, низкий +) Но 3D - это, кстати, универсальный масштабирующийся растр, т.к. рисуются треугольники, то они и на 101x64, и на 4K выглядят одинаково как треугольники с ровными линиями-границами толщиной 1 пиксель, квадратных пикселей там никогда не появится. Придумать бы что-то подобное масштабирующееся и для 2D растра.
Итог
Это должен быть целый движок, содержащий масштабирование шрифтов и графики под любой растр от 64x64 и выше, влезающий в 150 килобайт хипа, управляемый стандартными физическими клавишами телефона и с сенсорного экрана, при желании использующий музыку, звуки и софтверное медленное 3D.