-->

wtorek, 30 kwietnia 2013

Samsung App Cup - wyniki!



Miło mi poinformować że razem z moim kolegą ze studiów zajęliśmy 4 miejsce w ogólnopolskim konkursie organizowanym przez Samsunga na platformę Android! :) Konkurs trwał od listopada do marca, a dziś zostały ogłoszone wyniki. Jeżeli jeszcze nie spróbowaliście naszej produkcji to możecie znaleźć ją w sklepie Samsunga : Droid Painters. Takie wyniki motywują do dalszej pracy na rynku mobilnym, a szczególnie w sektorze aplikacji rozrywkowych jakimi są gry. Nadal nie jest za późno aby samemu spróbować sił i stworzyć aplikację szczególnie na system Android, gdzie codziennie dochodzi około 1.5 mln nowych użytkowników. Pamiętajcie że liczy się najpierw jakość i wykonanie a później pomysł, nawet ciekawa aplikacja bez dobrego wykonania zostanie niezauważona w markecie. Powodzenia!

Czytaj dalej/Read more!

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 :]

Czytaj dalej/Read more!

czwartek, 4 kwietnia 2013

Droid Painters - Samsung App Cup



Chciałbym przedstawić grę wykonaną przeze mnie oraz mojego dobrego znajomego na konkurs organizowany przez firmę Samsung. Sam konkurs nosi nazwę Samsung App Cup i jest organizowany na terenie Polski. Aplikacje należało zgłaszać do 31 marca 2013. Można było zgłosić aplikację lub grę, w zależności od własnych preferencji :]

Wybraliśmy grę ze względu na realizację pomysłu, którego nie widzieliśmy do tej pory na urządzeniach mobilnych. Dodatkowo chcieliśmy poznać silnik LibGDX, który moim zdaniem w najbliższym czasie warto znać chociażby dlatego że jest na tle innych bardzo wydajny, darmowy i ciągle bardzo dynamicznie się rozwija. O libgdxie i o jego wadach i zaletach napiszę za niedługo w osobnym wpisie.

Co do samej gry, nazywa się Droid Painters, możecie ją znaleźć w sklepie Samsunga (Link). Chodzi o to aby przez 120 sekund zamalować jak najwięcej planszy. W czasie rozgrywki pojawiają się bonusy, które mogą pomóc Ci wygrać (powiększają strumień malowania, zamrażają Twoich przeciwników itp.) ale są też bonusy, które szkodą. Przed rozgrywką należy wybrać kolor i imię poszczególnych graczy. Na chwilę obecną najlepszymi urządzeniami do zabawy w malowanie są tablety ze względu na rozmiar ekranu. Można grać z trzema osobami jednocześnie na jednym urządzeniu. W przyszłości planujemy dodać rozgrywkę po Bluetooth lub WiFi :)

Regulamin obliguje nas że aplikacja przez pierwsze 6 miesięcy będzie tylko w sklepie Samsunga, na pewno po tym okresie wrzucimy ją do sklepu Googla ;] Miłej zabawy ze znajomymi!






Czytaj dalej/Read more!

niedziela, 10 marca 2013

1 000 000 - Teeter Pro

   
                 

     Niedawno Teeter Pro przekroczył liczbę miliona ściągnięć stając się drugą bardzo udaną produkcją. Co ważne nadal, po mimo upływu pierwszych 31 dni od wydania liczba ściągnięć w każdy dzień wynosi około 55 tysięcy. Na pewno czynnikiem decydującym jest to że jest to gra prostsza niż Parkin Truck. Bardzo dużo opinii w postaci komentarzy mówi o tym że Parking Truck jest trudny, nie jest to gra dla wszystkich. Z Teeterem Pro jest inaczej, wystarczy doprowadzić kulkę do odpowiedniej łuzy. 


       Mam kilka spostrzeżeń po wprowadzeniu systemu komentarzy z konta Google+. Dzienna liczba komentarzy jest o wiele mniejsza niż przedtem. To sprawia że trudniej jest poprawić ranking aplikacji we wspomniane 31 dni. W przypadku Teeter Pro przez dwa pierwsze tygodnie niewiele się działo, dopiero kampania rozpoczęta w AdMobie dała dobre rezultaty. Także relacja kliknięć +1 dla Google+ do komentarzy/ocen jest nie porównywalna. Jeżeli nie masz solidnej aplikacji gdzie możesz zareklamować swoją nową produkcję lub nie chcesz wydawać pieniędzy na kampanie reklamowe to obecnie ciężko jest się wybić niezależnemu deweloperowi. Jednym słowem jest trudniej...



Czytaj dalej/Read more!

czwartek, 7 lutego 2013

House Ads - AdMob



Niekiedy chcemy pomóc aplikacji w wypromowaniu się. Możemy kupić recenzję na jakimś znanym portalu związanym z tematyką Android, jasne jest że wiąże się to z dodatkowymi kosztami, które narzuca nam recenzent. Jeżeli chcemy tego uniknąć możemy wykorzystać tak zwane house ad. House ad to rodzaj reklamy polegający na promowaniu własnych (bądź cudzych ;) produkcji. Zaletą tego typu reklamy jest to, że nie płacimy nikomu za pokazywanie naszego bannera. Poświęcamy jedynie naszą powierzchnie reklamową we własnej aplikacji/aplikacjach, w tym momencie nic nie zarabiając (w zależności od stosunku wyświetlanych reklam).

W kilku krokach chciałbym opisać jak stworzyć kampanię promującą aplikację przeznaczoną na telefony/tablety z Androidem. Przykład opiszę na podstawie sieci Admob, niektóre elementy są analogiczne także w innych sieciach reklamowych oferujących house ads.

Pierwszym elementem jest odszukanie przycisku House Ads w zakładce Sites & Apps. 




Następnie klikamy na przycisk tworzący nową kampanię reklamową.


Podczas tworzenia naszej kampanii musimy wybrać przedział czasowy kiedy będzie ona działać, nadać jakąś nazwę, typ (Android App Download) oraz opcjonalnie krótką notatkę.


Kolejnym krokiem jest wybranie naszych aplikacji w których będziemy pokazywać reklamę. Taką grupę aplikacji musimy nazwać. Ważnym polem jest Ad Group Impression Goal, tam wpisujemy ile wyświetleń poświęcamy na pokazanie naszego bannera. Możemy zaznaczyć Fully allocate, wtedy każde wyświetlenie będzie pokazywało reklamę naszej aplikacji bez jakiegokolwiek limitu. 



Następny ekran to urządzenia oraz wersje Androida, domyślnie zostawiamy bez zmian. Możemy także ustawić region geograficzny, oraz to czy reklama wyświetlać ma się przy połączeniu WiFi/3G. 



Ostatni krok to wybranie typu bannera. Mamy dwie opcje, pierwsza to wyświetlanie tytułu aplikacji + małego opisu, druga to wyświetlenie obrazka. Polecam zdecydowanie tą drugą opcję, dobrze zrobiony banner pozwala na uzyskanie wyższego CTR, a tym samym na dotarcie do szerszego grona odbiorców. Wpisujemy także link do aplikacji w pole URL.



Tak stworzona kampania może pomóc w uzyskaniu większej liczby instalacji w ciągu dnia o ile mamy solidne aplikacje produkujące określoną liczbę wyświetleń. Jeżeli nie mamy wspomnianych wyświetleń zawsze możemy zamówić u kogoś taką kampanię ;]

Czytaj dalej/Read more!

czwartek, 31 stycznia 2013

Teeter Pro


Chciałbym przedstawić moją kolejną produkcję - Teeter Pro. Gra powstała w celu przećwiczenia obsługi parsera XML ;]. Po kilku usprawnieniach i dodaniu leveli postanowiłem wydać ją na Google Play. Poziomy powstały w programie Gleed2D , który polecam ze względu na szybkość tworzenia wspomnianych poziomów ;]. Miłej zabawy!








Czytaj dalej/Read more!

niedziela, 27 stycznia 2013

Detekcja tabletu/telefonu - Android


Podczas tworzenia nowej produkcji natknąłem się na pewien problem związany z osiami akcelerometru w urządzeniach z Androidem. Różnica wynika z tego że większość tabletów (szczególnie 10 calowych) posiada domyślny widok poziomy (landscape), a nie taki jak we wszystkich telefonach i niektórych 7 calowych tabletach czyli pionowy (portrait). Z racji tego że używam portu silnika z iOS (Cocos2D) musiałem sam zadbać o detekcję. Pierwszym pomysłem było wyliczenie w kodzie przekątnej ekranu i ustawienie zmiennych położenia w metodzie cocosa : void ccAccelerometerChanged(float accelX, float accelY, float accelZ) tak aby dopasowały się do urządzenia. Ten pomysł niestety nie zadziała, mimo że wyliczymy przekątną, to jeżeli będzie miała 7 cali i uruchomimy aplikację np. na Nexusie 7, to z racji tego że ma on tryb poziomy jako domyślny, osie się zamienią co będzie skutkowało poważnym błędem. Najlepszym sposobem było by pobranie aktualnej orientacji urządzenia (layout/portrai) i sprawdzenie aktualnej rotacji w stopniach.
 

Powyższa metoda sprawdza oryginalną orientację ekranu. Pobieramy aktualną pozycję ekranu (cfg.orientation) oraz rotację i porównujemy. Warto zauważyć że pomiędzy widokiem telefonu i tabletu jest 90 st. różnicy, a więc jeżeli wykryjemy tryb landscape oraz 90 st. rotacji to jesteśmy pewni że nasza aplikacja została uruchomiona na telefonie. Jeżeli urządzenie raportuje o trybie landscape i 0 rotacji to mamy pewność że jest to tablet z domyślnym widokiem poziomym.


Taką metodą możemy jednokrotnie sprawdzić podczas pierwszego uruchomienia aplikacji z jakim urządzeniem mamy doczynienia ;] Sam kod nie jest mojego autorstwa, znalazłem go po kilkudziesięciu minutach intensywnych poszukiwań na stackoverflow.com. Metoda została przetestowana na Nexusie 7 i HTC Desire Z, niestety nie mam dostępu do fizycznego urządzenia z natywnym trybem poziomym ale emulator potwierdził poprawność działania. 

Czytaj dalej/Read more!