• Игровые циклы или ЭлектроКардиоГама
    0
    Как я понял в NeoAxis делается интерполяция все-таки — просчитываются два положения между стандартными тиками и вычисляется позиция в промежутке.

    >1. Увеличить TICKS_PER_SECOND;
    В шутерах будет напряжно.

    Поэтому частота обработки увеличивается только для объекта, для которого CCD включен (для пули). Получается как раз то, о чем вы написали — вычисляются промежуточные позиции. Иначе пуля за один тик может преодолеть большое расстояние и пролететь сквозь тонкую стенку, а не столкнуться с ней.

    >2. Быстрый объект растянуть по всему пути его следования.
    Сложно реализовать при криволинейных траекториях (особенно при действии силовых полей).

    Да. Но при прямолинейном движении иногда можно получить выигрыш.
  • Игровые циклы или ЭлектроКардиоГама
    0
    Прим. перев.: в движке NeoAxis для физического объекта можно выставлять флаг Continuous Collision Detection; подозреваю, что по нему как раз и выполняется обработка, подобная описанной выше реализации игрового цикла.

    CCD используется для детектирования коллизий быстрых объектов. Насколько я помню, есть 2 основных подхода:
    1. Увеличить TICKS_PER_SECOND;
    2. Быстрый объект растянуть по всему пути его следования.
  • Двойная буферизация или Назад в прошлое. Часть вторая
    0
    javax.microedition.lcdui.game иногда может быть полезным, но часто в играх используется настолько извращенная специфическая оптимизация, что лучше изобрести велосипед.
  • Пишем примитивный и никому не нужный компилятор
    +1
    Статья полезная, но при написании более сложного компилятора, лучше посмотреть в сторону генераторов компиляторов.
  • Qt Quick и Box2d: Симулируем физику
    0
    groupIndex — индекс в группе (предположительно группа — один объект Body)
    Насколько я помню, этот параметр нужен для фильтрации столкновений. Какие-то объекты могут сталкиваться, какие-то пролетают друг сквозь друга.
    По видео у меня сложилось ощущение, что мяч все равно ударяется об исчезнувшие кирпичи. Попробуйте использовать этот параметр.

    linearDamping, angularDamping, bullet — не понятно с первого взгляда
    bullet нужен для быстрых объектов, подверженных туннельному эффекту. Для таких объектов используется более «тяжелый» алгоритм расчета столкновений, поэтому его надо использовать для небольшого количества объектов. В вашем случае — для мяча.
  • Splash Screen на J2ME
    +1
            setFullScreenMode(true); //Полно экранный режим 
            w = getWidth();
            h = getHeight();
    
    По моему опыту, лучше разворачиваться на весь экран в первом paint. И еще, у вас разворот на весь экран вот тут дублируется:
        public Habra(){
            habra_midlet = this;
            splash_screen = new HabraSplash();
        splash_screen.setFullScreenMode(true);// <=здесь
        }
    
    Есть у меня сомнения, что канва нормально развернется на весь экран и получит правильные w и h до того, как ляжет на экран. А 100% узнать, что она готова для разворота на весь экран можно только при первом вызове её paint… ну может еще по нажатиям клавиш, etc.
    Так что:
      private boolean isInFullScreen;
      
      protected void paint(Graphics g) {
        if (!isInFullScreen) {
          isInFullScreen = true;
          setFullScreenMode(true);
          w = getWidth();
          h = getHeight();
        }
        //отрисовка
      }
    

    Да, и в конструктор мидлета тоже лучше ничего «тяжелого» не класть, лучше в startApp. На некоторых трубках это тоже может негативно отразиться.

    Изучение J2ME даст Вам знание ООП, научит хорошо контролировать память и много чего другого.
    Согласен. Писал довольно большую игрушку на j2me; как только не приходилось извращаться…