Battle2048: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
Line 134: Line 134:


=== Prototüüp ===
=== Prototüüp ===
Prototüüp asub: [https://dl.dropboxusercontent.com/u/6754782/ITC/Battle2048Game_prototype.zip prototüüp]
[https://dl.dropboxusercontent.com/u/6754782/ITC/Battle2048Game_prototype.zip prototüüp]


== Arendusprotsess ==
== Arendusprotsess ==

Revision as of 23:13, 18 December 2016

Meeskond

Andrus Seiman, Annely Aasalaid, Kristjan Peterson

Idee

Luua tuntud arvutimängu “2048” uusversioon, mis võimaldab lisaks klassikalisele mänguvariandile mängida ka mitmel mängijal üksteise vastu.

Arvutimäng “2048” on väga lihtne kuid väga kaasahaarav mäng, kus mängija eesmärgiks on liigutada 4x4 mõõtmelisel ruutudeväljal erinevate väärtustega klotse eesmärgiga teenida punkte läbikombineerida ühesuguse väärtusega klotse. Esimene versioon mängust ilmus veebis vabavarlisena aastal 2014 ning ositus väga populaarseks.


Rakenduse analüüs

Rakenduse sisu

Mäng baseerub klassikalisel “2048”-l, kuid sisaldab uudseid variatsioone. Näiteks järgmised neli stsenaariumi:

  1. Klassikaline 2048 üksikmäng, kuid ilma 2048 piiranguta. Mäng kestab seni, kuni enam liikuda ei saa. Mitte siis kui ühes ruudu väärtuseks saab 2048 nagu klassikalises mängus. Mängu eesmärk on koguda maksimaalselt punkte.
  2. Üksikmäng kella vastu (näiteks 2 või 3 minuti piirang). Mängu eesmärk on koguda lühikese ajaga maksimaalselt punkte. Aeg võiks olla piisavalt lühike, et kasutajal oleks pidevalt kiusatus mängu lõppedes uuesti proovida, sest uue tulemuse saab ruttu teade. Klassikaline mäng võib vahete vahel venida mitmekümne minuti pikkuseks, seega oleks uusversioon sellele hea alternatiiv.
  3. Mäng üksteise vasu ühel mängulaual. Kaks mängijat mängivad ühel mängulaual ja tehes kordamööda käike. Mängu algul on kummalgi piiratud hulk mõtlemisaega (näiteks 2 minutit). Mõtlemisaeg väheneb vastavalt sellele kaua aega kulub käigu tegemiseks (mäng malekellaga). Kui ühel mängijal aeg otsa saab, siis tema enam käia ei saa. Teine mängija saab oma aja lõpuni mängida. Võidab see kes rohkem punkte teenib. Kui ajapiirangu jooksul käia enam ei saa, siis võidab see, kes tegi viimase käigu.
  4. Mäng üksteise vastu kahel mängu laual. Kaks mängijat mängivad paralleelselt eraldi mängulaudadel. Kummalgi on mängijal on mängu algul 3 minutit mõtlemisaega. Igakord kui mängija teenib punkte lahutatakse vastase mõtlemisajast mingi mõtteline osa ja liidetakse punkti saanud mängija mõtleimsajale. Mäng käib seni kuni mõlemal mängijal on mõtlemisaeg otsas. Võidab see kel rohkem punkte. Et mäng oleks tasakaalus tuleb katseeksitus meetodil selgitada, kui palju peaks aega liitma või lahutama punkte teenides. Esialgu võiks proovida näiteks võtta arvu 2 aste ja muuta see sekunditeks - näiteks teenides 2, 4, 8, 16, 32, 64, jne. Punkti liidetakse/lahutatakse 1, 2, 3, 4, 5, 6, jne sekundit. Kui mõju liiga väike, siis peaks mängitavuse huvides korrutama mingi teguriga.

Mängu kaasahaaravust tõstmiseks tuleb kindlasti salvestada erinevaid “edetabeleid”, et mängijal oleks pidevalt soovi oma tulemusi ja miks mitte ka teiste mängijate omasid üle trumbata. Lisaks tavapärasele max. punktidele võiks talletada ka muid karakteristikuid, milles mõõtu võtta. Näiteks:

  • Max. punktid
  • Max. punktid esimese 3 minuti jooksul (vms. aeg)
  • Vähim aeg, mis kulus esimese 100 punkti saavutamiseks
  • Vähim aeg, mis kulus 2048 saavutamiseks
  • jne.

Erinevad edetabelid tuleks hoida lokaalses või võrgu andmebaasis. Ideaalis võiks olla võrguadnembaas (näiteks enos.itcollege.ee-s), mille suhtes siis aegajalt sünkroniseeritakse lokaalset andmebaasi.

Lisaks võiks pidada meeles ka kasutajaid meeles, et mängijad saaksid jälgida ka iseenda kohta käivaid näitajaid. Samas võiks jääda võimalus mängida ilma sisse logimata anonüümselt.

Funktsionaalsus

Esialgu võib jagada ülesande kolmeks suureks osaks:

  • Kasutaja liidese loomine, valikmenüüd, menüüdes liikumine, jne.:
    • kasutaja loomine/sisse logimine (ideaalis võiks kasutada näiteks Microsofti kasutajakontosid),
    • mängude valik
    • statistikaga tutvumine
  • “2048” mängumooduli loomine.
    • Esimene ülesanne on luua klasikalise 2048 variant, mida täiendades luua uudsed variandid.
      • Mäng üksi kella vastu
      • Mäng üksteise vastu kahel laual
      • Mäng üksteise vastu ühel laual
  • Andmebaasiga tulemuste salvestamise ära sidumine:
    • Lokaalne andmebaas
    • Ideaalis võiks olla ka online andmebaas (näiteks enos.itcollege.ee), millega siis aegajalt sünkroniseeritaks andmeid. Sel juhul saaksid kasutajad erinevatest arvutitest üksteisega kaudselt mõõtu võtta.

“Must have”

  • “2048” mängu funktsionaalsus
  • erinevad mängu variatsioonid
  • mängijate registreerimine / sisse logimine
  • edetableite salvestamine lokaalsesse andmebaasi

“Nice to have”

  • online andmebaasiga sünkroniseerimine,
  • mäng arvuti vastu
  • Microsofti kasutajanime kasutamine
  • üldine “silmailu”

Andmebaasi disain

Rakenduse andmebaas on võrdlemisi lihtne sisaldades esialgse kava järgi 4 tabelit: kaustajate tabel, tulemuste tabel, mängu tüüpide tabel ning tulemuste tüüpide tabel.

Neist esimene sisaldab informatsiooni kasutajate, nende nimede ja ideaalis ka Microsofti kasutajate kontode kohta. Kui õnnestub realiseerida MS kasutaja tunnustega autentimine, siis ei pea ise kasutajaid (ja nende paroole) talletama hakkama. See on turvalisuse sesiukohast tülikas ülesanne, et teha seda esimene kord kohe õieti.

Tulemuste tabel, kuhu talletatakse kõik tulemused sõltumata konkreetsest mängu tüübist või võrreldavast skoorist.

Kaks viimast tabelit: mängud tüüpide tabel ja tulemsute tabel määravad ära, mis mängudest, milliseid tulemusi talletatakse. Selline disain võimaldab hiljem lisada erinevaid mängude tüüpe ja erinevat tüüpi skoore, milles võistelda.


Andmebaasi disaini skeem

Kasutajaliidese disain

Vaated:


1. Sisselogimine/Registreerimine

Kui kasutajal on eelnevalt konto loodud vajutab ta saab ta kohe end sisse logida sisestadas enda kasutajanime ning parooli. Vajutades nupule „Sisene“ viiakse kasutaja rakenduse pealehele, kus ta saab valida endale sobiva mängustiili.

Kui kasutaja on eelnevalt registreerimata, siis kasutaja vajutab "Registreeri" tabile, mis järel kasutaja registreerib end sisestades kasutajanime ning kaks korda parooli. Vajutades nupule „Registreeri“ viiakse kasutaja koheselt rakenduse pealehele, kus ta saab valida endale sobiva mängustiili.


2. Mängu valik (Pealeht sisseloginutele)

Nimekiri erinevatest mängustiilidest, kus kasutaja saab algatada uue mängu vastava nupu peale klikkides

- Üksikmäng

- Üksikmäng kella vastu

- Mäng kahekesi ühel laual (malekella printsiibil)

- Mäng kahekesi eraldi mängu laudadel

Kui mängija valib kahe mängijaga mängu, siis minnakse ajutiselt uuesti Sisselogimise/Registreerimise lehel, kus saab end sisse logida teine mängija. Peale teise mängija õnnestunud tuvastamist liigutakse edasi.


3. Mänguvaade

- Sõltuvalt mängu tüübist on kuvatud 1 või 2 mängulauda, mängukell, jooksvad skoorid. Võimalik, et lisame ka konkreetse mängu top skoorid vms.

- Mängu lõppedes küsitakse, kas alustada kohe uuesti samade mängijatega ja sama tüüpi mänguga või valida midagi muud.


4. Rekordite tabel

Nimekiri erinevatest mängustiilidest, kus kasutaja saab valida, millise stiili rekordeid ta vaadata tahab. Klikkides vastava stiili peale avaneb allpool tabel 10 parima tulemusega.

- Üksikmäng

- Üksikmäng kella vastu

- Mäng kahekesi ühel laual (malekella printsiibil)

- Mäng kahekesi eraldi mängu laudadel


5. Seaded

Kasutaja saab muuta oma parooli. Nicetohave’na ka rakenduse välimust

Tööjaotus

Esialgne vastustus jaguneb järgmiselt:

  1. Kasutajaliides disain ja arendus (Annely)
  2. “2048” mängumooduli loomine (Kristjan)
  3. Andmebaasi disain ja andmebaasi ühenduse arendus (Andrus)

Kui mingid osad hakkavad valmis saama, siis panustatakse ühiselt aeglasemalt liikunud osadesse ja lisafunktsionaalsuste loomisesse.

Tehnoloogiad

  • GUI: Windows Presentation Foundation
  • Database: mingi andmebaasi teek
  • ...

Prototüüp

prototüüp

Arendusprotsess

29.09.2016 Meeskonna loomine. Projekti idees kokku leppimine.

01.10.2016 - 10.10.2016 Idee kallal töötamine. Tööjaotuse kokku leppimine.

11.10.2016 Wiki lehe loomine.

11.10.2016 TFS repositooriumi registreerimine.

11.10.2016 - 30.10.2016 Projekti funktsionaalsuse anaalüüs.

18.12.2016 Valmis prototüüüp.