Meeskond "Eagles With Lasers": Difference between revisions
No edit summary |
No edit summary |
||
(16 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) | ||
* | *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 - | *Urmo Tamme - esialgne mänguvälja kavand, menüüd, levelite revamp. | ||
*Sander Baikov - Vastaste AI, | *Sander Baikov - Vastaste AI, spawnimine, koodi revamp, graafika jpm. | ||
*Karl Männil - Vastaste AI, | *Karl Männil - Vastaste AI, xbox puldi tugi, helid. | ||
*Aare Roosiväli - | *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. | |||
=Tuesday, 29 September 2010= | =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 | 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 | 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. | ||
==Monday, 1 November 2010== | |||
Olemas menüü, 3 tüüpi vastased, levelid, basic punktiarvetus. | |||
=Attribution= | |||
Background images by [http://funerium.deviantart.com/art/Package-Cosmos-8-146789953?q=boost%3Apopular+in%3Aresources+space&qo=115 Funerium @ deviantArt]. | |||
Collision detection code adapted from [http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2D/Putting_CD_into_practice.php Riemers XNA tutorial]. | |||
Explosion animation code adapted from [http://msdn.microsoft.com/en-us/library/bb203866.aspx MSDN] |
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
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