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.
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. Programmeerimisel kasutame MVVM (Model - View - ViewModel) arendusmustrit. 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
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.