Meeskond:VariableMoods
Liikmed
- Mihkel Künnapas
- Krister Kamla
- Berit Veidemann - projektijuht
Idee
Meie projekti eesmärgiks on luua mäng, mis seisneb ajalooliste sündmuste korrektse kronoloogilise järjestuse tuvastamises. Mängu loomiseks kasutame programmeerimiskeelt C# ning Unity mängumootorit. Versioonihalduseks kasutame Team Foundation Serverit (TFS). Lisaks kasutame projekti teostamiseks elutervet huumorit ja võimet töötada vajadusel magamata.
Prototüüp
Prototüübi buildi leiab siit. Prototüübi lähtekoodi leiab siit.
Prototüübi buildi käivitamise juhend
- Buildi testimiseks pakkida lahti zip.
- Käivitada exe fail
- Seada resolutsiooniks 1024*768
- Nautida
- Mängus vajaminevad klahvid on nooleklahvid ning tühik
Prototüübi lähtekoodi käivitamise juhend
- Pakkida lahti vastav zip
- Unityst valida open project->open other->otsida üles kaust Timeline
- Assets alt avada kaust view-> teha aktiivseks kaust Scene01 -> Kaks topelklõpsu Start_Menu-le
- Vajutada Tööriistaribal asuvat play nuppu
- Seejärel on Game window aktiivne ning saabki testima hakata
- Testimise lõpteamiseks vajutada uuesti play nupule
Prototüübi / mängu põhimõte
Mängu võitmiseks peab mängija saama lahti kõikidest käes olevatest kaartidest. Samuti peab mängija skoor mängujooksul jääma suuremaks kui 0. Eesmärk on paigutada käes olevad kaardid lauale õiges kronoloogilises järjestuses. Laual olevatel kaartidel on nende kohal näha aastaarvu. Käes olevatel kaartidel on aastaarv peidetud. Klaviatuuril olevate üles-alla noolte klahvidega on võimalik muuta aktiivseks, kas mängija kätt (all) või lauda (keskel) ning paremale-vasakule noolte klahvidega on võimalik kasutaja käes olevaid kaarte muuta vastavalt aktiivseks ning laual on võimalik liigutada soovitava kaardi paiknemise koha kujutist. Kui kaart, mida soovitakse lisada mängulauale on kasutaja käes valitud, siis järgmiseks tuleb klõpsata klaviatuuril kõige pikemat klahvi space ehk tühik, mis lisab soovitud kaardi lauale (juhul, kui positsioon on õige, muul juhul kustutab kaardi ning annab pakist kätte uue kaardi).
Analüüs
Projekti kirjeldus
- Loodava rakenduse näol on tegemist mänguga, kus mängija peab järjestama ajaloolisi sündmusi, vastavalt nende toimumise ajale.
Esialgu on tegemist singleplayer versiooniga. Sõltuvalt mängurežiimist jagatakse teatud arv sündmusi mängijale ning teatud arv sündmusi pannakse lauale. Mängija käes on sündmused juhuslikus järjekorras, laual olevad on kronoloogiliselt järjestatud. Mängija ülesandeks on käes olevad sündmused asetada lauale teiste sündmuste suhtes õigesse kohta. Mängija võidab, kui on kõik käes olnud kaardid lauale pannud.
Funktsionaalsed nõuded (Must have)
- Vajalike objektide loomine
- mäng
- mängija, režiim, sündmused mängus, käsi, laud
- mängija
- nimi, hetke skoor, üldskoor, võidud, kaotused
- režiim
- sündmuste arv käes
- sündmuste arv laual
- ajalimiit
- sündmuse raskusaste
- sündmuste ajaline piirang
- paki suurus
- kas vana kaart jääb kätte
- käsi
- käes olevad sündmused
- aktiivne sündmus
- laud
- lauale olevad sündmused
- ghost-sündmus
- sündmus
- nimetus
- aastaarv
- mäng
- Andmebaasi tabelite loomine: (laiendamisel)
- Game - Mängu kirjeldavad omadused
- GameType - Mängu tüübid
- Player - Mängija
- PlayerHasGame - Mängija ja mäng
- Highscore - TOP skoor
- PlayerStat - Mängija statistika
- Card - Kaart/sündmus
- CardLevel - kaard/sündmuse tase
- CardType - kaard/sündmuse tüüp
- Mängija nime sisestamine ja andmebaasist nime olemasolu kontrollimine (read). Kui mängija nime andmebaasis ei ole, siis luuakse andmebaasi uus kasutaja (insert). Kui andmebaasis on vastavanimeline mängija olemas, küsida kasutajalt, kas ta soovib seda mängijakontot kasutada. Kui jah, siis päritakse andmebaasist mängija andmed (read), vastasel juhul palutakse mängijal muu nimi valida.
- Mängurežiimi valimine: kolm valikut
- standard – 4 kaarti käes, 1 laual, valesti pakutud kaart ei jää mängu, vaid läheb maha, muud väärtused puuduvad
- survival – 4 kaarti käes, 1 laual, ajapiirang 1 minut, valesti pakutud kaart jääb mängu
- custom – mängija saab ise kombineerida mängurežiimi
- Mängureziimi andmete pärimine andmebaasist (read)
- Vastavalt valitud mängurežiimile andmebaasist sündmuste pärimine mängu pakki (read)
- Vastavalt mängurežiimile sündmuste jagamine kätte ja lauale
- Laual olevate sündmuste liigutamine mängija poolt, nii et vaba ruum jääks kahe laual oleva sündmuse vahele (ghost)
- Käes olevatest sündmustest ühe aktiivseks muutmine
- Käes oleva aktiivse sündmuse valimine ehk lauale panemine
- Mängija valiku õigsuse kontrollimine
- Uue kaardi lisamine pakist kätte (sõltub mängurežiimist ja mängija käigust)
- Käidud kaardi lisamine lauale
- Käidud kaardi eemaldamine mängust
- Mängu kestvuse arvestamine
- Mängu kestvuse võrdlemine ajalimiidiga
- Käes olevate kaartide koguse kontrollimine (kontrollimaks kas kaardid on otsas)
- Eduka lõpu korral õnnitluse kuvamine, kaotuse korral kaastunde avaldamine
- Andmebaasist edetabeli pärimine, andmebaasi edetabeli muutmine (uue tulemuse sissekandmine) (update, read)
- Mängijalt uue mängu alustamise soovi küsimine
- Mängu lõpetamine mängija soovil
Lisavõimalused (Nice to have)
- Mängija kasutajanime kaitsmine parooliga
- Mängija poolt võimalus sündmusi mängu lisada. Lisada pilt, nimi, kirjeldus, aastaarv
- Multiplayer'i võimalus võrgus või hotseat-versioon
- Sündmuse kohta vihje küsimise võimalus
- Mängija võimalus käes olevaid kaarte enda soovi kohaselt järjestada
- Valesti käidud kaardid mitte eemaldada mängust, vaid jätta mängulauale selleks ettenähtud kohta. Need võivad abistada mängijat edasise mängu juures (või siis rohkem segadusse ajada).
- Soundtracki loomine
Mittefunktsionaalsed omadused
- Visuaalne külg: mänguakna keskel on horisontaalselt reas laual olevad sündmused nagu kaardid, nende keskel on raamistatud vaba ruum ehk ghost-sündmus – koht, kuhu lisatakse käest valitud sündmus. Laual olevatel kaartidel on kuvatud pilt ja aastaarv ning nad on kronoloogiliselt järjestatud. Ghost-kaarti saab laual olevate sündmuste vahel liigutada. Visuaalselt jääb aga ghost paigale ning liiguvad laual olevad sündmused.
Laual olevate kaartidest allpool on mängija käes olevad kaardid. Kuvatakse ainult teatud arv käes olevaid kaarte, rohkemate kaartide korral kuvatakse nool numbriga, mis näitab, kui palju sündmusi on mängijal käes ühel ja teisel pool.
Teostus ja tehniline platvorm
- Projekti raames kasutame programmeerimiskeelt C# .NET raamistikul. Versioonihalduseks meeskonna liikmete ja õppejõu vahel on kasutusel TFS (Team Foundation Server). Projekti graafilise liidese poolt kannab hoolt Unity mängumootor ning erinevad vastavalt vajadustele vektorgraafika kui ka rastergraafika tarkvarad.
Raskused, mis võivad meile osaks saada
- Kontrolleri seadistamine
- Graafilise liidese tegemine
- Unity selgeks õppimine ja kasutamine
- Ajalistest tähtaegadest kinnipidamine
Tööjaotus
- Krister teeb tööd
- Berit teeb koostööd
- Mihkel kritiseerib
Ajaveeb
Esitlus tehtud!: 18. Detsember 2014
Kaitsmine edukalt läbitud, enne kui projektile joone alla tõmbame teeme veel:
- Animatsiooni visuaal
- XBox 360 pult
- Custom gamemode
- Koodi silumine
Hiljemalt 10.jaanuar teeme ära :)
Töö kiidab tegijat!: 17. Detsember 2014
Kaitsmiseni on jäänud 13,5h. Me ei ole kusagile kadunud.
Aga meil käisid päkapikud!: 7. Detsember 2014
Vaadates meeskonna discussioni on näha, et meid on külastanud erinevate kuuluvustega päkapikud ning jätnud endast maha kolm toredat kingitust retsensioonide näol.
Aitäh, päkapikud!
Tanki mängu mängimine: 4. Detsember 2014
Mängisime meeskonna Meeskond:Qwerty loodud mängu ning jagasime oma muljeid seoses nende prototüübiga.
Õhtu käes: 29. November 2014
Prototüüp on üleval, jõudsime vist päevaõppest esimestena :)
Mäng on töökorras, kolmel erineval arvutil testitud, arendusmõtteid ja visuaali tegemist on kõvasti.
Tunne on hea ja vb kui saab pea selgeks magatud, siis prooviks isegi ajaviiteks mängida.
Ps kes ei viitsi retsenseerida, aga mängu viitsib mängida - on ka tore, andke meile siis tagasisidet!
Endiselt: 29. November 2014
Mängus on nüüd tervelt 60 erinevat kaarti, nii et juba on täitsa põnev mäng. Võita ja kaotada saab ka.
Suur vaenlane on igasuguste sprite-de ja gui-de kooskõlastamine resolutsiooniga.
Käivad veel viimased lippimised-lappimised-lihvimised, siis läheb buildimiseks!
Asi on päris kasutatav: 29. November 2014
Väidetavalt käib kuskil Robotex. Ei tea. Kalendrisse vaadates on kuupäev endiselt 27. November, ilmselgelt on aeg seisma jäänud. Projekti hetkemaht 57MB. Tööpäev on olnud tõhus, kuid väsitav.
Asjad vaikselt idanevad: 28. November 2014
Ajataju on kadunud. Unitysse hakkavad vaikselt asjad tekkima. Objektorienteeritus on unustatud jäädavalt (Unitys). Täna tehti ära umbes 30 tööjõutundi.
Päev läbi Unity-t kirunud: 27. November 2014
Tööpäev algas täna u 11:30, hetkel on kell 21:18 ja meil on mängus olemas kaardipakk. Ülejäänud funktsionaalsus on kahjuks Unitys veel realiseerimata. Kõik eelistavad kaugelt vaadata. Aga avaleht on uhke!
3 tundi hiljem: 26. November 2014
Pea ja silmad valutavad, linq abil saame XMList andmed kätte, hurraa! Kui meil peaks ühe mängija konsoolirakendus olema, siis meil oleks peaagu 30% valmis vb ma arvan hetkeseisuga vb
Töö hoos: 26. november 2014
Tehtud pole midagi ja tähtaeg läheneb ning muudkui läheneb.
Mihkel: Konsooli põhises test-rakenduses on kaotamise funktsionaalsus realiseeritud.
-
Mihkel ilmateadet vaatamas
-
Berit's back-selfie
Olemine: 13. november 2014
TFS on üleval ja esimesed testcommitid ka edukalt ära tehtud!
Olemine: 5. november 2014
Lugesime meeskonna Meeskond:Taandarendajad projekti analüüsi ning andsime neile omapoolse retsensiooni.
Koosolek: 30. oktoober 2014
Jagasime oma nägemusi loodavast rakendusest ning formuleerisime konkreetsema visiooni oma projekti jaoks. Panime paika vajalikud funktsionaalsused ning lisavõimalused.
Koosolek: 24. oktoober 2014
Esimesed sammud ehk projekti ideede kogumine, analüüsimine ning väljavalimine. Samuti TFS (Team Foundation Server) seadistamine tulevase projekti jaoks.