Tämä kurssi on jo päättynyt.

Kurssin viimeisimmän version löydät täältä: O1: 2024

Luku 10.1: Ihan oma tekstipeli

Tästä sivusta:

Pääkysymyksiä: Miten suunnittelen ja toteutan itse oman tekstipelin?

Mitä käsitellään? Itsenäistä ohjelman suunnittelua sekä mahdollisesti muita aiheita, jotka riippuvat omista valinnoistasi. Tehtävässä on mahdollista soveltaa ja harjoitella lähes mitä tahansa kurssilla käsiteltyä aihetta, ja muitakin.

Mitä tehdään? Ohjelmoidaan, mikä pitää tällä kertaa sisällään myös sen suunnittelun, millaisen ohjelman haluat tehdä.

Suuntaa antava työläysarvio: Vaikka valmis pohja ohjelmalle onkin tarjolla, ongelmakentän rajaaminen ja tarvittavien ratkaisujen keksiminen on aloittelijalle vaikeaa. Kokeneempikin ohjelmoija saa tästä aiheesta kehiteltyä itselleen haasteita. Työmäärä vaihtelee tekijän kunnianhimon mukaan valtavasti, mutta tämä on joka tapauksessa melkein kaikille kurssin työläin tehtävä. Aikaa kannattaa varata vähintään 10 h, mieluummin ainakin 15 h. Tehtävään saa kyllä upotettua vaikka viikkoja, jos niin haluaa.

Pistearvo: C200.

Oheisprojektit: Adventure.

../_images/person11.png

Tehtävänanto

Unohda se metsä, kaukosäätimet, paristot ja muut annetun pelimaailman osat ja tee kokonaan uusi tekstiseikkailu. Uuden pelin aiheena voi olla ihan mitä vain. Päästä tukka irti ja luo!

Tässä joitain ideoita suunnittelun pohjaksi. Oma idea on luultavasti vähintään yhtä hyvä kuin listasta poimittu.

  • Klassinen seikkailu. Esimerkiksi: pelaaja seikkailee vanhassa rauniolinnassa tai tutkii muinaista pyramidia. Pelin alueet ovat huoneita, käytäviä, tms.
  • Moderni seikkailu. Esimerkiksi: hahmo on fuksi, jolle on annettu tehtäväksi tehdä sitä-tai-tätä. Pelin alueet ovat korkeakoulun tai kampuksen taloja, huoneita, tms.
  • Mysteeriseikkailu. Pelaajan täytyy löytää jotain kadonnutta, selvittää Kuka Sen Teki? tms.
  • Toimintaseikkailu. Esimerkiksi: pelaajan täytyy paeta jostain.
  • Kirjaan tai leffaan perustuva seikkailu. Esimerkiksi: hahmo on Liisa Ihmemaassa, kapteeni Ahab, Travis Bickle, Dolores Abernathy, tms.
  • Epäinhimillinen seikkailu. Esimerkiksi: hahmo on koira, hyönteinen, robotti, mikrobi, planeettoja syövä avaruusolento, älykäs kumkvatti, tms.
  • Jotain ihan muuta. Mitä tahansa, mistä saa pelin aikaan. Esimerkiksi: pelin alueet eivät olekaan spatiaalisia alueita vaan mielentiloja, elämänvaiheita tai mitä vaan.

Tarkemmat vaatimukset

Pelissä pitää olla:

  • Alueita, joihin pelaaja voi mennä.
  • Haasteita tai pulmia, joista pelaajan täytyy jotenkin selvitä läpäistäkseen pelin.
  • Vähintään muutama uusi komento, joita pelaaja voi antaa ja jotka tekevät jotain hyödyllistä.
  • Uusi voittoehto, joka pelaajan täytyy saavuttaa läpäistäkseen pelin. Pelin läpäisyn täytyy edellyttää jotain muutakin kuin vain kävelemistä tietylle aluelle. Voit myös laittaa peliin "häviämisehtoja" (esim. pelaajahahmo kuolee), mutta se ei ole pakollista.
  • Tervehdysteksti, joka kertoo mistä pelissä on kysymys ja mitä pelaajan on tarkoitus tehdä. Jos haluat, että pelin tarkoitus/voittoehto selviää vasta pelin aikana, niin sekin on sallittua, kunhan asian selvittäminen ei vaadi pelaajalta kohtuutonta vaivaa.
  • help-komento, joka tulostaa näytölle ohjeita pelin pelaamiseen. Kuvaile tässä ainakin lisäämäsi uudet komennot.
  • Jompikumpi tai molemmat näistä kahdesta:
    1. Komento muotoa use itemname, jolla pelaaja voi käyttää esinettä. Käyttämisen seuraukset riippuvat esineestä.
    2. Muita henkilöitä tai olentoja, jotka liikkuvat pelimaailmassa ja ovat jollain tapaa hyödyllisiä, vaarallisia tai muuten merkityksellisiä pelin kannalta.

Lisäksi pelin mukaan pitää liittää:

  1. Tiedosto, jossa on "huijarin kartta" pelimaailmasta (vrt. annettu forest_map.gif).
    • Tämän kartan tulee olla joko PNG-, GIF- tai PDF-muodossa tai (paremman puutteessa) tavallisessa tekstitiedostossa merkkigrafiikkana.
    • Laita tiedoston nimeksi map.png tai vastaava muulla tiedostopäätteellä.
    • Sijoita se projektin juurihakemistoon.
  2. Pelin walkthrough eli läpäisyohje, joka kuvailee vaihe vaiheelta miten pelin saa pelattua läpi.
    • Sijoita ohje joko kartan kanssa samaan tiedostoon tai erilliseen projektin juurihakemiston tiedostoon nimeltä walkthrough.txt (tai vastaavanniminen muuntyyppinen tiedosto).
    • Assistentit voivat hyödyntää läpäisyohjetta arvostellessaan peliä. Vähemmän tuskastunut assari antaa ehkä helpommin hyviä arvosanoja. :-)

Arvioinnista

Tämän tehtävän arvioivat kurssin assistentit.

Arvostelu ei ole erityisen tiukka. Jos peli täyttää yllä mainitut vaatimukset, niin voit olettaa saavasi vähintään puolet pisteistä. Enemmänkin on luvassa ellei ohjelmastasi paljastu pahoja puutteita kuten erityisen häiritseviä bugeja tai täysin lukukelvotonta koodia.

Pelin ei tarvitse olla tajunnan räjäyttävä viihdepläjäys, jotta saisit täydet pisteet. Siihen riittää laadukas, toimiva ohjelma, joka täyttää luetellut vaatimukset.

Koodiasi tulee lukemaan ihminen, joten kirjoita se selkeästi. Muista kurssin tyyliopas. Oleellista ei ole minkään tietyn tyylin orjallinen noudattaminen vaan perusasioista huolehtiminen niin, että lukeminen on sujuvaa: sisennä järkevästi, käytä mielekkäitä muuttujien nimiä ja niin edelleen. Jos ohjelma on kirjoitettu niin epäselvästi, että lukeminen oleellisesti vaikeutuu, niin tehtävästä tuskin saa täysiä pisteitä.

Koodiin ei ole pakko kirjoittaa kommentteja, mutta voit harkintasi mukaan tehdä niin.

Pelin koko ei ole merkittävä arvosteluperuste. Vaikka lisäämällä peliin alueita voi toki saada aikaan kiinnostavamman pelin, ei pelkkä alueiden lisäily pisteiden toivossa kannata. Vastaavasti pieni peli, jossa on vain muutama hyvin toimiva alue, voi hyvin saada täydet pisteet.

Lisäpisteitä annetaan assarin harkinnan mukaan. Lisäpisteitä saa ohjelman teknisestä vaativuudesta ja laadukkuudesta mutta myös peliin ja pelimaailmaan liittyvistä kiinnostavista ja hauskoista yksityiskohdista ja ideoista.

Julkaisemme tehtävän arvostelun viimeistään kaksi viikkoa deadlinen jälkeen.

Assarit valitsevat arvostelemiensa pelien joukosta omia suosikkejaan (mielivaltaisin perustein: hauskuus, omaperäisyys, tekninen toteutus, mikä vain). Assarien suosikit palkitaan pienin leffalippupalkinnoin ja julkaistaan muiden kurssilaisten nähtäviksi A+:ssa, ellet erikseen halua kieltää sitä.

Ohjeita ja vinkkejä

  • Pidä hauskaa.
  • Voit käyttää pelin kielenä englantia, suomea tai ruotsia.
  • Voit käyttää annettua Adventure-projektia pelin pohjana. Päädyt varmasti muokkaamaan osaa annetuista luokista. Erityisesti luokka Adventure täytyy remontoida perinpohjaisesti tai korvata jollain toisella luokalla.
    • Ellei ole erityistä syytä muuttaa annettuja kahta käyttöliittymävaihtoehtoa, niin älä muuta niitä. Kuitenkin niidenkin muuttaminen on luvallista. Kaikkea saa muuttaa.
  • Vaikka toivottavasti innostutkin tekemään jotain metkaa, älä ahnehdi enemmän kuin mihin sinulla on aikaa.
    • Voit pyytää assarilta apua paitsi pelin toteuttamisessa myös työmäärän arvioinnissa. Viime kädessä olet kuitenkin itse vastuussa aikataulustasi.
    • Työskentele niin, että toteutat mahdollisuuksien mukaan pelin ominaisuuksia yhden kerrallaan valmiiksi. Tällöin työstä on palautettavissa toimiva versio, vaikka et kaikkea keksimääsi saisikaan toteutettua.
  • Koska peliäsi tulee pelaamaan oikea ihmiskäyttäjä, älä unohda help-komentoa tai walkthrough-tiedostoa. Pidä myös huoli siitä, että peli toimii ymmärrettävästi. Jos pelissä on vaikkapa bugi, jonka vuoksi pelihahmo voi arvaamattomasti ja huomaamattomasti siirtyä toiseen paikkaan, niin pelin pelaaminen ja arvioiminen on kivuliasta.
  • Kaikenlaiset lisäykset peliin ovat tervetulleita mutteivät pakollisia: uudet suunnat, joihin voi mennä; uudet kulkuvälineet; pelaajahahmon erilaiset ominaisuudet ja kyvyt; esineiden painot, jotka rajoittavat pelaajan mahdollisuuksia kantaa tavaraa; monisanaiset komennot; jne. jne.
  • Kartan piirtämisessä voi Aalto IT:n Linux-luokissa käyttää apuna esimerkiksi Inkscape-piirustusohjelmaa, Dia-diagrammieditoria tai GIMP-grafiikankäsittelyohjelmaa. Paljon muitakin vaihtoehtoja on riippuen siitä, missä ympäristössä työskentelet.
  • Jos haluat käyttää O1Library-projektin tarjoamaa välineistöä osana projektiasi, lue alla oleva laatikko. Voit kyllä lukea tuon laatikon muutenkin.

Projektien väliset riippuvuudet Eclipsessä

Jos Eclipse-projekti tarvitsee toimiakseen toista, asia täytyy erikseen ilmoittaa. Muuten import-käskyt eivät löydä toisen projektin luokkia.

Useimpien kurssin projektien yhteyteen on jo määritelty, että ne ovat riippuvaisia O1Library-projektista. Voit tutkia projektien asetuksia todetaksesi tämän: valitse jokin aiempi projekti ja sitten valikosta Project ‣ Properties ‣ Java Build Path ‣ Projects.

Adventure-projektille tätä riippuvuutta ei ole etukäteen määritelty. Jos käytät seikkailupelissäsi O1Library-projektin välineistöä, niin avaa mainittu asetus ja lisää kirjasto painamalla Add...-nappulaa.

Palauttaminen

Valmistelut

Ennen palauttamista sinun tulee paketoida ohjelma zip-pakettiin, mikä onnistuu Eclipsessä esimerkiksi näin:

  1. Varmista kahdesti, että katsot juuri sitä versiota projektistasi, jonka haluat palauttaa, ja että olet tallentanut kaikki sen tiedostot. Varmista vielä kolmannenkin kerran-
  2. Valitse valikosta File ‣ Export...
  3. Avautuvassa pikkuikkunassa valitse General ‣ Archive File.
  4. Paina Next.
  5. Rastita seikkailupeliprojektisi vasemman reunan projektiluettelosta.
  6. Valitse kansio ja nimi zip-paketille kohtaan To archive file. Nimi voi olla esimerkiksi 654321_TitleOfMyGame.zip. Valitse nimi siten, että sen alussa on tekijän tai tekijöiden opiskelijanumerot tai sukunimet.
  7. Paina Finish.
  8. Tutki luomasi zip-paketin sisältö varmistaaksesi, että kaikki sujui oikein. Paketin pitäisi sisältää koko projekti lähdekoodeineen kaikkineen.

Pelin lähettäminen arvioitavaksi

Huomio!

Jos olet tehnyt pelin parin kanssa, varmista että A+:ssa on valittuna paripalautus. Luo tarvittaessa uusi paripalautusryhmä vasemman palkin valikosta. Vain toinen parin jäsenistä palauttaa pelin.

A+ esittää tässä kohdassa tehtävän palautuslomakkeen.

Great work! Because this message is prerecorded, any observations regarding your performance are speculation on our part. Please disregard any undeserved compliments.

Aperture Announcer

Palaute

Huomaathan, että tämä on henkilökohtainen osio! Vaikka olisit tehnyt lukuun liittyvät tehtävät parin kanssa, täytä palautelomake itse.

Tekijät

Tämän oppimateriaalin kehitystyössä on käytetty apuna tuhansilta opiskelijoilta kerättyä palautetta. Kiitos!

Kierrokset 1–13 ja niihin liittyvät tehtävät ja viikkokoosteet on laatinut Juha Sorva.

Kierrokset 14–20 on laatinut Otto Seppälä. Ne eivät ole julki syksyllä, mutta julkaistaan ennen kuin määräajat lähestyvät.

Liitesivut (sanasto, Scala-kooste, usein kysytyt kysymykset jne.) on kirjoittanut Juha Sorva sikäli kuin sivulla ei ole toisin mainittu.

Tehtävien automaattisen arvioinnin ovat toteuttaneet Riku Autio, Jaakko Kantojärvi, Teemu Lehtinen, Timi Seppälä, Teemu Sirkiä ja Aleksi Vartiainen.

Lukujen alkuja koristavat kuvat ja muut vastaavat kuvituskuvat on piirtänyt Christina Lassheikki.

Yksityiskohtaiset animaatiot Scala-ohjelmien suorituksen vaiheista ovat suunnitelleet Juha Sorva ja Teemu Sirkiä. Niiden teknisen toteutuksen ovat tehneet Teemu Sirkiä ja Riku Autio käyttäen Teemun toteuttamia Jsvee- ja Kelmu-työkaluja.

Muut diagrammit ja materiaaliin upotetut vuorovaikutteiset esitykset on laatinut Juha Sorva.

O1Library-ohjelmakirjaston ovat kehittäneet Aleksi Lukkarinen ja Juha Sorva. Useat sen keskeisistä osista tukeutuvat Aleksin SMCL-kirjastoon.

Opetustapa, jossa käytämme O1Libraryn työkaluja (kuten Pic) yksinkertaiseen graafiseen ohjelmointiin on saanut vaikutteita tekijöiden Flatt, Felleisen, Findler ja Krishnamurthi oppikirjasta How to Design Programs sekä Stephen Blochin oppikirjasta Picturing Programs.

Oppimisalusta A+ on luotu Aallon LeTech-tutkimusryhmässä pitkälti opiskelijavoimin. Pääkehittäjänä toimii tällä hetkellä Jaakko Kantojärvi, jonka lisäksi järjestelmää kehittävät useat tietotekniikan ja informaatioverkostojen opiskelijat.

Kurssin tämänhetkinen henkilökunta on kerrottu luvussa 1.1.

Lisäkiitokset tähän lukuun

Tämän luvun inspiraationa ovat olleet vanhat Infocomin seikkailupelit sekä David Barnesin ja Michael Köllingin laatima oppimateriaali.

../_images/imho10.png
Palautusta lähetetään...