Tworzę swoją pierwszą grę z appMobi po stworzeniu niektórych gier dla Androida z wykorzystaniem Java. W zasadzie zamierzam stworzyć nieskończoną grę zręcznościową biegacza, 2D, widok z góry.Problemy z wydajnością w grach na iPhone'a za pomocą HTML i JS, z appMobi
Używam appMobi z prostym JS i CSS3 (bez żadnej innej biblioteki, takiej jak Impact).
Zacząłem od wykonania testów na płótnie i stworzyłem bardzo proste demo, w którym kontrolujesz piłkę (w zasadzie okrąg renderowany za pomocą płótna) z akcelerometrem i musisz zbierać inne kulki. Testowałem to z moim Galaxy S2 i iPhonem 4 i wyglądało na to, że iPhone działał o wiele lepiej, więc zacząłem pisać prosty silnik, by zamiast tego używać elementów dom. Zasadniczo stworzyłem obiekt, który łączy się z tagiem i zawiera wektor pozycji, a także funkcję rysowania, która zasadniczo wykonuje następujące czynności: this.element.style.left = x + 'px' (i tak samo dla górnych i y) .
Na mojej głównej pętli Zadzwoniłem funkcji rysowania na obiektach i aktualizowane swoje położenie zgodnie z moją logiką gry i ponownie nazywany MainLoop użyciu tego window.requestAnimationFrame Wrapper:
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){
window.setTimeout(callback, 1000/60);
};
})();
Potem przystąpił do tworzenia obiektu kamery, aby kontrolować pozycjonowanie ekranu i sprawiał, że z powodzeniem przewijał on tło, korzystając z właściwości css-position. Testowałem to z moim nowym Galaxy S3 iz s2 z pewną grafiką (2 200x200 pngs i tłem) i wszystko przebiegło gładko przy ~ 60 fps. Byłem bardzo zadowolony z wyników i naprawdę podekscytowałem się testowaniem na iPhone 4 iOS 4.x, ale ku mojemu rozczarowaniu działało to na 2-3 FPS! 30 razy wolniej niż mój android. Zacząłem wprowadzać wiele zmian (obecnie używam ekranu o wymiarach 720x1280), więc próbowałem używać 320 * 480, używając zamiast tego płótna, usuwając przewijane tło, zmieniając rozmiar obrazów, ale bez skutku, podczas gdy android działał dobrze we wszystkich odmianach.
Najlepsze było 5 klatek na sekundę. Mam do przetestowania kolejny iPhone, iPhone 4S z iOS5 i bardzo niestabilny FPS. wahał się od 3 do 50, ale nie można go było zagrać - nie ma szans, że ktoś by go zagrał, a nawet nie zacząłem pakować go z zawartością.
Naprawdę chcę skorzystać z cross-platformingu i wstyd byłoby zrezygnować z rynku Apple, więc wszelkie wskazówki lub porady będą ciepło przyjęte!
Dzięki, Gabriel