3xMG

From EIK wiki

Kirjeldus

Shootsy on 2D point & shoot arvutimäng. Eesmärgiks on koguda võimalikult palju punkte enne kui aeg otsa saab. Sisaldab punktitulemusi ja edetabelit. Täpsem informatsioon on analüüsis.

Analüüs

Shootsy on XNA's loodud 2D tulistamismäng, kus mängija eesmärgiks on teatud aja jooksul võimalikult palju punkte koguda, tulistades oma vastaseid lumepallidega. Kuna talv on tulemas, siis valisime esimeseks teemaks just talve.

Mängija kontrollida on lumepalle laskev kahur, milles on alguses kakskümmend lumepalli. Iga poole sekundi jooksul laetakse üks lumepall kahurisse. Tsükkel kestab esialgu viis sekundit, mille lõppedes hakkab ta algusest peale. Mängijale näidatakse laadimise tsükkli kulgemist ning kui tsükkel on vahemikus 67%-70%, siis on kasutajal võimalus vajutada nuppu, mis lõpetab ülejäänud tsükkli koheselt ja algab algusest peale (tsükkli pikkus ja laetud lumepallide hulk võib muutuda, optimaalsed väärtused selguvad mängu testimise käigus).

Kahurit ohjab mängija hiirega. Vasak nupuvajutus tulistab lumepalli sihitud kohta. Eesmärgiks on võimalikult palju vastaseid elimineerida, et oma punktitulemust suurendada. Aega on mängijal kuuskümmend sekundit (võib veel muutuda). Vastaseid asuvad tervel mänguväljal erinevatel kaugustel. Lähemal asuvad tegelased (suuremad) annavad vähem punkte, kui need, kes on kaugemal (väiksemad). Liigub ringi ka sõbralikke tegelasi, kelle pihta tulistada ei tohiks, vastaseljuhul kaotab mängija punkte.

Mängija on statsionaarne, kuid mänguväli on tegelikult suurem kui mängija näeb. Liigutades hiirt ekraani servadesse on mängijal võimalik vaadata vasakule ja paremale (võib-olla ka üles/alla). Selle funktsionaalsuse realiseerimine võib osutuda kõige keerulisemaks, aga suhtume optimistlikult ja proovime selle töökorda saada.

Teine probleeme tekitav koht on visuaalne pool ja igasugu tegelaste animatsioonid. Ükski meeskonna liige ei ole veel oma kunstilise poolega silma paitsnud ja seetõttu võib mängu visuaalne pool tagasihoidlikuks kujuneda.

Tööjaotus

Kuna meeskond on mahult väike, siis oleme plaaninud mahukamad asjad koos läbi võtta. Koodi kirjutavad kõik liikmed. Toon siinkohal välja mõned aspektid, millele võiksid meeskonna liikmed iseseisvalt tähelepanu pöörata.

  • Martin Molvõgin - Projektijuht. Loob mängu visuaalset poolt. Mänguvälja programmeerimine. Lumekahurist tulistamise realiseerimine.
  • Matthias Mõttus - Kasutajaliidese kujundus ja programmeerimine. Mänguvälja programmeerimine. Tegelaste programmeerimine. Tulemuse programeerimine.
  • Mauri Molvõgin - Mängumenüüde loomine ja programmeerimine. Mänguvälja programmeerimine. Lumepallide laadimise tsükkel ja "turbo" laadimise realiseerimine. Edetabelid.

Must have

  • Edetabelid: Kindlasti peaks mängus olema edetabel, kuhu saaks mängijate tulemused paremuse järjestuses kirja panna. Edetabel võiks salvestada minimaalselt top kümne mängijate tulemused. Mängusessioni lõppedes võiks kasutajalt küsida nime ja kirja panna tulemuse, kuupäeva ning kellaaja.
  • Funktsionaalne mängumenüü: Mängus peaks olema menüü, mille kaudu on võimalik alustada oma mängusessiooni, näha edetabeleid, sättida seadistusi või sulgeda mäng. Milliseid seadistusi sättida saab on veel lahtine, sest heliefektid ja muusika ei ole prioriteediks ning seetõttu ei ole helitugevuse sättimisel alguses mõtet. Uurime ka teisi võimalusi, näiteks vahetamine klaviatuuri/hiire ja xBoxi puldi vahel. Mängu peaks saama ka pausile panna vajutades ESC nuppu ning sealt kas jätkata mängu, alustada uuesti, sättida seadistusi või katkestada pooleliolev mängusessioon.
  • Asjalik kasutajaliides: Mängijal peab olema hea ülevaade oma lumepallide arvust, ajast, punktisummast ning kahuri laadimise tsükkli kulgemisest.
  • xBox puldi tugi: Kuna xBoxi puldi tugi on üks nõuetest, siis peame ka selle kindlasti täitma.
  • Klaviatuurilt/Hiirelt juhtimise tugi.

Nice to have

  • Õpetus: Meie mäng on lihtne, kuid õpetus võiks mängumenüüs olla, kus on lahti seletatud mängu põhimõtted (kaua aega on, kuidas punktisumma arvutatakse, milliseid tegelaste vastu võib tulistada jne).
  • Power-upid: Sisse luua elemendid, mis annavad erinevaid boonuseid lühikeseks ajahetkeks. Neid saab koguda ning teatud klaviatuuri nuppudega aktiveerida mängija soovil. Boonusteks võiksid olla näiteks lõpmatuseni lumepalle, vastaste tardumine, ajaboonus ja muid. Ideid on palju, aga kõigi realiseerimine võtab palju aega.
  • Heliefektid: Heli jätame alguses tahaplaanile, arvatavasti lisame selle funktsionaalsuse esimesena kui peaks aega üle jääma. Samuti peab lisama võimaluse helitugevuse reguleerimiseks seadistuste menüüst.
  • Taustamuusika: Nagu heliefektidega on taustamuusika hilisem teema, millele peab ka lisama võimaluse helitugevuse reguleerimiseks (heliefektidest erineva skaalaga).
  • Tulemuse kordaja: Saab pidevalt boonuspunkte ning läheb kordades paremaks teatud arvu vastaste alistamisel. Muidugi selle saamiseks peab täpsus olema saja protsendine.
  • Vastased "tulistavad" vastu: Üks mänguvalikutest, kus vaenlased loobivad kasutajat lumepallidega samal ajal kui kasutaja üritab neid maha saada. Mäng saab läbi siis, kui mattud lumepallide alla (ajalimiiti ei ole).
  • Öine režiim: Mänguvalik, kus mängija peab lisaks sihtima klaviatuurilt (või puldilt) prožektorit, mis valgustab sihtmärke.
  • Erinevad teemad: Alustuseks toimub mäng talvistes oludes. Lisana võiks mängus olla valik erinevate teemadega maailmu. See tähendab, et tuleb muuta kõik visuaalne pool. Tehnilise poole pealt võib põhimõtteliselt kõik sarnaseks jätta, kuid võimalusel saab ka seal teemadekohaseid muudatusi sisse tuua. Näiteks saab sama kontseptsiooni muuta ümber Teiseks Maailmasõjaks, kus mängija kontrollib lumekahuri asemel kuulipildujat MG 42.
  • Unreal Engine 4: Mängumootor, milleni me ealeski ei jõua, aga "nice to have" siiski. XNA on meile esialgu piisav. :)

Retsensioon

Retsensioon meeskonna A Bunch Of Asians analüüsist asub siin.

Prototüüp

Viimased uuendused keerasid mängu lootusetult tuksi. Prototüüp hilineb.

Logi

27. oktoober

Meeskonna loomine.

28. oktoober

Idee arutlus - sai välja mõeldud mõningad lisad, mis võiksid meie mängus olla. Mängu põhiidee on meeskonnavahel lahti seletatud. Teatud osad (nimi, tegelased) on veel selgumisel, kuid ei takista projekti algust.

Loodud sai ka wiki leht.

4. november

Lisasime analüüsi. Täpsustasime omavahel mängu detaile (nimi, teema, tegelased) ning arutasime, kuidas teatud aspekte mängus võiks realiseerida (kahuri laadimine, mänguväli ja vaateväli).

7. november

Tutvumine XNA koodiga. Sai proovitud, kuidas sprite faile ja string tüüpe rakenduses kuvada. (Mauri)

11. november

Esimesed liikuvad sprite pildid ja põrkumine ekraani laiuses + kokkupõrked teiste sprite piltidega. Lihtsate animatsioonide lisamine kasutades sprite sheet tüüpi pilte. (Mauri)

Lisasime retsensiooni meeskonna A Bunch Of Asians analüüsist.

17. november

Valmis esialgne menüü, mis on navigeeritav nii klaviatuuri kui ka hiirega (pulditoe lisamine ei tohiks raske olla). Esinevad mõned tõrked, proovin need lähipäeval lahendada. (Mauri)

18. november

Menüü tõrked sain eemaldatud ja töötab kenasti nii klaviatuuri kui ka hiirega. Hiirega navigeerimise juures oleks vaja veel ühte asja muuta, aga tegu on väga väikese probleemiga, mille jätan hiljemaks. Põhimõtteliselt ei kontrollita, kas hiireklõpsu ajal on hiir menüü valiku kohal või mitte. Sellele on lihtne lahendus, aga selle tagajärjel ei tööta enam klaviatuuriga navigeerimine korralikult. Vaja midagi muud siia mõelda. Vaatamata sellele on menüü töökorras. (Mauri)

19. november

Lisasin lumepallide loenduri, mis väheneb ühe võrra vajutades vasakut hiireklõpsu. Samuti lisasin lumepallide laaduri tsükkli, mis vajab veel tööd. Tsükkel kestab viis sekundit, palle lisandub iga poole sekundi järel ning mängija võib vajutada nuppu (praegu klahv 'R'), mis annab talle lisa palle ja paneb tsükkli algusest peale tööle. Hetke probleem seisneb selles, et ei kontrollita, kas mängija on juba nuppu selle tsükkli jooksul vajutanud. Praegu saab nuppu nii-öelda "spammida", et tsükklis "turbo" laadimine kätte saada. (Mauri)

21. november

Reload nuppu ei saa enam "spammida". Töötab ainult siis kui õigel ajal vajutada, vastasel juhul pannakse selle tsükli jooksuks nupp lukku. (Mauri)

Lisatud suvaliselt ilmuvad vastased, kes ilmuvad erinevatel aegadel erinevate kiirustega erinevatel kohtadel. (Mauri + Matthias)

Kahuriga saab ka lasta aga ei tööta veel nii nagu peaks. Vastased ei taha kuidagi surra. (Mauri)

23. november

Vastased kaovad mänguväljalt nüüd korrektselt, kui neid kahuriga lasta või kui nad mänguväljalt ära jooksevad. (Mauri)

24. november

Korrastasin koodi. Selleasemel, et klassides eraldi klaviatuuri ja hiire käitumist kirjeldada, lisasin eraldi klassi, mis selle ära teeb ning hiljem on sinna lihtsam puldi tugi lisada kui peaks vaja olema. (Mauri)

Viisin mitmed funktsioonid eraldi klassidesse, et neid oleks kergem hallata. (Mauri)

Vastaste pihta tulistamise eest saab nüüd korrektselt punkte. (Mauri)

Lisasin "Game Over" ekraani. Mängija näeb oma kogutud punktisummat. Võimalus uuesti alustada või minna tagasi peamenüüsse. (Mauri)