Projektiplaan

Miks on projektiplaan vajalik?

Hea projektiplaan (ja selle järgimine) aitab sinul ja tiimil projekti edukalt lõpule viia. Plaani koostamine enne alustamist on kasulik selleks, et:

  • läbi mõelda, millised on sinu tiimi eesmärgid

  • milline on ajakava raames reaalselt saavutatav tulemus

  • milliseid samme tuleb teha, et eesmärgini jõuda

Sageli saadakse juba esialgse plaani koostmise faasis aru, mis on projekti kõige keerulisemad osad. See aitab nendele asjadele juba projekti alguses tähelepanu pöörata.

Ka firmades tehakse projektiplaane, enne arendusprotsessi alustamist. See tagab, et kogu tiim on eesmärkidest ühiselt aru saanud ning kõik vajalikud nõuded ning ülesannete loogiline järjestus ära kaardistatud.

Soovime, et teeksid selles aines projektiplaani, et:

  • Meie mõistaksime, mis on teie tiimi eesmärgid ja plaanid ning saaksime teid teadlikult abistada

  • Saaksite oma plaanid ja eesmärgid kaardistatud, et teaksite, mida hiljem teha

  • Saaksite aimduse sellest, kas teie projekti on reaalselt antud aja sees võimalik teha

Projektiplaani juhend

Projektiplaan peab olema vormistatud teie projekti repositooriumi wiki lehena pealkirjaga "Projektiplaan". Seda saab teha vajutades vasakul küljereal nuppe "Plan" -> "Wiki" -> "Create page". Wiki loomise kohta saad täpsemalt lugeda siit. Samuti peab olema mängu idee, raamistikud, autorid ning vajalikud lingid ka projekti README.md failis. README-s on oluline ära märkida, mis tüüpi projekt see on, mängu kirjeldus ja kuidas seda käivitada, et kohe projekti avades saaks vaataja aru, millega tegu on. Samuti on tähtis välja tuua teegid, mida mängu kirjutamiseks on kasutatud, koos nende tööversioonidega. Lisaks vaata README kriteeriume siit. .. image:: images/readme_edit.png .. image:: images/readme_repo.png

Seejärel tuleb koostada tiimiga plaan, kus on välja toodud 8 alapunkti:

  • Mängu idee kokkuvõte: 1-2 lauset


  • Üldine kirjeldus mängu olemusest.

  • Näiteks: Luua "top-down view" ehk ülalt vaatega kohvikumäng, kus klientideks on AI-tegelased. Mängija või mängijad peavad võtma vastu tellimusi, minema kööki neid täitma (minigame popups) ja viima lauda.

  • Idee kirjeldus: vähemalt 100 sõna


  • Täpsem kirjeldus, kuidas mäng käib ja millised on reeglid jne.

  • Näiteks: Idee tulenes meie lemmikmängudest, nagu näiteks Stardew Valley, Penguin's Diner, Good Pizza Great Pizza. Me soovisime luua hubase ja armsa ajaviitemängu, mis pakub ka natuke intensiivsust tellimuste täitmise näol. Teemaks on kohvik, kus peategelane on armas loomake, kelle vanaema kohvikut ähvardab sulgemine. Mängija peab päeva lõpuks saama raha kokku, et kohvik päästa. Mäng on 2D pixel art stiilis. Kasutatud on pixel art asset packe, mis on saadud itch.io lehelt ning kooskõlas andmekaitseseadustega. Mängu AI komponent esineb kohviku klientide näol. AI klient valib endale sobiva laua ning annab vastavalt raha. Tellimuste täitmine toimub köögis, avaneb popup, kus on väike minigame vastavalt tellimusele. Kui aga on soov sõpradega mängida, siis saavad lobby'ga liituda vähemalt 2 sõpra, kes saavad võistelda kiiruse peale, kes esimesena päeva lõpetab. Teeni piisavalt raha, et vanaema kohvik päästa!

  • Vähemalt üks pilt: annab edasi mängu idee.


  • Kui teete mõne olemasoleva mängu põhjal, siis võib sellest pilt olla (eelistatult siiski oma looming).

  • Võib vabalt paberile joonistada ja pildistada vms.

  • Kõik 7 sprinti: nädalate kaupa lahti kirjutada.


  • Ühe sprindi sisse panete kirja kahe nädala plaanid ehk 1 sprint = 2 nädalat.

  • Iga sprindi kohta peab olema kirjas selle konkreetne eesmärk.

  • Näiteks: 2. nädal - eesmärk seadistada projekt programmides ning saavutada algfunktsioonid nagu serveri ja kliendi ühendus.

  • Nädalate jaotust saate projekti käigus muuta, kuid väga oluline on juba alguses panna paika kindel plaan, et ei kuhjuks suuri töid kursuse viimastele nädalatele (nt AI pathfindingu tööle saamine viimasel nädalal); seda saabki vältida asjakohase nädalaplaani koostamisega. Viimastele sprintidele ei tohiks suuri/palju eesmärke planeerida, sest sel ajal tuleks juba hakata üldist funktsionaalsust testima ja vigu parandama.

  • Suuremate eesmärkide korral (nagu kaardi tegemine) tuleks need väiksemateks ülesanneteks mitme sprindi peale ära jagada (kaardi loomine, collisionite lisamine eraldi), et tekiks kohe arusaam aja planeerimisest ja töömahu hulgast. - Soovituslik on esmalt välja valida kõige olulisemad ülesanded, eriti siis, kui väiksemaid tegemisi on palju. Loomulikult tuleb kõik planeeritud tööd ära teha, ka need, mis algselt projektiplaani kirja ei saanud. Samas tasub vältida enda iganädalast ülekoormamist liiga suure töömahuga.

  • Mis hinnet soovite saada


  • Peate korralikult ja veenvalt välja tooma, miks just seda hinnet soovite.

  • Pange kirja vähemalt 10 suuremat funktsionaalsust/omadust, mis teie arvates on kõige keerukamad/mahukamad - 2 mängijat + multiplayer/reaalajakomponent/3D mäng/co-op AI mängija vms. - Vaadake võimalikke termineid siit. (võite vabalt nimetada asju, mida seal tabelis pole)

  • Näiteks: Soovime saada 500 punkti. Meie idee on väga hea tasemele kohane, oleme läbi mõelnud, kuidas AI komponent integreerub loominguliselt meie mängu looga, oleme leidnud sobiliku alguse ja lõpu ning lisanud juurde palju elemente, mis teevad iga mängukorra unikaalseks. Meie peamine soov on luua mäng, mis meeldiks meile endal ja mida me mängiksime ise, kui näeksime seda kuskil mängulehel. - Meie mängus on vähemalt järgnevad funktsioonid:

    • 10 mängijat

    • AI klient

    • collision loogika kahe tegelase kokkupuutumisel

    • kaamera jälgib alati mängijat

    • graafika on ühtlane sprite'de, menüüde ja ikoonidega

    • tellimuste vastuvõtmise, täitmise ja toimetamise loogika

    • minigame popup süsteem

    • rahasüsteem, mis on mängu lõpu indikaatoriks

    • intro- ja õpetusekraan mängu juhistega

    • ise loodud heliefektid ja taustamuusika

  • Tööriistad / raamistik


  • Mäng peab olema kirjutatud Javas. - README’s ja projektiplaanis peab olema kirjas ka Java versioon.

  • Meie soovitame kasutada LIBGDX raamistikku.

  • Serveri ning kliendi realiseerimiseks soovitame Kyroneti (või Netty't).

  • Projektis on lubatud kasutada erinevaid raamistike ja teeke, kuid ei tohi kasutada komplekssemaid mängumootoreid nagu Unreal Engine või Unity. Nende puhul on meil keeruline teie reaalset panust ja õpitut hinnata kuna mängumootor teeb väga suure osa tööst ära.

  • Punktitabel


  • Punktitabelis tuleb esitada: - kõik funktsionaalsused; - funktsionaalsusele vastavad punktid; - funktsionaalsuse seis; - funktsionaalsuse täpsustav kommentaar.

  • Kasuta punktitabeliks seda malli - peab jääma kas sheets või excel vormingusse.

  • Faili lingil peab olema kommenteerimise õigus. - Vahelehel "punktitabeli elemendid" on võimalikud asjad, mida saate planeerida ning enda tabelisse panna - Mõnel elemendil on ka tasemed - sellele on vastavalt ka punktid. Kindlasti lugege läbi vastava funktsionaalsuse kommentaarid, mida sel juhul teilt ootame. Kui on mitu taset, siis tohib valida ainult ühe neist, mitte mitu taset. Näide: On olemas 3 erineva raskusastmega lobby screen'i. Sellisel juhul tuleb valida ainult üks, mida soovitakse realiseerida vastavalt raskusastmele, mis on näidatud värvides.

  • Punktitabelisse võib lisada kriteeriume, mida näidetes ei ole esitatud. - Sel juhul vaatame punktisumma üle meie

  • Punktitabelit peab edaspidi pidevalt uuendama.

  • Punktitabel ei kajasta teie lõplikku punktiskoori, see on pigem umbes järje pidamiseks.

  • Link/lingid repodele GitLabis


  • Repo nimi peab algama iti0301-2026.

  • Kui plaanite teha serveri ja mängu eraldi repodesse siis vastavalt iti0301-2026-server ja iti0301-2026-game.

NB! Projektiplaan peab olema alati kooskõlas tegeliku tööga, mida arendate. Seega tuleb vahetevahel seda uuendada, nt iga sprindi alguses/lõpus.

Enne kui alustad projektiplaani tegemist, võid vaadata, kuidas see umbes välja peaks nägema siit.