• Ei tuloksia

Game Development Based on Open Source Software Components

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Game Development Based on Open Source Software Components"

Copied!
75
0
0

Kokoteksti

(1)

TEKNILLINEN KORKEAKOULU Tietotekniikan osasto

Ohjelmistoliiketoiminnan ja -tuotannon laboratorio

Vesa Oinonen

Pelin kehitys hyödyntäen avoimen lähdekoodin ohj elmistokomponenttej a

Diplomityö Espoossa 17.8.2006

Professori Reijo Sulonen Valvoja:

Ohjaaja: FT Mikko Välimäki

(2)

TEKNILLINEN KORKEAKOULU DIPLOMITYÖN TIIVISTELMÄ Tietotekniikan osasto

Tekijä Päiväys

Vesa Oinonen 17.8.2006

Sivumäärä

71

Työn nimi

Pelin kehitys hyödyntäen avoimen lähdekoodin ohjelmistokomponentteja

Professuuri Koodi

Ohjelmistoliiketoiminta ja -tuotanto T3003

Työn valvoja

Professori Reijo Sulonen

Työn ohjaaja

FT Mikko Välimäki

Diplomityössä tutkitaan markkinoilta löytyviä avoimen lähdekoodin ohjelmistokomponentteja, joi­

ta on mahdollista käyttää kaupallisen tietokonepelin kehityksessä. Diplomityössä toteutetaan keilai- luaiheinen tietokonepeli. Pelin toteutuksessa käytetään hyödyksi avoimen lähdekoodin komponent­

teja seuraaviin toiminnallisuuksiin: 3D-moottori, fysiikkamoottori ja äänikirjasto. Komponenttien käyttämisellä pyritään pienentämään tuotekehityskustannuksia merkittävästi.

Teoriaosassa käsitellään ohjelmistokomponenttien valitsemismenetelmiä ja avoimen lähdekoodin ohjelmistojen erityispiirteitä. Avoimen lähdekoodin erityispiirteitä ovat lisenssiehdot ja kehittä­

jäyhteisöt.

Työn tuloksena saatiin kartoitus markkinoilla olevista pelinkehitykseen soveltuvista avoimen läh­

dekoodin ohjelmistokomponenteista sekä kehitettiin ja julkaistiin ilmaisena versiona tietokonepeli.

Pelistä on mahdollista jatkokehittää kaupallinen tuote myöhemmässä vaiheessa.

On olemassa useita avoimen lähdekoodin 3D-moottoreita, jotka täyttävät nykyaikaisen kaupallisen tietokonepelin vaatimukset. Laadukkaita avoimen lähdekoodin fysiikkamoottoreita ja äänikirjastoja on kuitenkin määrällisesti vähän. Pelin kehitys osoitti, että avoimen lähdekoodin komponenttien käyttäminen mahdollistaa tuotteen kehityksen pienillä tuotekehityskustannuksilla. Huomattavaa on kuitenkin se, että markkinoilta löytyvät pelin kehitykseen soveltuvat avoimen lähdekoodin kom­

ponentit häviävät ominaisuuksiltaan hieman kaupallisille kilpailijoilleen. Merkittävimmät lyhyen aikavälin hyödyt avoimen lähdekoodin komponenttien käyttäjälle ovat pienet komponentin hank- kimiskustannukset ja mahdollisuus ottaa komponentti käyttöön nopeasti. Nopean käyttöönoton mahdollistaa se, että komponentti on toteutettu ja testattu valmiiksi ennen oman tuotekehitysprojek­

tin alkamista. Pidemmän aikavälin hyötyjä ovat ohjelmistokomponenttien uudet versiot, käyttäjän mahdollisuus tehdä muutoksia ja parannuksia komponentteihin sekä käyttäjän riippumattomuus alkuperäisen ohjelmistokomponentin toimittajan tulevaisuudensuunnitelmista.

Avainsanat

Tietokonepeli, avoin lähdekoodi, ohjelmistokomponentti

(3)

HELSINKI UNIVERSITY OF TECHNOLOGY ABSTRACT OF MASTER’S THESIS Department of Computer Science and Engineering

Author Date

Vesa Oinonen 17.8.2006

Pages

71

Title of thesis

Game Development Based on Open Source Software Components

Professorship Professorship Code

Software Business and Engineering T3003

Supervisor

Professor Reijo Sulonen

Instructor

Ph.D. Mikko Välimäki

In this Master’s thesis open source software components suitable for computer game development are studied. A computer game of bowling is developed. Open source components are used in the following functionalities: 3D-engine, physics engine and audio library. The goal for the use of software components is to save significantly at the development costs of the product.

Literature part of the work concerns the methods for selecting software components and special properties of open source software. Special properties of open source are license terms and devel­

opment communities.

Results of the work are market analysis of open source software components suitable for game de­

velopment and a computer game that was developed and published as a free version. The game may be used as a basis for a commercial product at a later stage.

There are several open source 3D-engines that fulfill requirements of commercial computer games, but only a few high quality open source physics engines and audio libraries exist. Development of the game proved that it is possible to reduce significantly in the development costs by using open source software components. However, open source components lose slightly in terms of features to their commercial competitors. The most significant short-term advantages of the use of open source software components are low acquisition costs and a possibility to take the component into use rapidly. Rapid adoption is possible because software components are already implemented and tested before own product development project begins. Long-term benefits are new versions of the software components, user’s right to make modifications to open source software components and user’s independence of the original software component provider.

Keywords

Computer game, open source, software component

(4)

Alkusanat

Tämä diplomityö on tehty Teknillisessä korkeakoulussa Tietotekniikan osastolla Ohjelmis- toliiketoiminnan ja -tuotannon laboratorioon.

Kiitos työni valvojalle professori Reijo Suloselle mahdollisuudesta tehdä diplomityöni mielenkiintoisesta aiheesta sekä hänen työtäni kohtaan osoittamasta kiinnostuksesta.

Suuret kiitokset työni ohjaajalle FT Mikko Välimäelle rakentavista neuvoista, kritiikistä ja kannustavasta suhtautumisesta.

Kiitokset Tomi Tukiaiselle pelin kehitykseen osallistumisesta.

Espoo, elokuu 2006

Vesa Oinonen

(5)

Sisällysluettelo

Lyhenneluettelo... 4

1 Johdanto... 5

1.1 Ongelman kuvaus...6

1.2 Tuotteen kehittämisen tarkoitus...7

1.3 Pelin aihepiirin kuvaus... 8

2 Komponentteihin pohjautuva ohjelmistokehitys... 9

2.1 Uudelleenkäyttämisen motiivit...9

2.2 OTSO-menetelmä... 10

3 Pelien kehitys...12

3.1 3D-moottori... 12

3.2 3D-grafiikan peruskäsitteet... 13

3.3 Fysiikan mallintaminen...14

4 Avoimen lähdekoodin erityispiirteet... 14

4.1 Avoimen lähdekoodin historia... 14

4.2 Lisenssit... 15

4.2.1 BSD, MIT ja ZLIB lisenssit...17

4.2.2 GNU General Public License... 18

4.2.3 GNU Lesser General Public License... 18

4.3 Lisenssien tarttuvuus ja vaikutus liiketoimintamalleihin... 19

4.4 Avoimen lähdekoodin projektit... ...19

4.5 Komponenttien valintakriteerit... 21

4.6 Versiointi ja ohjelmistojen jakelukanavat...21

4.7 Projektien haarautuminen...22

4.8 Avoimen lähdekoodin riskit... 23

5 Sovelluksen vaatimusmäärittely...24

(6)

5.1 Toiminnallisuudet 24

5.2 Kriteerit komponenttien valinnalle... 25

6 Komponenttien markkinakartoitus... 29

6.1 3D-moottorit...30

6.1.1 3D-moottoreiden arviointi... 31

6.1.1.1 Irrlicht... 32

6.1.1.2 OGRE... 34

6.1.1.3 Nebula Device... 35

6.1.2 3D-moottoreiden analysointi ja valinta... 35

6.2 Fysiikkamoottorit...36

6.2.1 Fysiikkamoottoreiden arviointi... 37

6.2.1.1 ODE...37

6.2.1.2 Tokamak Game Physics... 38

6.2.1.3 Newton Game Dynamics...39

6.2.2 Fysiikkamoottoreiden analysointi ja valinta... 40

6.3 Äänikirjastot... 40

6.3.1 Äänikirjastojen analysointi ja valinta... 41

6.4 Yhteenveto komponenttien valitsemisesta... 41

7 Pelin suunnittelu ja toteutus... 42

7.1 Prototyypin rakentaminen...42

7.2 Arkkitehtuurin suunnittelu...46

7.3 Toteutus... 50

7.4 Pelin julkaisu... 54

8 Analyysi...56

8.1 Komponenttien jälkiarviointi... 56

8.2 Komponenttien valitsemisperusteiden arviointi...60

(7)

8.3 Johtopäätökset...61 8.4 Yhteenveto... 64 Lähteet... 67

(8)

Lyhenneluettelo

3D Kolmiuloitteinen

BSD Berkeley Software Distribution D3D Direct3D, 3D-grafiikkarajapinta DLL Dynamically Loadable Library

DMF Deled Map File, 3D-mallien tallennusformaatti FSF Free Software Foundation

GCC GNU Compiler Collection

GNU GNU’s Not Unix

GPL GNU General Public License HTML Hypertext Markup Language HTTP Hypertext Transfer Protocol

LGPL GNU Lesser General Public License MinGW Minimalist GNU for Windows

MIT Massachusetts Institute of Technology

ODE Open Dynamics Engine

OGRE Object-oriented Graphics Rendering Engine OpenGL Open Graphics Library

OSI Open Source Initiative

OTSO Off-The Shelf Option, ohjelmistokomponenttien arviointi- ja valitse­

mismenetelmä

PHP PHP: Hypertext Preprocessor

(9)

1 Johdanto

Viimeisten vuosien aikana avoimeen lähdekoodiin perustuvien ohjelmistojen suosio on kasvanut maailmalla, erityisesti palvelinsovelluksissa [Moc2000], Erilaisia aktiivisia avoimen lähdekoodin projekteja on tuhansia ja avoimen lähdekoodin ohjelmistoja kehite­

tään sekä loppukäyttäjiä että ohjelmistokehittäjiä varten. Kaupallisessa ohjelmistotuoteke- hityksessä on käytetty ohjelmistokomponentteja nopeuttamaan tuotekehitystä ja paranta­

maan tuotteen ominaisuuksia ja laatua [Koni 995]. Valmiiden komponenttien käyttämisellä pyritään pienentämään tuotekehityspanostuksia.

Tässä diplomityössä tarkastellaan avoimen lähdekoodin ohjelmistokomponenttien käyttä­

mistä osana tuotekehitystä. Ohjelmistokomponenttien käyttämisellä pyritään pienentämään tuotekehityskustannuksia. Diplomityön kirjallisessa osassa tutkitaan avoimen lähdekoodin erityispiirteitä ja esitetään aikaisemmin tutkittuja komponenttien valitsemismenetelmiä.

Diplomityössä kartoitetaan markkinoilta löytyviä kaupallisen pelin kehitykseen soveltuvia avoimen lähdekoodin ohjelmistokomponentteja. Työn aikana kehitetään kaupalliseen levi­

tykseen soveltuva tietokonepeli, jonka kehityksessä hyödynnetään valittuja avoimen läh­

dekoodin ohjelmistokomponentteja. Pelin aihepiiri on keilailu.

Diplomityö on tehty diplomityön tekijän oman aiheen pohjalta. Diplomityön tekemisen motiivina on liiketoiminnan harjoittaminen myymällä kehitettyä peliä, mikäli innovatiivi­

sella tuotekehityksellä pystytään kilpailemaan muiden toimijoiden kanssa ja tuotteelle löy­

tyy riittävästi kysyntää.

(10)

1.1 Ongelman kuvaus

Tietokonepelejä on tehty henkilökohtaisten tietokoneiden yleistymisestä lähtien. Pelien ominaisuudet ovat vuosien kuluessa kehittyneet huikeasti. Useimmissa nykyaikaisissa pe­

leissä on näyttävä reaaliaikainen 3D-grafiikka, realistinen fysiikanmallinnus ja verkkope­

limahdollisuudet. Komponenttipohjainen tuotekehitys on yleistä pelikehityksessä [Bis 1998]. Peliyhtiöt ovat perinteisesti kehittäneet tarvitsemansa komponentit itse tai ovat lisensoineet ne alihankkijoilta tai toisilta peliyhtiöiltä [Rol2003a],

Avoimen lähdekoodin projekteja on syntynyt viimeisten vuosien aika kasvavalla vauhdilla.

Palvelinsovelluksissa avoimeen lähdekoodiin pohjautuvat ratkaisut ovat lisääntyneet 2000- luvulla merkittävästi. Parhaiten menestyneitä avoimen lähdekoodin sovelluksia ovat Apache HTTP-palvelin yli 50 % markkinaosuudellaan [Moc2000] ja Linux käyttöjärjes­

telmä yli 200 % vuotuisella kasvulla [Ler2002b], Myös useita pelinkehitykseen soveltuvia ohjelmistokomponentteja on kehitetty avoimen lähdekoodin kehittäjien toimista. Avoimen lähdekoodin sovelluksien takana on joukko avoimen lähdekoodin kehitysyhteisöjä. Avoi­

men lähdekoodin kehittämiseen löytyy erilaisia motiiveja kuin kaupallisissa tuotteissa.

Avoimen lähdekoodin ominaispiirteitä ovat lähdekoodin saatavuus, oikeus muokata ohjel­

maa sekä oikeus levittää ohjelmaa edelleen [Gac2004], Usein avoimen lähdekoodin sovel­

lukset ovat ilmaisia.

Ohjelmistokomponenttien uudelleenkäyttöä ja kaupallisten ohjelmistokomponenttien valit­

semismenetelmiä on tutkittu tieteellisissä julkaisuissa. Komponenttien käyttämisellä on pyritty kustannustehokkuuteen ja laadun parantamiseen. Tässä diplomityössä tutkitaan avoimen lähdekoodin erityispiirteiden vaikutusta komponenttien valintakriteereihin, teh­

dään markkinakartoitus pelin kehitykseen soveltuvista ohjelmistokomponenteista ja kehite­

tään kaupalliseen käyttöön soveltuva keilailuaiheinen tietokonepeli. Komponenttien mark- kinakartoituksen avulla hankitaan tietoa olemassa olevista pelin kehitykseen soveltuvista ohjelmistokomponenteista. Komponenttien valitsemismenetelmää käytetään valittaessa komponenteista tarpeisiin soveltuvin vaihtoehto. Valittuja komponentteja hyödyntäen to­

teutetaan kaupalliseen toimintaan soveltuva tietokonepeli.

(11)

Käyttö avoimen lähdekoodin lisenssiin

T uotteen kehittäminen

hyödyntäen komponenttia

lähdekoodin kehittävät

Kehittäminen

Käyttää Avoimen

lähdekoodin komponentti

Suljettu ohjelmisto (peli)

Kuva 1. Tuotekehitys hyödyntäen avoimen lähdekoodin komponentteja.

Diplomityössä käsitellään avoimen lähdekoodiin liittyviä ominaispiirteitä käyttäjän näkö­

kulmasta. Toteutettavaa peliä ei julkaista avoimena lähdekoodina vaan tuotekehityksen osana käytetään avoimeen lähdekoodiin pohjautuvia komponentteja. Avoimen lähdekoodin komponenttien kehityksestä vastaavat kehittäjäyhteisöt, joihin komponentin käyttäjillä ei ole suoraa vaikutusvaltaa. Tässä työssä käsitellään avointa lähdekoodia yhtenä ohjelmisto­

tuotannon menetelmänä pienentää omia kehityskustannuksia. Julkaistava tuote tulee sisäl­

tämään useita avoimen lähdekoodin komponentteja, mutta loppukäyttäjälle peli esitetään yhtenäisenä viimeisteltynä tuotteena, ilman että loppukäyttäjän tarvitsee tuntea käytettyjä komponentteja tai kehitysmenetelmiä.

Diplomityössä tutkitaan onko mahdollista kehittää pienillä tuotekehityskustannuksilla ominaisuuksiltaan kilpailukykyinen peli käyttämällä markkinoilta löytyviä tietokonepelien kehitykseen soveltuvia avoimen lähdekoodin komponentteja.

1.2 Tuotteen kehittämisen tarkoitus

Tarkoituksena on kehittää tietokonepeli, jota on mahdollista myydä Internetin välityksellä loppukäyttäjille. Peli on keilailupeli. Pelin ensisijainen kohdekäyttöjärjestelmä on Mic­

rosoft Windows. Mahdollisesti myöhemmin tuetaan Mac OS X-käyttöjäijestelmää sekä yleisimpiä Linux-jakeluita. Tarkoituksena on mahdollistaa tuotteen myyminen loppukäyt­

täjille, joten kaikkien pelissä käytettävien komponenttien on sallittava jakelu ja kaupallinen käyttäminen. Pelin lähdekoodia ei liiketoiminnallisista syistä haluta julkaista.

(12)

Tuotteen kaupallistaminen on jaettu kolmeen vaiheeseen: tuotteen kehittäminen, Internet- sivuston perustaminen, palautteen kerääminen loppukäyttäjiltä sekä tilaus-, toimitus- ja maksuprosessin kehittäminen.

Ensimmäisessä vaiheessa peliä kehitetään suljetussa ympäristössä. Oman tuotekehityksen ensimmäinen prioriteetti on minimoida loppuasiakkaalle hyötyä tuottamaton työ. Tavoit­

teen saavuttamiseksi pyritään käyttämään aina kun on mahdollista muiden tekemiä kom­

ponentteja ja välttämään omaa ohjelmointityötä. Toinen tavoite on minimoida ylläpitotyön tarve, minkä takia vältetään muutoksien tekemistä komponentteihin. Ensimmäisen tuote- kehitysvaiheen lopputuloksena on tehty toimiva, helposti käytettävä ja asennettava peli, joka pyrkii olemaan kilpailukyinen kaupallisten tuotteiden kanssa. Pelin ensimmäinen ke­

hitysversio tulee olemaan yhdellä tietokoneella pelattava peli. Peliin kehitetään monen pe­

laajan mahdollisuus, mutta pelaaminen tapahtuu samalla tietokoneella.

Pelistä tehdään ilmainen julkaisu ennen tuotteen kaupallistamista. Ilmaisen version avulla pyritään varmistamaan että tuotteelle löytyy riittävästi kysyntää. Mikäli tuotteelle ei löydy tarpeeksi kysyntää ilmaisena versiona, voidaan päätös tuotteen kaupallistamisen lopettami­

sesta tehdä tässä vaiheessa tai kehittää tuotteesta parempi ilmainen versio. Peliä varten täy­

tyy kehittää Intemet-sivusto, joka mahdollistaa pelin lataamisen käyttäjän tietokoneelle ja tuotteeseen tutustumisen. Sivustolle laitetaan mahdollisuus antaa palautetta pelistä. Näin pyritään saamaan konkreettista tietoa pelin hyvistä ja huonoista puolista käyttäjien näkö­

kulmasta. Samalla pyritään kartoittamaan pelin toimivuutta erilaisilla laitealustoilla.

Pelin seuraava tuotekehitysvaihe on toteuttaa peliin Internetin kautta toimiva pelaajien pis­

teytysjärjestelmä, jonne pelaajat pystyvät lähettämään omia pelituloksiaan. Tarkoituksena on luoda kilpailua pelaajien välille ja kilpailuhenkisyyden kautta nostaa pelin kiinnosta­

vuutta.

Kolmantena vaiheena on kehittää pelistä maksullinen versio. Kaupallistamisvaiheessa In- temet-sivustolle kehitetään mahdollisuus ostaa peli. Diplomityön aihe rajataan kattamaan vain pelin ensimmäisen ilmaisen version kehittäminen.

1.3 Pelin aihepiirin kuvaus

Kehitettävä tuote on keilailupeli. Keilailu on suosittu urheilulaji Euroopassa ja Yhdysval­

loissa. Suomessa rekisteröityneitä pelaajia oli 2005 vuonna 214 000 [Kei2005] ja keilailu on Yhdysvaltojen suosituin urheiluharrastus. Vuoden 2005 aikana 53,1 miljoonaa amerik­

(13)

kalaista oli käynyt keilaamassa vähintään kerran [Bow 1998]. Peli on aihepiiriltään rajoitet­

tu riittävän suppealle alueelle, joten keilailupelin toteuttaminen on mahdollista pienin hen­

kilöresurssein.

Keilaus kuuluu urheilupelien lajityyppiin. Lajityyppien käyttäminen on yleisin tapa kuvail­

la pelejä [Bjö2003], Urheilupeleille tyypillisiä piirteitä ovat reaalimaailmasta tunnetun ym­

päristön simuloiminen ja se että useimmat uudet käyttäjät ovat tietoisia pelin tarkoituksesta ja säännöistä ilman erillistä opetusta [Rol2003b] [Cra2003]. Pelimaailman simulointi vaatii ympäristön ja fysiikan mallinnusta. Fysiikan mallinnuksen avulla voidaan saada aikaiseksi reaktioita pelimaailmaan, joita pelaaja odottaakin tapahtuvan. Kuitenkaan pelin fysiikan mallinnuksen ei tarvitse vastata täysin todellisuutta, sillä pelaajille tärkeämpi ominaisuus on tapahtumasta seuraavien reaktioiden ennustettavuus sekä yhdenmukaisuus [Hec2000], Keilailupelin tulisi olla graafisesti näyttävä ja fysiikanmallinnukselta realistinen, jotta tuote pystyy kilpailemaan menestyksekkäästi olemassa olevia kilpailijoita vastaan. Kilpailevia tuotteita on markkinoilla, mutta suurimmassa osassa ei ole aitoa 3D-grafiikka tai realistista fysiikan mallinnusta.

2 Komponentteihin pohjautuva ohjelmistokehitys

Tässä kappaleessa kuvaillaan komponenttien uudelleenkäyttämisen hyötyjä sekä menetelmiä komponenttien valintaan.

2.1 Uudelleenkäyttämisen motiivit

Ohjelmistojen uudelleenkäyttöä on pidetty tärkeänä ratkaisuna useaan ohjelmistokehityk­

sen ongelmaan ja uudelleenkäytön väitetään parantavan ohjelmistokehityksen tuottavuutta ja laatua [Koni995a], Ohjelmistokomponentti on itsenäinen, muista sovelluksen osista riippumaton yksikkö, jonka käyttämiseen on hyvin määritellyt rajapinnat. Komponentti­

pohjainen suunnittelu käsittää komponenttien hankkimisen, kehittämisen ja integroimisen siten että uudelleenkäytettävyys paranee [Bud2004],

Komponentteihin pohjautuvan ohjelmoinnin oletettuja hyötyjä ovat kehitysajan lyhentymi­

nen, koska erilliset kehittäjäryhmät voivat työskennellä eri komponenttien parissa ilman suurta tarvetta kommunikoida keskenään. Jos komponentin rajapinnat pysyvät muuttumat­

tomina, voidaan komponentin sisäiseen toteutukseen tehdä muutoksia ilman, että kompo­

nenttia käyttävää koodia täytyy muokata. Kolmas hyöty komponenttien käytöstä on ohjel-

(14)

man ymmärrettävyyden parantuminen, sillä ohjelman käyttöä voidaan tutkia komponentti kerrallaan [Par 1972].

Tietokonepelit sisältävät tyypillisesti toiminnallisuuksiltaan samankaltaisia ominaisuuksia, minkä takia pelejä kehittävät yritykset käyttävät uudelleen itse tehtyjä tai muiden tekemiä komponentteja [Rol2003a], Tällöin tuotekehitysajat lyhenevät, useille käyttöjärjestelmille ja alustoille kääntäminen on nopeampaa ja ohjelmakoodista tulee helpommin ylläpidettävä.

2.2 OTSO-menetelmä

OTSO-menetelmässä käsitellään pakattujen, uudelleenkäytettävien valmisohjelmien valit- semisprosessia [Koni995a] [Koni995b] [Koni996]. Menetelmä tukee ohjelmien etsimis­

tä, arvioimista ja valitsemista sekä määrittelee tekniikan arviointikriteereiden määrittämi­

seen. OTSO-menetelmä on hyvin määritelty, systemaattinen prosessi, joka kattaa koko uu­

delleenkäytettävien komponenttien valintaprosessin. Se määrittelee metodin, jolla voi uu- delleenkäyttämistavoitteista johtaa komponenttien arviointikriteerit. Komponenttien valit- semisprosessi on jaettu OTSO-menetelmässä kuuteen eri vaiheeseen: etsiminen, seulonta, arviointi, analysointi, käyttöönotto ja jälkiarviointi. Kuvassa 2 esitetään OTSO- menetelmän mukainen komponenttien valitsemisprosessi.

(15)

Vaatimusmäärittely Tekninen suunnitelma P rojektisu u nnitelm a Organisaation ominaisuudet

nuksiin Muutokset vaati

Etsiminen

Palaute

Arviointikriteerin määritys

Seulonta

Kriteereiden määritykset

Arviointikriteeri Arvioitavat

Arviontien tulokset Arviointi

Kustannukset

Päätös Valittu

komponentti Arvon määritys

Kuva 2. OTSO-menetelmän komponenttien valitsemisprosessi [Koni996].

Etsimisvaiheessa etsitään komponenttikandidaatteja ja kirjataan ne ylös. Seulontavaiheessa erotetaan potentiaaliset komponentit muista tarkempaa tutkimista varten. Arviointivaihees­

sa tutkitaan kuinka komponentit sopivat ennalta määriteltyihin arviointikriteereihin. Ana­

lysointivaiheessa komponenttiarvioiden tuloksia arvioidaan toisiinsa nähden, minkä jäl­

keen tehdään päätös käytettävästä komponentista. Käyttöönottovaiheessa valittu kompo­

nentti otetaan käyttöön. Jälkiarvioinnissa arvioidaan valitun ja käyttöönotetun komponen­

tin hyödyllisyyttä ja dokumentoidaan saadut tulokset mahdollista myöhempää käyttöä var­

ten.

OTSO-menetelmässä määritellään komponenttien analysointiin käytettävät arviointikritee­

rit ennen komponenttien etsimistä. Arviointikriteerien määrittelemistä varten suositellaan uudelleenkäyttötavoitteiden ja rajoituksien määrittelemistä. Uudelleenkäyttötavoitteissa tulisi määritellä missä kehitettävän sovelluksen osassa halutaan käyttää valmiita kom­

ponentteja. Odotettavat säästöt tulisi myös arvioida rahan ja ajankäytön suhteen. Uudel- leenkäyttörajoituksissa voidaan asettaa esimerkiksi hankintojen maksimihinta ja määritellä vaadittavat käyttöjärjestelmä-ja ohjelmointikielivaatimukset.

(16)

Arviointikriteeriä määriteltäessä tulisi ottaa huomioon muitakin tekijöitä kuin teknisiä vaa­

timuksia. OTSO-menetelmässä suositellaan jakoa funktionaalisiin, laadullisiin, arkkiteh­

tuurisiin ja strategisiin kriteereihin. Funktionaaliset vaatimukset viittaavat tapauskohtaisesti määriteltäviin toiminnallisiin vaatimuksiin. Laadulliset vaatimukset ovat yleisemmin mää­

riteltäviä vaatimuksia, joiden arvoja voidaan vaihdella tapauskohtaisesti. Laadullisia vaa­

timuksia ovat esimerkiksi sallittu virheiden määrä ja dokumentoinnin laadukkuus. Arkki­

tehtuuriset vaatimukset sisältävät teknisen toteutuksen vaatimuksia, esimerkiksi vaatimus tietylle ohjelmointikielelle tai vaatimus reaaliaikaiselle laskennalle. Strategiset vaatimukset vaikuttavat komponenttien valitaan ja ne voivat käsitellä esimerkiksi hankintakustannuksia tai toimittajaorganisaatiota itse tuotteen lisäksi. Esimerkkinä toimii toimittajan tulevaisuu­

den suunnitelmien huomioon ottaminen.

Tässä diplomityössä käytetään OTSO-menetelmää komponenttien valitsemisessa. Arvioin­

tikriteeriin vaikuttavia tekijöitä ovat pelin vaatimusmäärittely, liiketoiminnalliset vaati­

mukset ja avoimen lähdekoodin erityispiirteet.

3 Pelien kehitys

Tässä kappaleessa käsitellään lyhyesti nykyaikaisissa tietokonepeleissä käytettäviä käsittei­

tä ja tekniikoita. Näitä tietoja käytetään pelin vaatimusmäärittelyn tekemisessä ja käytettä­

vien komponenttien tarpeiden määrittelyssä.

Pelin kehitys on jaettavissa pelin idean suunnitteluun, projektin hallintaan, sovelluksen arkkitehtuurin suunniteluun ja toteutukseen [Rol2003a]. Tässä diplomityössä keskitytään tekniseen suunnitteluun, idean tarkempi suunnittelu ja projektin hallinta jäävät työn aihe­

piirin ulkopuolelle.

3.1 3D-moottori

Useimmat nykyaikaiset pelit toimivat reaaliaikaisesti päivitettävässä kolmiulotteisessa maailmassa. 3D-moottori on komponentti, jonka tehtävä on vastata kolmiulotteisten kappa­

leiden geometrisen tiedon käsittelystä ja esittämisestä [Che2005]. 3D-moottori on yksi pe­

lien ydinkomponenteista, sillä se vastaa pelimaailman esittämisestä käyttäjälle. Pelimootto- reita kehittävän NDL yhtiön tekemän tutkimuksen mukaan keskimääräisen kaupallisen pe­

lin kehittämiskustannuksista 40 - 70 % kuluu 3D-moottorin kehittämiseen [Rol2003a].

(17)

Pelimoottori on 3D-moottoria laajempi kokonaisuus, jonka avulla on mahdollista tehdä pienellä ohjelmointityöllä tiettyyn kategoriaan kuuluvia pelejä. Pelimoottori on integroitu kokonaisuus moduuleita, jotka tyypillisesti hoitavat 3D-moottorin tehtävät, 2D-grafiikan piirtämisen, äänten käsittelyn ja pelimaailman fysiikan mallintamisen. Pelin kehittäjille jää pelilogiikan toteuttaminen ja pelimaailman mallintaminen [Lew2002].

3.2 3D-grafiikan peruskäsitteet

Tässä kappaleessa kuvataan lyhyesti 3D-grafiikan peruskäsitteitä. Käsitteiden kuvaaminen on tarpeen, jotta 3D-moottorille pystytään asettamaan vaatimusmäärittelyt.

Tekstuurikartoittaminen (texture mapping) on menetelmä, jolla asetetaan 3D-mallin pin­

nalle 2-uloitteinen kuva [Heal997]. Tekstuurikartoituksen avulla pystytään lisäämään pin­

nalle yksityiskohtia ja tekemään 3D-malleista realistisen näköisiä. Peleissä on käytettävä reaaliaikaista grafiikan piirtämistä, joten kuva on piirrettävä kymmeniä kertoja sekunnissa ruudulle jotta pelitapahtumat päivittyisivät sulavasti [Lam2000]. Valotuksen ja varjojen laskeminen on raskas operaatio. 3D-maailman valotus paikallaan pysyvistä valonlähteistä on mahdollista laskea etukäteen. Tämä on mahdollista valokartoitustekniikan (lightmap- ping) avulla, jossa kappaleen pinnalle vaikuttavat valaistustiedot tallennetaan erilliseen va- lotustekstuuriin [Ion2003]. Valokartoitustekniikkaa soveltuu erityisen hyvin sisätiloihin sijoittuviin peleihin.

3D grafiikan esittämistä eli renderöintiä varten on kehitetty rajapintoja, jotka sijaitsevat loogisesti sovelluskoodin ja 3D-grafiikkakortin ajureiden välissä. Yleisimpiä renderöintira- japintoja ovat Direct 3D ja OpenGL [Rol2003a] [Eck2003], Rajapintojen avulla sovellus- kehittäjät voivat tehdä laitteistoriippumattomia sovelluksia. Direct 3D on Microsoftin ke­

hittämä rajapinta. Direct 3D kuuluu Microsoftin DirectX-multimediakirjastoon. DirectX kirjasto on käytettävissä vain Windows käyttöjärjestelmällä. OpenGL (Open Graphics Lib­

rary) on alun perin SGI yrityksen kehittämä käyttöjärjestelmä- ja laitteistoriippumaton ren- deröintirajapinta. OpenGL on tuettuna muun muassa Windows, Linux ja Mac OS X käyttö­

järjestelmillä. 3D-moottorit tyypillisesti kapseloivat renderöintirajapintojen käyttämisen, joten 3D-moottorin käyttäjän ei välttämättä tarvitse osata käyttää renderöintirajapintoja suoraan [And2005], 3D-moottorit voivat käyttää useita renderöintirajapintoja, mutta niiden käyttö on piilotettu loppukäyttäjältä yhteisen 3D-moottorin tarjoaman rajapinnan taakse.

Tämän seurauksena loppukäyttäjän ei tarvitse tehdä muutoksia koodiinsa kun renderöinti- rajapintaa vaihdetaan.

(18)

3.3 Fysiikan mallintaminen

Fysiikan mallintaminen on tapa toteuttaa todentuntuisia reaktioita kappaleiden liikkeisiin pelimaailmassa. Fysiikan mallintaminen liittyy läheisesti 3D-grafiikan esitykseen, mutta fysiikan laskeminen on mahdollista eriyttää omaan komponenttiinsa. Fysiikan mallintami­

seen ja simuloimiseen erikoistunutta komponenttia kutsutaan fysiikkamoottoriksi. Tyypilli­

sesti fysiikan mallinnus koostuu kappaleiden kosketuksen tunnistamisesta, kontaktitapah- tumien erottelemisesta, voimien laskemista sekä kappaleiden tilojen päivittämisestä [Hec2000], Kappaleille asetetaan fyysisiä ominaisuuksia kuten massa, nopeus, hitausmo­

mentti, kitka- ja kimmokertoimet sekä kappaleen geometrinen muoto. Fysiikan mallintami­

sen avulla peleistä tulee simuloituja, jolloin kappaleiden liikkeitä ei tarvitse määritellä etu­

käteen vaan kappaleiden liikkeet lasketaan reaaliajassa. Kappaleiden törmäyksien tunnis­

taminen on realistisen mallinnuksen kannalta erittäin tärkeää [Lug2005], Törmäyksien tun­

nistaminen voi olla osa fysiikkamoottoria, mutta törmäyksientunnistusalgoritmit on mah­

dollista eriyttää omaan kirjastoon.

4 Avoimen lähdekoodin erityispiirteet

Avoimen lähdekoodin sovelluksen ja projektit eroavat perinteisistä kaupallisista ohjelmis­

totuotteista. Tässä kappaleessa käsitellään avoimen lähdekoodin erityispiirteitä käyttäjän näkökulmasta.

4.1 Avoimen lähdekoodin historia

Avoimen lähdekoodin kehittämisen juuret ovat peräisin 1960-luvulta [Ler2002b]. Kehitys­

tä tapahtui yliopistoissa kuten MIT ja Berkeley, joissa lähdekoodin jakaminen oli yleistä.

1980-luvulla yritykset alkoivat suojata immateriaalioikeuksiaan ja rajoittamaan ohjelmisto­

jen käyttöä. Vuonna 1983 MIT yliopiston tutkija Richard Stallman perusti instituution ni­

meltä Free Software Foundation (FSF), jonka tarkoituksena oli kehittää vapaita ohjelmisto­

ja. Instituutio kehitti erityisen lisenssin vapaan lähdekoodin kehitystä varten. Lisenssin nimi oli GNU General Public License (GPL). Lisenssi salli käyttäjälle ohjelman lähdekoo­

din muokkaamisen ja jakelemisen sillä ehdolla, että muokattu lähdekoodi täytyi julkistaa eikä lisenssiehtoja saanut muuttaa. GNU on rekursiivinen akronyymi, joka tulee sanoista

(19)

GNU’s Not UNIX. GNU-projektin tarkoitus on luoda käyttäjälle vapaa ja ilmainen Unix yhteensopiva käyttöjärjestelmä.

Internetin yleistyminen 1990-luvulla mahdollisti vapaan lähdekoodin kehittämisen kiihty­

misen [Ler2002b], Useita avoimen lähdekoodin projekteja syntyi 1990-luvulla, joista tun­

netuin on Linus Torvaldsin kehittämä Linux-käyttöjärjestelmä. Toinen 1990-luvun ilmiö oli erilaisten avoimen lähdekoodin lisenssien yleistyminen. GPL-lisenssi oli 1980-luvulla hallitseva lisenssi, mutta 1990-luvulla yleistyivät sellaiset avoimen lähdekoodin lisenssit, jotka eivät vaatineet että kaikki ohjelman osat täytyy lisensoida saman lisenssin alaisena.

Vuodesta 2002 lähtien avoimen lähdekoodin projekteja isännöivälle SourceForge.net In- temet-sivustolle on rekisteröity vuosittain noin 20 000 uutta avoimen lähdekoodin projek­

tia [Com2005].

Avoimen lähdekoodin kehittäjillä on erilaisia motiiveja kehittää avoimen lähdekoodin so­

velluksia. Henkilökohtaisia motiiveja ovat muiden yhteisön jäsenten kunnioitus, oppimi­

nen, rahan ansaitseminen, omiin tarpeisiin soveltuvan sovelluksen kehittäminen ja refe- renssityön tekeminen tulevia työpaikkoja varten [Ler2002b] [Fel2002], Avoimen lähde­

koodin sovelluksien kehittämiseen osallistuu yrityksiä erilaisia liiketoimintamalleja käyttä­

en. Yrityksiä kiinnostavia motiiveja ovat oman tuotteen markkinaosuuksien kasvattaminen, kilpailijoiden aseman heikentäminen, tuotteen kehittäminen olemassa olevan sovelluksen pohjalta, sovelluksen testaaminen käyttäjäyhteisöllä sekä muiden avoimen lähdekoodin kehittäjien tuotekehityspanoksien hyödyntäminen. Liiketoimintamalleja ovat muun muassa ohjelmistojen kehitys omaan käyttöön, sovelluksien paketointi ja myynti sekä sovellusalus­

tan kehittäminen kaupallista tai tieteellistä tutkimusta varten [Gac2004] [Ros2005],

4.2 Lisenssit

Avoimen lähdekoodin kehitysmalli perustuu lisensointiin. Lisensointi on riippuvainen teki­

jänoikeudesta [Hie2002], Tekijänoikeus kieltää teoksen kopioimisen, levityksen ja muunte­

lemisen ilman oikeuden haltijan suostumusta. Tekijänoikeuden haltija voi lisenssillä myön­

tää oikeuksia tekijänoikeuden suojaamiin ominaisuuksiin.

(20)

Open Source Initiative (OSI) on määritellyt, että avoimen lähdekoodin lisenssin täytyy sal­

lia seuraavat oikeudet [Väl2005]:

• oikeus vapaaseen käyttöön

• oikeus kopiointiin ja jakeluun ilman lisenssimaksuja

• oikeus muokkaamiseen ilman lisenssimaksuja

• lähdekoodin on oltava avoin ja helposti saatavilla

Lisenssin täytyy sallia tekijänoikeuteen perustuvien tärkeimpien komponenttien käyttö il­

man lisenssimaksuja. Oikeus vapaaseen käyttöön tarkoittaa, että käyttäjiä ei saa syrjiä minkään ominaisuuden mukaan, kuten kaupallisen käytön perusteella. Muokkaamisoikeu- teen voidaan sitoa velvoitteita, kuten velvollisuus julkaista muokattu versio.

OSI on hyväksynyt kymmeniä eri avoimen lähdekoodin lisenssejä. Niitä voidaan jaotella toiminnallisuuden ja historian perusteella. Toiminnallisia eroavaisuuksia ovat tarttuvuus ja sallivuus. Historiallisia jaottelutekijöitä ovat GNU, akateeminen, yhteisöllinen ja yrityksien lisenssit.

Toiminnallisia ominaisuuksia voidaan määritellä sen perusteella, minkälaisia oikeuksia lisenssi sallii lähdekoodin muokkaamiseen [Väl2005]. Tavallisesti tarttuva lisenssi tarkoit­

taa sitä, että muokatun lähdekoodin jakeluehtoj a ei saa muuttaa. Jos lähdekoodi yhdistetään toiseen lähdekoodiin, minkä seurauksena syntyy yhdistetty teos, niin tavallisesti tarttuvan lisenssin ehdot eivät koske yhdistettyä teosta. Tämä tarkoittaa sitä, että yhdistettyä teosta saa jaella toisen lisenssin avulla. Voimakkaasti tarttuvat lisenssit ulottavat lisenssin katta­

vuuden myös yhdistettyyn teokseen. Tämän seurauksena myös muu lähdekoodi on saman tai toiminnallisuuksiltaan vastaavan lisenssin alaisuudessa.

Toinen toiminnallinen jaottelutekijä on lisenssin sallivuus. Sallivuudella tarkoitetaan käyt­

täjän oikeutta jakeluun, kopiointiin ja muokkaamiseen.

(21)

Vahvasti tarttuva

Kuva 3. Lisenssien toiminnallisuuksien vaikutukset [Väl2005].

Kuvassa 3 esitetään avoimen lähdekoodin lisenssin toiminnallisuuksien vaikutuksia johdet­

tuihin ja yhdistettyihin teoksiin. Tavallisesti tarttuvia ja sallivia lisenssejä on mahdollista käyttää kaupallisissa tuotteissa, sillä tuote muodostaa yhdistetyn teoksen, joka on mahdol­

lista lisensoida toisen lisenssin alaisena.

Seuraavaksi käsitellään yleisimpiä avoimen lähdekoodin lisenssejä, erityisesti miten ne vaikuttavat ohjelman käyttämiseen osana toisia tuotteita.

4.2.1 BSD, MIT ja ZLIB lisenssit

MIT [OSI2006a] ja BSD [0812006b] lisenssit ovat ensimmäisiä avoimen lähdekoodin li­

senssejä ja ne ovat ominaisuuksiltaan sallivia. Myös ZLIB [OS12006c] lisenssi kuuluu sa­

maan kategoriaan. Nämä lisenssit mahdollistavat lisensoidun koodin yhdistämisen kaupal­

lisiin tuotteisiin. Muutoksia alkuperäiseen koodiin ei ole pakko julkaista, vaikka ohjelma julkaistaisiin binäärimuodossa [And2004], Sallivuuden takia MIT, BSD ja ZLIB lisenssien alaisia ohjelmistoja on mahdollista kehittää edelleen toisen lisenssi alaisena, mikä mahdol­

listaa ohjelmiston siirtymisen avoimen lähdekoodin ohjelmistosta kaupalliseksi suljetuksi ohjelmistoksi. MIT, BSD ja ZLIB lisenssin alaisia ohjelmia voi käyttää helposti muiden avoimen lähdekoodin lisenssien kanssa yhteen. Tutkimuksen [Ler2002a] mukaan kehittä­

jille ja järjestelmäylläpitäjille suunnatut menestyneet avoimen lähdekoodin sovellukset on julkaistu useimmiten sallivilla lisensseillä.

(22)

MIT lisenssissä annetaan käyttäjälle oikeus käyttää, kopioida, muokata, yhdistellä, julkais­

ta, jaella, uudelleen lisensoida ja myydä kopioita ohjelmasta sillä ehdolla, että tekijät eivät ole minkäänlaisessa vastuussa ohjelman toiminnasta.

BSD ja ZLIB lisenssit ovat ehdoiltaan MIT lisenssin kaltaisia, mutta ne asettavat johdetuil­

le teoksille ehdoiksi sen, että alkuperäisten tekijänoikeuksien haltijat mainitaan. ZLIB li­

senssi vaatii, että alkuperäistä lähdettä ei saa tulkita harhaanjohtavasti ja alkuperäisten teki­

jöiden mainitsemista suositellaan, mutta ei vaadita. BSD ja ZLIB lisensseissä ei vaadita, että johdettua teosta ei saisi lisensoida eteenpäin tiukempien lisenssiehtojen alaisina, kun­

han lisenssien vaatimukset täytetään.

4.2.2 GNU General Public License

GNU General Public License (GNU GPL) [OSI2006d] on Free Software Foundation (FSF) järjestön kehittämä avoimen lähdekoodin lisenssi, mikä on ollut yleisin avoimen lähdekoo­

din lisensseistä 1990-luvulla. GPL lisenssi on ominaisuuksiltaan vahvasti tarttuva, eli li­

senssi asettaa rajoituksia johdetuilla ja yhdistetyille teoksille [And2004][Väl2005], Lisens­

sin kehittämisen ideana on pitää ohjelmisto vapaana käyttäjän näkökulmasta. Lisenssi sallii käyttäjälle ohjelmiston jakelun ja muokkauksen ilman alkuperäisen lisensoijan lupaa, mut­

ta kaikki johdetut työt täytyy lisensoida samojen rajoitusten ja ehtojen mukaisesti kuin al­

kuperäinen työ. Lisenssin mukaan ohjelmistolla ei ole mitään takuita. Lisenssistä on jul­

kaistu kaksi versiota ja kolmas versio on kehitteillä. Versio 2 on vuonna 2006 yleisimmin käytössä oleva GPL-lisenssi.

4.2.3 GNU Lesser General Public License

GNU Lesser General Public License (LGPL) [OSI2006e] on toinen FSF-järjestön julkai­

sema avoimen lähdekoodin lisenssi. Lisenssi on tarkoitettu ohjelmakirjastojen julkaisemi­

seen, minkä vuoksi lisenssiä nimitetään usein GNU Library General Public License nimi­

seksi [And2004], Lisenssin tarkoitus on sallia LGPL-lisenssillä julkaistun kirjaston käyt­

täminen sovelluksesta, jota ei ole julkaista GPL-lisenssin alaisena. LGPL lisensioidusta ohjelmistosta johdetut teokset on julkaistava saman lisenssin alaisena, joten LGPL-lisenssi on luonteeltaan tarttuva. Tämän seurauksena LGPL-lisensoituun kirjastoon tehdyt muutok­

set täytyy julkistaa sovellusta jaeltaessa.

LGPL-lisensoituja sovelluksia käytettäessä osana kaupallista tuotetta on kiinnitettävä eri­

tyistä huomiota rajapintojen käyttöön, jotta omasta sovelluksesta ei tule LGPL-

(23)

lisensoidusta ohjelmasta johdettua teosta. Jos näin osoitetaan tapahtuneen, niin koko sovel­

lus on julkaistava LGPL-lisenssin alaisena. LGPL-lisenssi ei määrittele yksiselitteisesti komponentin käyttämisen ehtoja jotta lisenssi ei kattaisi koko yhdistettyä teosta. Ohjelma- kirjastoja on mahdollista käyttää dynaamisen linkityksen välityksellä, jolloin kirjasto eriy­

tetään muusta sovelluksesta erilliseen kirjastotiedostoon. Toinen tapa käyttää ohjelmisto- kirjastoja on staattinen linkitys, jossa kirjasto sisällytetään sovelluksen binääritiedoston sisään. Varmempi käyttötapa LGPL-lisensoitujen kirjastojen käyttämiseen on dynaaminen linkitys, sillä staattisen linkityksen käyttäminen saattaa joidenkin tulkintojen ja tekijöiden mukaan tarkoittaa johdettua teosta [And2004], Kirjaston tekijöiden mielipide on syytä sel­

vittää ennen kirjaston käyttämistä, mutta tällä asialla ei välttämättä ole laillisia vaikutuksia.

4.3 Lisenssien tarttuvuus ja vaikutus liiketoimintamalleihin

On olemassa erilaisia motiiveja julkaista koodi avoimen lähdekoodin lisenssin alaisena.

Osalle avoimen lähdekoodin kehittämisen motiivina on ideologia vapaista ohjelmista. FSF järjestön tarkoituksena oli kehittää lisenssi, mikä estäisi yrityksiä myymästä binäärimuotoi­

sia versioita avoimen lähdekoodin pohjalta rakennettuihin sovelluksiin. GPL-lisenssi kehi­

tettiin sitä varten, että ohjelmisto pysyy käyttäjälle vapaana [Dem2002],

GPL on vahvasti tarttuva lisenssi. Kaikki eivät ole halukkaita julkaisemaan omia lähde- koodejaan sen takia, että he käyttävät tuotteessa kolmannen osapuolen ohjelmistoa. Kak- soislisensointi on liiketoimintamalli, jossa samaa tuotetta lisensoidaan sekä kaupallisen li­

senssin että avoimen lähdekoodin lisenssin alaisina [Väl2003], Kaupallisella lisenssillä yri­

tys voi myydä oikeuksia tuotteeseen, joita vahvasti tarttuva avoimen lähdekoodin lisenssi rajoittaa. Esimerkkejä kaksoislisensointia käyttävistä yrityksistä ovat tietokantoja valmis­

tava MySQL AB ja Quake-pelimoottoreita lisensoiva Id Software. Kaksoislisensointiin perustuvan liiketoimintamallin tuntemisesta on hyötyä, jos haluaa käyttää avoimen lähde­

koodin ohjelmistokomponentteja osana omaa tuotettaan, sillä muuten voi rajata liian hel­

posti esimerkiksi GPL-lisenssiä käyttävät komponentit potentiaalisten vaihtoehtojen jou­

kosta.

4.4 Avoimen lähdekoodin projektit

Avoimen lähdekoodin kehitysyhteisöä voidaan kuvata sipulikuvaajan avulla [Ye2003], Mi­

tä sisemmällä rooli on kuvaajassa, sitä tärkeämpi rooli on projektille. Rooleissa toimivien henkilöiden lukumäärä kasvaa uloimmille renkaille tultaessa.

(24)

¿¡set kehittäjä со je n korjaa Ikojen ilmoitta];

Lukijat Passiiviset käyttäjät

Kuva 4. Avoimen lähdekoodin projektin henkilöiden roolit [Ye2003].

Avoimen lähdekoodin projektiin liittyy usein joukko henkilöitä erilaisissa rooleissa, joilla on yhteinen kiinnostus käyttää tai kehittää sovellusta. Projektin vetäjä on henkilö, joka vas­

taa projektin eteenpäin viemisistä. Usein tämä henkilö on projektin perustaja. Ydinjäsenet ovat pitkään projektissa vaikuttaneita henkilöitä, jotka ovat osallistuneet merkittävästi pro­

jektin kehittämiseen. Aktiiviset kehittäjät osallistuvat aktiivisesti projektin sovelluksen ke­

hittämiseen. Etäiset kehittäjät ovat henkilöitä, jotka satunnaisesti tekevät uusia ominai­

suuksia tai vikojen korjauksia. Vikojen korjaajat tekevät pieniä vikojen korjauksia, joita vikojen ilmoittajat ovat ilmoittaneet. Lukijat ovat aktiivisia sovelluksen käyttäjiä, jotka ovat opetelleet sovelluksen lähdekoodia. Passiiviset käyttäjät ovat sovelluksen tavallisia käyttäjiä, jotka eivät vaikuta suoraan sovelluksen kehitykseen. Projektiin osallistuvien henkilöiden roolit voivat vaihtua yleensä käyttäjien itsensä toimesta, riippuen siitä kuinka suuri kiinnostus henkilöllä on kehittää projektia ja yksi henkilö voi toimia useammassa roolissa.

Suurin osa avoimen lähdekoodin ohjelmista on kehitetty pienen kehittäjäjoukon toimesta.

Sourceforge.net sivuston kypsien projektien kehittäjien lukumäärä on keskimäärin neljä [Kri2002],

Tässä diplomityössä ei kehitetä avoimen lähdekoodin ohjelmistoa, vaan pelkästään käyte­

tään muiden avoimen lähdekoodin projektien yhteydessä kehitettyjä ohjelmistokomponent- teja. Työssä toimitaan komponenttien kehittäjien näkökulmasta passiivisen käyttäjän roo­

lissa, sekä mahdollisesti vikojen ilmoittajan ja korjaajan rooleissa.

(25)

4.5 Komponenttien valintakriteerit

Avoimen lähdekoodin ohjelmistokomponentit tarjoavat yrityksille uuden vaihtoehdon komponenttipohjaiseen kehitykseen [Mad2004]. Yritykset voivat olettaa saavansa toistuvia ohjelmistopäivityksiä, kohtuullista laadun varmistusta, virheiden korjauksia ja hyvää tek­

nistä tukea, jos komponentin kehittäjäyhteisö on tarpeeksi laaja ja aktiivinen. Aktiivinen kehittäjäyhteisö on tärkein tekijä ohjelmistokomponentin ylläpidettävyyden ja tuen varmis­

tamiseksi.

Ohjelmistosuunnittelijat pyrkivät ensimmäisenä etsimään sellaisia ohjelmistokomponentte- ja, jotka sisältävät tarvittavat ominaisuudet ja toiminnallisuudet. Seuraavaksi tärkeimmät kriteerit ovat lisenssiehdot ja komponentin arkkitehtuurin yhteensopivuus kehitettävän so­

velluksen kanssa [Mad2004],

Madanhoman ja Rahul [Mad2004] identifioivat kolme menetelmää sopivien komponent­

tien etsimiselle: formaalit menetelmät, tekoälyyn perustuvat menetelmät ja ontologiaan pohjautuvat menetelmät. Yleisimmin käytetty tapa etsiä sopivia komponentteja oli kuiten­

kin manuaaliset menetelmät eli Internetin hakukoneiden käyttö tai kokoelmasivustojen käyttäminen. Kokoelmasivustoja ovat esimerkiksi Sourceforge.net, tai Freshmeat.net, joi­

hin on koottu iso joukko avoimen lähdekoodin projekteja.

Merkittävä komponenttien valintakriteeri on komponentin käyttäjälle tarjoamat rajapinnat.

Jos rajapinnat ovat hyvin määriteltyjä ja pysyvät muuttumattomina, komponenttiin on mahdollista lisätä ominaisuuksia tai tehdä suuria muutoksia ilman, että käyttää ohjelmistoa tarvitsee muokata [Mad2004], Tämä on avoimen lähdekoodin komponenttien käytössä tärkeää, sillä käyttäjällä ei ole itsellään täyttä kontrollia komponentin kehittämiseen.

Rajapintojen muuttumattomuus mahdollistaa komponenttien helpon päivitettävyyden uuteen versioon.

4.6 Versiointi ja ohjelmistojen jakelukanavat

Aktiiviset avoimen lähdekoodin sovellukset kehittyvät ja sovelluksista julkaistaan uusia versioita, jotka sisältävät uusia toiminnallisuuksia, virheiden korjauksia tai rakenteellisia muutoksia [Sca2004], Julkaisujen määrä ja julkaisutiheys voi olla tiheämpi kuin kaupalli­

silla sovelluksilla, sillä jakelukanavana toimii yleisimmin Internet, mikä mahdollistaa uu­

den jakelu version tekemisen pienillä kustannuksilla. Esimerkiksi Linux-käyttöjärjestelmän ytimen kehitystä tutkinut Eric Raymond [Ray2001] kuvaa versioiden päivitysten strategiaa

(26)

lauseella “Julkaise aikaisin, julkaise usein”. Aktiivisen kehitysvaiheen aikana Linuxin yti­

mestä voidaan tehdä uusi julkaisu kerran viikossa tai jopa kerran päivässä.

Tiheän julkaisurytmin ja uusien ominaisuuksien lisäämisen takia useissa avoimen lähde­

koodin projekteissa julkaistaan erillisiä vakaita versioita ja kehitysversioita. Kehitysversi­

oista löytyvät uusimmat ominaisuudet, mutta ohjelmat voivat sisältää enemmän virheitä.

Eri projektit käyttävät erilaisia menetelmiä versioiden erottamiseen toisistaan. Esimerkiksi Linux käyttöjärjestelmän ytimen ja Apache HTTP palvelimen julkaisuissa käytetään kol­

miosaista versiointia. Versio koostuu merkittävästä, vähäisestä ja päivitysnumerosta (esi­

merkiksi “2.1.16”), joista parillinen vähäinen numero tarkoittaa vakaata versiota ja pariton kehitysversiota [Ehr2003], Avoimen lähdekoodin projektin versiointistrategian tunteminen auttaa soveltuvimman ohjelmaversion valitsemisessa. Jos käyttää vain avoimen lähdekoo­

din komponentteja, niin on perusteltua valita vakaa versio, koska vakaita versioita on tes­

tattu enemmän isomman käyttäjäjoukon toimesta kuin kehitysversiota. Kehitysversioita tutkimalla on mahdollista tutustua uusiin ominaisuuksiin, jotka myöhemmin todennäköi­

sesti päätyvät komponentin vakaaseen versioon.

Avoimen lähdekoodin sovellukset ovat ilmaisia käyttäjälle. Ilmaisuuden takia avoimen lähdekoodin ohjelmiston julkaisija voi jakaa sovellusta pienillä jakelukustannuksilla, koska ohjelmistoa voidaan jakaa Internetin välityksellä. Ilmaisuuden takia ohjelmiston toimitus­

prosessi koostuu vain ohjelmiston latauksesta. Avoimen lähdekoodin sovelluksien levittä­

mistä varten on olemassa sivustoja kuten SourceForge.net, jotka vastaavat sovelluksen la­

tauksista syntyvän verkkoliikenteen tarjoamisesta.

4.7 Projektien haarautuminen

Avoimen lähdekoodin projektit voivat haarautua useiksi projekteiksi, joissa tehdään alun perin samasta sovelluksesta erilaisia versiota [Moe2004], Avoimen lähdekoodin lisenssit sallivat johdettujen teoksien tekemisen kolmansien osapuolien toimesta, mikä mahdollistaa haarautumiset. Lisenssin tarttuvuus asettaa ehtoja haarautumisille. Ominaisuuksiltaan tart­

tuvista lisensseitä haarautuneet sovellukset on julkaistava käyttäjille. Sallivat lisenssit mahdollistavat suljettujen haarojen tekemisen, jolloin haarautuneen tuotteen lähdekoodeja ei tarvitse julkaista. Kuvassa 5 esitetään projektin haarautuminen kahdeksi projektiksi, jot­

ka tuottavat eri versioita alkuperäisestä sovelluksesta.

(27)

Projekti A

Projekti В А 1.0

А 1.2

Kuva 5. Projektin ja sovelluksen haarautuminen.

Haarautumisen syinä voivat olla projektin jäsenten sisäiset ristiriidat, erilaiset tavoitteet tai alkuperäisen projektin loppuminen. Jakautuneet projektit tuottavat lopulta yhteensopimat­

tomia versioita sovelluksesta [Ler2002a] [Sca2004], Haarautumisen mahdollisuutta pide­

tään kuitenkin hyvänä asiana [Moe2004], Haaraumia syntyy myös silloin, kun projektin ydinkehittäjiin kuulumattomat henkilöt lisäävät uusia ominaisuuksia tuotteeseen. Monet haaraumat ovat kestoltaan lyhytaikaisia, koska tehdyt muutokset ja lisäomaisuudet voidaan yhdistää takaisin alkuperäiseen päähaaraan.

Haarautumien tekemisen mahdollisuus takaa sovelluksen loppukäyttäjälle sen, että yksi osapuoli ei pysty täysin kontrollimaan sovelluksen tulevaisuutta sillä käyttäjät voivat tar­

vittaessa muodostaa oman haaran. Esimerkkinä tunnetun avoimen lähdekoodin projektin haarautumisesta on Apache HTTP-palvelin, joka haarautui NCSA HTTPD -sovelluksesta alkuperäisen projektin loputtua [Moe2004],

4.8 Avoimen lähdekoodin riskit

Avoimen lähdekoodin komponenttien käyttämisessä osana omaa tuotetta on riskejä. Riske­

jä ovat tekijänoikeusrikkomukset, patentit ja ohjelmistojen laatu.

Ohjelmistopatentit muodostavat riskin avoimen lähdekoodin sovelluksille [Mor2002], Pa­

tenttijärjestelmä on kehitetty innovaatioiden edistämiseksi. Nykyään yritykset hakevat pa­

tentteja lisensointitulojen takia ja strategisista syistä. Patenttiportfolion avulla yritys voi viestiä sijoittajille, estää uusien kilpailijoiden tulon markkinoille, puolustaa tai hyökätä oi­

keudessa tai hyötyä ristiinlisensoinnista [Väl2005], Yksityisillä avoimen lähdekoodin ke­

hittäjillä ei ole samanlaisia taloudellisia resursseja hankkia patentteja kuin suurilla yrityk­

sillä. Yhteisöpohjaisten avoimen lähdekoodin projektien parhaat mahdollisuudet patentteja

(28)

vastaan ovat kunnossa olevat vastuuvapautuslausekkeet ja patentoitujen teknologioiden välttäminen. Osa avoimen lähdekoodin lisensseistä sisältää sisäänrakennetun lisenssin voimassaolon lopetuslausekkeen, minkä mukaan kehittävä sovellus ei saa sisältää mitään lisenssimaksuja kolmannelle osapuolelle. Tällainen lausuma on GNU GPL, LGPL, MPL ja Apache -lisensseissä, mutta se puuttuu BSD-lisenssistä [Väl2005].

Ohjelmiston laatu on riski avoimen lähdekoodin ohjelmistojen käyttäjälle. Avoimen lähde­

koodin ohjelmistojen laadusta ei voi tehdä yleistyksiä, sillä useimmat projektit ovat muu­

tamien kehittäjien tekemiä. Laatuun vaikuttaa välillisesti projektin ohjelmistokehitysmalli ja laatutavoitteiden asettaminen. Laatutavoitteet voivat vaihdella projekteittain. Projektin ydinkehittäjillä on ratkaiseva rooli siinä, minkä tasoista koodia sovellukseen liitetään ja miten hyviä tehdyt tekniset ratkaisut ovat [Gac2004],

5 Sovelluksen vaatimusmäärittely

Diplomityössä toteutetaan sovellus hyödyntäen avoimen lähdekoodin ohjelmistokom- ponentteja. Käytettävät komponentit tullaan valitsemaan OTSO-menetelmää käyttäen. Va­

lintakriteereitä määriteltäessä tullaan ottamaan huomioon avoimen lähdekoodin erityispiir­

teet sekä sovelluksen vaatimusmäärittely. Tässä kappaleessa kuvataan toteutettavan sovel­

luksen vaatimusmäärittely. Vaatimusmäärittely sisältää sovelluksen toiminnallisuuksien kuvaamisen, tarvittavien ohjelmistokomponenttien kuvauksen sekä kriteerit komponenttien valitsemiselle.

5.1 Toiminnallisuudet

Kehitettävä sovellus on keilailupeli. Keilailun tarkoitus on kaataa keilapallolla keilaradan päässä olevia keiloja. Peliin toteutetaan aito 3D-mallinnuksen avulla ja kappaleiden liikkeet mallinnetaan fysiikan lakien mukaan.

Peliin toteutetaan keilailun pistelaskujärjestelmä [WTB2006]. Yksi peli koostuu kymmenestä ruudusta. Jokaisen ruudun alussa keilaradan päähän asetetaan kymmenen keilaa pystyyn kolmiomuodostelmassa. Pelaaja heittää kaksi keilapalloa ensimmäisten yhdeksän ruudun aikana, jos ensimmäisellä keilapallolla ei kaadeta kaikkia kymmentä keilaa. Kymmenennellä ruudulla pelaaja heittää kolme kertaa, jos pelaaja saa kaadettua kymmenen keilaa kahden ensimmäisen heiton aikana. Pelaaja saa yhden pisteen jokaisesta

(29)

kaadetusta keilasta. Jos pelaaja tekee kaadon, eli kaataa kaikki kymmenen keilaa yhdellä heitolla niin pelaaja saa seuraavista kahdesta heitosta kaksinkertaiset pisteet. Jos pelaaja tekee paikon, eli kaataa kymmenen keilaa kahdella heitolla yhden ruudun aikana, niin pelaaja saa seuraavasta heitosta kaksinkertaiset pisteet. Keilailun korkein saavutettavissa oleva pistemäärä on 300.

Sovellus tullaan toteuttamaan 3D-grafiikkaa käyttäen ja kappaleiden liikkeet tullaan mallintamaan fysiikan sääntöjen mukaisesti. Pelaajan toiminnat esitetään keilaajan silmistä kuvattuna ja keilapallon heittämistä ohjataan hiiren avulla. Kamerakulmia on mahdollista vaihtaa heiton tapahduttua. Peliin toteutetaan ominaisuus katsoa pelitapahtumia uusintana.

Sovellukseen toteutetaan äänien toistaminen, jotta pelitapahtumat tuntuisivat todentuntuisilta myös äänien osalta. Peliä on pysyttävä pelaamaan monen pelaajan pelinä käyttäen samaa tietokonetta. Peliin tullaan toteuttamaan mahdollisuus lähettää ja hakea pelituloksia keskuspalvelimelle Internetin välityksellä.

Peliin sisällytetään asennusohjelma, jotta loppukäyttäjien on mahdollisimman helppo ottaa sovellus käyttöön. Sovelluksen jakelukanava toimii Intemet-sivustot, joilta pelin voi ladata ensimmäisissä vaiheissa ilmaiseksi. Peliin toteutetaan selkeä käyttöliittymä ja käyttöohjeet, jotta pelaaja pystyy oppimaan pelaamisen ensimmäisellä pelikerralla.

3D-grafiikan esittämistä varten etsitään sopiva avoimeen lähdekoodiin perustuva 3D- moottori sekä keilojen ja pallon fysiikan mallinnusta varten fysiikkamoottori. Äänien soittamista varten tarvitaan musiikkikirjasto. Äänet ovat tärkeä tekijä pelin tunnelman luomisessa, mutta ohjelmiston kannalta riittää, että äänikirjasto pystyy soittamaan helposti äänitiedostoja. Äänien toistamista varten etsittiin ohjelmistokomponentti, josta löytyi toivotut ominaisuudet ja yksinkertainen rajapinta toiminnallisuuksien käyttämiseen.

Sovelluksen tietokoneelle asentamista varten etsitään valmiita asennusohjelmia.

5.2 Kriteerit komponenttien valinnalle

Komponenttien valintakriteereissä otetaan huomioon OTSO-menetelmän suosittelemat seikat ja huomioin avoimen lähdekoodin erityispiirteet. Ohjelmistokomponenttien valinta­

kriteereitä käsiteltäessä täytyy ottaa huomioon liiketoiminnalliset vaatimukset. Ohjelmisto- komponentteja jaetaan tuotteen mukana loppukäyttäjille, joten käytettävän komponentin tulee sallia jakelu lisenssiehdoissa. Loppukäyttäjälle jaettava tuote julkaistaan omien li­

senssiehtojen alaisena, joten käytettävien komponenttien lisenssien täytyy sallia kom­

(30)

ponentin käyttö osana suljettua kaupallista ohjelmistoa. Nämä liiketoiminnalliset vaati­

mukset rajaavat vahvasti tarttuvia lisenssejä käyttävät ohjelmistokomponentit pois varteen­

otettavien vaihtoehtojen joukosta. Komponentteja arvioitaessa suositaan sallivia lisenssejä, mutta myös ominaisuuksiltaan tavallisesti tarttuvia lisenssejä on mahdollista käyttää.

Ohjelmistokomponenttien ominaisuudet ovat tärkein valintakriteeri. Pelin tarpeet huomioi­

den asetetaan jokaiselle komponenttityypille ehdottomat vaatimukset, joita ilman tuotetta ei voi toteuttaa.

Kolmas käytettävä valintakriteeri on komponentin tarjoamat rajapinnat. Ohjelmistokompo­

nenttien kehittäjien tarjoamien esimerkkiohjelmien olemassaolo on merkitsevä tekijä valin­

takriteereissä. Esimerkkiohjelmien avulla voidaan arvioida komponentin tarjoamia ominai­

suuksia. Esimerkkiohjelmien koodia tutkimalla pystytään arvioimaan nopeasti komponen­

tin käyttäjälle tarjoamia rajapintoja. Hyvät esimerkkiohjelmat lyhentävät komponentin käytön opetteluun vaadittavaa aikaa.

Kaikkien komponenttien tulee toimia samalla kääntäjällä. Nykyisin suurin osa peleistä teh­

dään C++ kielellä [Rol2003a], Ehdoton vaatimus kaikille komponenteille on se, että kom­

ponenttia täytyy pystyä käyttämään C++ kielellä. C -ohjelmointikieltä voi käyttää C++ oh­

jelmista, joten C-rajapinnan tarjoavat komponentit ovat käytettävissä. Usein C++ kielellä toteutetut ohjelmat tarjoavat C ohjelmia selkeämmät rajapinnat olio-ominaisuuksien ansi­

osta. Komponenttien ehdoton vaatimus on, että komponenttia voidaan käyttää GNU GCC kääntäjällä. GNU GCC -kääntäjä toimii Windows, Linux ja Mac OS X käyttöjärjestelmillä.

Komponenttien valitsemisessa käytetään taulukoissa 1 - 4 esitettyjä yleisiä valitsemiskri- teereitä. Valitsemiskriteerit on jaoteltu OTSO-menetelmässä suositeltuihin osiin, joita ovat toiminnalliset kriteerit, laatukriteerit, strategiset kriteerit ja arkkitehtuuriset kriteerit.

(31)

Taulukko 1. Komponenttien toiminnalliset kriteerit.

Toiminnallinen kriteeri Mittari

Pakolliset ominaisuudet on löydyttävä hyvin toteu­

tettuina.

Onko komponenteittain määritellyt pakolliset omi­

naisuudet toteutettu?

Tuetut käyttöjäijestelmät Onko virallista tukea käyttöjärjestelmälle?

Windows 2000 / XP (pakollinen) Mac OS X (suositeltava) Linux (suositeltava)

Aktiivinen kehitys Komponentin kehitysaktiivisuus vuoden sisällä Komponentin suosio Kuinka paljon komponentilla on käyttäjiä Aktiivinen kehitysyhteisö Kuinka usein päivityksiä tehdään?

Komponentin käyttäjät Komponentin käyttäjien lukumäärä.

Tunnetut virheet Onko olemassa tunnettuja virheitä, jotka haittaavat olennaisesti komponentin toimintaa?

Komponentin vakaus Aiheuttaako komponentti ohjelmiston kaatumisia?

Taulukko 2. Komponenttien laadulliset kriteerit.

Laadullinen kriteeri Mittari

Selkeät C tai C++ rajapinnat Arvio rajapintojen selkeydestä.

Dokumentaation laatu Dokumentaation kattavuus ja selkeys.

Esimerkkiohjelmien määrä ja laatu Onko tärkeimmät ominaisuudet esitetty?

(32)

Taulukko 3. Komponenttien strategiset kriteerit.

Strateginen kriteeri Mittari

Lisenssi Suositaan sallivia (ZLIB, MIT, BSD) ja tavallisesti

tarttuvia (LGPL) lisenssejä.

Kaupallinen tuki Kyllä / ei

Toimittajan tulevaisuuden suunnitelmat Arvio julkaistuista tulevaisuuden suunnitelmista.

Komponentin kehitysmalli Arvio kehitysmallista.

Käyttäjäyhteisön aktiivisuus Arvio käyttäjien aktiivisuudesta osana kehitystä.

Kehittäjäyhteisön tuki Onko kommunikaatiokanavia kehittäjien ja käyttäji­

en välillä?

Taulukko 4. Arkkitehtuurilliset kriteerit.

Arkkitehtuurillinen kriteeri Mittari

Komponenttia pystyttävä käyttämään C tai C++

kielellä

Kyllä/ei

Toimii GNU GCC kääntäjällä Kyllä / ei

3D-moottori on tärkein komponentti pelille, joten tämän komponentin tutkimiseen ja arvi­

oimiseen käytetään eniten aikaa. 3D-moottorin on pystyttävä lukemaan mallinnusohjelmil­

la toteutettuja 3D-malleja, joten ehdoton vaatimus on omaisuus ladata yleisimpiä 3D- mallinnusformaatteja. Keilauspelin kuvataan sisätiloissa, joten 3D-moottorin täytyy pystyä renderöimään sisätiloja tehokkaasti. Tuki valokartoitustekniikalle on pakollinen ominai­

suus. 3D-moottorin täytyy pystyä toimimaan yhdessä fysiikkamoottoreiden kanssa. Laa­

dukkaiden referenssipelien merkitys on eduksi 3D-moottorille. Käyttäjäyhteisön aktiivi­

suus ja kehittäjien kehitysmalli otetaan huomioon valintakriteereissä.

(33)

6 Komponenttien markkinakartoitus

Tässä kappaleessa tutkitaan markkinoilta löytyviä ohjelmistokomponentteja. Kompo­

nenttien kartoitus jaetaan seuraaviin alueisiin: 3D-moottorit, fysiikkamoottorit ja äänikir- jastot. Muita merkitykseltään vähäisempiä komponentteja varaudutaan käyttämään myö­

hemmässä vaiheessa toteutusta.

Komponenttien valitsemisprosessi jaetaan OTSO-menetelmässä kuvattuihin vaiheisiin, eli etsimiseen, seulontaan, arviointiin, ja analysointiin. Käyttöönottoa ja jälkiarviointi kä­

sitellään myöhemmissä kappaleissa.

Komponenttien etsimisessä käytetään hyödyksi yleisimpiä hakukoneita, avoimen lähde­

koodin projekteihin erikoistuneita Intemet-sivustoja ja pelien kehitykseen erikoistuneita Intemet-sivustoja. Hakukoneita käyttämällä on mahdollista löytää Internet-sivuja hakusa­

nojen perusteella, mutta useat hakukoneet järjestävät löydetyt sivut niiden suosion perus­

teella. Hakukoneiden markkinajohtaja Google käyttää PageRank-algoritmia järjestämään sivut siten, että ensimmäiseksi tulee sivu, johon on viittauksia eniten painoarvoltaan mer­

kittäviltä sivustoilta [Cho2004], Hakutuloksien järjestystä ja hakuosumien lukumäärää on mahdollista käyttää hyväksi pääteltäessä haettavan komponentin suosiota. Tuloksien mer­

kitykseen on suhtauduttava hyvin kriittisesti, sillä hakutuloksien järjestykseen on mahdol­

lista vaikuttaa hakukoneoptimoinnin avulla, käytetyt hakuehdot voivat olla huonoja, kom­

ponentin Internet-sivut voivat olla huonosti toteutetut tai sovelluksen tyypistä käytetään sivustoilla eri nimityksiä.

SourceForge.net on suurin Intemet-sivusto, joka isännöi avoimen lähdekoodin kehitys­

projektien kotisivuja. Sivustoita löytyy yli 100 000 avoimen lähdekoodin projektia ja yli miljoona rekisteröitynyttä käyttäjää [Sou2006]. SourceForge.netm omistaa OSTG (Open Source Technology Group) yritys.

Freshmeat.net on Internet-sivusto, joka sisältää indeksin tuhansiin sovelluksiin, joista suu­

rin osa on avoimen lähdekoodin sovelluksia [Fre2006]. Sivusto sisältää metatietoa sovel­

luksista, kuten sovelluksen nimen, kuvauksen, sovelluksen kategorian, lisenssin ja tuetut käyttöjärjestelmät. Freshmeat.netm omistaa OSTG yritys.

(34)

6.1 3D-moottorit

3D-moottoreiden etsimiseen käytettiin hakukoneita, 3D-peleihin keskittyviä kotisivuja, SourceForge.net:iä ja Freshmeat.net:iä. Taulukkoon 5 on koottu löydetyt 3D-moottorit.

Taulukko 5. 3D-moottoreiden etsimisen tulokset.

Nimi Lisenssi Käyttöjär­

jestelmät

Ohjelmointi­

kieli

Rajapin­

nat

Valo- kartoitus

Irrlicht

http://irrlicht.sourceforge.net

ZLIB Windows,

Linux

C++ D3D,

OpengGL Kyllä

IrrlichtNX

http://www.irrlichtnx.mmdevel.

de

ZLIB Linux,

Windows, Mac

C++ D3D,

OpenGL

Kyllä

OGRE

http://www.ogre3d.org

LGPL Window,

Linux, Mac

C++ D3D,

OpenGL

Kyllä

Crystal Space

http://www.crystalspace3d.org

LGLP Linux, Mac,

Windows

c++ OpenGL Kyllä

OpenSceneGraph

http://www.openscenegraph.org

OSGPL (LGPL joh- dan-nainen)

Windows, Mac, Linux

c++ OpenGL Kyllä

Nebula Device

http://www.radonlabs.de/nebula .html

Oma, salliva Windows, Linux, Mac, XBox

c++ D3D Kyllä

Quake II Engine,

http://www.idsoftware.com/

business/technology/index.php

GPL / kau­

pallinen

Windows, Linux

c++ D3D,

OpenGL

Kyllä

Genesis3D

http://www.genesis3d.com

Oma Windows c++ D3D Kyllä

XEngine

http://xengine.sourceforge.net

ZLIB Windows,

Linux

c++ OpenGL,

D3D

Ei

(35)

Soya 3D

http://gna.org/projects/soya

GPL Linux Python OpenGL Ei

CryptEngine http://crypt.wetgos.nl

MPL Linux, Win­

dows, Mac

Java OpenGL Ei

Lescegra

http://memfrob.de/projects/les- cegra.html

LGPL Linux, Win­

dows

C OpenGL Ei

QuakeForge

http://www.quakeforge.net

GPL Windows,

Linux

C++ OpengGL Kyllä

Raydium 3D Engine http://raydium.org

GPL Windows,

Linux

C/PHP OpenGL Ei

3Ddrome

http://www.3ddrome.com/en- gine.php

Oma Linux, Win­

dows

c++

OpenGL Ei

6.1.1 3D-moottoreiden arviointi

Tässä kappaleessa arvioidaan potentiaalisia 3D-moottoreita. Seulontaehtona on ominaisuus lukea yleisiä 3D-mallinnusformaatteja, valokartoitusominaisuus, salliva lisenssi ja aktiivi­

nen kehitys. Avoimen lähdekoodiin perustuvia 3D-moottoreita löytyi etsimisvaiheessa run­

saasti, joten komponenttien käyttäjällä on hyvät lähtökohdat analysointiin ja käytettävän komponentin valintaan omien arviointikriteereiden perusteella.

Löydetyistä komponenteista on rajattu pois kaikki komponentit, jotka eivät tue vaadittua valokartoitustekniikkaa. Jäljellä olevista komponenteista rajataan pois komponentit, joiden kehitys ei ole jatkunut vuodesta 2005 lähtien. Tämä rajaa vaihtoehdoista pois QuakeForge ja Genesis 3D komponentit. Jäljellä olevia komponentteja ovat Irrlicht, OGRE, Crystal

Space, OpenSceneGraph, Nebula Device ja Quake II Engine.

Quake II Engine on Id Software yrityksen kehittämä pelimoottori toimintapeleihin. Peli- moottori kehitettiin Quake 2 peliä varten ja yritys tarjoaa kaksoislisensoinnilla pelimootto­

ria muille toimijoille. Pelimoottoria voi käyttää GPL-lisensoituihin peleihin ilmaiseksi, mutta muilla lisensseillä lisensoitaviin peleihin täytyy ostaa kaupallinen lisenssi hintaan

Viittaukset

LIITTYVÄT TIEDOSTOT

Pohjaneli¨ on l¨ avist¨ aj¨ an puolikas ja pyramidin korkeus ovat kateetteja suorakulmaisessa kolmiossa, jonka hypotenuusa on sivus¨ arm¨ a.. y-akseli jakaa nelikulmion

Kaikki kolme tasoa voidaan tehdä sisäisesti tai kumppanuuksien (esim. 1) Outreach-taso: Esimerkiksi kotimaan lukiolaisille suunnatut moocit, kv-hakijoille markkinoidut moocit,

After the work of Article II was initiated, our research was scoped specifically to organizing commercial Open Source Software development (Watson et al., 2008) and governance aspects

However, where the established in- dustries of abstract objects have hold on to the old economy based on selling Newtonian tangible objects, the FLOSS movement has led

Nowadays, Open Source Software (OSS) is becoming more and more accepted, and is often considered to have the same quality as Closed Source Software. Despite the free

The development of open source software represents an area of rapid technological change and therefore the framework of dynamic capabilities suits very well into

FOSS/FLOSS Free/Libre Open Source Software, vapaan ja avoimen lähdekoodin ohjelmista käytettävä lyhenne.. FSF Free Software Foundation, Richard Stallmanin 1985

Ennusteita kuitenkin tarvitaan edes jonkinlaiseen epävarmuuden pienentämi- seen, ja inhimillisinäkin tUQtteina ne ovat parempia kuin ei mitään. Ilman inhimillistä