Artikkelit

Artikkelit olivat Suomipelit.comissa sivuston sulkeuduttua. Näin ollen niihin saattaa sisältyä rikkinäisiä linkkejä tai epämääräisiä viitteitä asioihin, joita ei enää ole olemassa, ja joskus jokin saattaa näkyä väärin.

Palaa artikkelilistaan

Erkki Saaressa post mortem

Monen aloittelevan peliohjelmoijan ensimmäiset tuotokset ovat pikemminkin surkuhupaisia kuin pelattavia. Kuitenkin jotkut saavat niistä tarpeeksi irti ponnistaakseen korkeammalle, tehdäkseen jotain josta hänet tiedettäisiin (kenties jopa muistettaisiin). Tarmo Korpela, QB-harrastelija, päätti vuonna 2003 syksyllä tehdä oman roolipelienginen. Aikaa myöten engine paisui ja testipeli riistäytyi käsistä... Tämä on tarina siitä, miten peli nimeltään Erkki Saaressa sai alkunsa.

16.1.2005 julkaistun artikkelin on kirjoittanut Sqwiik.

  1. Aikojen alussa oli QB
  2. Kun QB ei riittänytkään (mikä yllätys)
  3. C ja Erkin uudet, väliaikaiset ulottovuudet
  4. Kerran viel', hip hip...
  5. Historiaa, kiitoksia ja linkkejä

Aikojen alussa oli QB #

Tältä näytti 0.2.0Tältä näytti 0.2.0

Tehtyäni QB:lla tuhat ja 1 pikkupeliä vuosina 2001-2003, huomasin haaveilevani jonkinasteisesta 'isommasta' projektista, jolla koetella alkeellisia ohjelmointitaitojani. Olin jo aiemmin kokeillut C++-kieltä, jolla olin tehnyt erittäin alkeellisen roolipelin. Päätin tehdä laajemman roolipelin QB:llä, mutta internetistä löytämäni QBasic-roolipelit olivat liian staattisia omanlaiseensa pelityyliin (vuoropohjainen, reaaliaikainen jne), joten päätin tehdä oman alusta asti käyttämättä valmiita pohjia.

Suunnittelin paperille aluksi hieman teoriaa siitä, millaiseen koodiin roolipeli itse asiassa pohjaa. Päädyin ruutupohjaiseen rakenteeseen, mutta esinepuolen päätin jättää vielä myöhemmäksi. Kirjoitin ensimmäisen version noin viikossa ilman sen kummempaa grafiikkaa, joka sisälsi tasan yhden toiminnon: satunnaisen luolaston luomisen. Tämä oli tuolloin mielestäni se kaikkein tärkein asia pelissä...

Saatuani luolastonluonnin valmiiksi, kasasin nopeasti alkeellisen kartanpiirron ja rakensin toimivan oliosysteemin ja esinelinkityksen (jossa alempi esine viittaa aina seuraavaan kuten jonorakenteessa). Tässä vaiheessa en vielä huolehtinut mistään näkökentistä vaan keskityin pelikentän tapahtumiin. Jossain tässä vaiheessa sain projektisivun Ohjelmointiputkasta, jossa projektini välittömästi keräsi kommentteja jotka puolestaan kiihottivat meikäläistä jatkamaan koodin paiskomista oikein tosissaan :) LOS (Line Of Sight), loitsuja, taitoja, erilaisia esineluokkia, parempi grafiikka ja niin edelleen. Olin jo kokonaan unohtanut, että olin ollut tekemässä engineä, en peliä...

Kun QB ei riittänytkään (mikä yllätys) #

Kun olin saanut pelin melko pitkälle, havaitsin yhtäkkiä että QB 7.1 ei enää suostunut kääntämään peliä, mikä taas oli minulle karvas pettymys. Milläs nyt jatkaisi? Sitten muistin vanhan tuttavuuteni C-kielen kanssa ja kaivoin djgpp:n haudastaan. Jouduin aloittamaan koko projektin uudestaan, mutta se ei ollut mielestäni murehtimisen arvoinen asia. Tartuin härkää sarvista ja rustasin moottorin ja pelin erikseen, sillä muistin jälleen tavoitteeni :) Olin kuitenkin vielä melko kokematon C/C++-koodaaja ja engineni rakenteet olivat staattisia taulukoita, joiden kokoja pystyi muokkaamaan vakioilla (erittäin ruma tapa ohjelmoida).

C ja Erkin uudet, väliaikaiset ulottovuudet #

Jatkoin pelin rakentamista tällä pohjalla keväälle 2004 ja koodasin koulunkäynnin lomassa. Grafiikkamoottorin väänsin itse ja kaikki näytti menevän hyvin. Kevään kuluessa ja lumen sulaessa huomasin kuitenkin engineni rajoittuneisuuden tutkaillessani Allegron koodia, jonka olin ladannut djgpp:n yhteydessä. Päätin tehdä engineni sittenkin kunnolla, ja näytin tähän mennessä kasatulle koodille (~5000 riviä) tylysti roskakoria ja käynnistin notepadin uudelleen. Samalla menetin tähän mennessä koodatun Erkki Saaressa-pelin toimivuuden, josta säästin sentään grafiikkamoottorin. Peli kuoli siis nyt toisen kerran.

Kerran viel', hip hip... #

Vaihtoehtoinen grafiikkatilaVaihtoehtoinen grafiikkatila

Jälleen kerran tuijottaessani tyhjää tekstinkäsittelyohjelmaa, päätin tehdä tästä enginestä täysin dynaamisen (eli ei lainkaan staattisia taulukoita/tms). Mallia aloin ottamaan Allegrosta ja pikkuhiljaa engine lähti kasaantumaan uudelleen. Päätin kirjoittaa enginen nyt täysin puhtaalla C-kielellä standardikirjastoja käyttäen, jotta kykenisin varmistamaan sen kääntymisen järjestelmässä
kuin järjestelmässä. Kokeillakseni enginen eri funktioiden/rakenteiden toimivuutta aloin rakentamaan sille esimerkkipeliä. Päätin tehdä edellisen pelin, Erkki Saaressa, nyt loppuun asti.

Lähdin pikkuhiljaa rakentamaan koodia uudelleen, ja testatakseni jokaisen funktion toimintaa kokeilin kaikkia esimerkkipelissä lukuunottamatta useimpia esineluokkia. Tämä on yksi suurimmista syy siihen miksi esimerkkipeli lähti nopeasti paisumaan yli äyreidensä, varsinkin sen jälkeen kun kehitin engineen trigger-tyyppiset tehtävätyökalut. Engine oli yksi ISO könttä koodia, mutta laitoin sen silti alustavaan jakeluun. Kääntyi jopa linuxin puolella, kuten suunniteltu oli :)

Tässä vaiheessa keskityin taas vähän enemmän itse esimerkkipeliin boostatakseni egoani koodaajana (kukaan ei halua viedä julkisuuteen bugista räpellystä), joten itse engine eteni tuskastuttavan hitaasti. Erkki Saaressa alkoi siis pelkkänä esimerkkinä siitä, mitä enginellä voi saavuttaa mutta se levisi hieman käsistä... Kolmas kertahan toden sanoo, ja Erkki Saaressa on nyt edennyt aivan loistavasti kokonaisversioon asti tallennuksineen, arvoituksineen ja hämärine tehtävineen.

Historiaa, kiitoksia ja linkkejä #

Kiitän kaikkia, jotka ovat minua tukeneet pelinteon aikana (antamalla siis palautetta), ellen ole missään muualla kiittänyt. Suuri kiitos myös insider-betatestaajille, joiden nimiä en kuitenkaan tässä mainitse :)

Ohjelmointiputkan jäsenten kommentit projektin etenemisestä ovat osoitteessa
http://www.ohjelmointiputka.net/projekti...

Pelin voi ladata osoitteesta
http://www.ohjelmointiputka.net/projekti...

Hieman historiallisia tapahtumia:

XX.9.2003-1.10.2003
ERKKI sai alkunsa QB-versiona. Rakennettuna luolastonluonti, tiedostonkäsittely, vastustajat, LOS.
Tässä vaiheessa peli oli jo monen mieleen, vaikka grafiikka oli piirretty LINE-komennolla.
Ensimmäinen pelattava versio, 0.1.X julkaistiin 29.9.2003.

12.10.2003
Grafiikan aikakausi - tilet eivät ole tämän jälkeen juuri vaihtuneet.

12-20.10.2003
Erkki Saaressa 0.2.0, viimeinen QB-versio, julkisuuteen. QB:n muisti loppui. Siirryin C-kieleen.

1.11.2003-~10.3.2004
ERKKI-enginen C-kielisen version rakentamista rumalla koodaustavalla.
Koodi poistettu sen staattisuuden takia; tätä koodia ei ole enää mistään saatavilla.

Joskus 4.2004
C-kielinen engine + peli roskikseen ja takaisin suunnittelupöydän ääreen.

Joskus 5.2004
Dynaaminen C-versio etenee loppua kohden. Lisätty parempi olionkäsittely, perustuen
kloonirakenteisiin. Erkki Saaressa 0.5.0 julkaistu.

Loppuvuosi 2004
Erkki Saaressa-pelin suurta kehittelyä, saavutti versionumeron 0.9.6

5-16.1.2005
Enginen saattaminen valmiiksi, Erkki Saaressa 1.0.0