Magi

Contact info
Word
Research
   Publications
Studies
Free Software
Hobbies
Articles
Photography
About me
   Curriculum Vitae

©Marko Grönroos, 1998

Linux-kurssin projekti-ehdotus:
prototyyppi moninpelattavasta reaaliaikaisesta strategiapelistä

Muunnelma moninpelattavasta formulapeli-ehdotuksesta.

Perusajatus

Reaaliaikainen moninpelattava 2D strategiapeli, tyyliin Dune, Total Annihilation, jnejne. (Sellaisia ei linuxille taida olla yhtään, korkeintaan jotain puolivalmiita projekteja.)

Tarkoituksena ei ole tehdä täydellistä julkaisukelpoista peliä, koska sellaista ei tässä ajassa ehtisi tehdä, vaan vain aivan välttämättömät perusominaisuudet sisältävä prototyyppi.

Jäsenet

  • Marko Grönroos (magi@iki.fi)
(Projektia ei vielä ole hyväksytty, eikä päätetty toteutettavaksi ennen kuin riittävä määrä, eli vähintään kolme pystyvää osallistujaa on kasassa).

Peruspiirteet

  • Kenttä N*M peliruutua.

    Kommentti: Tavallaan olisi hienoa, jos kenttä olisi ruuduton, mutta karkean ruudukon käyttö helpottaa monia asioita (kenttien teko, reitinetsintä, AI, jne.). Jos (eli kun) yksiköiden halutaan liikkuvan "pehmeästi" ruutujen välillä, se lienee helppoa toteuttaa.

  • Jatkuva (eli ei diskreetti) aika. Tästä voidaan tinkiä, esimerkiksi käyttämällä korkearesoluutioista diskreettiä aikaa.

  • Kentän ruudut voivat olla eri maastoja, ainakin avoin ja läpikulkematon. Muut maastot laajennuksia.

    Kommentteja: Maastoilla voi olla toissijaisia ominaisuuksia, kuten materiaali, kovuus, jne. Maasto voitaisiin määritellä osittain 3D:ksi siten, että ruuduilla on korkeus-attribuutti. Yksinkertaistus-optio: ei maastoa lainkaan, jolloinka FOV-algoritmi (kts. alla) yksinkertaistuu.

  • Taisteluyksiköitä voi olla monia erilaisia, aluksi kuitenkin vain kaksi: tankki ja rakentaja.

    Yksiköiden liikuttelu mahdollisimman triviaalisti (ei mitään kehittynyttä reitinetsintää): GUI:ssa hiirellä klikataan yksikköä, dragataan määränpäähän, ohjelma näyttää siirtolinjan, tai virheen, jos ei onnistu.

  • Pelissä on rakennuksia. Alussa kuitenkin vain kaksi: tehdas ja puolustustorni. Puolustustorni rakennetaan rakentajalla, valitsemalla sen valikosta ko. rakennus.

  • Liikkuvia taisteluvaunuja ja rakentajayksiköitä valmistetaan tehtaassa. Rakentajayksikkö valmistaa puolustustorneja ja tehtaita.

  • Ammukset ovat erillisiä olioita, joiden käsittely erikseen. Alkuversiossa vain yksi ammustyyppi: laser (helppo toteuttaa).

  • Rakennukset, yksiköt, aseet ja ammukset määritellään tekstimuotoisissa konfiguraatiotiedostoissa. Vrt. Total Annihilaation yksikkökonfigurointi.

  • Resurssienkäsittely voisi alussa olla 'dummy', eli resursseja saadaan tasaista vauhtia.

  • Tässä protoversiossa koko kartta olisi kaikille näkyvä, tyyliin xpilots. Myös GUI:n grafiikka olisi triviaalia, esim. vektoripalloja, -kolmioita, jne. Tai bitmappeja, jos yhtä helppoa.

  • Toteutuskieli C++. Peruskirjastoina joko ei mitään tai Qt (MagiClib on myös käytettävissä). GUI-kirjastona Qt + kdelib.

Rakenne

Peli jakaantuisi seuraaviin funktionaalisiin osiin:
  • Peruskirjasto
    • sisältää palvelimelle ja asiakkaille yhteiset tietorakenteet
    • jotkin osat, kuten yksiköiden, rakennusten ja aseiden funktionaalisuus mahdollisesti dynaamisesti ladattavina moduleina
    • kommunikaatio
    • havaintosysteemi, joka kertoo olioille, mitä ne "näkevät"
      • sisältää ohjelman "monimutkaisimman" algoritmin, joka tutkii käyttäen Korkeaa Matematiikkaa, mitkä oliot näkevät toisensa. No, FOV voidaan ehkä toteuttaa jotenkin triviaalistikin. Tätä algoritmia tarvitaan myös ammusten käsittelyyn.
    • perus-maastot, -yksiköt, -rakennukset, -aseet, -ammukset

  • Palvelin
    • maailman ja yksiköiden välinen vuorovaikutus
    • kommunikaatio asiakkaiden välillä

  • Asiakasohjelma
    • GUI toteutettuna Qt:llä + mahd. KDE-laajennuksilla (varmaan KDevelop-IDE:llä). Periaatteessa voinee toteuttaa myös Gtk:lla, jos GUI:n tekijä ehdottomasti haluaa.
    • yksiköiden liikkuminen voisi hätätapauksessa olla ruuduittain hyppivääkin, mutta pikselitason smooth-siirrot olisivat hyvä juttu.
    • Jokin triviaali äänituki
    • Tämä pitäisi voida olla myös esimerkiksi ulkoinen AI, tms.
    • Toteutus mahdollinen vasta ydinkoodin ja serverin perustoiminnan hahmotuttua.
Kunnollisista synkronisoinneista ja latensseista ei tässä välttämättä kannattaisi välittää, sillä niiden ongelmien ratkaiseminen voi olla liian työlästä.

Muuta

  • Henkilömäärä: 3-6
    • peruskirjasto (oliot, rajapinnat, kommunikaatio): 2-3
    • palvelin: 1-2
    • GUI: 1
    • ylimääräiset maasto-, rakennus-, yksikkö- ja asemodulit: 0-1
    • dokumentaatio: 0.25

  • Vaatimustaso tekijöille on: C++:n hyvähkö osaaminen ja kokemusta, Unix/Linux-ohjelmointikokemusta (esim. socketit, jne). GUI:n tekijälle Qt-osaaminen olisi hyvä juttu. Projekti on vaativa, erityisesti ydinosiensa osalta.

  • Rakenteellisia vihjeitä kannattaa ottaa joistain olemassaolevista moninpelattavista peleistä, kuten xpilots, jne.

  • Varmaankin CVS-kehitys.

  • Työnimenä vaikka WarWorld, tms.


Pääsivu Takaisin Last modified: Fri May 16 03:35:49 EEST 2003