Meeskond:VariableMoods: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mkunnapa (talk | contribs)
Mkunnapa (talk | contribs)
Line 99: Line 99:


=Ajaveeb=
=Ajaveeb=
===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.
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 ===
===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.  
Tööpäev algas täna u 11:30, hetkel on kell 21:18 ja meil on mängus olemas kaardipakk.  

Revision as of 16:46, 29 November 2014

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)

  1. 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
  2. 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
  3. 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.
  4. 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
  5. Mängureziimi andmete pärimine andmebaasist (read)
  6. Vastavalt valitud mängurežiimile andmebaasist sündmuste pärimine mängu pakki (read)
  7. Vastavalt mängurežiimile sündmuste jagamine kätte ja lauale
  8. Laual olevate sündmuste liigutamine mängija poolt, nii et vaba ruum jääks kahe laual oleva sündmuse vahele (ghost)
  9. Käes olevatest sündmustest ühe aktiivseks muutmine
  10. Käes oleva aktiivse sündmuse valimine ehk lauale panemine
  11. Mängija valiku õigsuse kontrollimine
  12. Uue kaardi lisamine pakist kätte (sõltub mängurežiimist ja mängija käigust)
  13. Käidud kaardi lisamine lauale
  14. Käidud kaardi eemaldamine mängust
  15. Mängu kestvuse arvestamine
  16. Mängu kestvuse võrdlemine ajalimiidiga
  17. Käes olevate kaartide koguse kontrollimine (kontrollimaks kas kaardid on otsas)
  18. Eduka lõpu korral õnnitluse kuvamine, kaotuse korral kaastunde avaldamine
  19. Andmebaasist edetabeli pärimine, andmebaasi edetabeli muutmine (uue tulemuse sissekandmine) (update, read)
  20. Mängijalt uue mängu alustamise soovi küsimine
  21. 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

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. 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!

frameless

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.

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.