Meeskond:Hubris

From EIK wiki

Meeskond

Meeskonna liikmed:

  • Sander M
  • Allan P
  • Madis R


TFS

TFS:

  • teamhubris@outlook.com

Idee

Põhiidee:

  • 2D Mäng

Tehnoloogia:

  • Unity

Selgitus:

  • Mäng luuakse 2D Spritede alusel.
  • Üldjuhul toimub mäng AI vastu.
  • Seklus/Pusle mäng
  • Story põhineb iidsel küsimusel.
  • Liikumine malelaua moodi alusel
  • Mitu erinevat levelit


Analüüs

Üldanalüüs:

Meie projektiks on 2D seiklus/puslemäng Unitys, mis kasutab Internetist leitavaid või ise valmistatud „sprite“ ehk 2D kujutisi. Mängutegevus toimub ülevalt-alla vaatega maailmates või ruumides, mis koosnevad väljakutsetest ja labürintidest. Ruumid üldjuhul koosnevad seintest mida on võimatu läbida, see piirab ära nii vastaste kui mängija liikumise, mis võimaldab tekitada sobilikke väljakutseid. Eesmärgiks on luua mitu erinevat taset, mille raskusaste sõltub vastaste arvust ning ruumide ehitusest. Ruum loetakse lõpetatuks kui see on tehtud tühjaks kõigist vastastest. Mäng lõppeb kui kasutaja jõuab n.ö. lõpuruumi, ehk teatud ruumid on võimalik täiesti vahele jätta. See jätab võimaluse mängule lisada salaruume kuhu niisama pole võimalik saada. Maailma sisse tulevad kindlasti mõned elemendid(erinevad uksed, alad kus saab ainult ühe käigu seista jne) mida peab ruumilahendamisel arvesse võtma. Igas ruumis on kasutajal lubatud kasutada „RESET“ nuppu, taastab mängu tagasi sellisesse seisundisse kui mängija esimest korda astub lahendatavasse ruumi.

Kasutajate ning vastaste liikumine toimub grid ehk malelaua ruutude põhiselt, kus kõik olendid saavad liikuda kaheksas erinevas suunas: üles, alla, vasakule, paremale ning neljas diagnoaal suunas. Liikumine käib kordamööda. Kõigepealt liigub mängija ning siis vastased. Liikumise ulatus sõltub olendist, aga üldjuhul mängija saab liikuda ainult ühe ruudu. Kasutajal kontrolli all on tegelane koos tema ette seatud relvaga. Relv on alati suunatud selles suunas kuhu tegelane vaatab. Eraldatud on tegelase liikumine ning vaate suund Mängus olevatel olenditel, sealhulgas ka mängijal, on vaid üks elu, seega vigu teha ei tohi. Vastased hävinevad relvale vastu minnes koheselt ning samuti hävineb ka kasutaja tegelane vastasega kokku puutudes koheselt. Plaanis on ka luua erinevatele tasemele erinevad vastasetüübid.

Plaanis on luua ka kindel skoorisüsteem. Loetakse kokku mitu ruumi mängija lõpetas ning mitu käiku või sammu mängijal kulus, et jõuda lõppu. Mida rohkem mängija ruume lõpetab ning mida vähem samme ta selle käigus teeb, seda parem on ta punktiarvestus. Kuna mängu eesmärk on siiski ruume tühjendada, siis esmajärjekorras on võrdlusmaterjaliks mitu ruumi lahendatud sai. Mängu idee on arendada kasutaja mõtlemisvõimet ning punktide alusel on võimalik võrrelda inimeste oskusi tasemete lahendamisel.

Võimalikud Probleemid:

  • Internetis pole piisavalt sobilikke 2D sprite.

Lahendus: Luua ise photoshopis vajalikud või sobivad sprited.

  • Ruumide jaoks loodud funktsionaalsused ei ole huvitavad või ei paku väljakutseid.

Lahendus: Põhjalikult katsetada erinevaid ruumifunktsioone erinevates stsenaariumites ning vajadusel lisada või eemaldada funktsioone.

  • Vastaste loomine/programmeerimine võib osutuda väga keerukaks mistõttu ei teki väga palju unikaalse iseloomuga vastaseid.

Lahendus: Tuleb rohkem mõelda.

  • Mängija ning vastased ei reageeri maailmasse loodavatele funktsionaalsustele.

Lahendus: Testida maailma funktsionaalsusi koos vastaste ning mängijaga, et välistada võimalikke vigu.

Must Have:

  • Vähemalt 5 taset eri paigutustega ning raskustega
  • Juhitav tegelane koos relvaga.
  • Liikumine grid alusel 8 suunas (üles, alla, paremale, vasakule ning diagonaalis).
  • Ruumide avanemine vastaste hävitamisel.
  • Maailma lõpetamine kõigi ruumide tühjendamisel.
  • Retry ehk korduskatse võimalus.

Nice to Have:

  • XBOX kontroller ja ümberseadistatav klaviatuur.
  • Punktide edetabel.
  • Erinevatele tasemetele salaruumid.
  • Rohkem vastaste tüüpe.
  • Rohkem tasemeid.


Update DEMO/Prototüübiks

Must Have:

  • Vähemalt 5 taset eri paigutustega ning raskustega - Uus lahendus arenduse käigus: 1 pikem tase, ruumi raskus sõltub avatud uste arvust, kus lastakse sisse erinev arv vastaseid
  • Juhitav tegelane koos relvaga. - Tehtud
  • Liikumine grid alusel 8 suunas (üles, alla, paremale, vasakule ning diagonaalis) - Tehtud
  • Ruumide avanemine vastaste hävitamisel - Uus lahendus arenduse käigus: ruumide avamine toimub läbi lülitite
  • Maailma lõpetamine kõigi ruumide tühjendamisel. - Uus lahendus arenduse käigus: ruume tühjendama ei pea, küll aga peab leidma õige lüliti, mis avab maailma väljapääsu
  • Retry ehk korduskatse võimalus. - Tehtud

Nice to Have:

  • XBOX kontroller ja ümberseadistatav klaviatuur. - XBOX Tehtud
  • Punktide edetabel.
  • Erinevatele tasemetele salaruumid.
  • Rohkem vastaste tüüpe.
  • Rohkem tasemeid.


Prototüüp koos lähtekoodiga (vajab Unity): Prototüüp(Unity)

Prototüüp ilma lähtekoodita (ei vaja Unity-t): Prototüüp(Non-Unity)

Lähtekood ning sprite: Lähtekood

!NB: Hetkel on ligikaudu 5% võimalus, et vastane liigub enne su löögi lõppemist kasutaja spritele, lõppedes surmaga. See on siiski suhteliselt harv ning demo on täiesti läbitav. Tegeleme selle fiximisega ning varsti tuleb üles puhas versioon!


---Controls:---

"W" - liikumine üles

"A" - liikumine vasakule

"S" - liikumine alla

"D" - liikumine paremale

"Q" - liikumine diagonaalis üles+vasakule

"E" - liikumine diagnoaalis üles+paremale

"Z" - liikumine diagonaalis alla+vasakule

"C" - liikumine diagonaalis alla+paremale

"Space" - Mõõgalöök enda ette

"R" - reset map

(olemas ka XBOX controlleri tugi)


Arenduskäik esitluseni

Arenduse käigud

  • Internetist Sprite-de otsimine
  • Maailma loomine Grid süsteemis
  • Liikumine kõikides suunades
  • Vastaste loomine ja nende liikumine
  • Uste ning lülitite loomine
  • XBOX kontrolleri lisamine
  • Sprite elude kaotamine/destroy läbi Collideri
  • Punktiarvestuse loomine
  • Bugfixes, bugfixes, bugfixes

Suuremad probleemid

  • Grid süsteem - leidsime Unity poest, aga kõik olid kallid, seega pidi gridi ise looma
  • Vastaste liikumine - vastaste AI oli loll ning vahel liikusid täiesti vales suunas. Matemaatilise algorimtiga otsida nüüd kõige lühem tee kasutaja juurde.
  • Collisioniga sprite hävitamine - algul oli Collider mõõga küljes ning ajaliselt ei jõudnud kasutaja vastast piisavalt kiiresti hävitada. Tuli teha eraldi hitbox, mis tekib niipea kui kasutaja ründamise nuppu vajutab


Arenduse failid

Üldine Seletus

Pilt BitBucketist - Üldine arenduspilt esitluseni - pildistatud 18.12.2014.

Puudu on mõned updated, kuna faile jagati tihti ka läbi teiste vahendite (skype ja otsene üleslaadimine bitbucketisse ilma commitita) ning seega pildil ei ole neid näha.

Puudu

Ülemiselt pildilt on puudu:

  • Esialgselt tehtud kaardid/gridid - Novembri paiku oli meil töö juba tegelikult käimas. Kuigi sel ajal tutvusime me täpsemalt Unity endaga ning laadisime üles esimesed sprited/maailmad/liikumised. Kuna aga Detsembris sai tehtud projektile tehtud suur "overhauli", siis enne seda meie tööd pole BitBucketisse laetud.
  • Animatsioonide tegemine - Võttis aega ligikaudu 2 päeva. 1 päev animatsioonide loomiseks ning scriptide loomiseks/kinnitamiseks. 1 päev animatsioonide ilusamaks tegemiseks/kiirendamiseks/bugfixideks.
  • HitBox-de Collision - Võttis aega ligikaudu 1 päev. Kuna algul oli seatud hitbox otse mõõga külge, tekksid ajastusbugid. Parandati ära HitBoxi eraldamisega mõõga küljest.
  • Death/Win screen - Kuigi on lisatud, ei hakanud hetkel seda commitima, kuna plaanis on lõpplahendusele teha teistsugused lahendused mängu võidule/kaotusele.
  • Paljud bugfixid - Uute lahenduste lisamisal ning täiendamisel tekkisid bugid. Kui nendega sai kiiresti lahendatud, siis nende parandust me logidesse ei lisanud.
  • Scriptide uuendused - Teiste asjade arenduse käigus, aja jooksul tehti scripte ka ümber. Scripte muudeti kompaktsemaks, eemaldati üleliigseid ridu jne. Kuna seda tehti koos teiste asjade uuendamisega, siis pole need eraldi välja toodud.


Esitlus

Powerpointi esitlus


TODO lõpptooteni

  • Kasutaja ja vastaste turn teha arusaadavamaks. Muuta delay-ga nähtavamaks erinevad käigud. (Lahtine, olenevalt vajadusele)
  • Võiduekraan - Üle viia sprite-lt GUIle, täiendada
  • Suremisekraan - Üle viia spritel-lt GUIle, täiendada
  • Lisada muusika
  • Suurendada mapi disaini
  • Muuta tagatausta
  • Sammuloendur


Arenduskäik esitlusest lõpptooteni

  • 19.12.2014 - Lisatud muusika
  • 19.12.2014 - Lisatud Score lugeja
  • 19.12.2014 - Game Over üle viidud GUIle
  • 19.12.2014 - Win Screen üle viidud GUIle
  • 19.12.2014 - Soundid lisatud
  • 20.12.2014 - BugFixes, Build Fix
  • 20.12.2014 - DeathBug Fix (Unity Viga -_-)
  • 21.12.2014 - Lisatud Controls seletus mängu sisse
  • 21.12.2014 - Mapi Suurendus
  • 22.12.2014 - Koodi kommenteerimine ning mängu upload


Lõpptoode

Tähelepanu!

1: Esimest korda mängu proovijale võib see tunduda raske, võibolla isegi võimatu. Kasutatud on pusleelemente ning trikke/trolle. See on disaini poolest nii loodud. Kindlustame siiski, et mäng on täiesti läbitav.

2: Mängumaailm ei ole küll väga suur. Kuna see mäng ei ole aga kerge, võib lõppu jõudmine võtta aega. Mängu pikkus sõltubki nuputamisest, kuidas lõppu jõuda.

3: Valged jooned, mis vahel liikudes tekivad on seotud mittesujuva liikumisega. Kuna map on loodud ise tehtud Grid süsteemil väikeste Tile-dega, siis Unityle see väga ei meeldi ning tekitab vahel valged jooned sisse kus Tiled ühenduvad. Sellele me normaalset parandust otseselt ei leidnud, kui välja arvata kogu Gridi ümbertegemine(mis tähendaks kõikide algoritmide muutmist) või poest spetsiaalsete Gridide ostmine (40-60$ eest).

Aruanne projekti kohta

Aruanne - Arendusprotsess, Kasutusjuhend, Lahenduse kirjeldus

Juhend

Mäng on kokkupakitud kujul, mille sees on faild vastavalt OP süsteemile: Hubris.exe ning Data kaust (Windows), App (Mac), x86-x64 (Linux).

NB: Kuna meil muud OP süsteemid puuduvad, siis ise oleme järgi proovinud ainult Windows süsteemi.

Ette tuleb Unity Launcher, kust kasutaja saab endale valida sobiva resolutsiooni ning Fullscreen(täisekraan) või Windowed mode(akna vaade koos ääristega). Mäng ei ole aja peale ning kuna kõigepealt on kasutaja käik, ei ole kiirustada vaja. Kui kasutaja ei ole eelnevalt vajaminevate nuppudega kokku puutunud, siis võib neid mängu alustades näha vasakul pool ekraani ääres. Esimese liikumissammuga need peidetakse, et need ei segaks kasutaja mängu.


--- Vajaminevad nupud ---

"W" - liikumine üles

"A" - liikumine vasakule

"S" - liikumine alla

"D" - liikumine paremale

"Q" - liikumine diagonaalis üles+vasakule

"E" - liikumine diagnoaalis üles+paremale

"Z" - liikumine diagonaalis alla+vasakule

"C" - liikumine diagonaalis alla+paremale

"Space" - mõõgalöök enda ette

"R" - reset map

"ESC" - mängu sulgemine


--- Olemas on ka XBOX controlleri tugi ---

"D-Pad" - liikumine

"L Button" - liikumine diagonaalis alla+vasakule

"R Button" - liikumine diagonaalis alla+paremale

"Trigger 1" - liikumine diagonaalis üles+vasakule

"Trigger 2" - liikumine diagonaalis üles+paremale

"X" - mõõgalöök enda ette

"Y" - reset map

"Start" - mängu sulgemine


Kasutaja lööb mõõgaga alati sinna, kuhu tema nägu suunatud on. Seega vastane tuleb meelitada vastavalt käikudega enda ette, et teda mõõgalöögiga saaks hävitada. Kui vastane on sattunud kasutaja lähedal olevale ruudule (kõrvale või diagonaalis) on kasutajal võimalus põgeneda, liikudes diagonaalis temast eemale. Kuna vastane saab liikuda ainult 4 suunas, ning kasutaja 8 suunas, siis diagonaalis liikudes, liigub kasutaja kiiremini kui vastane. Kui aga kasutajal ei ole võimalik põgeneda ega vastast enda ees ära hävitada, siis järgmise käiguga astub vastane samale ruudule kui kasutaja, lõppedes kasutaja surmaga. Kuna elud meie mängus puuduvad, toimub mõlema poole hävitamine silmapilgselt.

Maas on olemas lülitid, mis avavad uksi, et mängus edasi liikuda. Mõned lülitid ei pruugi avada otse ees vajaminevat ust, vaid hoopis midagi kaugemat. Samuti, on mõned lülitid lõksud, seega oma valikutega peab olema ettevaatlik! Iga käik (kõndimine kui ka mõõgalöök) salvestatakse punktiarvuna üleval-vasakul olevas sammude lugejas.

Kui kasutaja on avanud kõik uksed ning jõudnud piisavalt kaugele, leides väljapääsu, tervitatakse kasutajat võiduekraaniga ning eelnevalt mainitud käikude arvuga. Mida vähem käike kasutaja tegi, seda paremini on mäng läbitud.

Mäng

Windowsx86

Windowsx64

MacOSx86

MacOSx64

MacUniversal - Soovitatav Mac kasutajatele

LinuxUniversal

Lähtekood

Scriptid

Kõik Unity failid

Hubris