Arcade-pelien ohjelmointi
Pythonilla ja PygamellaEnnen kuin aloitamme...
Kiinnostaako sinua ohjelmoida itse pelejä? Mahtavaa! Tässä muutamia esimerkkipelejä, joita opiskelijat ovat tehneet tällä kurssilla:
Tässä kappaleessa on kaksi osaa:
- Asennetaan koneeseesi peliohjelmoinnin aloittamiseen tarvittavat välineet.
- 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
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.
- Suorita Python installer, jonka voit ladata täältä:
ProgramArcadeGames.com/python-3.4.3.msi - 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
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
Mac asennus on hieman monimutkaisempi, mutta ei kovin vaikea sekään. Tässä asennusvaiheet (Mac englanninkielinen versio):
- Avaa komentokehoteikkuna, klikkaa “Finder” ja edelleen “Applications”. Avaa sitten “Utilities.”
- Kaksoisklikkaa “Terminal”
- 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.)
- Asenna XQuartz tästä:
http://xquartz.macosforge.org - 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
- 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
- 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.
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.
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.
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?
Opi tekemään pelejä ja tienaa sievoinen summa. Varsin monet ovat valmiita maksamaan hyvistä peleistä. Yksinkertaistettu ohje pelien tekemisellä ansaitsemiseen on seuraava ohje:
- Opiskele ohjelmoimaan pelejä.
- Pidä hauskaa pelaamalla omia pelejäsi.
- Valitse kiinnostava työtarjous.
- 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.
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
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.
Lähetä viesti!
Jos opiskelet materiaalia itsenäisesti, voit lähettää viestiä materiaalin tekijälle. Yhteystiedot ovat alla.
You are not logged in. Log in here and track your progress.
English version by Paul Vincent Craven
Spanish version by Antonio Rodríguez Verdugo
Russian version by Vladimir Slav
Turkish version by Güray Yildirim
Portuguese version by Armando Marques Sobrinho and Tati Carvalho
Dutch version by Frank Waegeman
Hungarian version by Nagy Attila
Finnish version by Jouko Järvenpää
French version by Franco Rossi
Korean version by Kim Zeung-Il
Chinese version by Kai Lin