• Ei tuloksia

LOPPUSANAT

3D-mobiilipelin kehittämisen haastavuus yllätti meidät oikein olan takaa. Jo projek-tin alkuvaiheilla huomasimme, kuinka suuri kuilu on työpöytäkoneen ja mobiililait-teen suorituskyvyn välillä. Aloimme tehdä projektia niin, että kuvittelimme sen ole-van hyvinkin kevyt, mutta käytännön testitulokset osoittivatkin jotain ihan muuta.

Sysirumaksi tekemämme peli olikin umpiraskas suorittaa eikä kummoisiin ruudun-päivitysnopeuksiin todellakaan päästy. Tästä emme lannistuneet, vaan aloimme ak-tiivisesti tutkia asiaa. Projektin edetessä opimmekin huomattavan hyviä, parempia käytäntöjä monissa asioissa, etenkin 3D-mobiilipelikehityksen kannalta. Riemun-purskahdukset pääsivätkin siinä vaiheessa, kun onnistuimme saamaan pelin pyöri-mään siedettävällä ruudunpäivitysnopeudella (yli 30 ruutua sekunnissa) jopa ikivan-halla Samsung Galaxy S -älypuhelimella.

Tämän opinnäytetyön valmistumiseen mennessä peliprojektin kaikki ydintoiminnot ovat hyvässä kunnossa. Tämän kokoisessa pelissä löytyy tietysti aina kohtia, joita voisi parantaa. Harrastamme aktiivista refaktorointia muun muassa muuttujanimien vaihtamisella parempaan sitä mukaan, kun sellaisia sattuu vastaan. Seuraava suuri askel pelin julkaisuvalmiutta varten onkin pelin sisällön luominen uusien kenttien, pyöräpalasten, aseiden ja muun sisällön muodossa. Tarkoituksena olisi myös tutkia pelin sisäisten ostosten mahdollisuutta ja sen käytännön toteutuksen haasteellisuutta.

Meillä oli ja on hyvin samankaltaiset lähtötasot, mitä tulee C#-ohjelmointiin. Rikulla on hieman pitempiaikainen kokemus Unity-pelimoottorista ja Jussilla taas relaatiotie-tokannoista. Koska olemme ohjelmoineet paljon ja usein parityöskentelynä niin sa-notuissa ”all nighter”- iltamissa, olemme oppineet erittäin paljon toisiltamme ja täy-dentäneet omia tietojamme ja paikanneet heikkouksiamme. Meillä ei ole muuta kuin hyvää sanottavaa parityöskentelystä ohjelmoinnin parissa hyvän ystävän kanssa ja voimme sitä suositella varauksetta ihan kaikille.

Tärkeimpinä oppimiimme asioihin kuuluu muun muassa SQLiten implementointi C#-projektiin ja sen käyttäminen, mobiililaitteilla tärkeät optimointitekniikat sekä yleisesti ottaen paremmat ja tehokkaammat ohjelmointikäytännöt.

C#-ohjelmointikielestä erityisesti Linq on tullut tässä projektissa tutummaksi ja sitä tu-lemme varmasti käyttämään jatkossakin C#-projekteissa. Otu-lemme myös oppineet, että kurinalaisen, hyvän koodin kirjoittaminen on myös erittäin tärkeää ja sillä sääs-tää loppujen lopuksi silkkaa aikaa, vaivaa ja hermoja. Unitylla on myös yllättävän helppo kirjoittaa suorituskyvyllisesti erittäin huonoa koodia, ja tämä on vaatinut hie-man ohie-manlaisensa ajattelumallin kehittämistä Unity-kehityksessä. Lisäksi olemme oppineet paljon yleisesti pelien kehittämisestä. Unityn tärkeimmät luokat ja editorin käyttöliittymä on projektin aikana tullut hyvinkin tutuksi ja kehityksestä onkin tullut enemmän suorittamista kuin miettimistä ja tiedon etsimistä Internetistä.

Päätimme olla myös fiksuja, ja tällä kertaa laittaa projekti alun alkaen

Git-versionhallintaan. Olemmekin oppineet Git-versionhallinnasta aika paljon ja huo-manneet sen tehokkuuden. Rehellisesti sanottuna olimme aika aloittelijoita Gitin kanssa aluksi, mutta erinäisten konfliktitilanteiden ja muiden ongelmien ratkaisemi-sen jälkeen olemme huomattavasti itsevarmempia Gitin käyttäjiä.

On välillä hyvä pysähtyä miettimään, mitä olisi voinut tehdä paremmin. Ainakin tä-män projektin osalta suunnittelu olisi voinut olla tarkempaa alkuvaiheessa – meillä on vähän paha tapa lähteä toteuttamaan projekteja ilman sen suurempia suunnitelmia.

Alkuperäinen, hyvin suurpiirteinen suunnitelma on kuitenkin mielestämme toteutu-nut melko hyvin. On kuitenkin tullut vaiheita, jossa kunnollisen suunnitelman puut-tumisen huomasi selvästi.

On ollut rohkaisevaa huomata, että esimerkiksi Satakunnan pelialan kokoontumisissa sekä omissa lähipiireissämme peliprojektimme on otettu hyvin ja innolla vastaan. Se onkin tuonut tuulta purjeisiin ja välillä peli onkin edennyt hyvinkin nopeaa vauhtia, uhraten suuren osan vapaa-ajastamme projektille. Meillä on ollut aika huono tapa aloittaa uusia projekteja ennen kuin nykyinen on päässyt edes alkumetrejä pidemmä l-le, joten tämän projektin kanssa teimme lupauksen, että mitään uutta projektia ei aloiteta ennen kuin Hungry Bums on valmis. Tästähän me aiomme myös pitää kiinni.

Vaikka opinnäytetyö aiheesta saatiin valmiiksi, niin pelin kehittäminen saa jatkua.

Toivomme, että peli on jo lähitulevaisuudessa ainakin Googlen Play Store -sovelluskaupassa ladattavissa. Emme ole asettaneet mitään suuria tavoitteita pelaa-jamäärien tai rahallisen tulon kannalta. Olemme tehneet projektia lähinnä harrastus-mielessä ja siksi emme osaa yhtään arvioida tulevaisuuden pelaajamääriä. Mielen-kiinnolla odotamme, että millaisen vastaanoton peli saa.

Valmistumisen jälkeen Rikulla on varma visio tulevaisuudestaan: työllistyminen pe-lialalle. Riku muuttaakin Tampereelle pelialan työpaikkojen perässä. Varmaa on, että Rikulla pelien kehittäminen jatkuu myös harrastustoimintana jatkossakin. Jussi sen sijaan aikoo pysyä ainakin toistaiseksi Porissa ja jatkaa uran rakentamista työpaikal-laan. Jussi ei pääse kirjoittamaan olio-ohjelmointia työssään, joten tämäkin projekti oli hyvää kertausta ja lisäharjoitusta sen suhteen. Koska työpaikalla ei saa tehdä ihan mitä itse haluaa, ohjelmointi tulee olemaan Jussillakin varmasti läsnä myös harras-tusaktiviteettina, etenkin peliprojektien parissa. Ikuista oppimista on aina painotettu Satakunnan ammattikorkeakoulussa ja siihen me uskomme myös vankasti itse. Tässä työssä käsitelty peliprojekti tulee olemaan mielestämme erittäin hieno lisäys henkilö-kohtaisiin portfolioihin työllistymisen tueksi.

LÄHTEET

Albahari, B & Albahari, J. 2012. C# 5.0 in a Nutshell, Fifth Edition. O'Reilly Media.

Amazonas, M. 2014. How does Unity export to so many platforms? Viitattu 12.01.2016. Saatavissa: https://sometimesicode.wordpress.com/2014/02/19/how-does-unity-export-to-so-many-platforms/

Amazonas, M. 2014. How does Unity3D Scripting work under the hood? Viitattu 12.01.2016. Saatavissa: https://sometimesicode.wordpress.com/2014/12/22/how-does-unity-work-under-the- hood/

Brodkin, J. 2013. How Unity3D Became a Game-Development Beast. Viitattu 11.01.2016. Saatavissa: http://insights.dice.com/2013/06/03/how-unity3d-become-a-game-development-beast/

Carr, R. 2007. C# Variable Scopes. Viitattu 21.02.2016. Saatavilla:

http://www.blackwasp.co.uk/CSharpVariableScopes.aspx

Catton, E. About. Viitattu 12.01.2016. Saatavissa: http://box2d.org/about/

Davis, S & Sphar, C. 2005. C# 2005 For Dummies. Wiley Publishing, Inc.

Enger, M. 2013. Game Engines: How do they work? Viitattu 12.01.2016. Saatavissa:

http://www.giantbomb.com/profile/michaelenger/blog/game-engines-how-do-they-work/101529/

Felicia, P. 2015. Unity 5 From Zero to Proficiency. Patrick Felicia.

Firelight Technologies. About Firelight Technologies. Viitattu 12.01.2016. Saatavis-sa: http://www.fmod.org/about-us/

Hocking, J. 2015. Unity in Action: Multiplatform Game Development in C#. Man-ning Publications Co.

Icaza, M. 2011. Mono in 2011. Viitattu 20.02.2016. Saatavilla:

http://tirania.org/blog/archive/2011/Dec-21.html

Jeffries, R. 2011. What is Extreme Programming? Viitattu 27.01.2016. Saatavilla:

http://ronjeffries.com/xprog/what- is-extreme-programming/

Kolev, V & Nakov, S. 2013. Fundamentals of Computer Programming with C#. Fa-ber, Veliko Tarnovo.

Lappalainen, E. 2015. Pelialan uudet luvut julki: Neljässä vuodessa Suomeen syntyi 179 uutta pelifirmaa. Talouselämä. Viitattu 16.03.2016. Saatavissa:

http://www.talouselama.fi/kasvuyritykset/pelialan-uudet- luvut-julki-neljassa-vuodessa-suomeen-syntyi-179-uutta-pelifirmaa-3472213

Layton, M. 2012. Agile Project Management For Dummies. John Wiley & Sons, Inc.

Loeliger, J & McCullough, M. 2012. Version Control with Git, Second Edition.

O'Reilly Media.

Martin, R. 2009. Clean Code. Prentice Hall.

Mittag, J. 2015. Understanding the differences: traditional interpreter, JIT compiler, JIT interpreter and AOT compiler. Viitattu: 20.02.2016. Saatavilla:

http://programmers.stackexchange.com/questions/246094/understanding-the-differences-traditional- interpreter-jit-compiler-jit- interp/269878#269878 Neogames. 2016. Tietoa toimialasta. Viitattu 16.03.2016. Saatavissa:

http://www.neogames.fi/tietoa-toimialasta/

Nvidia Gameworks. GameWorks PhysX Overview. Viitattu 12.01.2016. Saatavissa:

https://developer.nvidia.com/gameworks-physx-overview Owens, M. 2006. The Definitive Guide to SQLite. Apress.

Porter. 2013. Unity: Now You're Thinking With Components. Viitattu 13.01.2016.

Saatavissa: http://gamedevelopment.tutsplus.com/articles/unity-now-youre-thinking-with-components--gamedev-12492

Saints, J. 2011. What is a bare git repository? Viitattu 10.03.2016. Saatavissa:

http://www.saintsjd.com/2011/01/what- is-a-bare-git-repository/

Thorn, A. 2014. Pro Unity Game Development With C#. Apress.

Thorn, A. 2015. How to Cheat in Unity 5. CRC Press.

Tomar, N. 2011. JIT (Just-In-Time) Compiler. Viitattu 21.02.2016. Saatavilla:

http://www.c-sharpcorner.com/UploadFile/nipuntomar/jit-just- in-time-compiler/

Trivedi, J. 2014. Ref Vs Out Keywords in C#. Viitattu 09.03.2016. Saatavissa:

http://www.c-sharpcorner.com/UploadFile/ff2f08/ref-vs-out-keywords-in-C-Sharp/

Tuliper, A. 2014. Unity : Developing Your First Game with Unity and C#. Viitattu 21.02.2016. Saatavilla: https://msdn.microsoft.com/en- us/magazine/dn759441.aspx Unity Answers. 2011. How does Unity's built in event system work behind the sce-nes, as opposed to C# events? Viitattu 18.02.2016. Saatavissa:

http://answers.unity3d.com/questions/177245/how-does-unitys-built-in-event-system-work-behind.html#answer-177292

Unity Technologies A. THE LEADING GLOBAL GAME INDUSTRY

SOFTWARE. Viitattu 11.01.2016. Saatavissa: https://unity3d.com/public-relations Unity Technologies B. Platform Specific. Viitattu 12.01.2016. Saatavissa:

http://docs.unity3d.com/Manual/PlatformSpecific.html

Unity Technologies C. Audio Overview. Viitattu 12.01.2016. Saatavissa:

http://docs.unity3d.com/Manual/AudioOverview.html

Unity Technologies D. 3D Physics Reference. Viitattu 12.01.2016. Saatavissa:

http://docs.unity3d.com/Manual/Physics3DReference.html

Unity Technologies E. 2D Physics Reference. Viitattu 12.01.2016. Saatavissa:

http://docs.unity3d.com/Manual/Physics2DReference.html

Unity Technologies F. Using Components. Viitattu 13.01.2016. Saatavissa:

http://docs.unity3d.com/Manual/UsingComponents.html

Unity Technologies G. Creating and Using Scripts. Viitattu 13.01.2016. Saatavissa:

http://docs.unity3d.com/Manual/CreatingAndUsingScripts.html

Unity Technologies H. Execution Order of Event Functions. Viitattu 18.02.2016.

Saatavissa: http://docs.unity3d.com/Manual/ExecutionOrder.html Unity Technologies I. GameObjects. Viitattu 15.01.2016. Saatavissa:

http://docs.unity3d.com/Manual/GameObjects.html

Unity Technologies J. Transfroms. Viitattu 18.02.2016. Saatavissa:

http://docs.unity3d.com/Manual/Transforms.html

Unity Technologies K. Prefabs. Viitattu 15.01.2016. Saatavissa:

http://docs.unity3d.com/Manual/Prefabs.html

Unity Technologies L. Profiler. Viitattu 15.01.2016. Saatavissa:

http://docs.unity3d.com/Manual/Profiler.html

Wikibooks. 2015. C# Programming/Syntax. Viitattu 06.02.2016. Saatavilla:

https://en.wikibooks.org/wiki/C_Sharp_Programming/Syntax

Yorick. 2012. 4 Ways To Increase Performance of your Unity Game. Viitattu 15.01.2016. Saatavissa: http://www.paladinstudios.com/2012/07/30/4-ways-to-increase-performance-of- your-unity- game/

LIITE 1 PELIN TARINA

Pelin sankarina toimii Taavi, sysisuomalainen vanhahko mies. Taavi asuu erakoitu-neena yksin Karhuvuoren metsän siimeksessä. Taavilla ja Karhuvuoressa lymyilevil-lä karhuilla on ollut jo pitkä ja verinen yhteinen historia. Taavi on lapsena saanut Ukko ylijumalan siunauksen, minkä takia voisi sanoa, että hänellä on yli-inhimillisiä voimia. Vaikka Taavi onkin täysi erakko, joutuu hän hakemaan oluensa kaupungista.

Peli sijoittuukin juuri aikaan, jolloin Taavi joutuu hakemaan ruosteisella pyörällään täydennystä olutvarastoonsa kaupungista. Kaupungissa olikin oluen sijaan pieni yllä-tys; karhut olivat vallanneet kaupungin ja oluesta saa vain haaveilla, ennen kuin kar-hut on hoideltu. Taavi tietää, että niin kauan, kun karkar-hut ovat vallassa, oluttuotanto on pysähdyksissä. Karhut ovat takavarikoineet ihmisten ruoat, joten Taavin täytyy myös alkaa ruokkia karhujen pahiten runtelemia katupummeja.

LIITE 2 TYÖNJAKO, OPINNÄYTETYÖN KIRJOITTAMINEN

Alla oleva kaavio kuvaa suuntaa antavasti opinnäytetyön kirjoittamisen työnjakoa.

80%

LIITE 3 TYÖNJAKO, OHJELMOINTI

Alla oleva kaavio kuvaa suuntaa antavasti ohjelmointityön työnjakoa.

15%