Eevert Saukkokoski, 7.12.2008
Studio Wars on vuoropohjainen strategiapeli, jonka lähin innoittaja on Nintendon Advance Wars. Tarkoituksena on toteuttaa sekä kaksinpeli että ottelu tietokonevastustajan kanssa usean eri kenttä- ja yksikkötyypppien kyydittämänä. Peliä pelataan karttaruudulla neliökoordinaatistossa, jossa näkyvät pelaajan hallitsemat yksiköt ja muut resurssit. Yksikköä klikkaamalla tulee näkyviin ruudukko, jolta ilmenevät mahdolliset liikkumis-, hyökkäämis- tai muut kohteet, joihin pelaaja voi yksikön ohjata. Peli etenee siten, että kukin pelaaja liikuttaa vuorollaan kaikkia haluamiaan yksiköitä ja luovuttaa sitten vuoron seuraavalle.
Pelin käyttöliittymä toteutetaan enimmäkseen Swingillä, mutta tukena saatetaan käyttää jotakin apukirjastoa kuten LWJGL:ää.
Pelilogiikan toteuttavat luokat tehdään TDD:tä soveltaen. Testaukseen käytetään JUnitia ja testausystävällisen koodin aikaansaamiseen Googlen Guicea, mikäli tarvetta automatisoidulle dependency injection -ratkaisulle ilmenee.
Lopputuloksesta ei tule Appletia, sillä viime vuosituhannelle kuuluvan teknologian tukeminen ei innosta. Sen sijaan julkaisen Java Web Start -version, joka tuo netistä käynnistettävyyden mukavuudet ilman juurikaan huonoja puolia.
Vaikein toteutettava asia on tekoälyvastustaja. Gamasutran artikkeli tarjoaa hyvän pohjan, mutta algoritmin toteuttaminen matalalla tasolla ei tule olemaan triviaalia: algoritmi olettaa, että voidaan tehdä korkean tason havaintoja kuten "vihollisen yksikkö uhkaa tukikohtaa". Jos mahdollista, minimaxin soveltaminen saattaisi johtaa mielenkiintoisiin tuloksiin. Algoritmin pohja on kuitenkin tehtävien tunnistamisessa, priorisoimisessa ja toteuttamisessa, eikä sitä voi lähteä hienostelemaan ennen kuin aivan lopuksi.
Yksiköiden liikutteluun vaaditaan jonkinlainen reitinhakualgoritmi. Lähtökohtainen implementaatio on Dijkstran mukainen, mutta siihen tulee luultavasti pieniä optimointimuutoksia jotka ottavat huomioon yksiköiden rajalliset nopeudet.
Pelitilanne
sisältää snapshotin kartasta ja muista tiedoista. Pelitapahtumat
näkyvät aina viimeisimmässä pelitilanteessa, ja vuoron vaihtuessa
pelitilanne pistetään talteen. Näin voidaan tarvittaessa kelata niin
monta vuoroa taaksepäin kuin halutaan. Toisaalta voidaan vaikkapa
esittää pelin päätteeksi pelin eteneminen pikaesityksenä.
Kartta
sisältää tiedot maastotyyppien, yksiköiden ja muiden resurssien
sijainnista. Kultakin koordinaatilta voidaan tiedustella sen
maastotyyppiä ja siinä olevaa yksikköä (korkeintaan yksi ruutua
kohden).
Yksikkö
sisältää tiedot yksikön liikkumis-, hyökkäys- ja puolustuskeinoista.
Kuvauksia ei tehdä suoraan tähän luokkaan, vaan yksikkö ainoastaan
kokoaa yhteen ominaisuuksia kuvaavat oliot.
Toiminta
toteuttaa annettuja komentoja kuten liikkuminen ja hyökkääminen.
Huolehtii siitä että yksikön ilmoittavat kyvyt (esim. vahva hyökkäys
tietynlaista puolustusta vastaan) tulevat otetuksi huomioon.
Projekti on tarkoitus toteuttaa vaiheittain:
Tavoitetahti työskentelylle on 20 tuntia viikossa alkaen viikolla 50.