-->

piątek, 5 kwietnia 2013

LibGDX & Cocos2D



Przy pisaniu moich dwóch ostatnich produkcji używałem portu silnika grafiki z iOSa o nazwie Cocos2D, źródła możecie znaleźć tutaj. Zaletą jego jest to że tak naprawdę nie przejmujemy się żadną skomplikowaną mechaniką OpenGla, mamy gotowe metody na przykład do animacji sprite'ów. Mimo że jest to port i nie ma dużo przykładów na Android to można bez problemu wzorować się na kodzie napisanym w objective-c (iOS) i portować go na Jave. Silnik idealnie nadaje się do gier 2D, zresztą jest on bardzo popularny na platformie Appla co jest dobrą rekomendacją. Niestety ma jedną dużą wadę, na Androida port nie jest już rozwijany, w dodatku jest dość stary. Wersja na Androida oznaczona jest numerem 0.99.4, wersja iPhon'owa ma numer 2.1-rc1 więc na pewno dużo się pozmieniało. Zamiennikiem Cocos2D w Javie jest Cocos2D-X  na którym piszemy w C++, na chwilę obecną nie testowałem w żaden sposób wersji C++ ale w niedalekiej przyszłości na pewno spróbuję i porównam do kolejnego silnika o nazwie libGDX.

LibGDX jest napisany w Javie dlatego nie musimy uczyć się na nowo języka jak np. C++ w Cocos2D-X. LibGDXa możecie znaleźć tutaj. Musiałem się go nauczyć ze względu na pisanie aplikacji konkursowej (Droid Painters). Sam w sobie libGDX oferuje świetne możliwości takie jak ładowanie tilemaps, budowanie UI + definiowanie skinów (must have!), loader do assetów Androida, możliwość portu do iOS, obsługa konsoli OUYA, padów do gier i wiele innych. Dodatkowo sam silnik świetnie się rozwija, podczas pisania aplikacji konkursowej musiałem zrobić refactoring z wersji 0.9.6 do wersji nightly, tego czego mi brakowało w 0.9.6 dostałem w testowej wersji z nawiązką ;) Dodatkowo jest on w czołówce jeżeli chodzi o wydajność, tutaj możecie zobaczyć małe porównanie. 

Z drugiej strony początki z nowym frameworkiem zawsze bywają trudne, tak też było w tym przypadku. O ile dokumentacja znajduje się na stronie to albo jest ona niekompletna albo bardzo zdezaktualizowana. Zaczynając z 0.9.6 miałem bardzo duży problem ze wspomnianymi skinami, okazało się że różnice pomiędzy 0.9.6 do 0.9.8 i wyżej są znaczące. Mam wrażenie że cocos2D poszło mi na początku łatwiej niż z libGDXem ale pewnie jest to spowodowane tym, że cocos2D jest wyżej poziomowy niż lbGDX. W cocosie2D nie musimy przejmować się kamerą/viewportem lub spritebatchem aby coś pokazać. 

Tak czy inaczej polecam wam libGDXa, sam silnik jest przemyślany i ma mnóstwo udogodnień. Polecam wam także Cocosa2D-X jeżeli za wszelką cenę nie poszukujecie dużej wydajności, jestem pewien że metody nie różnią się od wersji javowej zbyt dużo, problemem może być C++, jego nieład w postaci plików nagłówkowych, prototypów funkcji itp. ;] i tak pewnie będę musiał się tego wszystkiego nauczyć. 

Jest także kilka innych silników, z popularniejszych AndEngine ale nie może on pochwalić się dużą wydajnością na tle dwóch poprzednich, także sam nic w nim nie robiłem dlatego jest o nim tylko krótka wzmianka :]

1 komentarz:

  1. LibGDX jest szybkie i wygodne. Po zapoznaniu się z filozofią pracy w tym frameworku, pisanie aplikacji idzie błyskawicznie :)

    OdpowiedzUsuń