wiki:mobiili
Last modified 4 months ago Last modified on 2016-11-03 15:58:33

ITKP106 Ohjelmointi 1, mobiili, 1 - 2 op, Pelin siirto puhelimeen

Ilmoittaudu Korpissa.

Tämän kurssin idea on että Ohjelmointi 1 -kurssilla tehtyjä asioita sovelletaan mobiiliympäristössä.

Osa tämän sivun ohjeista koskee Windows Phone 7:ää (WP7). Voit ohittaa ne, koska WP7-työkaluja ei Microsoftin puolesta käytännössä enää tueta, ja toisaalta puhelimiakaan ei ole enää juuri missään.

Vaihtoehtoja:

  • WP7 työkalut: vs2010+wp7sdk -työkaluilla Windows Phonelle. (ei toimi Windows 10)
    • jos tulee Culture-virheilmoitus, seuraa ohjeita
    • tämän jälkeen kannatata asentaan vielä Windows Phone SDK Update for Windows Phone 7.8 päivitys
    • voit joutua asentamaan myäs Microsoft XNA Game Studio 4.0 jotta projektimallit näkyvät VS2010
      • tarpeen näkee siitä, että löytyykö C#-projektin alta XNA-pelien luominen
    • Jypeli
      • mikäli Jypeli ei ilmesty Visual Studion C#-projektien alle, niin kokeile antaa komentoriviltä komento
        set VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\
        
        ja aja sitten Jypeli_setup.exe samasta komentoikkunasta

Tarkista myös NPO-sivujen ohjeet

Työn voi tehdä myös VS2015 avulla jos asentaa Windows Phone SDK:n ja Jypelin uusimman version. Tuo WP SDK oli ruksittavana kun Community Edition asensi. Jos suorittaa Visual Studion asennus-exen uudelleen, niin painaa vaihtoehtoa Modify ja ruksii kaikki WP8 liittyvät ja painaa OK. Mutta jos käyttöjärjestelmäsi ei ole vähintään Windows Pro tasoa, niin et saa emulaattoreita, sillä ne vaativat toimiakseen Hyper-V:n, joka on saatavilla vain Pro -versioissa.

Jos ei ole omaa puhelinta, on laitoksella muutamia WP7 puhelimia lainattavaksi ainakin pääteohjaukseen.

Kurssista saa opintopisteitä seuraavasti:

  • 1 op kun ohjaajalle on näytetty että peli toimii Windows-puhelimessa. Toimiminen tarkoittaa että peli on oikeasti pelattavissa, pyörii kunnollisella frameratella ja kontrollit ovat mielekkäät ilman akrobatiaa.
  • + 1 op kun peli on hyväksytty Marketplaceen JA merkitty sivulle: WP7 sovellukset joita JY:stä julkaistu. Kun merkintä em. sivulle on tehty, lähetä kurssin opettajalle sähköpostia.

Eli yhteensä enintään 2 opintopistettä.

Ohjelmistoasennukset

  • WP8: Visual Studio 2015
    • Tarvittavat työkalut (Windows Phone 8.1 SDK) Visual Studion mukana, muistettava valita asennusohjelmasta
    • Tarvitaan Jypelin Mono-versio

Videotallenteet ja materiaali

Syksyllä 2015 mennään syksyn 2014 videolla / materiaaleilla, ks. alla. Ohj1 kurssin pääteohjaukset ovat käytettävissä myös tämän kurssin tarpeita varten. Harkkatöiden palautus mielellään 31.12. mennessä tai aivan viimeistään tammikuun loppuun mennessä.

Syksy 2014

  • Ti 9.12 klo 14:15-17:00 Pelit ja kauppapaikat

Kevät 2014. luento 1.4. HD SD. Luennon mallikoodi. Voit myös ladata kaikki wp7-esimerkit, tee SVN-checkout allaoleviin osoitteesiin (kummallekin oma checkout)

https://svn.cc.jyu.fi/srv/svn/npo/trunk/esimerkit-wp7/
https://svn.cc.jyu.fi/srv/svn/npo/trunk/wp7-julkaisut/

1. Projekti ja referenssit kuntoon (vain WP7)

Kun aloitat tekemään kännykkäversiota omasta pelistäsi, jonka olet jo tehnyt työasemalle, niin toimi näin

Vaihtoehto 1, luo rinnakainen projekti (projekti tulee samaan hakemistoon):

  1. Klikkaa projektia hiiren oikealla -> Create Copy of Project for Windows Phone
  2. Anna projetille järkevä nimi
  3. Tee syntyneelle WP7-projektille Set as Startup Project
  4. VS valittaa, että Jypeli-viitteet eivät ole kunnossa. Mene WP7-projektin päälle ja klikkaa Alt+Enter (Project -> Properties)
  5. Reference Paths -välilehti. Valitse Reference Paths-kohdasta löytyvä Jypeli-viitteen kansio
  6. Etsi Folder-kohtaan se Jypelin dll-tiedosto, joka viittaa WP7-projekteihin. Jos olet asentanut Jypelin asennusohjelman avulla niin tämä polku on tavallisesti
    C:\Program Files (x86)\Jypeli\lib\Windows Phone\
    
  7. Paina Update
  8. Nyt pitäisi WP7-projektin kääntyä

Vaihtoehto 2, luo uusi projekti (projektin saa rinnakkaiseen hakemistoon):

  1. Paina solutionin päällä hiiren oikealla Add/New project
  2. Valitse uuden projektin tyypiksi FysiikkaPeli WP7 (ja Windows Phone OS 7.1 kun sitä kysytään)
  3. Kun projekti on syntynyt, poista sen .cs-tiedostot
  4. Paina uuden projektin päällä Add/Existing Item
  5. Valitse alkuperäisen projektin .cs tiedostot, mutta ÄLÄ paina Add
  6. valitse Add:in vierestä alasveto ja sieltä Add as link
  7. mene projektin Content References-kohtaan ja hiiren oikealla Add Content Reference... ja valitse alkuperäisen projektin Content
  8. Voit poistaa uutta projektia varten syntyneen Content-projektin kokonaan.
  9. Nyt pitäisi WP7-projektin kääntyä

Korvaa kuvat omilla

  • Background.png - iso kuvake tiileksi
  • GameThumbnail.png - pieni ikoni ohjelmalistassa
  • Aukaise WP7 projekti hiiren oikealla ja Properties/XNA Game Studio
  • Valitse Game Thumbnail

2. Esimerkkejä

3. Koko ja asento

Alueen koko ja muoto mietittävä. WP7 puhelimessa kaksi kokoa: 800x480 ja 400x240.

Phone.DisplayResolution = DisplayResolution.Large; // parempi resoluutio
Phone.DisplayResolution = DisplayResolution.Small; // Oletus

Voi kannattaa kiinnittää asento väkisin johonkin suuntaan, niin kuva ei pyörähdä ympäri

Phone.DisplayOrientation = DisplayOrientation.LandscapeLeft;

Koska ruutu on pieni, niin älä tunge liikaa materiaalia yhteen kuvaan. Liian pienet pelioliot eivät paranna pelikokemusta. "Less is more."

4. Ohjaus

Ks. Jypelin ohjesivu

Käytännössä kiihtyvyysanturin avulla ohjaus kannattaa tehdä vain peleihin, jossa se on luonnollista. Suosi mahdollisimman yksinkertaisia kontrolleja.

  • sormi
    • koordinaatin suora lukeminen (AngryLego, PiirtoFysiikka)
    • kosketeltavat alueet (Tankkipeli, Hyppijä)
    • eleet (pyyhkäisy, nipistys yms)
  • kiihtyvyysanturi
    • GalaxyTrip (kallistelu)
    • AngryLego (kallistelu, täräytys)
    • PiirtoFysiikka (kallistelu)
  • GPS
    • ulkotiloissa (CycloLite)

5. Suorituskyky

Puhelimet ovat suorituskyvyltään erilaisia, mutta kannattaa muistaa että fysiikkalaskenta on aika raskasta, eikä puhelin välttämättä jaksa pyörittää edes 100:aa fysiikkaoliota kerralla. Sen takia voit joutua optimoimaan peliä siten, että turhien fysiikkaolioiden luontia vältetään. Gameobjectit eivät ole tietenkään niin raskaita, mutta ei niitäkään kannata turhaan tehdä.

Jos peli tehdään tilemapista niin voit optimoida vaakarivejä niputtamalla monta oliota yhdeksi olioksi.

6. Output

Tärinä (mm. AngryLego, Tankkipeli)

private void Tarise(int kestoms)
{
    Phone.Vibrate(kestoms);
}
  • äänet kuten PC

7. Pelin jatkaminen

/// <summary>
/// Kun Windows Phonessa palataan takaisin, jatketaan peliä
/// </summary>
public override void Continue()
{
    Begin();
}

TODO: Ei toiminut 1.4.2014??

8. Pelistä poistuminen

Oletuksena on ConfirmExit vaikka ei laittaisi mitään koodia. Jos haluaa poistumisen ilman vahvistusta, niin:

            PhoneBackButton.Listen(Exit, "Lopeta peli");

tai jos haluaa omatekoisen poistumisikkunan, niin:

PhoneBackButton.Listen(KysyLopetus, "Lopeta peli");
...
/// <summary>
/// Kysytään haluaako lopettaa pelin
/// </summary>
private void KysyLopetus()
{
    MultiSelectWindow valintaIkkuna = new MultiSelectWindow("Do you want to quit?", "Yes", "No");
    valintaIkkuna.ItemSelected += new Action<int>(ValintaIkkunastaValittu);
    // valintaIkkuna.Buttons = new PushButton[] { Key.Enter, Key.Escape };
    Add(valintaIkkuna);
}

/// <summary>
/// Tähän tullaan kun valintaikkunasta on valittu jokin nappi
/// </summary>
/// <param name="arvo"></param>
void ValintaIkkunastaValittu(int arvo)
{
    if (arvo == 0) Exit();
}

9. Ajaminen emulaattorissa

  • Tee Windows Phone -projekti
    • Jypelistä löytyy valmiina PhysicsGamelle ja tavalliselle Gamelle WP7-versiot
    • tai luo Windows-projektista kopio hiiren oikea -> Create copy for WP7 -> 7.1 OS
  • Korjaa Jypeli-linkki WP7-projektiin (WP projektin päällä oikealla napilla Properties ja sieltä Polut ja X86 pois ja tilalle vastaava Windows Phone)
  • Jos emulaattori on hidas, poista Hyper-V käytöstä.
  • Windows 8.1 vaatii wp7 sdk päivityksen 7.1.1. toimiakseen.

10. Siirto puhelimeen

  • ks WP7 MarketPlace
  • ks myös NPO-wiki (Ohjeet vanhentuneet, käytä ylläolevaa WP7 MarketPlace -linkkiä)
  • puhelimen tulee olla dev. unlocked
    • luo kehittäjätili DreamSparkin tunnuksilla (tästä hjeita???)
    • PC:ssä sitten Start/Programs/Windows Phone SDK xxx/Windows Phone Developper Registration
    • seuraa ohjeita
  • Zune asennettu
  • Yhteen puhelimeen pystyy laittamaan rajallisen määrän sovelluksia, noin 10 kpl, lisää voi laittaa kun poistaa vanhoja tieltä

11. Ehdollinen kääntäminen

Puhelinjutut voi olla koodissa valmiina, ne eivät haittaa PC- tai XBox-käännöstä. Tarvittaessa voit kuitenkin käyttää ehdollista kääntämästä.

#if WINDOWS_PHONE
...
#else
...
#endif

12. Siirto Market Placeen

13. Live Tile (kääntyvä versio)

ks. LiveTile

14. Fast Application Switching

ks. FastAppSwitch

15. Sovelluksen kuvakkeet puhelimessa

  • Kun olet luonut WP7 projektin Visual Studiossa, voit muuttaa puhelimessa näkyviä kuvakkeita muokkaamalla WP7 projektiin alta löytyviä .png kuvia:
    • Background.png kuvaa (Puhelimessa tai emulaattorissa näkyvissä alkuvalikossa kun painat sovelluksen kuvaketta pitkään sovelluslistasta ja valitset pin-to-start)
    • GameThumbnail.png (Puhelimen tai emulaattorin sovelluslistassa näkyvä kuvake)