Windows Unversal App Invaders

Bojan je prikazao kako napraviti jednostavnu igru za Windows u prethodnom postu. Sledeći korak je aplikacija za Windows Phone, ili još bolje, jedna aplikacija koja bi radila i na klasičnom Windows i Windows Phone 8.1 operativnom sistemu. Na našu sreću Microsoft nam je omogućio da delimo kôd između windows i windows phone aplikacija koristeći “universal app” templejt u Visual Studio-u. Ukratko ću predstaviti proširenje naših “modernih” invadera u univerzalnu aplikaciju, što bi značilo da iz jednog solution-a možemo da bildujemo i windows i win phone aplikaciju oslanjajući se na isti kôd odgovoran za logiku igre.

Preduslovi su Visual Studio i Windows Phone SDK, sve potrebne instalacije možete naći na sajtu Windows Dev centra. Da bi pokrenuli Windows Phone emulatore potrebno je da imate hardversku podršku za Hyper-V i 64-bitni Windows edicije Pro ili više.

New Project

Da krenemo, kreirao sam novi solution Blank App (Universal App) tipa Visual C#, kao na slici.

1 New Project

Visual Studio je za nas napravio tri projekta, Windows aplikaciju, Windows Phone aplikaciju i zajedničku (Shared) biblioteku InvadersUniversalApp.Shared. Ideja je jasna imaćemo jedan class library sa zajedničkom logikom i dva različita UI projekta. Krećemo od postojećeg koda iz prethodnog posta, iskopirao sam korisnički interfejs u Windows aplikaciju (MainPage), a ostatak koda u Shared projekat, nikakve dalje izmene nisu bile potrebne, dobili smo aplikaciju za Windows 8.1 sa istim funkcionalnostima.

2 Solution Explorer

WinPhone

Da pređemo na Windows Phone verziju, kopiramo MainPage xaml, prvi izazov je prilagođavanje displeju telefona. Da ne bi menjali kod tako da radi sa relativnim veličinama, celu stranicu, odnosno Grid kontrolu možemo da smestimo u jedan Canvas koji će nam poslužiti da skaliramo našu stranicu tako da se prilagodi rezoluciji mobilnog uređaja, isprobavanjem sam došao do 55%, kada telefon stoji uspravno.


<Canvas.RenderTransform>
<ScaleTransform x:Name="PageScaleTransform" ScaleX=".55" ScaleY=".55" CenterX=".5" CenterY=".5" />
</Canvas.RenderTransform>

Da bi imali potpuni mobilni doživljaj potrebno je da igra reaguje na okretanje uređaja u takozvani landscape mod. Da bi dodali ovu funkcionalnost dovoljno je da obradimo event SizeChanged osnovnog prozora, i u handler-u Current_SizeChanged na osnovu orijentacije uređaja promenimo skaliranje, praktično nekoliko linija koda.

Posle malo dorađivanja ikonica i splash screen-a iz foldera Assets igra izgleda sasvim pristojno na ekranu telefona. Čak i guestures rade pristojno, osim što je samo sam svemirski brod osetljiv na dodir, tako da može da bude malo nezgodno pogoditi ga prstom. Da bi ovo popravili dovoljno je da guestures handler-e prebacimo na parent kontrolu, tj. Canvas. Dakle, otvorimo klasu Ship.cs iz projekta InvadersUniversalApp.Shared, dodamo drugi parametar u konstruktor tipa Canvas, prosledimo parametar iz klase Game.cs, sada linija u kojoj kreiramo svemirski broj treba da izgleda ovako:

_ship = new Ship(shipPosition, _canvas);

Ostaje da u metodi Render klase Ship handler-e prebacimo na ParentCanvas properti i to je to. Sada možemo upravljati svemirskim brodom dodirom na bilo kom delu naše parent kontrole.

Emulatori

Da bi omogućo testiranje Microsoft je obezbedio emulatore WinPhone uređaja sa raziličitim specifikacijama hardvera. Dovoljno je izabrati željeni emulator i startovati aplikaciju, ceo proces je automatizovan, startovanje emulatora (virtuelne mašine), deployment aplikacije i njeno startovanje u debug modu.

3 Emulatori

 

Evo izgleda emulatora sa pokrenutom igrom.

4 Igra emulator

 

Deployment na telefon

Emulatori jesu jako dobri, ali testiranje na pravom uređaju je ipak nezaobilazno. Da bi se aplikacija pojavila na telefonu dovoljno je povezati telefon kablom na računar, registrovati telefon za razvoj aplikacija uz pomoć alata “Windows Phone Registration 8.1”, izabrati “Device” iz padajuće liste pored starta u Visual Studio-u i pritisnuti “F5”. Visual Studio će odraditi deploy i startovati aplikaciju na telefonu, debuger radi odlično kao i na emulatoru. Kada završite debug sesiju aplikacija će ostati na telefonu i moći će da se pokrene kao i svaka druga skinuta sa stora, ali sa ograničenim “rokom upotrebe”, posle nekog vremena moraćete da produžite svoju developersku licencu što je besplatno, svodi se na jedan klik mišem.

Lumia 620 2

Zaključak

Za nekoliko sati smo dobili igricu na telefonu koja je dovoljno dobra da se demonstrira ideja, naravno za nivo kvaliteta koji je potreban za windows store potrebno je još dosta unapređenja. Najveće iznenađenje za mene su solidne performanse na budžetskom telefonu Lumia 520 koji ja koristim, tako da je moguće napraviti manje zahtevnu igru koristeći yaml, bez specijalizovanih gaming framework-a. Ovo omogućava nama entuzijastima koji nismo u gaming industriji da testiramo ideju ili kreiramo mali hobi projekat bez ulaganja puno vrmena u učenje novih alata.

Izvorni kôd možete naći na našem github repo sitoriju u folderu InvadersUniversalApp.

Sledeći korak je kompletna igra na windows storu. Ukoliko ima nekog ko se bavi dizajnom i/ili fotografijom voljnog da podrži projekat jednostavne puzle sa nekoliko fotografija i jednostavnim dizajnom neka se javi!

Pages:

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>