Arcade-pelien ohjelmointi
Pythonilla ja Pygamella

Ennen kuin aloitamme...

Kiinnostaako sinua ohjelmoida itse pelejä? Mahtavaa! Tässä muutamia esimerkkipelejä, joita opiskelijat ovat tehneet tällä kurssilla:

Video: Spring 2014 Game Projects
Video: Fall 2013 Game Projects
Video: Fall 2012 Game Projects
Video: Spring 2012 Game Projects

Tässä kappaleessa on kaksi osaa:

  1. Asennetaan koneeseesi peliohjelmoinnin aloittamiseen tarvittavat välineet.
  2. Katsomme ohjelmoinnin ura ja ammattinäkymiä.

0.1 Python asennus ja aloitus

Ensimmäiseksi sinun pitää asentaa kaksi ohjelmaa koneeseesi, Python ja Pygame. Python on tällä kurssilla käyttämämme ohjelmointikieli ja Pygame on ohjelmakirjasto, jossa on peliohjelmointia helpottavia komentoja ja funktioita (toimintoja).

0.1.1 Asennus Windows-koneeseen

Video: Installing Python and Pygame on Windows

Jos sinulla on jo asennettuna koneeseesi Python ja Pygame, niin voit ohittaa nämä ohjeet. Ja vaikka ei olisikaan asennettuna valmiiksi, niin eipä tuo ole vaikeaa Windows-koneeseen.

  1. Suorita Python installer, jonka voit ladata täältä:
    ProgramArcadeGames.com/python-3.4.3.msi
  2. Suorita Pygame installer, jonka laataat täältä:
    ProgramArcadeGames.com/pygame-1.9.2a0.win32-py3.4.msi

Kun olet tehnyt em. asennukset, voit aloittaa Python ohjelman valitsemalla IDLE -editorin (Integrated Development Environment) kuten kuvassa 0.1

fig.starting_python_idle
Figure 0.1: Starting Python

Alkuperäiset asennustiedostot löytyvät myös Python download sivulta:
http://www.python.org/download/
...ja Pygamen alkuperäinen tiedosto täältä:
https://bitbucket.org/pygame/pygame/downloads

Huomaa: Python ja Pygame asennustiedostoista on useita eri versioita. Oikean version valinta saattaa olla hankalaa. Kirjoittaja Paul Craven suosittelee käyttämään ProgramArcadeGames.com sivun linkkejä Python ja Pygame websivujen sijasta.

Jos tällä sivulla oleva versio ei sovellu käyttöösi, voit katsoa sopivan Pygame version tältä websivulta:
www.lfd.uci.edu/~gohlke/pythonlibs/#pygame

0.1.2 Mac asennus

Video: Installing Python and Pygame on OS X

Mac asennus on hieman monimutkaisempi, mutta ei kovin vaikea sekään. Tässä asennusvaiheet (Mac englanninkielinen versio):

  1. Avaa komentokehoteikkuna, klikkaa “Finder” ja edelleen “Applications”. Avaa sitten “Utilities.”
    fig.xcode_1
    Figure 0.2: Starting a terminal window
  2. Kaksoisklikkaa “Terminal”
    fig.xcode_2
    Figure 0.3: Starting a terminal window
  3. Voimme syöttää Macissa komennot “vanhalla tyylillä” näppäimistöllä hiiren käytön sijasta. Aloitamme harvinaisemmalla komennolla gcc. Kirjoita tämä ja näppäile Enter. Mac tunnistaa, että tätä komentoa ei ole ja ehdottaa sen asentamista. Hyväksy tämä jatkaaksesi. (Jos tässä tuleekin error: no input files, niin koneessasi on tarvittava komento ja voit jatkaa.)
    fig.xcode_3
    Figure 0.4: Starting a terminal window
  4. Asenna XQuartz tästä:
    http://xquartz.macosforge.org
  5. Syötä tai kopioi rivi riviltä seuraavat komennot:
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    sudo brew doctor
    brew update
    brew install python3
    brew install sdl sdl_image sdl_mixer sdl_ttf portmidi mercurial
    
  6. Jos haluat saada myös MP3's ja elokuvatuen, yritä lisätä smpeg. Kirjoittajan mielestä tämä tuki vaikutti heikolta ja siksi suositteeleekin käyttämään Ogg Vorbis tiedostomuotoja. Jos haluat kuitenkin kokeilla smpegia, niin voit tehdä sen seuraavalla komennolla:
    brew install --HEAD https://raw.github.com/Homebrew/homebrew-headonly/master/smpeg.rb
    
  7. Nyt sinulla on kaikki tarvittavat kirjastot, niin voimme asentaa Pygamen. Vaihda YourName käyttäjänimesi tilalle. Jos et tiedä käyttäjätilisi nimeä, kirjoita ls /Users, niin saat koneesi kaikki käyttäjätilit.
    cd /Users/YourName/Downloads
    hg clone https://bitbucket.org/pygame/pygame
    cd pygame
    cd src
    pip3 install /Users/YourName/Downloads/pygame
    

Nyt koneessasi pitäisi olla Pygame ja Python toimintakunnossa. Python asennus ei sisällä ohjelmien koodaamiseen tarvittavaa editoria (IDE). Joten se sinun pitää ladata vaikkapa tästä Wing IDE tai tästä PyCharm. Muukin editori kelpaa.

0.1.3 Unix asennus

Unix ja Unix-tyyppinen jakelupaketti saattaa olla mukana Pygame paketissa (tai mahdollisuus saada sellainen). Jos haluat kääntää lähdetiedostoja, tätä ohjelmaa kirjoittaja on käyttänyt Linux Mint:

# Lataa tarvittavat paketit
sudo apt-get install mercurial libsdl1.2-dev
sudo apt-get install libasound2-doc libglib2.0-doc python3-dev
sudo apt-get install libsdl-ttf2.0-dev  libsdl-image1.2-dev
sudo apt-get install libsdl-mixer1.2-dev libportmidi-dev
sudo apt-get install libavformat-dev libswscale-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install libsmpeg-dev

# käytä 'elohopeaa' koodin kloonaamiseen
hg clone https://bitbucket.org/pygame/pygame

# Asenna
cd pygame
sudo python3 setup.py

UNIX alustassa on riskinä, että oletus Python versio on vanhaa versiota 2.x sarjaa. Tämän materiaalin esimerkkikoodit eivät toimi vanhalla versiolla. Varmista, että käytössäsi on versio Python 3.x.

0.1.4 Lisäoptiona Wing IDE

Pythonin mukana tuleva IDLE editori on toimiva, mutta siinä on muutamia puutteita. Opiskelijat ovat törmänneet Pythonin seuraaviin heikkouksiin:

Käsiteltäessä useampaa tiedostoa samanaikaisesti, tallennusten ja suorittamisien kontrollointi on sekavaa.

Grafiikkaa sisältävien Python ohjelmien käsittelyssä mahdollinen ohjelmavirhe 'krässää' ja jumittaa koko ohjelman. Krässännyt ohjelma on hankala sulkea ja virhekoodi on vaikeasti tulkittavissa ja selvitettävissä. Katso kuva 0.5.

fig.bad_idle
Figure 0.5: Python Program Hanging in IDLE

Wing editori ratkaisee tuon ensimmäisen probleeman lisäämällä kunkin tiedoston omaan välilehteen. Se opastaa myös tallentamaan jokaisen tiedoston ennen suoritusta. Ohjelman suoritus tapahtuu Wing debuggerin alla, joten ohjelmavirhe ei krässää koko ohjelmaa. Editori siirtää kohdistimen siihen kohtaan koodissa, jossa virhe havaittiin. Katso kuva 0.6.

fig.good_wing
Figure 0.6: Python Program Hanging in Wing IDE

Edellä mainituista syistä kirjoittaja suosittelee Wing editorin asentamista. Siitä on saatavilla ilmainen versio “Wing IDE 101”:
wingware.com/downloads/wingide-101/

Ohjelmien maksullisissa versioissa on monipuolisemmat ominaisuudet verrattuna ilmaisiin ohjelmiin, mutta ne eivät ole välttämättömiä. Jos haluat käyttöösi automaattitäyttötoimintoja yms. ja olet valmis maksamaan näistä ominaisuuksista, niin maksullisia editoriohjelmia on ladattavissa netistä lukematon määrä.

Sivustolla esitetyissä videoissa on käytetty sekä Python editoria (IDLE) sekä Wing editoria. Tässä on muutama käyttökelpoinen editori:

(Kääntäjän suositus on Notepad++. Se on ilmaisuvoimainen, siinä on tiedostokohtaiset välilehdet ja se tunnistaa Pythonin varatut sanat.)

Ohjelmoijien keskuudessa kiistely siitä, mikä on paras editori on tarpeetonta, koska jokaisella on oma henkilökohtainen suosikki.

0.2 Tiedostopäätteet näkyviin

Tiedostopäätteet saa Windowsissa näkyviin muuttamalla näyttöasetuksia. Normaalisti tiedostohallintaikkunassa näkyy vain tiedoston nimi, ei tiedostopäätettä. Esimerkiksi Book report.docx tiedostossa on pääte .docx, joka kertoo tiedoston olevan Microsoft Word yhteensopiva dokumentti. Samoin jää Python dokumenttien .py tiedostopääte 'piiloon', ellet aseta niitä näkyviin. Tiedostopäätteen näkyminen on hyödyllistä käsiteltäessä erilaisia tiedostoja.

Video: How to show file extensions

Windows 7:ssa saat tiedostopäätteet näkyviin ohjauspaneelista. Etsi “Kansion asetukset.” Klikkaa “Näytä” välilehteä ja poista valinta kohdasta `Piilota tunnettujen tiedostotyyppien tunnisteet.”

Windows 8, avaa tiedostoselain näppäilemällä yhdistelmä Windows-E. Klikkaa “näytä” välilehteä ja varmista, että “Tiedostonimien päätteet ” on valittuna.

0.3 Peliohjelmoinnilla voi ansaita rahaa

Tässä vaiheessa sinusta saattaa tuntua kaukaiselta ajatus, että ohjelmointi voisi olla työsi. Helpompaahan olisi unohtaa peliohjelmointi ja alkaa pelaamaan vaikkapa World of Warcraftia tai jotain muuta peliä. Miksi siis opiskella ohjelmointia? Mitä siitä itse hyötyisin?

fig.money
Figure 0.7: Bags of money

Opi tekemään pelejä ja tienaa sievoinen summa. Varsin monet ovat valmiita maksamaan hyvistä peleistä. Yksinkertaistettu ohje pelien tekemisellä ansaitsemiseen on seuraava ohje:

  1. Opiskele ohjelmoimaan pelejä.
  2. Pidä hauskaa pelaamalla omia pelejäsi.
  3. Valitse kiinnostava työtarjous.
  4. Ansaitse.

Taisit epäillä tätä suunnitelmaa!!

Ajattelepa vielä. Voit pelata pelejäsi, mutta muut eivät voi. Mielenkiintoisten pelien tekeminen ei ole niin vaikeaa kuin saattaisit alkuun kuvitella. Voit oppia luomaan pelejä.

Peliohjelmointi saattaa kuulostaa joistakin vähemmän kiinnostavalta. Silloin kannattaakin kertoa opiskelevansa tietojenkäsittelytieteitä.

0.3.1 Miksi kannattaa opiskella tietojenkäsittelytiedettä?

Puhutaanpa taas ansioista. National Association of Colleges and Employers (NACE) tutki palkkoja eri tieteenaloilta valmistuneiden osalta huhtikuussa 2014. Insinööritieteiden alata valmistuneilla palkat olivat parhaimmat ja seuraavaksi sitten tulivatkin tietojenkäsittelytieteiden aloilla valmistuneet.

Keskimääräinen vuosi ansio aloittain dollareina
Pääaine Keskimääräinen palkkatarjous
Liiketoiminta $53,901
Viestintä $43,924
Tietojenkäsittely $61,741
Koulutus $40,863
Insinööritieteet $62,719
Terveystieteet $51,541
Humanistiset & sosiaalialan tieteet $38,365
Matematiikka & luonnontieteet $43,414

(Tilasto: NACE April 2014 Salary Survey.)

Tietojenkäsittelytieteet tarjoavat kilpailukykyiset mahdollisuudet ja uran työmarkkinoilla. Erityisesti pelialan osaajista on maailmanlaajuisesti kova kysyntä. Tämä nostaa myös ansiotasoa. Katso kuva 0.8 ja kuva 0.9.

fig.code_graphics1
Figure 0.8: STEM/Computer Science Graduates vs. Jobs. Source: code.org
fig.code_graphics2
Figure 0.9: Computer Science Job Outlook. Source: code.org

Miten koulutustaso vaikuttaa palkkaukseen? Seuraavassa taulukossa on esitettynä keskimääräinen vuosiansiotaso eri koulutustaustoilla (Yhdysvalloissa, dollareina). (Kääntäjän huom. Suomessa ansiotason vastaavuus koulutukseen on samansuuntainen. Kaikkia koulutustasoja ei voida verrata koulutusjärjestelmästä johtuvien erojen vuoksi.):

Average salary by education level
Vocational/Tech School (ammatillinen)$65,408
Some College$75,701
High School$79,370
Military$84,131
College Graduate (4-Year) (vrt amk)$85,815
Master's Degree (ylempi korkeakoulu)$97,811
Doctoral Degree (korkeakoulu jatkotutkinto)$113,600

Tilasto on peräisin Dice.com in tutkimuksesta vuosilta 2012 - 2013. Siitä käy ilmi, että kahden vuoden ammatillisen koulutuksen saaneilla on keskimäärin $20,000 pienempi vuosipalkka kuin neljän vuoden koulutksen suorittaneilla.

Tässä linkki materiaalin kirjoittajan, Paul Cravenin, oppilaitokseen, jossa hän toimii professorina:
http://simpson.edu/computer-science

0.3.2 Ota kaikki irti tästä kurssista

Huippu-urheilijat harjoittelevat todella paljon. Niin tekevät myös huippuohjelmoijat.

Jotta tämä olisi mahdollisimman hyödyllistä: VAstaa kappaleiden kysymyksiin. älä ohita niitä, koska niiden osaaminen varmistaa, että ymmärsit asian.

Tee käytännön harjoituksia! Pelkästään lukemalla et opi ohjelmoimaan. Ei huippu-urheilijaksikaan tulla pelkästään kirjoja lukemalla.

Säästäisinkö aikaa ja vaivaa kopioimalla vastaukset netistä tai kaverilta? Hienoa, mahtava ajatus! Vai onko sittenkään? Eikö tuo ole sama kuin ostaisit kuntosalikortin kohottaaksesi kuntoa ja antaisitkin salikorttisi kaverillesi, joka rehkii puolestasi. Nouseekohan sinun kuntosi näin? Ymmärrät varmaankin, että kopioimalla et opi mitään!

Jos siis aiot suorittaa tämän kurssin kopioimalla kaverilta tai muutoin hutiloimalla, niin paras lopettaa tähän ja alkaa kirjoitella työpaikkahakemuksia esimerkiksi 'Mäkkäriin'.

Jos lukeminen ei aina tunnu mieluisalta, niin voit katsoa videoita. (Kääntäjän huom: Videot ovat englannin kielisiä, mutta ohjelmoinnin ammatttilaisen tulee osata englantia. Se on ammattikieli.) Videoista löytyy Youtube-soittolista tästä:
http://www.youtube.com/playlist?list=PL1D91F4E6E79E73E1
Kaiken lisäski, älä unohda kysyä apua ja opastusta opettajaltasi.

0.3.3 Lähetä palautetta

Tässä on kirjoittajan teksti, jota hän käyttää Simpson Collegessa:
Computer Science 150 Fundamentals of Computing I
Tässä samaisesta dokumentista on-line versio:
ProgramArcadeGames.com
Tekstin, websivun materiaalin, harjoitusten, tehtävien, videoiden yms. tavoitteena on opettaa sinulle perusasiat peliohjelmoinnista.

Mitä pidät materiaalista?
Lähetä viesti!

Jos opiskelet materiaalia itsenäisesti, voit lähettää viestiä materiaalin tekijälle. Yhteystiedot ovat alla. (Kääntäjän huom: Otan mielelläni vastaan viestejä myös suomen kielisestä käännöksestä.)

Jos löydät mahdollisia virheitä materiaalista, ole hyvä ja lähetäIf you notice any errors or omissions in the book, please send me sähköpostia. Aina voi tehdä paremmin.

Dr. Paul Vincent Craven
Department Head, Computer Science Department
Simpson College, Indianola, Iowa, 50125 USA
paul.craven@simpson.edu

Suomenkielinen käännös: Jouko Järvenpää, jouko.jarvenpaa[at]gmail.com


You are not logged in. Log in here and track your progress.