Tervetuloa Wormhole-projektin kotisivulle!
(Finnish edition)
(Let us see what's out there.... - Jean Luc Picard, Captain
of the U.S.S. Enterprise)
[Tiiraillaanpas mitä sieltä löytyy.... -
Jean Luc Picard, U.S.S. Enterprise:n vt. kapteeni]
Muunkielisiä versioita samaisesta sivusta:
In English
Zur
deutschen Version dieser Seite
Spanish
version of this page
Täh, Wormhole? Ja mikä se on?
Wormhole on (sori, kaukaisessa ja niin valoisassa tulevaisuudessa tulee
olemaan) tieteis-strategiapeli kuuluen Master of Orionin ja
The Ascendancyn kanssa samaan luokkaan. Kuten mainituissa peleissä,
Wormhole:ssa pelataan kaukaisessa tulevaisuudessa, jossa useat tähtienväliset
imperiumit taistelevat galaksin hallinnasta.Sinun tehtävänä
on rakentaa uusia siirtokuntia, tutkia kehittyneitä teknologioita,
taistella muita imperiumeja vastaan ja - tietenkin - voittaa!!!
Mikä on kuumaa ja mikä ei (ja mikä uutta)...
Haluat saada uudet infot? Vieraile Wormhole:n keskusteluryhmässä
parsimony.net/forum/forum1216/
[Saksankielinen serveri, keskusteluryhmä englanniksi]
Millä me ohjelmoimme Wormhole:a
Käyttöjärjestelmänä: Linux
Käytämme Linuxia koska haluamme luoda monimutkaisen pelin jossa
on mukana myös ajatusta, ei vain hyvää 3DFX grafiikkaa.
Tällä hetkellä kenelläkään tiimissä
mukana olevasta henkilöstä ei ole poikkeuksellista (tai edes
perus-) lahjakkuutta tietokonegrafiikan luomisessa. Linux tarjoaa meille
täyden mahdollisuuden luoda vakaan ja verkkoperustaisen pelin.
Ohjelmointikieli: C++
On ilmeistä että monimutkaista peliä (jollainen Wormhole:sta
tulee) ei voida toteuttaa turvautumatta olioperustaiseen ohjelmointikieleen.
Tästä johtuen päätin käyttää C++:aa.
Ja koska C on hyvin samankaltainen, voimmekin käyttää Linuxin
kaikkia systeemikutsuja ja kirjastofunktioita.
Visualisaatio
Koska emme pääse yksimielisyyteen siitä mitä GUI Toolkit:tiä
olisi parasta käyttää (Mutta Wormhole tulee taatusti saamaan
X-Windows -käyttöliittymän), ehdotankin seuraavanlaisen
kompromissin:
Peli itse tulee omaamaan useita määriteltyjä käyttöliittymiä
GUI-Toteutukseen, joten nämä kaksi osaa tulevat olemaan toisistaan
riippumattomia.
Helpoin ratkaisu olisi luoda kaksi erilaista GUI:ta, yksi Qt:n
avulla (KDE:ta varten) ja toinen GTK:m (GNOME:a varten).
GUI Toolkitti (KDE/QT look): Qt
Qt on XForms:n ja Motif:n kaltainen toolkitti. Se on hyvin tehokas, helpo
käyttää ja näyttää hyvältä (Jos
haluat saada ensivaikutelmia Qt-tyylisistä widgeteistä, katso
KDE-Desktop Environment:n (www.kde.org)
kotisivut. KDE on Qt-perustainen)
TÄRKEÄÄ: Qt 1.4 on saatavilla
nyt. On ilmeisen pakko testata se... ;-)
TÄRKEÄÄ: QtEZ on tehokas
kehitystyökalu Qt:ta ja KDE:ta varten. Luullakseni meidän pitää
mulkaista niitäkin... (Löydät sen qtez.commkey.net:sta)
GUI toolkitti (GNOME:lle): GTK
Tässä infoa Gtk+:sta, suoraan heidän kotisivultaan:
---8<---
GTK+, which stands for the GIMP Toolkit, is a library for creating
graphical user interfaces for the X Window System. It is designed to be
small, efficient, and flexible. GTK+ is written in C with a very object-oriented
approach. Language bindings exist for C++, Perl, Python, Objective C, Guile,
and TOM.
---8<---
--=[fin]=--
GTK+, joka tulee GIMP Toolkit:sta, on kirjasto graafisten käyttäjäliittymien
luomiseksi X Window Systemille. Se on suunniteltu olemaan pieni, suorituskykyinen
ja joustava. GTK+ on kirjoitettu C:llä käyttäen hyvin
objekti-orientoitunutta lähestymistapaa. Ohjelmointirajapintoja löytyy
C++:lle, Perl:lle, Python:lle, Objective C:lle, Guile:lle ja TOM:lle
--=[nif]=--
Peli
Perusajatukset
Peliä pelataan vuoroissa (ei tosiaikaisesti)
Pelaajan perustoiminnot: Rakentaa ja siirtää aluksia, rakentaa
ja laajentaa siirtokuntia, diplomatiaa muiden pelaajien kanssa, myy ja
ostaa resursseja niille, jotka niitä tarvitsevat. Pelaajan pitäisi
myös pystyä rakentamaan "syvän" avaruuden asemia jotka toimisivat
siltoina avaruuden loputtoman tyhjyyden yli.
Erilaisten teknologioiden tutkimista (Pitkälti samaan tapaan kuin
muissakin peleissä)
Jokaisella planeetalla on rajallinen määrä biologisia
ja mineraalisia varantoja. Biologisia resursseja tarvitaan siirtolaisten
ruokkimiseksi, mineraaleja taas rakennusten ja avaruus-alusten rakentamiseen
Kommunikaatio-ongelma: Pelin alussa yhteydenpitosi on hyvin hidasta.
Kuten aluksesikin, data liikkuu vain valon nopeudella, joten onnistuaksesi
sinun pitää suunnitella kaikki etukäteen. Tämän
takia siirtokuntiesi ja avaruusalustesi on pakko omata tietty määrä
tekoälyä, toimiakseen itsenäisesti. Sinulla tulee olemaan
mahdollisuus kertoa niille mitä pitää tehdä tietyissä
tilanteissa.
Erot muihin Sci-fi strategioihin
Ei jättikokoisia lentueita: Vain pienen määrän
avaruusaluksia pitäisi matkata Wormhole:n universumin läpi, vaikka
ei pitäisikään olla mitään estoa sille, kuinka
montaa alusta pelaaja hallitsee.
Kauppa, diplomatia ja vakoilu ovat tärkeämmässä
roolissa Wormhole:ssa kuin muissa strategiapeleissä. Vaikka saattaisitkin
voittaa puhtaalla militanttiylivoimalla, niin sinulla tulee olemaan mahdollisuus
voittaa myös toisin 'työkaluin'.
Tietty määrä astronomista ja fyysistä realistisuutta
tulisi pelistä ilmenemän (esim. komm ongelma, katso ylempää).
Ohjelmointi
Koska C++ on toteutuskielenä, koko koodikanta on tiukasti olio-orientoitunut.
Wormhole luokkahierarkia (peliosuus)
Koska olemme erottaneet asiakas- ja palvelinmoduulit toisistaan, meillä
on kaksi erillista luokkahierarkiaa. Palvelimelle se on:
CServMain: Palvelinohjelman pääluokka.
Se ohjaa koko peliä ja sisältää muiden tärkeitten
luokkien ilmenymät:
CNetConnection: Luokka joka pitää
sisällään kaikki tiedot Wormholen asiakkaasta. Se on myös
vastuussa kaikesta verkkoon liittyvästä toiminnallisuudesta.
CServMain:ssa pitäisi olla lista CNetConnection:n ilmentymistä,
yksi kutakin asiakasta kohden.
CNetInit: Tämä luokka on vastuussa
verkon alustuksesta. Se luo kaikki asiaanliittyvät tietorakenteet
ja alustaa myös jokaisen asiakasyhteyden.
CStartUp: CStartUp:n pitäisi näyttää
kyselyikkuna jossa palvelinoperaatorin pitäisi pystyä asettamaan
pelin globaalit muuttujat (esim. galaksin koko, tietokonepelaajat tai ysinkertaisesti
ladata tallennettu peli) ennen kuin itse peli alkaa.
CInitGame: Tämä luokka
myös näyttää kyselyikkunan. Täällä peliasiakkaiden
pitäisi pystyä kirjoittautua peliin tai yksinkertaisesti chattia
hetken muiden kanssa.
CGameRules: Pitää sisällään
kaikki säännöt joita peli käyttää. Tähän
luokkaan tullaan toteuttamaan kaikki metodit joita tarvitaan sisääntulevan
datan arvioimiseen ja pelin sääntöjen mukaiseen prosessointiin.
CGameData: Tulee pitämään
sisällään kaikki peli-sidonnaiset tietostruktuurit (mahdollisesti
viime siirto ja laskettu seuraava). Läheistä kommunikaatiota
CGameData:n ja CGameRules:n
välillä tarvitaan jotta peliin saadaan tarvittava toiminnallisuus.
CRunGame: Tämä luokka
valvoo koko peliä, hankii tietoa CNetObject:sta,
vie sen CGameRules:iin ja palauttaa prosessoidun
tiedon takaisin asiakkaille (seuraavalla siirrolla). Näyttää
myös dialogin chattia, tallennusta, player-exterminationia ja datan
manipulointia varten.
Ja asiakkaille:
Wormholen Asiakas tulee omaamaan myös pääluokan nimeltä
CClientMain, sekä myös CNetInit:n
ja CNetConnection:n (tosin se tulee tarvitsemaan
vain yhden ilmentymän CNetConnection:sta).
Vaikka asiakkaan verkkoluokat toteuttavat hyvinkin erilaisen toiminnan
kuin palvelimen, tulevat ne kuitenkin luultavasti jakamaan saman abstraktin
perusluokan.
Kuten palvelimessakin, asiakkaalla on CStartUp
-luokka, joka näyttää pelin esi-asetukset. Täällä
pelaaja voi "loggautua" palvelimeen lähettämällä palaajanimensä
ja IP-osoitteensa.
Sen jälkeen, pelaajaa viedään asiakasohjelman CRunGame
-luokkaan.
Asiakasohjelma on "tyhmä" (dummy), mikä tarkoittaa että
se on vastuussa vain tiedon vaihdosta pelaajan kanssa. Kaikki tiedon tarkastus
tehdään palvelinohjelmassa.
Tietoluokkahierarkia
Wormhole:ssa meillä on paljon tietoa käsiteltävänä,
ja paljon siitä jakaa samoja perusajatuksia. Tästä johtuu
että on helppo rakentaa luokkahierarkia kaikille datatyypeille:
DGalaxy: Tämä luokka ilmentää
pelialueen. Kaikkien muiden peliobjektien ilmentymät varastoidaan
tähän.
DSystem: Tähtijärjestelmä.
DPlanet: Abstrakti perusluokka. Aliluokat
voisivat olla: DEarthLikePlanet ja DGasGiant.
DBuilding: Abstrakti perusluokka siirtokuntarakennuksesta.
Aliluokat voisivat esim. olla: DResearchLab, DSpacePort tai DMissileBase.
DShipClass: Tämä luokka pitää
sisällään tietoa tietyntyyppisistä aluksista.
On tietenkin satoja ilmentymiä Qt-luokista, mutta niitä käytetään
lähinnä visualisoimiseen, joten en listaa niitä tässä.
Wormholen Asiakas/Palvelin ajatusrakennelma (uusi) [ok, ok, someone say
it better =P]
Wormhole:a pelataan yhden palvelimen ja useitten asiakkaitten avulla. Nämä
moduulit keskustelevat TCP/IP -sockettien avulla, joten ne voivat sijaita
yhdellä ja samalla koneella (loopbackin avulla [btw. X Windows toimii
siten PC:llä, joten menetelmä toimii] ) tai eri työkoneilla
kytkettyinä LAN:iin.
Pelatakseen Wormhole:a internetin kautta minimaalisin kustannuksin,
Wormhole:a pelataan e-mailin kautta. Palvelimella on jokaista etäpelaajaa
kohden VPD (Virtual player device), joka käyttäytyy
kuten paikallinen pelaaja, muttei omaa suoraa käyttjäliittymää.
Se hankkii tietonsa e-mailista.
Asiakas on liitäntä tettyyn pelaajaan, sillä välin
kun palvelin kerää pelaajatiedot ja suorittaa kaiken muun. Lopullinen
päämäärä on kehittää palvelinohjelma
joka voi käsitellä niin monta asiakasta kuin mahdollista (= rajoittuu
vain järjestelmän resursseihin ja verkon nopeuteen).
GPL
Koko peli julkaistaan GPL:n suojaamana, joten kaikki voivat saada näppinsä
kiinni sorsiin ja jättää jälkensä projektiin.
Jos käytät Linuxia, sinulla on varmasti kopio GPL:stä, joten
jätän sen kirjoittamatta tähän.
Lähdekoodi
Valitettavasti lähdekoodia ei ole saatavilla (vielä, sellaisen poissaollessa... ;)
Haluatko osallistua projektiimme?
-
Lähetä e-mail The Wormhole
Project:lle, jossa kerrot haluavasi osallistua projektiimme lähemminkin.
(englanniksi =)
TÄRKEÄÄ: Voisitko jättää
kaikki muut Wormholea koskevat viestit keskusteluryhmään,
niin kaikki wormholesta kiinnostuneet voisivat lukea ajatuksesi.
Ketkä ovat jo mukana (Wormhole-proktin kehitysryhmä)
-
*: koska olemme vieläkin vasta esikehitys-vaiheessa, niin ei ole muita
tehtäviä kuin pelisuunnittelu ja esiohjelmointisuunnittelu.
Mitä tarvitaan
-
Enemmän ammattitaitoista (innostunutta) väkeä suunnitteluun
ja kehitykseen.
-
Joku jolla on kokemusta tietokonegrafiikasta.
-
Joku joka voisi kehittää AI:ta tietokonepelaajille
-
Rauha koko maailmaan (ja koko galaksiin)
The Wormhole Project
Finnish translation by Olorin,
please address any typoes/language errata back to him.