Marjametsa Areena Ohjelmistojen suunnittelu, harjoitustyön työohje Muutoshistoria: 1.0 ensimmäinen versio julkaistu 1. Sisällysluettelo 2. Taustatarina... 1 3. Pelin idea ja asiakasvaatimukset... 2 3.1 Asiakasvaatimuksia... 2 4. Harjoitustyön toteutus... 2 vaiheet... 2 5. Tarkempi kuvaus pelistä... 3 5.1 Taistelijat... 3 5.2 Taistelut... 8 5.3 Campus Areena... 9 6. Valmiina saatavilla olevat koodit ja tiedostot... 9 2. Taustatarina Neliosainen Marjametsä trilogia etenee vääjäämättä kohti jännittävää loppuratkaisuaan. Edellisten osien monimutkaisiin juonirakennelmiin ja hienovaraisiin nyansseihin voi tutustua halutessaan vanhoja työohjeita vilkaisemalla. http://www.cs.tut.fi/~ohjsuun/marjametsa2.pdf http://www.cs.tut.fi/~ohjsuun/marjametsan_tarinat_original.pdf Yhteenvetona jo kaksi kertaa sankaritar Laura on pelastanut universumin tai ainakin jotain itselleen tärkeää pahantahtoisten metsäneläinten kynsistä/evistä/käpälistä/sorkista. Pelastusretkillä Lauralle selviää, että taustalla onkin jotain suurempaa, saadakseen metsän voimat hallintaansa, hänen on jatkettava. Ylimaallisten voimien kutsumana parhaista parhaat taistelulajien taitajat kokoontuvat Marjametsään aina kun Mars ja Neptunus deklinoivat maan derivaatan kanssa. Myyttisen yliluonnolliset voimat järjestävät metsän keskellä olevalla Campus Areenalla myyttisen turnauksen, jonka myyttinen voittaja hallitsee koko myyttisen Marjametsän myyttistä piirikuntaa seuraavien 1
vuosien ajan. Tämän turnauksen voitto voi ratkaista koko ihmiskunnan kohtalon, tai ainakin varmistaa sen että oravat ja pandat eivät enää rettelöi ja häiritse sankarittaremme arkea. Lauran on kasattava joukko eteviä taistelijoita ja valmennettava heidät turnauksen voittoon. Joukkueet kohtaavat Campus Areenalla, voitto ratkeaa päihittämällä vastapuoli taistelussa. There can be only one! (team or whatever). Jos pelin perusidea ei tullut täysin selväksi kattavan tarinan avulla, voit käydä kurkkaamassa Areena 1,2,3,4,5,6,7 http://www.seppos.net/areena.html pelejä. 3. Pelin idea ja asiakasvaatimukset Peli koostuu kahdesta erillisestä osiosta, toisessa voidaan värvätä joukkueeseen uusia jäseniä ja hallita nykyisiä ja toisessa ohjataan omaa ryhmää kamppailussa toista vastaan. Areena-osuus on vuoropohjainen ja pelikenttä koostuu ruuduista. 3.1 Asiakasvaatimuksia Pelissä ohjataan useampaa hahmoa ja vastapuolella on 1 n kappaletta tekoälyn ohjastamia vastustajia jonkinlainen taistelusäännöstö ja erilaisia hahmo/otustyyppejä ainakin joku näistä: erilaisia aseita, pitkän kantaman hyökkäyksiä, erilaisia panssareita Taistelun voitto, joko vastapuoli kukistamalla, avainkohteen valloittamalla, lipunryöstöllä tai jollain muulla sopivalla tavalla pelissä on graafinen käyttöliittymä Areenalla voi olla erilaisia ruututyyppejä, ei pelkästään tasaista nurmikenttää tiimin hallinta, joko uusien taistelijoiden värväämistä tai varusteiden hallintaa (ostoa/myyntiä) jonkinlainen turnausformaatti, jossa tulee vastaan useampia joukkueita, cup, liiga tms. kentät, taistelijat ja joukkueet: ei kovakoodaamista, vaan joko alustustiedostojen jne. avulla tai tuottamalla ohjelmallisesti (esim. satunnaistamalla) 4. Harjoitustyön toteutus Harjoitustyö toteutetaan neljässä eri vaiheessa, jokaisessa vaiheessa ollaan tekemisissä oman assarin kanssa. Jokaisen ryhmän jäsenen on oltava läsnä vähintään kolmessa tapahtumassa ja jokaisessa tapahtumassa on oltava vähintään kaksi ryhmän jäsentä (kahden hengen ryhmillä on siis tiukemmat vaatimukset). Viidennessä vaiheessa päästään tutustumaan toisen ryhmän toteuttamaan versioon pelistä ja antamaan työstä vertaispalautetta ja samalla saadaan palkinnoksi myös toisen ryhmän antamaa palautetta. vaiheet: 2
1. Ensimmäisessä vaiheessa toteutetaan ohjelman prototyyppi, jonka tarkoituksena on esitellä tuotetta tilaajalle ja saada todellinen kauppa syntymään. Prototyypin esittelyn lomassa ja sen jälkeen asiakas voi kertoa tarkemmin mitä tuotteelta haluaa. (eli vaatimukset voivat muuttuja ja tarkentua hieman projektin aikana). Prototyyppitoteutus sisältää jotain demottavissa olevaa käyttöliittymätason toimintaa ja antaa kuvan siitä, millainen lopullinen tuote voisi olla. 2. Seuraavassa vaiheessa luodaan tarkempi suunnitelma toteutettavasta pelistä. Miltä peli suunnittelutasolla näyttäisi? Mitä eri osakokonaisuuksia siihen tulee, mitkä ovat niiden vastuualueet? Miten käyttöliittymä ja muu ohjelma on erotettu toisistaan? Minkälaista työnjakoa olette ajatelleet? Jne. 3. Kolmannessa vaiheessa käydään esittelemässä työtä, jossa on toteutettuna ainakin suunnitteluvaiheessa toimitettavaksi luvatut ominaisuudet (suunnitteluvaiheessa assarin kanssa sovitaan mitä ollaan toteuttamassa). Lisäksi tässä vaiheessa on mahdollisuus kysellä assarilta käytetyistä ratkaisuista ja varmistua siitä, että työssä ollaan menossa oikeaan suuntaan. 4. Neljännessä osassa tavataan loppudemon merkeissä oman assarin kanssa. Lisäksi tarjolla on vapaaehtoinen demotapahtuma, jossa pääsee vilauttamaan omaa työtään muille samalla saa mahdollisuuden ihailla muiden tuotoksia. 5. Vertaisarvioinnissa käydään läpi toisen ryhmän työ ja annetaan siitä palautetta. Tähän tulee oma erillinen lyhyt ohjeensa. (versiohallinnassa) 5. Tarkempi kuvaus pelistä Seuraavassa on annettu tarkempia määrittelyjä pelistä niille jotka eivät halua tehdä varsinaista pelisuunnittelua. Taistelijoiden kykyjen luomiseen ja perustaistelumekaniikkaan tullaan tarjoamaan valmista koodia, jota voi hyödyntää halutessaan omassa ohjelmassaan. Samoin tuntemattoman mutta etevän graafisen suunnittelijan loihtimia grafiikoita saa käyttää. Myös kuvien lataamiseen on tarjolla apua. 5.1 Taistelijat Areenan taistelijoiden perusominaisuudet määräytyvät seuraavasti: voima kuinka paljon vahinkoa syntyy, kun osuma osuu vastustajaan nopeus kuinka nopea hahmo on, määrää toimintajärjestyksen ja tekee osumisesta vaikeampaa kesto kuinka paljon kurmuutusta kohde kestää ennen kuin kuolo korjaa/taju lähtee panssari joko varusteilla tai osalla otuksista luonnostaan olevaa vahinkoa ehkäisevää ominaisuutta tuuri tuurilla voi saada todennäköisemmin kriittisiä osumia. liike perusliike/vuoro, poikkeusotukset nopeampia (hinta uuden hahmon hankkiminen omaan joukkueeseen) 3
Alla on lueteltu erilaisia taistelijatyyppejä pelistä, nämä eivät ole siis eri rotuja tai mitään sellaista, sehän olisi rasistista. Näistä voi valita vain osan peliin tai kehitellä itse mielenkiintoisempia ja jännittävämpiä. ihminen (niin tylsä, ettei siitä ole edes kuvitusta) tavallinen ja tylsä, mutta osaa kaikenlaista kohtuullisesti. voima 5-15 nopeus 6-14 kesto 8-19 panssari 0 tuuri 1-20 liike 1 hinta 50+kaikkien ominaisuuksien yhteismäärä Kettutyttö Vimmainen turkisten vastustaminen on tämän kettuisan nuoren naisen palava intohimo, ei haittaa vaikka turkki olisi vielä melko pysyvästi kiinni sen alkuperäisessä omistajassa. Saa tuplavoimat karvaisia/turkikkaita hahmoja vastaan taistellessa. Voi käyttää näitä vastaan spaymaalihyökkäystä, joka masentaa hyökkäyksen kohdetta ja saa kohteen tuntemaan itsensä erittäin huono-onniseksi seuraavan kolmen vuoron ajan. voima 5-9 nopeus 5-15 kesto 10-16 panssari 0 tuuri 5-10 liike 1 hinta 60+kaikkien ominaisuuksien yhteismäärä bonuskyvyt: tuplavoimat karvaisia vastustajia vastaan, myös turkispanssari lasketaan. Spraymaalihyökkäys, tavallisen hyökkäyksen sijaan voi käyttää spraymaalihyökkäystä, joka laskee kohteen tuurin nollaan kolmen vuoron ajaksi, ei muuta vahinkoa. 4
Sammakkomies Sammakkomiehet ovat ilman suutelua jääneiden kirottujen prinssien ja sammakoiden lemmen tuotoksia. Eivät mitään komistuksia ja ovat huono-onnisia, mutta osaavat loikata korkealle. voima 6-15 nopeus 8-20 kesto 6-12 panssari -1 (vähentää mahdollisia lisäpanssareita) tuuri 1-2 liike 1 hinta 60+ominaisuuksien yhteissumma bonuskyky, loikka: voi hypätä yhden ruudun yli, jos ruudussa on läpipääsemätöntä maastoa tai vihollinen/oma hahmo. Laskeutumiskohdassa pitää olla vapaa ruutu. pupu-jussi Jussi-nimisen miehen ja jäniksen ristisiitos, perhanan vikkelä, mutta ei kovinkaan hyvä kestämään kurmuutusta. Liikkeen ansiosta pystyy toimimaan kahdesti saman vuoron aikana. voima 3-6 nopeus 15-30 kesto 4-7 panssari 0 tuuri 5-19 liike 2 hinta 160+ominaisuuksien yhteissumma Ursustauri Ursustaurit eli ihmis-karhut ovat kuten kentaurit, mutta niillä on hevosen alaruumiin sijaan karhun vastaava. Alun perin karhun puremia ihmisiä tai ihmisen puremia karhuja, jotka ovat sitten tämän ansiosta saaneet jotain outoja ihmiskarhuusmutaatioita. Ovat vahvoja ja kieltäytyvät kaikenlaisesta 5
vaatetuksesta. Ovat erityisen allergisia alpakka-esineille. Ursustaurit ovat jatkuvasti vittuuntuneita ärsyyntyneitä, ihmisen pää ja karhun ruokahalu ja ruokavalio ovat huono yhdistelmä. Alttiita saamaan raivokohtauksia, jolloin pystyvät keskittymään vain karjumiseen (vuoro kuluu vain huutaessa). voima 15-30 nopeus 8-15 kesto 15-25 panssari 2 tuuri 2-8 liike 1 hinta 200+ominaisuuksien yhteissumma bonuskyky: karjuntakohtaus, 15% mahdollisuus että vuoro kuluu huutamiseen. Bull-Mentula Kehonrakentajan ja härän välimuoto, kehonrakentajan yläruumis ja härän alaruumis ja aivot, joten pystyy toimimaan kohtuullisen tolkullisesti. Kieltäytyy käyttämästä mitään panssareita tai vaatteita. Bonukset: Ei luotettavin toimija, saattaa jumittaa poseeraamaan tai syömään rahkaa ja joutua luontaistuotteiden ja rahkan liikasyönnin aiheuttamaan raivotilaan (ns. rahkaraivo, quark rage). (yhdennäköisyys tai nimestä syntyvät mahdolliset assosiaatiot kehenkään todellisen maailman henkilöön ovat täysin tahattomia ) voima 20-35 nopeus 8-12 kesto 10-15 panssari 0 tuuri 1-8 liike 1 hinta 150+ominaisuuksien yhteissumma bonuskyvyt: luontainen käytös: 15% todennäköisyys, saattaa olla vuoron tekemättä mitään syöden rahkaa tai pullistellen. Rahkaraivo: 15% todennäköisyydellä käy lähimmän taistelijan kimppuun, oli se sitten oma tai vieras. (samalla etäisyydellä olevien suhteen saa soveltaa parhaaksi katsomaansa toimintatapaa). 6
Seireeni Seireenit eli hyljenaiset ovat tunnettuja lähinnä karmivasta äänestään, eivätkä vanhoista legendoista huolimatta ole kovin kummoista silmänruokaakaan. Ovat kömpelöitä köntyksiä kuivalla maalla ja lisäksi uskomattoman laiskoja, joten tarvitsevat kantoapua liikkumiseen. voima 6-16 nopeus 5-8 kesto 10-15 panssari 1 tuuri 5-10 liike 0 tai 1, vaatii viereiseen ruutuun toisen saman joukkueen jäsenen (kantajaksi), muuten liikkuminen ei onnistu, hyökkääminen kyllä hinta 70+ominaisuuksien yhteissumma Bonus: erikoiskyky, lamaannuttava rääkäisy, 50% mahdollisuus lamauttaa vastustaja seuraavan vuoron ajaksi Lohikäärme Lohen ja käärmeen risteytys, maistuu herkulliselta ja nahasta saa näyttäviä kenkiä, muuten melko hyödytön otus. Ovat yllättävän fiksuja, luultavasti tulleet radioaktiivisen norjalaisen puraisemiksi tai saaneet jollakin muulla uskottavalla tavalla ajattelu- ja kommunikaatiokyvyn. voima 3-5 nopeus 7-12 kesto 2-9 panssari 0 tuuri 5-15 liike 1 hinta 50+ominaisuuksien yhteissumma bonuskyky: Myrkytys: kriittisesti onnistunut hyökkäys aiheuttaa myrkytyksen, joka vie uhrilta puolet osumapisteistä seuraavan kahden vuoron ajan (pyöristys alaspäin, ei tapa yhdessä pisteessä olevaa) 7
Vampyyri Vampyyrien suurin kutsumus on stalkata lukioikäisiä teinejä, mutta erityisesti rumemmista väijyjistä vinkataan helposti poliisille, joten nämä joutuvat etsimään muutakin tekemistä. Tykkäävät verestä, kestävät hyvin mätkintää ja paranevat nopeasti, puuesineet sydämessä pienoinen heikkous. voima 10-18 nopeus 10-18 kesto 15-20 panssari 0 tuuri 1-6 liike 1 hinta 150+kaikkien ominaisuuksien yhteismäärä bonuskyvyt: verenhimo: jos taistelija kolmen ruudun säteellä kaatuu (kesto nollaan tai alle), vampyyrin on pakko käydä ruokailemassa. Ruokailu vie yhden toimintovuoron, liikkuminen viereen normaalisti (ruutu/vuoro). parantuminen: ei voi kuolla tai loukkaantua pysyvämmin normaalin hyökkäyksen seurauksena, paranee automaattisesti taistelun jälkeen ja on valmis seuraavaan koitokseen. 5.2 Taistelut Taistelumekaniikan perusidea selitetään tässä luvussa. Voit käyttää myös omia taistelusääntöjä tai hyödyntää valmiina annettua taistelumoottoria. Kun kesto vähenee nollaan tai alle, on taistelija poissa pelistä. Jos kesto menee kunnon mätkäisyn seurauksena -5:een tai alle, gladiaattoria ei ole areenakelpoinen seuraavaan taisteluun. Jos kesto painuu -10:een tai alle, gladiaattori vetäytyy autuaammille marjametsille. Osumatodennäköisyys perustuu voiman, nopeuden ja tuurin vertailuun. Voimalla torjutaan ja ruhjotaan läpi torjunnan, nopeudella väistetään ja toisaalta osutaan ja tuurista on aina iloa. Normaalisti todennäköisyys osua on 50%. Tämä kasvaa tai laskee laskemalla molemmilta taistelukyky: voima/2+nopeus+tuuri. Taistelukykyjen erotus hyökkääjä-puolustaja lisätään perustodennäköisyyteen. Panssari vähentää suoraan vahinkoa, vain panssaria suurempi vahinko menee läpi. Osumasta tuleva vahinko määräytyy voiman perusteella ja lasketaan: 1+(voima/5)*D3. Voima/5 pyöristetään ylöspäin ja tulos kertoo, montako kolmikulmaista noppaa on käytössä. (Marjametsän ulkopuolella on sallittua käyttää myös normaalia noppaa ja jakaa sen tulos kahdella). 8
Tuuri kertoo suoraan kriittisen osuman mahdollisuuden. Kriittinen osuma menee läpi panssarin, tekee 1,5 kertaisen vahingon ja lamauttaa kohteen seuraavaksi vuoroksi. Esimerkki, Bull-Mentula (Voima 25 ja tuuri 4) hyökkää seireenin (kesto 12) kimppuun. Osumatodennäköisyyslaskussa prosentiksi tulee 57% ja Bull osuu. Kriittisen mahdollisuus 6%, ei kriittistä osumaa. Vahinkoa tulee 1+5D3heittojen jälkeen 1+1+2+3+3+1=11. Seireenin nahka suojaa yhden pisteen verran ja 10 menee perille asti. Seireenille jää kaksi pistettä elinvoimaa. 5.3 Campus Areena Taisteluareena: areena muodostuu ruuduista ja on esimerkiksi 8*8 kokoinen. Areenalla on erityyppisiä ruutuja, esimerkiksi normaalia käveltävissä olevaa maata, suoruutuja, joissa taisteleminen on hankalampaa, esteitä, kuten kivet tai puut, ansoja, laavaa, marmeladia tms.. Valitse ainakin kaksi tyyppiä. Taistelu vuoropohjaisesti, liikkuminen määräytyy nopeusjärjestyksessä. 6. Valmiina saatavilla olevat koodit ja tiedostot Pelin taistelun perustoiminnallisuuteen, esimerkkialustustiedoston lataamiseen ja perusgrafiikoiden lataamiseen on tarjolla valmistakin koodia. Nämä julkaistaan hieman myöhemmin ja tulevat saataville versiohallintaan. 9