Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Peliohjelmoinnissa käytettävät APIt

Uinotin [03.06.2011 18:07:29]

#

Nyt pitäisi taas aloittaa uutta peliprojektia koodaamaan 3D-grafiikoilla. Mietin kuitenkin, että jos olisikin jokin parempi tapa tehdä pelejä kuin koodata suoraan OpenGL:llä ja freeglutilla. Tarkoituksenani olisi tehdä reaaliaikastrategiaa 3D-grafiikoilla.

Eritysesti etsiessäni silmään pisti SDL, jota tunnutaan nykyään käyttävän paljon. Nopeuttaisiko tämä tai jokin muu API pelieni ohjelmointia?

En tiedä kuinka hyvä freegluttia on käyttää peliohjelmoinnissa, joten olisi kiva myös tietää mitä ajattelette siitä.

Aiemmin olen siis käyttänyt freegluttia, Cg:tä( joskus GLSL:ää), Assimpia, Bullet-fysiikkakirjastoa(fysiikkaa vaativissa projekteissa), glm:ää ym. omissa projekteissani.

jalski [03.06.2011 18:26:54]

#

Jos OpenGL on tuttu, niin mikset kokeilisi esim. GLFW:tä

Metabolix [03.06.2011 18:38:47]

#

Tietoni voi toki olla vanhentunutta, mutta muistaakseni GLUT oli jopa syötteenlukuominaisuuksiltaan hieman puutteellinen.

SDL:n ja OpenGL:n yhteiskäytöstä on peräti opas. SDL sopii perustoimintoihin kuten ikkunan luontiin ja syötteen lukemiseen, ja sillä voi toteuttaa myös pelin äänet. Kirjaston nykyistä versiota (1.2) ei kuitenkaan voi kehua nykyaikaiseksi: se toimii aika matalalla tasolla ja on kirjoitettu C-tyyliin niin, että muistinkäsittely on pitkälti käyttäjän vastuulla.

Huomattavasti nykyaikaisempi ratkaisu on SFML. Ominaisuuksia tuntuu olevan enemmän kuin SDL:ssä, ja toteutus ainakin on C++-ohjelmoijan kannalta monin verroin käytännöllisempi. Toki ominaisuudet näkyvät myös kirjaston koossa. Lisäksi vakaata versiota (1.6) vaivaa valitettavasti ongelma ATIn ajureiden kanssa, jos kirjastoa käytetään DLL-tiedostoista; toisaalta kehitysversio (tuleva 2.0) ajaa asiansa aivan hyvin.

SFML:n huomattavia valttikortteja SDL:ään nähden ovat helpommat ääni- ja fonttirajapinnat. Jos näpertely ei ihan kauheasti kiinnosta, kannattaa harkita vakavasti SFML:ää esimerkiksi pelin tekstien piirtoon. Lisäksi SFML osaa hallinnoida suoraan OpenGL:n tekstuureita, toisin kuin SDL. Varsinaiseen 3D-grafiikkaan mainitut kirjastot eivät tietenkään itsessään kykene, vaan siihen pitää käyttää OpenGL:ää tai jotain 3D-kirjastoa.

Jos tarkoitus ei ole koodata 3D-moottoria vaan tehdä peli, voit harkita myös kokonaisen 3D-grafiikkamoottorin käyttöä; näistä mainittakoon vaikkapa Irrlicht Engine ja OGRE.

Uinotin [03.06.2011 19:27:45]

#

Olin itsekkin asian suhteen yhtä vanhentuneen tiedon takia erityisen huolissani tuon freeglutin syötteenlukuominaisuuksista. Tuo SFML kuullostaisi itselleni sopivalta vaihtoehdolta. Sitä ehti joku ystävistänikin suositella.

En ole vielä noihin 3D-grafiikkamoottoreihin päässytkään tutustumaan muuta kuin välillisesti UI:n omaavien game enginejen kautta. Osaako kukaan sanoa kuinka käytettäviä nämä ovat kunnon pelien tekemisessä?

tkok [04.06.2011 00:02:52]

#

Metabolix kirjoitti:

Jos tarkoitus ei ole koodata 3D-moottoria vaan tehdä peli, voit harkita myös kokonaisen 3D-grafiikkamoottorin käyttöä; näistä mainittakoon vaikkapa Irrlicht Engine ja OGRE.

Itse suosittelen nopeaan protoomiseen ja peli-idean testaamiseen Unity3d:tä. Sillä saa todella nopeasti aikaan ja scriptit voi kirjoittaa C# tai Unity's JavaScriptilla.

Vaativampaan ja massiivisempaan suosittelen Unreal Engine 3 moottoria ja UDK.

Molemmat ovat ilmaisia.

Rasenger [04.06.2011 23:44:02]

#

Unity on melko hyvä nopeaan työskentelyyn, ja sillä saa ihan kaupallisia pelejä aikaan (siis riittävän laadukkaita) nopeasti. Jos kuitenkin "oikea" koodaaminen kiinnostaa, on järkevintä käyttää juurikin valmiita korkean tason kirjastoja, jos haluaa projektin joskus valmistuvan. Eli mainitut Irrlicht ja OGRE esimerkiksi. Matalan tason kirjastoja, kuten GLFW:ää ei ole tarkoitettu pelien tekemiseen, vaan moottorin tekemiseen, tai korkeamman tason kirjaston kaveriksi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta