Meeskond:VariableMoods

From ICO wiki
Revision as of 18:51, 17 December 2014 by Mkunnapa (talk | contribs) (→‎Ajaveeb)
Jump to navigationJump to search

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)

  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

Töö kiidab tegijat!: 17. Detsember 2014

Kaitsmiseni on jäänud 13,5h. Me ei ole kusagile kadunud.

frameless


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

Screenie

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.

frameless

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.