TJI: Jotain ohjelmointihöpinää

Mitäpä sitä muuta ihminen tekisi kuin alkaisi kirjoitella blogikirjoitusta silloin kun ei nukuta ja javascriptin muotoinen kyrpä alkaa sojottaa otsasta…

Tutkailin vaihtoehtoja pelin backendin toteuttamiseen ja totesin, että taitaapa sittenkin toiveet php:n käytöstä jäädä toteutumatta. Node.js vaikuttaisi paljon paremmalta tietojen synkkauksen kannalta kuin php-viritelmät, tietokannan käytöstä puhumattakaan. Täysin reaaliaikainen peli ei toki ole kyseessä, joten ehkä tietokannankin käyttö voisi olla mahdollista, mutta en ala leikkimään tuurini kanssa.

Node.js:sähän sitten on se hauskuus, että se nimensä mukaisesti on javascriptiä ja nyt kun puoli päivää on mennyt js:n parissa, ei kieli oikein maistu. Toivoin pääseväni php:n pariin hetkeksi, mutta ilmeisesti js-harjoitukset jatkuvat pitempäänkin. No, löytyy pelin ohessa olevalta sivustolta sitten php:llekin käyttöä, joten ihan kaikki toivo ei ole menetetty.

Sinänsä todella kiinnostavaa päästä tutkailemaan ihan uusia juttuja, kuten tuota palvelinpuolella käytettävää javascriptiä ja websocketeja joita ilmeisesti pelin toteutuksessa kannattaa käyttää. Törkeät määrät on tuollaisia jättimäisiä aukkoja sivistyksessä, mutta onneksi on tällainen projekti, niin tuleepahan niitä sitten täytettyä!

Ja ei se javascriptikään nyt oikeasti maailman kauhein asia ole, ärsyttää vaan asiat kuten useamman tiedoston käytön vaikeus. Joo, tiedän, että pitäisi käyttää jotain ohjelmaa yhdistämään tiedostot ja minimoimaan koodin, mutta ärsyttää että sellainen ylimääräinen askel pitää ottaa. Tai ehkä joku ohjelma voisi sen tehdä automaattisestikin, mene ja tiedä. Nyt kuitenkin tuo yksi kooditiedosto on kolmannella sadalla koodirivillään, joten jotain tuolle hirvitykselle on tehtävä.

Olen myös ajatellut koodin avoimuutta ja entistä enemmän tuntuu, että se olisi pistettävä esimerkiksi GitHubiin näkyviin. Ajatus on pelottava, mutta jos jotain kautta tulee kehitysehdotuksia, niin sieltä ja tulisipa tuurilla backendikin jonkun silmäilemäksi. Pitäisi vaan opetella sekin systeemi.

Share This:

TJI: Pelin pelaaminen

Okei, näillä näkymin random mudihtava peliprojekti näyttää jo joltain aivan muulta kuin mudilta. Olen koko ajan lämmennyt enemmän ja enemmän ajatukselle heksapohjaisesta pelistä jota pelataan pelkästään hiirellä. Jotain pikanäppäimiä voi tietysti olla ja en ole niin sadisti, etteikö kommunikointikin tapahtuisi näppäimistön välityksellä.

En saanut vielä tehtyä toimivaa prototyyppiä, mutta ihan kauhean kaukana ei olla Civilization V:ssä liikkumisesta. Jokainen heksa on askel ja sen ottamiseen menee tietyn verran aikaa. Käytettävä aikayksikkö on vielä täysin mysteeri ja se todennäköisesti selviää vasta pitkän testauksen jälkeen, onhan kyseessä pelaajat ja pelimaailman tahdistava asia. Veikkaisin, että perusyksikkö on luokkaa sekuntti tai pari ja tie, haastava maasto, loukkaantuminen tai muu vastaava sitten muuttaa sitä johonkin suuntaan.

Pelin synkkaaminen on vielä suuri mysteeri, sillä haluan maailman toimivan periaatteessa reaaliaikaisesti, mutta ilman reaaliaikaisuuden tuomia vaatimuksia nopeista reflekseistä. Sekuntti tai pari jokaisen vuoron välissä tuntuisi sopivalta pelin hidastajalta, mutta onko se riittävän suuri aika ikkuna jotta jossain kuvitteellisessa tilanteessa joku ei saisi epäreilua etua tai haittaa sen vuoksi? Ei ehkä pitäisi murehtia liikaa ongelmia joiden olemassa olemisesta ei ole tietoa, mutta jokin minua varoittaa olemasta liian luottavainen moninpelielementin toteutuksen suhteen…

Loppuun vielä offtopicia: minua mietityttää näiden kirjoitusten otsikointi. Tuntuu, että jos teen pelkästään sisältöä kuvaavan otsikon, on tämä bloginkuvatus kohta täynnä miltei samalla otsikolla koristettuja kirjoituksia. Järjestysnumeroiden käyttö tuntuu vähän kömpelöltä, mutta ehkä se antaisi jotain lisäselvyyttä kirjoitusten keskenäisiin suhteisiin? Tosin on tuolla jo päivämäärä joka periaatteessa ajaa samaa asiaa.

Share This:

TJI: Testailua Javascriptilla

Opinnäytetyötilanteesta johtuen on pitänyt koettaa keskittyä muualle, mutta satunnaista testailua sentään on tapahtunut. Javascript ei tosiaan ole se tutuin juttu minulle ja sen nätisti sanottuna purkkamaiset ratkaisut  tuntuvat välillä hieman oudoilta. Testailusta on kuitenkin ollut paljon hyötyä ja eiköhän tuolla vielä pelin saa tehtyä.

Tämän kertaisessa testailussa oli kyse heksoista. Tein varmaan maailman yksinkertaisemmat viritykset kartan tallentamiseen ja kuvien näyttämiseen, mutta onpahan kuitenkin jotain toimivaa.

hexatestailuaNätit tilet ei tietenkään ole omaa tuotantoa vaan Kenneyn taidonnäyte OpenGameArtista.

Niin tämä ei toki ole vahvistus, että TJI olisi heksapohjainen, tutkin vain sen mahdollisuutta.

Heksoista tulikin mieleeni, että rendasin taannoin opinnäytetyön tekemisen ohessa tällaisen kuvan:

characterTuosta se heksapohjaisuus otti ehkä jopa lopullisesti tuulta alleen, pelkkä ajatus noin hienoista hahmografiikoista on aika houkutteleva. Sääli, että resurssit (= taidot AIKA) ei kuitenkaan riitä tuollaiseen grafiikan tasoon. Jotkut saattavatkin tunnistaa MakeHumanin perusvaatteet, joten kunniaa ei voi tästäkään graafisesta loistosta ottaa…

Offtopic, mutta oma osaamattomuus JavaScriptin ja vähän muunkin kanssa on muuten ollut epävarma aihe blogissa, tavallaan ei haluaisi näyttää kuinka vähän oikeasti osaa ettei vaan sotke työllistymismahdollisuuksia, mutta olen päässyt jonkinlaiseen yksimielisyyteen itseni kanssa. Ensinnäkin teen web-projektia, joten jos ne taidot eivät siinä ohessa kehity, niin jotain on mennyt pahemman kerran pieleen. Niin ja onnistuessani lopputuloksena on arvokas työnäyte. Toisekseen en haluaisi bluffata omalla osaamisella vaikka sitä kai pitäisi työnhakijan tehdä. Eipähän ainakaan pitäisi tulla pettymyksiä tällä tavalla. Kolmantena asiana pitää huomioida ihan potentiaalisen työnantajan kiireisyys: kukaan ei lähde penkomaan joka ikistä blogikirjoitusta mitä hakija on elämänsä aikana rustannut (Hei, tuleva pomo, olet perinpohjaisuudessasi harvinainen ihminen ja haluan tulla teille töihin kehittämään omaa perinpohjaisuuttani!). Eli pyrin jatkossa olemaan avoimempi testailujen sun muun suhteen, onpa sitten edes omat virheet dokumentoituna jos ei muuta!

Share This:

TJI: Kuoleminen

En muista onko pelissä kuolemisesta ollut tarkkaa mainintaa, joten tässäpä sellainen: kuolema on pysyvä. En halua heittäytyä täysin roguelikeksi, mutta uskoisin permadeathin olevan sopiva lisäkannuste hengissä pysymiseksi.

Kuoleman koittaessa pelaaja menettää kaiken ja joutuu tekemään uuden hahmon, mutta samalla ruumis omaisuuksineen jää maailmaan. Tietysti ongelmana pelaajalle on se, että ruumis voi olla niin pahassa paikassa, ettei sinne aivan heppoisin perustein mennäkään, joten tavaroiden noutamiseen saattaa vierähtää tovi.

Koska virheiden hinta on kova, nousee pitkin saarta tehtävien tutkimusretkien suunnittelu ensisijaisen tärkeään asemaan. Pitää miettiä reittiä, mukaan otettavia varusteita, säätilannetta, kommunikaatiota ja niin edelleen. Tietysti takin voi jättää auki suoraviivaisemmissa tehtävissä, ei tässä kuitenkaan aivan masokisteiksi olla heittäytymässä.

Share This:

TJI: pelin muodot ja jotain muuta

Kuva TJI:stä muodostuu osittain selkeämmäksi ja osittain sitten taas sumeammaksi. Asia selkeämmästä päästä on pelin ulkopuolinen muoto. Peli ei ole vain peli vaan sen oheen tulee myös oheissivusto. Käytännössä sivusto sisältää tietoa saaresta, sen asukkaista ja tietysti ajankohtaisista asioista.

Aivan alussa sivustolla ei ole juuri mitään tietoa, ei välttämättä edes karttaa, mutta samalla kun pelaajat edistyvät pelissä, myös sivuston sisältöä kertyy lisää. Uutisvirrasta voi bongata uusimmat havainnot eri dinosauruksista ja tarkastella lajista paljastuneita tietoja jne. Tämä oheissivusto on avoin myös ulkopuolisille, joten jos pelaaminen ei innosta, mutta pelimaailman tarina kiinnostaa, löytyy siitä ainakin jotain tietoa ilman pelitunnusten tekemistä.

Haluaisin myös mahdollistaa pelin pelaamisen ilman tunnuksia. Anonyymit pelaajat voisivat pelihahmon sijaan käyttää esimerkiksi quadrokopteria ja testailla pelin toimintaa ihan omassa rauhassa ilman paineita mokaamisesta heti alussa. Anonyymitkin voisivat tehdä jotain tehtäviä, mutta kaikkeen vähänkin edistyneempään tarvittaisiin sitten pelitunnukset. Jonkinlainen mahdollisuus ottaa kunnia tehdystä työstä olisi kiva olla, joten kai nimimerkin valinta pitäisi jättää mahdollisuudeksi anonyymeillekin, pitänee vaan kehittää helpot moderointityökalut jotta pahimmat rivoudet saadaan kitkettyä.

Pelin muoto pienemmässä mittakaavassa on taas muuttunut epäselvemmäksi, sillä vaikka alunperin tarkoitus oli tehdä nimenomaan jotain mudihtavaa, niin olisi se silti aika loogista tehdä tuosta pikemminkin ”roguelike” ja nostaa kartta pääasiaksi. Aika todennäköisesti tulen noin tekemäänkin, mutta katsotaan nyt mitä tapahtuu.

Share This:

TJI: Saaren dinosaurukset

Lajeja tulee ainakin alkuun olemaan hyvin vähän. Aiemmin mainittu Velociraptor on aika varma valinta, miten lajia voisi skipata, katsokaa nyt tätä kuvaa lajin Wikipedia-sivulla! Vielä nätimpi kuvitus löytyy Erään planeetan ihmeitä -blogin artikkelista Dinosauruspuiston todelliset kasvot 2: Raptorit. Kyseinen blogi on muuten pullollaan tosi hyvin kirjoitettuja ja kuvitettuja artikkeleita, kannattaa ehdottomasti tutustua jos eläimet kiinnostaa!

Muista lajeista en osaa sanoa, mutta se on selvää, että aikakausia en tule kunnioittamaan vaan valinta tapahtuu täysin mielivaltaisesti. Eräästä elokuvasarjasta tutut tyrannosaurus rex, triceratops, pachycephalosaurus, brachiosaurus ja kumppanit ovat tietysti aika korkealla listalla. Tietysti koska pelissä on tarkoitus luoda illuusio (tai jopa jossain määrin oikeasti toimiva) ekosysteemistä, pitää lajeista saada luotua jonkinlainen ravintoketju.

Toinen rajoittava tekijä on saari itse: mitä isompaa sakkia sinne laitetaan, sitä isompi koko saaren pitäisi olla. Tämä rajoite vaan elää peli-ilon kanssa käsikädessä, sillä väärän kokoinen saari on rasite pelaajille. Tähän vaan tuskin löytyy muuta ratkaisua kuin käytännön testaus, joten aikaa tulee kulumaan.

Share This:

TJI: Projektin toteuttamisesta

Tajusin juuri, etten ole tainnut sanoa mitään projektin toteutuksellisesta rakenteesta, joten korjataanpa erhe.

Jos kaikki menee niin kuin toivon, projekti jakautuu noin suurin piirtein seuraaviin vaiheisiin:

  • Esituotanto
    • Fiilistely, projektin hahmottaminen
    • Suunnittelu, fiilistelyjen kokoaminen joksikin tiiviiksi paketiksi
    • Prototyypittäminen (jos tarpeen)
  • Tuotanto
    • Pelinkehitystä niin pitkään, että 1.0-version vaatimukset ovat täynnä
    • Jos jatkamishaluja on, palataan esituotannon puuhien pariin 2.0-version merkeissä
  • Jälkituotanto
    • Jatkamishaluja ei enää ole, joten edetään ylläpitotilaan, painopiste pelin pitämiselle käynnissä, toisinaan ehkä pieni sisältöpäivityksiä
    • Jatketaan ylläpitoa niin kauan kuin energiaa tai pelaajia riittää

Tällä hetkellä eletään fiilistelyvaihetta, siksi jorinat täällä ovat paikoin korkealentoisia. Tavoitteena ei siis ole luoda 1:1 pohjaa pelille vaan pikemminkin materiaalia josta vain olennaiset poimimalla muodostuu versio 1.0. Jos tekemiseniloa löytyy riittävästi, on meillä lopulta vesio x.0 joka sitten sisältää kaiken käyttökelpoisin fiilistelyistä.

Harrastusprojektista kun on kyse, homma voi tietysti tyssätä tai periaatteessa vaikka hypätä mihin tahansa vaiheeseen milloin vain.

Share This:

TJI: Dinosaurusten ominaisuuksia

Mistähän sitä lähtisi purkamaan vyyhtiä nimeltä dinosaurusten ominaisuudet? No, ensinnäkin pohdin tällä kertaa vain pelimekaniikkaan liittyviä ominaisuuksia, joten ulkoasut sun muut jää toiselle kertaa, mikäli niitä edes on tarpeen käsitellä, pelissähän ne ovat lähinnä osa kuvaustekstiä.

Mitä dinosaurusten pitää tehdä selvitäkseen lisääntymiseen asti? Äkkiseltään ajateltuna syödä, juoda, selviytyä vaaroista tarpeeksi pitkään ja löytää kumppani.

Kasvisruokavaliota noudattavat lajit vain mussuttavat kasveja, lihansyöjät taas jahtaavat mitä nyt kiinni saavat, ensisijaisesti kasvissyöjiä, haaskanjärsijöille kelpaa se mitä lihansyöjiltä jää.

Juominen tapahtuu saaren sisävesistöistä (saari on keskellä merta), jotka ovatkin hyvin vilkkaasti liikennöityjä paitsi juomassa olevien, myös heitä saalistavien eläinten toimesta.

Vaaroista selviytyminen onkin sitten mutkikkaampaa, mutta jos vedetään mutkat suoraksi, voisi se tarkoittaa vahingonsieto- ja tuottokykyä. Lähdetään siitä oletuksesta, että tappelu ei ole mitään taktiikan juhlaa vaan kohtaamisissa vain räimitään toista turpaan niin kauan että toinen pakenee tai kuolee. Erilaisilla lajeilla on erilaisia ratkaisuita tappelemiseen, tarjontaa löytyy hampaista sarviin ja kynsistä ihan vain penteleen kovaan luuhun. Kovin monipuolista liikevalikoimaa tuskin tulee, mutta jos nyt kullakin lajilla olisi muutamia tapoja hyökätä tai puolustautua, niin siinä olisi hyvä lähtökohta.

Tietenkin muitakin vaaroja on kuin muut dinosaurukset, esimerkiksi taudit voivat koitua suureksikin riesaksi pienehköllä saarella. Taudeilta nyt vain ei taida auttaa muu kuin vastustuskyky.

Eri aistit antavat tietysti suojaa monilta vaaroilta. Tautia ei ehkä nää, mutta ehkä sen voi haistaa (minulla ei tosin ole mitään hajua mitä mieltä tutkijat ovat dinosaurusten hajuaistista). Koska on kyse tekstipohjaisesta pelistä, on erityisen tärkeää muistaa hyödyntää kaikkia aisteja, erityisesti hajuaistia.

No, mistä se kumppani sitten löytyy? Oletettaisin että saman lauman sisältä, mutta jos lauma ei ole kuitenkaan satojen yksilöiden kokoinen, eikö tuloksena ole ennemmin tai myöhemmin geneettisesti hieman hankala tilanne? Pitänee tutkia mitä nykypäivän eläimet tekevät, ehkä sieltä löytyisi parempia esimerkkejä.

Nyt meillä on pieniä dinosauruksia. Niiden jatkaa samaa sykliä kuin vanhemmpiensakin, mutta alkuun ne saavat helpotusta vanhempiensa ja mahdollisesti jopa koko lauman tarjoamasta suojeluksesta.

Mitä tämä kaikki sitten meinaa ominaisuuksien kannalta? Sitä, että peliin tarvitaan:

  • nälkä
  • jano
  • hitpointsit
  • hyökkäys
  • puolustus
  • vastustuskyky
  • näkö
  • kuulo
  • haju.

Jos yksilöiden liikehdintää halutaan rajoittaa, mikä etenkin pakenemisen kannalta olisi suotavaa, pitäisi listaan vielä lisätä stamina. Käytännössä se kertoisi kuinka monta ruutua yksilö voi edetä ennen kuin pitää pysähtyä huilimaan. Toisaalta dinosauruksissa on kaikkea äärimmäisen hitaasta äärimmäisen nopeaan, joten siinä mielessä tuolla pitäisi myös olla nopeus. Listaa voisi jatkaa loputtomiin ja joku toinen kerta jatkankin tai ainakin yritän!

Share This:

TJI: Nimi vaihtoon

Heh, tulipa ensimmäistä kertaa googlattua, että löytyykö Jurassic Island -nimellä mitään ja tietysti sieltä löytyi ja vieläpä peli. Sekannusten välttämiseksi kehitän projektille jonkin paremman työnimen, mutta toistaiseksi pelkkä TJI saa luvan kelvata!

Share This:

TJI: Dinosaurusten sukupuut

Jollain perverssillä tavalla haluaisin muutenkin turhan isoksi kasvavaan työnimi Jurassic Islandiin tavan tutkia dinosaurusten sukupuita. Yksinkertainen tapa olisi vain pitää kunkin yksilön lisääntymisistä kirjaa, mutta kun tosielämässä on jo Facebook, niin en kai minä sellaista halua lähteä toistamaan. Tietysti se siistimpikin tapa tulee tosielämästä, nimittäin ongelma ratkeaisi nätisti DNA:lla.

Dino-DNA olisi käytännössä tiivistelmä dinosauruksen ominaisuuksista ja jonkinlainen allekirjoitus, eli ihan vain jotain random-tavaraa mikä takaa että yksilö on uniikki. Voisihan nuo tiedot tietysti piilottaa kirjainten A, C, G, T taakse, jolloin kokonaisuus näyttäisi leikisti oikeammalta.

Dinosaurusten lisääntyminen sitten tapahtuisi vanhempien DNA:t yhdistämällä joidenkin sääntöjen mukaan. Joitain yksinkertaisia linjauksia dominoivista geeneistä tähän pitäisi jostain pieraista, mutta tiedä sitten kuinka paljon niitä voi soveltaa iät ja ajat sitten sukupuuttoon kuolleisiin eläimiin joiden ominaisuuksista on hyvin vaihtelevaa tietoa.

No, oletetaan että DNA on käytössä, pelin sisällä sukupuun kartoittaminen sitten tarkoittaisi näytteen ottamista ja sen vertaamista olemassa oleviin näytteisiin. Mahdollisuus tällaisiin temppuihin tietysti tulisi vain vaikeasti rakennettavan tutkimuslaitoksen kautta, joten hommaan tarvitaan joko toimiva yhteisö tai pitkälle edennyt pelaaja.

Ja jottei kukaan unohtaisi Jurassic Park -faniuttani, tässä pohdintojen väistämättäkin mieleen palauttama pätkä siitä parhaasta JP-leffasta:

Share This: