Kajarist

From ICO wiki

Meeskond

Meeskonna liikmed:

  • Kalev Kärpuk
  • Jaak Peldes
  • Kristjan Veskimäe
  • (TTÜst Richard Samarüütel - Kujundus)

Lõpptoode

Mäng (EXE)

http://www.upload.ee/files/2911164/TheGermiGame.zip.html

Kasutusjuhend

http://www.upload.ee/files/2910709/Kasutusjuhend.docx.html

Aruanne

http://www.upload.ee/files/2910705/Aruanne.docx.html

Mängu projekt (Visual Studio + XNA)

http://www.upload.ee/files/2911184/GermiGameSolution.zip.html

Mängu projekt (XBOX, Visual Studio + XNA)

http://www.upload.ee/files/2910710/GermiGameXBOX.zip.html

Analüüs

Kajarist retsenseerib: meeskond Void

Mängu story kõlab huvitavalt. Keegi kättemaksuline 'Jüri' ja EV 90ndad tundub vinge idee. Samuti jättis süžeed tutvustav sissejuhatus vägagi kurjakuulutav. Mitte, et selles midagi halba oleks, aga lugemise muutis naljakaks asjaolu, et esimene seos, mis tekkis oli Max Payne. Võib-olla on asi ainult minus, aga "austatud politseiametnik" ja "mõrvatud naine" - mis seal muud olla saab? (Juba huviga ootan eestilikku lähenemist...)

Mängu sihtgrupp ja storyline on igaühe fantaasia vili ning selle poole pealt midagi eriti retsenseerida ei olegi.

Esialgu tundub meeskonna Void projekt vägagi suurejooneline ning detailidesse laskuv. Mitmel kohal on rõhutatud füüsikat ning selle olulisust. Üldjuhul on füüsika väga aeganõudev protsess, mis vajab pikemat arendusprotsessi. Samuti jäi silma, et nii mõnigi huvitav detail, mis mängu täiendaks ja täiustaks on lükatud rubriiki 'Nice To Have'.

Isiklikult on analüüsi lugedes tekkinud mängule suured ootused. Selleks, et projekt vastaks ka ootustele, jääb üle vaid loota, et meeskond ei satu ajahätta, sest füüsika on tavaliselt selline asi, mida lihvitakse peensusteni ning nõuab aega. Samuti loodan, et mängu sisu ja piisavalt huvitav story saab edasi kantud selle lühikese ajaga.

Läbivad motiivid: Vinge. Suurejooneline ja Detailne. Sisukus ja Ajahäda.

- Jaak. 11.11.2012

Kirjeldus

Tegemist on XNAs tehtud 2D pealt vaates RPG-elementidega mäguga. Tegelane, kelle nimi meie mängus on Germi, sattus Marsile ja avastab sealt mitmeid huvitavaid ja varieeruvaid ümbruskondi, mida läbides on eesmärk leida ning parandada oma kosmoselaeva, et sealt põgeneda. Maailmast on võimalik leida mitmeid erinevaid relvi ja ka boonuseid, mis teevad tegelase erinevatel viisidel kiiremaks või tugevamaks. Mängus on vaheldumisi oskused mitmest vaenlasest korraga möödapääseda kui ka mõtlemisülesanded, kuidas punktist A pääseda punkti B. Mõningatel tasanditel võivad esineda alad, millel käimine on libe või maaalune järjest puruneb, seega tuleb tegutseda kiiresti. Juhtida saab tegelast esialgu vaid nooltega, kuid nice to have osakonnas leiame ka muud viisid tegelast kontrollida( Hüpata, põigelda, roomata jms ). Esialgu piisab vaenlasel vaid sinule pihta minemisest, et sind haavata. Mida tasemeid edasi, seda rohkem võimalusi on tegelastel ja vaenlastel üksteist hävitada.
Mängu saab vajadusel seisata ning nice to have osa oleks ka mängu vahepealne salvestamine ja pärast jätkmine samast kohast. Nagu on ülesannete nõudes kirjas, lisame ka punktisüsteemi. Punkte saab mängija võimalikult kiire leveli läbimise eest, vaenlaste tapmise arvu pealt ning üleskorjatavate objekti eest. Samuti on mängijal võimalik kaotada punkte, kui ta saab haavata. Nagu paljud teisedki taolised mängud, ei ole see mõeldud intensiivseks ja eesmärgirohkeks tegevuseks, vaid pigem mõeldud kui kiire ja huvitav meelelahutus. Suurim eesmärk on õpetada endile korralikku objekt orienteeritud lähenemist taolistele projektidele. Leiame, et kõige problemaatilisem on projekti jooksul koodi ühildumine , sest meil puudub korralik repositoorium ning väga ebamugav on seni erinevate inimest koodi ühildada. Koodi funktsionaalsuse poolest aimame, et kõige keerulisemaks osutub veel mitte implementeeritud maailmade vahetus loogika. Mängu üks level koosneb 3x3 ruudustikust ning korraga on näha vaid 1x1 ruudustik. Maailma vahetades tekib täiesti uus ja omade elementidega 3x3 ruudustik. Seni on kõige rohkem takistusi esinenud väiksematel bugidel. Näiteks, kui peategelane satub üles vastu seina, siis oleks hea, kui kasutaja vajutab samal ajal üles ja paremale noolt, liigub tegelane paremale mööda seina edasi. Samuti kõik pisikontrollid(millal tohib tegelane kuskile liikuda, või millega kõigega tuleb arvestada, kui tekitame maailma uue interaktiivse objekti).

Mängu tarkvaraline arhitektuur koosneb peamiselt järgmistest elementidest:

  • Mängu käivitav klass Game1, mis ühtlasi initsialiseerib ja laeb mängu ülejäänud osad;
  • Mängu ühte levelit esindav maailmaobjekt World, mis hoiab endas leveli ruudistiku paane;
  • Ühte paani (ruutu) esindav Tile;
  • Kirjutasime objektide funktsionaalsused kokku klassi Object (IObject interface ja seda rakendav AbstractObject ning liikuvaid objekte siduv AbstractMovableObject);
  • Objektid paanis, alates tulnukatest ja lõpetades kividega, kasutavad klasse AbstractObject ja AbstractMovableObject;
  • Klassides paikneva koodihulga vähendamiseks loodud abiklass Utils;
  • Peategelane Germi.

Pildi näiteid

Peategelane - GermiEsimene maailm Peamenüü, mängu sisenedes Mängu eelvaade esimesest maailmast. Oranž ring on tulekera, mis lendab vaenlase poole. Värviline kera on powerup, mida üleskorjates saab peategelane erinevaid boonuseid. Pause menüü, kui mängu ajal escape vajutada OOP lähenemine
PS: 13.Nov seisuga puudub tegelasel pea, sest liikumist esindav spritesheet on kujundaja pool hetkel pooleli jäetud. Õlle sai vist otsa ja motivatsioon kadus, kui pead hakkas joonistama.

Tööjaotus

  • Raamistiku kujundamine, Interfaced, enamik programmi loogikast - Kristjan Veskimäe.
  • Olemasolevaid abstraktseid klasse ja interface'e kasutades asjade kirjutamine, üles korjatavate asjade lisamine ja nende toimimine sh inventory, liikumis füüsika lisamine, user interface, testimine, üldine projekti juhtimine (Koosviibimiste korraldus ja kujundaja torkimine, et ta pidevalt sprite'e juurde joonistaks ), saada aru Kristjani koodist - Kalev Käpuk
  • Olemasolevaid abstraktseid klasse ja interface'e kasutades asjade kirjutamine, intermission screenid ( main menu, pause jne ) , tegelaste vahelised dialoogid, erinevate levelite funktsioonid ja kujundus (kollide tekkimine, läbistamatute objektide paiknemine jms ), saada aru Kristjani koodist, testimine - Jaak Peldes

Must have

  • Kood kirjutatud, mõeldes edasisele lihtsale arendusele. Maailmate ja objekti lisamiseks ei ole vaja palju vaeva näha.
  • Combat system nii lähivõitluses kui ka tulistamisega.
  • Erinevad interaktiivsed objektid, mida saab korjata, lõhkuda, liigutada vms.
  • Vastaste algeline AI loogika.
  • Enamik vastaseid, tegelasi ja objekte on animeeritud.
  • Punktiloendur ja highscore.
  • Mõned transition screenid.


Nice to have

  • Minimap
  • Animeeritud dialoogid.
  • Sound effects
  • Targemad AId
  • Cheats
  • Save feature
  • Rohkem erinevaid võimalusi tegelast juhtida.

Log

29.Sept

- Esialgse idee tekkimine

3. Okt

- Esimene koosviibimine - Tutvusime XNA-ga, panime sprite ekraanil liikuma, tajudes ekraani piire. Tutvus Githubiga.

9. Okt

- Teine koosviibimine - Otsisime githubist kergemini õpitavaid vahendeid, ning sattusime SVNTurtoise peale koos Google Code-ga.

14. Okt

- Meeskond lisandus Kristjan Veskimäe. Saime kätte esimesed kujundaja joonistatud sprited.

14-19. Okt

- Iseseisev XNA õppimine.

20. Okt

- Kristjan lendab laivi koodiga, mis on Kalevile ja Jaagule justkui 8. maailmaime. Koodis on peategelane, 2 läbistamatut kivi, Kristjani joonistatud random liikumisega vaenlased, mis kokkupuutel Germiga ta tapavad. Kood on meie jaoks veel keeruline, sest kasutab kolme Interface-i ja mitut abstraktset klassi millega vahetu kokkupuude Kalevil ja Jaagul puudub.

22. Okt

- TTÜs vastab Kristjan küsimustele enda koodi kohta ja õpetab, kuidas antud koodi meeskonniti arendada. Selgitab arhitektuuri põhimõtteid ja mida meeles pidada koodi arendamisel.

28. Okt

- Jaak tuli töölt ära.

29. Okt

- Teine koosviibimine kolmekesti. Kalev on kirjutanud juurde esimese Germile kiirust lisava animeeritud Powerupi ja tekitas vaenlastele animatsiooni. Jaak viimistles koodi, pannes kokku kaks koodi osa, mis oleks ühiselt otstarbekam. Ennist olid liikumatud ja liikuvad objektid eraldi listides, kuid nüüd on maailmas vaid üks list objekte. Kuna koodi jagamise põhimõtted on meil veel viimistlemata, siis kristjan ühendas Jaagu ja Kalevi kirjutatud koodi osad ühte.

Samuti muutsime koosolekul natukene mängu esilagset ülesehitust ( vt. Mängu kirjeldus ) Edasine konkreetsem tööjaotus: Kristjan

- Teha lõplik koodi arhitektuur, ehk lisades maailmade vahetumise loogika.

Kalev

- Tekitada peategelasele algeline liikumise füüsika, et seisma jäämine ja startimine oleks sujuv, mitte äkiline.
- Tekitada praegusele mustale ribale erinevate andmete tekstid ( Level: , Elud: jne )

Jaak

- Luua esimesed transistion screenid ( Näiteks mängu alguses tuleb text, mis seletab storyt, ning levelite vahepeal on samuti tekstilised/videolised üleminekut.

4. Nov

Jaak tutuvustas jurude lisatud intermission screeni esimest versiooni. Kalev tutvustas üleskorjatavate objektide uut funktsionaalsust ning esialgset UI-d. Kristjan tutvustas koopale lisatud uksi ja nende toimimist. Palju koodi on muutunud tänu intermission screeni lisamistele seega oli kõigil vaja end sellega kurssi viia. Koosviibimisel arendasime tasa ja targu endale ette nähtud ülesandeid.


13. Nov

Kalev tutvustas juurde lisatud funktsionaalsust, kus nüüd saab tühikule vajutades peategelane tulistada tulekerasid. Kokkupuutes vaenlasega, vaenlane sureb ning mängja saab punkte juurde. Jaak tutvustas lõpetatud varianti menüü vaatest. Mängu käivitades on 3 valikut: Start game, options ning Exit game. Samuti mängu ajal escape nuppu vajutades läheb mäng seisvasse staadiumisse, mida ilmestab pool transparent "pause" vaade, kus on omakorda valikud resume game ning quit game. Kristjan lisas puuduolevad maailma osad ehk nüüd on valmis kogu 3x3 ruudustik esimesest maailmast. Lahkudes ühest ruudustikust siis sinna tagasi minnes on kõik samamoodi nagu sealt lahkudes. Lisaks lihtsustas Kristjan veelgi koodi lisades koodile nimeruumid.

Koosviibimisel ühendasime kõik praegused koodid, ning valmis lähedane versioon prototüübist. Esinevad veel mõningad vead ja puudu on üksikud funktsionaalsused, aga " Must Have " funktsionaalsus on paljuski esindatud. Kui praegu on enamik ajast kulunud mängu eriosade valmistamisele siis edasi on põhirõhk mängust mängu tegemisele - lisades erinevad maailmad ja ülesanded, mida mängja tegema peab. Lisasin ka mängu pilte.


30. Nov

Mäng areneb tasa ja targu. Kokkusaamine, et pisimuutused kokku panna. Kalev lisab punktisüsteemi ning healthbar'i. Samuti lihvib peategelase tulistamist (Fireballs). Jaak arendab vahe-ekraane (transmission screenid), mis peaksid mängu sisu ning storyline'i edasi andma. Kristjan lisab tasandite vahetamiseks trepisüsteemi (vahetub terve tasand ehk World, mitte ainult Tile ehk üks paan).


Detsember

Tähtaeg läheneb. Aeg viimased lihvimised teha. Jaak ja Kristjan arutavad, kuidas lõpptooteni jõuda. Palju ideid ja asju, mida hirmsasti tahaks teha, et mängu väljanägemist, kvaliteeti ja sisukust parandada, kuid ajahäda pärsib. Samuti ei ole võimalik uusi tekstuure hankida.

Kristjan testib ja eemaldab avastatud bugid. Maailma ehk World'i vahetuseks on tarvilik leida võti - n.ö. Quest süsteem. Tulnukatele tekivad hitcounter ja speed - nüüdsest on võimalik reguleerida tulnukate kiirust ning visadust.

Jaak loob World3, World4 ja üritab hirmsal moel luua mõistliku loo mängule. Tasandite disainimine, objektide paigutus, levelite raskusastmed. Samuti lisab mitmeid heliefekte ning taustamuusika.

Toimub ka Xboxi versiooni lihvimine.

Prototüüp

Prototüüp asub aadressil http://www.upload.ee/files/2856277/TheGame.zip.html .

Kajarist retsenseerib : Meeskond Void