Meeskond:EluOnLill

From ICO wiki

Liikmed

  • Henrik Prangel - Projektijuht
  • Kert Saarma
  • Carlos Kirtsi

Idee

  • Luua mäng, mis simuleerib elu kulgemist

Mängu algus - tekitame inimese lapsena ja saab valida kuidas alustada oma elu - sotsialiseerumine, õppimine, looming, sport. Nende põhjal tekib see isik, kes siis täiskasvanuna hakkab elu elama.Karakterit luues on random generator mis määrab ära kui kerge ülejäänud mängust on. Vastavalt sellele kuidas siis lapsena valikuid teed mõjutab su tuleviku, palju sporti on kalduvus olla loll sportlane jne. Täiskavanuna tekib juurde uued väärtused raha, kuulsus, jõud, pere ja heaolu. Kõikide näitajate pealt tekib skoor mis näitab kui hea sa siis kokkuvõttes olid, üks mänguprotsess kestab reaalajas kuu aega, aga on olemas ka nupp mis kiirendab mängu. Juhul kui mäng "läbi" saad edasi mängida ühe oma lapsena juhul kui neid said.

Blogi

  • 01.10.17 - Tiimi loomine
  • 10.10.17 - Idee arutamine
  • 16.10.17 - Wiki lehe loomine
  • 20.10.17 - Viimane koosolek enne idee teostamisega alustamist(Arendusmudeli valimine)
  • 30.10.17 - Alustasime analüüsi koostamist
  • 04.11.17 - Analüüs valminud peaksime alustama projekti vundamendi loomist
  • 12.11.17 - Valmis retsensioon tiimile VirtualBar
  • 01.12.17 - Projekti idee kinnistamine ja osade jagamine
  • 10.12.17 - Projekti vaadete arutamine ja täpselt paika seadmine
  • 11.12.17 - Ametlikult programmi loomisega alustamine
  • 13.12.17 - Esimene koodi osa ja vaate üles panemine versioonihaldusesse
  • 15.12.17 - Vaadete valmimine, komplikatsioonidest ülesaamine
  • 18.12.17 - Toimus prototüübi esitamine, mille käigus saime ideid edasiseks tegutsemiseks ja teenisime ka ~8 punkti siiani tehtud töö eest
  • 11.01.18 - Uuesti tegelema hakkamine, karakteri loomine valmis
  • 14.01.18 - Koodi formatimine, WPF visuaalid, andmebaaside korrastamine, andmebaasist kustutamise nupp
  • 17.01.18 - Viimased puudu olevad asjad:
  • 18.01.18 - Projekti kaitsmine


Kasutatav teholoogia

  • C#
  • WPF
  • LINQ
  • TFS

Versioonihaldus

Versioonihaldus: TFS'is

Analüüs

  • Meie valminud analüüsi on võimalik näha siit


Esialgsed lootused ja ootused projekti suhtes

Must-have:

  • Elutsüklid
  • Igas elutsüklis mingisugused random eventid
  • Oskused ja nende arendamine
  • Profiili kujunemine

Nice-to-have:

  • Palju funktsionaalsust ja variatsiooni
  • Vähe piiranguid
  • Visuaalselt ilus disain

Dream-to-have:

  • Mäng oleks online ja tekiks ühiskond kus enda käitumine mõjutab ka teiste mängu


Reaalsemad ootused ja lootused

Kui rakendusega tegelema hakkasime, mõistsime kiiresti, et projekti mahu olime me enda jaoks liiga suureks sättinud. Mõistsime, et isegi meie "must to have" funktsionaalsus oli umbmäärane, lai ja omam mahu tõttu raskesti teostatav. Seega otsustasime oma "must to have" ja "nice to have funktsionaalsuse" ümber sõnastada.

Must-have:

  • Events – sündmused, mis juhtuvad igal eluaastal ja mõjutavad su karakterit kuidagi
  • Relationships - karakteril peaksid olema ja tekkima erinevad suhted erinevate isikutega
  • Activities – karakter käib koolis, kus ta saab teha erinevaid otsuseid oma elu üle (kontsentreeruda õppimisele või suhtlemisele)


Nice-to-have:

  • Relationships- Karakter saab oma suthteid isikutega paremini ise „vormindada“, otsustades kellega ta kuidas suhtleb, kui üldse.
  • Activities- Kooli kõrvalt on võimalik veel tegeleda ka erinevate hobidega
  • Design- Ilus WPF välimus ja funktsionaalsus



Arendusprotsess

Alustasime arendamisega tehes mitu koosolekut arutades läbi enda idee ja seades sellele täpseid parameetreid, et oleks ise endal ka lihtne arusaada, mida keegi tegema peab ja kuidas seda teha üldse. Järgnevalt alustasime koodi kirjutamist sättides paika domeenimudel, järgnevalt luues WPF vaate ja lõpetuseks seades paika teenindusklassid. Palju aega kulus meie tiimil ka versioonihaldusele ja omavahel korralikult kordineerimisele, et tekiks võimalikult vähe overlappimist koodide osas. Enne prototüübi esitamist tegime ka korraliku andmebaasi meie programmile. Esitamise järgnevalt tegelesime seal saadud nõuannetega.

Kasutusjuhend

Mängu alustades, satub mängija "sisselogimisekraanile", kus on võimalik luua uusi karaktereid, kellega uus mäng alustada või siis laadida juba mõni olemasolev/käiv mäng (samuti saab siin ka olemasolevaid karaktereid kustutada). Kui mängija on loonud uue karakteri (või valinud olemasoleva), siis vajutades PLAY nupule, viiakse ta põhivaatesse, kus kogu mäng aset leiab. Mängus on karakteril võimalik teha otsuseid, mis mõjutab tema isikuandmeid ja suhteid (need otsused avanevad alles 7. eluaastast). Piltlikult öeldes ongi momendil kogu mängu eesmärk: lõpetada mäng võimalikult heade isikuandmete ja suhetega (momendil lõppeb mäng 20. eluaastal).


Mängu Mehaanika

  • Mäng on käigupõhine
    • Iga käik on võimalik teha otsuseid
    • Peale igat käiku, muutuvad karakteriandmed lähtuvalt eelmisel käigul tehtud otsustest
  • Mängus on "Tegutsemispunktid" (Action Points)
    • Otsuseid on võimalik teha ainult nii palju, kui sul on "tegutsemispunkte"
  • Karakteri andmed
    • Kui tervis langeb karakteril liiga madalale, siis karakter sureb (Game Over)


Momendil on põhiekraanil kasutatavad nupud:

  • Forward Time = Nupp, mida vajutades, möödub 1 aasta. (Selle aasta käigus uuenevad karakteri isikuandmed ja suhted lähtuvalt tema otsustele)
  • Save Game (SG) = Nupp, mis salvestab mänguseisu andmebaasi.
  • Haridus = Nupp avab haridusvaate, mille all on erinevad otsused, millega koolis tegeleda (üldiselt valik kontsentreeruda kas koolile või suhetele).


Lahenduse kirjeldus

"Elu On Lill" mäng, on WPF-il põhinev rakendus, mis disainiti kasutades MVVM arendusmustri põhimõtteid. Selle tõttu on üritatud äriloogikat ja WPF-i spetsiifilist koodi lahus hoida. Nõnda sai ka kirjutatud Kood jaotatud vaatemudelite, domeenide ja teenuste kaustade vahel (Millest viimased kaks, domeenid ja teenused, moodustavad rakenduse valdava äriloogika osa ja vaatemudelid moodustavad WPF spetsiifilise osa). Rakendusel on ka andmebaas, kuhu talletatakse mängu infot. Päringuid andmebaasist teostatakse läbi LINQ

Andmebaasi moodustavad 6 tabelit

  • CurrentGame- (põhimõtteliselt "Save Game")
  • Person- Kõik karakterid mängus (nii mängitavad, kui mittemängitavad)
  • Relations- Suhted
  • PersonRelations- Isikud suhetes
  • Events- sündmused
  • PersonEvents- Isikud sündmustes

Eelnimetatutele andmebaasitabelitel on ka vastavad domeenimudelid ja teenindusklassid.

Lähtekood zip failis

https://drive.google.com/open?id=15umCMBRAC5h1eseWl7Xbexc42uit4u4p