Meeskond "Eagles With Lasers": Difference between revisions

From ICO wiki
Jump to navigationJump to search
Sbaikov (talk | contribs)
No edit summary
Sbaikov (talk | contribs)
No edit summary
 
(12 intermediate revisions by 2 users not shown)
Line 3: Line 3:
*Sander Baikov (D22)
*Sander Baikov (D22)
*Karl Männil (D22)
*Karl Männil (D22)
*Sander Baikovi (A31)
*Aare Roosiväli (A31)


=Eesmärk=
=Eesmärk=
Luua pealtvaatega 2d tulistamismäng kosmoses. (Midagi Asteroid stiilis.)
Luua pealtvaatega 2d tulistamismäng kosmoses. (Midagi Asteroid stiilis.)
=Link koodile=
[http://enos.itcollege.ee/~aroosiva/C%23/SpaceThing.rar Kood]


=Umbkaudne tööjaotus=
=Umbkaudne tööjaotus=
*Urmo Tamme - Mänguvälja parameetrid paika, mängija laev ja selle liikuma panemine, laeva asukoht peaks olema mingis muutujas kajastatud, et oleks hiljem võimalik vastaseid kaela saata ja võimalus neid lasta.
*Urmo Tamme - esialgne mänguvälja kavand, menüüd, levelite revamp.
*Sander Baikov - Vastaste AI, esialgne spawnimine
*Sander Baikov - Vastaste AI, spawnimine, koodi revamp, graafika jpm.
*Karl Männil - Vastaste AI, esialgne spawnimine
*Karl Männil - Vastaste AI, xbox puldi tugi, helid.
*Aare Roosiväli - Graafika, olemasoleva põhjal levelite genereerimine, punktiarvestus, menüüd, scoreboard?
*Aare Roosiväli - planeerimine, esialgsed levelid, koodi revamp.
 
=Mängimisjuhis=
Tapa kõik vastased ekraanil. Kasutatavad nupud on kirjas mängus, Help menüü all. Skoori saad iga korra eest, mil vastasele pihta saad. Mängus on ka supertulistamine, mille tekitatud kuulid tapavad kõik, kes teele ette jäävad, selle eest saab aga vähem punkte. Punkte võetakse maha kui sa pihta saad. Mäng lõppeb kui kõik vastased on hävitatud.
 
=Leitud lahendused=
== Collision Detection ==
Collision detection käib kahes järgus. Esmalt toimub väga lihtne kontroll, kus vaadatakse kas kaks objekti on üksteise lähedal võrreldes nende pikimaid kylgi ja positsiooni. Kui objektid on üksteise lähestikku võrreldakse nende värvimaatrikseid. Värvimaatriksid luuakse mängu käima pannes laadimise ajal, mil luuakse kaks maatriksit. Esimeses maatriksis on kirjas mis pikslid objektil on läbipaistvad. Teine maatriks tähistab objekti positsiooni ja rotationit. Kui objektid on üksteisele lähedal, pannakse n.ö värvimaatriks positsiooni maatriksi peale mõlemal objektil ja võrreldakse maatriksite liikmeid omavahel.
 
== Animatsioonid ==
Animatsioonnid kuvatakse ühest pildist, kus on kõik kaadrid ja eri kaadrite näitamiseks näidatakse lihtsalt ühte osa pildist.


=Tuesday, 29 September 2010=
== Menüüd ja levelid ==
Menüüde ja levelite vahetamine käib lihtsate if tingimuste ja muutujate abil. Levelid vahetuvad kui on tapetud teatud arv vastaseid. Leveli vahetusest annab märki tausta muutumine ja kiiremad vastased.
 
== Kuulid ==
Kuulide tulistamisel tekitatakse iga kuuli jaoks Bullet objekt, mida hoitakse listis. Kui ses listis on objekte siis toimub nende collision detection kas vastase või mängijaga, olenevalt sellest, kes kuuli välja laskis. Supertulistamisel tekitatakse mitu kuuli, mis erinevad tavalistest kuulidest välimuse poolest ja neid ei eemaldata ekraanilt kui vastane nendega pihta saab. Seega supertulistamine tapab kõik vastased oma teel. Kuulid eemaldatakse listist ka siis kui nad ekraani serva jõuavad.
 
== Vastased ==
Vastaseid on kolme tüüpi. Esimesed liiguvad niisama, teised liiguvad vastase poole (kamikaze), kolmandad liiguvad ja tulistavad suvalises suunas. Vastased tekitatakse ekraani üleval servas, suvalise suunaga. Kuna ekraani serva sattudes liigutatakse vastased (ja ka mängija) vastasserva, siis mängija jaoks võivad vastased tekkida suvalisse serva. Samuti on ka kontroll, et vastase nurk ei oleks horisontaali ega vertikaali lähedane.
 
Teist tüüpi vastased liiguvad mängija poole kasutades XNA teegis olevat Vector 2 Linear Interpolationit, kus velocity on mängija ja vastase vahelise kauguse pöördväärtus, et tagada vastase konstantne kiirus. Samuti on vastase pööramise kiirus piiratud. Muidu võis tekkida olukord kus mängija oli hiljuti pihtasaamisest puutumatu ja teist tüüpi vastane värises tema peal.
 
Kolmandat tüüpi vastase peal on kahur, mis teatud aja tagant muudab sujuvalt oma nurka ja seejärel tulistab.
 
== Elud ==
Elusid kui selliseid otseselt ei ole. Selle asemel otsustasime skoori alandada, kui mängija saab pihta kuuli või vastasega, muidu muutus mäng liiga raskeks.
 
=Log=
==Tuesday, 29 September 2010==
Meeskonna formeerimine. valisime mängu tüübi.
Meeskonna formeerimine. valisime mängu tüübi.
Leppisime kokku, et esijalgu tutvume keskkonnaga, ning enne järgmist kokkusaamist teeme esijalgsed kavandid nii keskkonnast, kui ka kosmoselaevast.
Leppisime kokku, et esijalgu tutvume keskkonnaga, ning enne järgmist kokkusaamist teeme esijalgsed kavandid nii keskkonnast, kui ka kosmoselaevast.


=Monday, 04 October 2010=
==Monday, 04 October 2010==
Leppisime kokku mängu eialgse ülesehituse.
Leppisime kokku mängu eialgse ülesehituse.


=Wednesday, 06 October 2010=
==Wednesday, 06 October 2010==
Tööjaotus by Aare. Täpsustasime mõnda ideed.
Tööjaotus by Aare. Täpsustasime mõnda ideed.


=??? Ocotber 2010=
==??? Ocotber 2010==
Urmo sai valmis laeva ja sellega liikumise/laskmise.
Urmo sai valmis laeva ja sellega liikumise/laskmise.


=Sunday, 17 October 2010=
==Sunday, 17 October 2010==
Sander põhjalikult refaktoreeris koodi, jagas koodi eraldi osadeks.
Sander põhjalikult refaktoreeris koodi, jagas koodi eraldi osadeks.
Sander & Karl - esimest tüüpi vastased.
Sander & Karl - esimest tüüpi vastased.


=22, 23, 24 October 2010=
==22, 23, 24 October 2010==
Sander tekitas teist tüüpi vastased, elude osa.
Sander tekitas teist tüüpi vastased, elude osa.
KArl tegeles mängu helilise poolega.
KArl tegeles mängu helilise poolega.


=23 to ... October 2010=
==23 to ... October 2010==
Aare tegeleb mängu levelite ja menüüde genereerimisega.
Aare tegeleb mängu levelite genereerimisega.


=Monday, 25 October 2010=
==Monday, 25 October 2010==
Toimib laeva liigutamine. Olemas 2 esialgset vastast, kes oskavad laeva jälitada ja keda saab lasta.
Toimib laeva liigutamine. Olemas 2 esialgset vastast, kes oskavad laeva jälitada ja keda saab lasta.
Puuduvad veel levelid, korralik punktisüsteem, xboxi tugi.
 
==Monday, 1 November 2010==
Olemas menüü, 3 tüüpi vastased, levelid, basic punktiarvetus.


=Attribution=
=Attribution=

Latest revision as of 16:48, 23 December 2010

Rühma liikmed

  • Urmo Tamme (D21)
  • Sander Baikov (D22)
  • Karl Männil (D22)
  • Aare Roosiväli (A31)

Eesmärk

Luua pealtvaatega 2d tulistamismäng kosmoses. (Midagi Asteroid stiilis.)

Link koodile

Kood

Umbkaudne tööjaotus

  • Urmo Tamme - esialgne mänguvälja kavand, menüüd, levelite revamp.
  • Sander Baikov - Vastaste AI, spawnimine, koodi revamp, graafika jpm.
  • Karl Männil - Vastaste AI, xbox puldi tugi, helid.
  • Aare Roosiväli - planeerimine, esialgsed levelid, koodi revamp.

Mängimisjuhis

Tapa kõik vastased ekraanil. Kasutatavad nupud on kirjas mängus, Help menüü all. Skoori saad iga korra eest, mil vastasele pihta saad. Mängus on ka supertulistamine, mille tekitatud kuulid tapavad kõik, kes teele ette jäävad, selle eest saab aga vähem punkte. Punkte võetakse maha kui sa pihta saad. Mäng lõppeb kui kõik vastased on hävitatud.

Leitud lahendused

Collision Detection

Collision detection käib kahes järgus. Esmalt toimub väga lihtne kontroll, kus vaadatakse kas kaks objekti on üksteise lähedal võrreldes nende pikimaid kylgi ja positsiooni. Kui objektid on üksteise lähestikku võrreldakse nende värvimaatrikseid. Värvimaatriksid luuakse mängu käima pannes laadimise ajal, mil luuakse kaks maatriksit. Esimeses maatriksis on kirjas mis pikslid objektil on läbipaistvad. Teine maatriks tähistab objekti positsiooni ja rotationit. Kui objektid on üksteisele lähedal, pannakse n.ö värvimaatriks positsiooni maatriksi peale mõlemal objektil ja võrreldakse maatriksite liikmeid omavahel.

Animatsioonid

Animatsioonnid kuvatakse ühest pildist, kus on kõik kaadrid ja eri kaadrite näitamiseks näidatakse lihtsalt ühte osa pildist.

Menüüd ja levelid

Menüüde ja levelite vahetamine käib lihtsate if tingimuste ja muutujate abil. Levelid vahetuvad kui on tapetud teatud arv vastaseid. Leveli vahetusest annab märki tausta muutumine ja kiiremad vastased.

Kuulid

Kuulide tulistamisel tekitatakse iga kuuli jaoks Bullet objekt, mida hoitakse listis. Kui ses listis on objekte siis toimub nende collision detection kas vastase või mängijaga, olenevalt sellest, kes kuuli välja laskis. Supertulistamisel tekitatakse mitu kuuli, mis erinevad tavalistest kuulidest välimuse poolest ja neid ei eemaldata ekraanilt kui vastane nendega pihta saab. Seega supertulistamine tapab kõik vastased oma teel. Kuulid eemaldatakse listist ka siis kui nad ekraani serva jõuavad.

Vastased

Vastaseid on kolme tüüpi. Esimesed liiguvad niisama, teised liiguvad vastase poole (kamikaze), kolmandad liiguvad ja tulistavad suvalises suunas. Vastased tekitatakse ekraani üleval servas, suvalise suunaga. Kuna ekraani serva sattudes liigutatakse vastased (ja ka mängija) vastasserva, siis mängija jaoks võivad vastased tekkida suvalisse serva. Samuti on ka kontroll, et vastase nurk ei oleks horisontaali ega vertikaali lähedane.

Teist tüüpi vastased liiguvad mängija poole kasutades XNA teegis olevat Vector 2 Linear Interpolationit, kus velocity on mängija ja vastase vahelise kauguse pöördväärtus, et tagada vastase konstantne kiirus. Samuti on vastase pööramise kiirus piiratud. Muidu võis tekkida olukord kus mängija oli hiljuti pihtasaamisest puutumatu ja teist tüüpi vastane värises tema peal.

Kolmandat tüüpi vastase peal on kahur, mis teatud aja tagant muudab sujuvalt oma nurka ja seejärel tulistab.

Elud

Elusid kui selliseid otseselt ei ole. Selle asemel otsustasime skoori alandada, kui mängija saab pihta kuuli või vastasega, muidu muutus mäng liiga raskeks.

Log

Tuesday, 29 September 2010

Meeskonna formeerimine. valisime mängu tüübi. Leppisime kokku, et esijalgu tutvume keskkonnaga, ning enne järgmist kokkusaamist teeme esijalgsed kavandid nii keskkonnast, kui ka kosmoselaevast.

Monday, 04 October 2010

Leppisime kokku mängu eialgse ülesehituse.

Wednesday, 06 October 2010

Tööjaotus by Aare. Täpsustasime mõnda ideed.

??? Ocotber 2010

Urmo sai valmis laeva ja sellega liikumise/laskmise.

Sunday, 17 October 2010

Sander põhjalikult refaktoreeris koodi, jagas koodi eraldi osadeks. Sander & Karl - esimest tüüpi vastased.

22, 23, 24 October 2010

Sander tekitas teist tüüpi vastased, elude osa. KArl tegeles mängu helilise poolega.

23 to ... October 2010

Aare tegeleb mängu levelite genereerimisega.

Monday, 25 October 2010

Toimib laeva liigutamine. Olemas 2 esialgset vastast, kes oskavad laeva jälitada ja keda saab lasta.

Monday, 1 November 2010

Olemas menüü, 3 tüüpi vastased, levelid, basic punktiarvetus.

Attribution

Background images by Funerium @ deviantArt. Collision detection code adapted from Riemers XNA tutorial. Explosion animation code adapted from MSDN