Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: OpenGL/D3D -ohjelmointi

Sivun loppuun

punppis [22.06.2008 02:51:02]

#

Ajattelin vääntää jonkun todella yksinkertaisen 3D-"pelin" (tyyliin jossa voisi käännellä kameraa), mutta en tiedä mistä aloittaa. En ole ikinä tehnyt mitään 3D:tä, pelkkää C++/SDL/PHP. Mielestäni nuo oppaat ovat aika sekavia, koska en tiedä tästä 3d-ohjelmoimisesta mitään. Eli kannattaisko tässä nyt ensin opiskella jotain muuta, ennenkuin yritän lähteä väsäämään mitään. Käsittääkseni myös tarvitsen jonkinlaisia modeleita, eli pitäisikö minun ensin opetella käyttämään jotain 3d-mallinnussoftaa ja tehdä ensin joku modeli, ennenkuin voisin luoda vaikka palikan sinne maailmaan.

Mistä siis aloitan? Kielenä C++ ja alustana OpenGL tai D3D.

Tzaeru [22.06.2008 03:19:31]

#

http://nehe.gamedev.net/

Etene oppaita järjestyksessä, älä siirry seuraavaan ennenkuin luulet ymmärtäväsi siihen asti luettujen sisällön.

punppis [22.06.2008 03:42:04]

#

Ok. Kiitos linkistä.

User137 [22.06.2008 11:44:36]

#

Tässä vaiheessa melkein tekisi mieli ohjata aloittelevat ohjelmoijat johonkin valmiiseen grafiikkamoottoriin. On nykypelit ihan toista luokkaa yksinäisen koodarin mahdollisuuksille jos ihan raakaa rajapintaa käyttää. Ei noiden opettelusta toki haittaa ole, aikaa se vie, enemmän kuin voisi kuvitella.

punppis [22.06.2008 17:33:01]

#

User137 kirjoitti:

Tässä vaiheessa melkein tekisi mieli ohjata aloittelevat ohjelmoijat johonkin valmiiseen grafiikkamoottoriin. On nykypelit ihan toista luokkaa yksinäisen koodarin mahdollisuuksille jos ihan raakaa rajapintaa käyttää. Ei noiden opettelusta toki haittaa ole, aikaa se vie, enemmän kuin voisi kuvitella.

Onko olemassa jotain ilmaista helpohkoa pelimoottoria?

Edit: Vielä kun löytyis joku opas D3D-alustalle niin olis jees. Eikös tuolla kuitenkin lähes kaikki nykypäivän pelit tehdä?

Metabolix [22.06.2008 19:28:16]

#

punppis kirjoitti:

Edit: Vielä kun löytyis joku opas D3D-alustalle niin olis jees. Eikös tuolla kuitenkin lähes kaikki nykypäivän pelit tehdä?

Onneksi ei. Tälläkin foorumilla aika moni käyttää Linuxia, ja siinä ei D3D varsinaisesti toimi, pääsyypää tähän on tietenkin Microsoft. OpenGL sen sijaan toimii hyvin eri käyttöjärjestelmillä. D3D:n käytölle ei ole kovin hyviä perusteita, siinä ei ole harrastelijan näkökulmasta mitään huimasti parempaa kuin OpenGL:ssä.

KoodiNoppa [22.06.2008 19:40:58]

#

Käsittääkseni D3d:llä ei tehdä lähes kaikkia pelejä. Suurin osa kuitenkin. Ja useassa pelissä saa valita kumpaa käyttää.

Olen kuullut, että Irrlicht on hyvä, ilmainen ja helppo pelimoottori. Ominaisuuksia sillä on kiitettävästi ja d3d sekä opengl vaihtoehtoina renderöinnissä. Käyttöjärjestelmäriippumatonkin vielä.
http://irrlicht.sourceforge.net/features.html

Tzaeru [22.06.2008 21:47:54]

#

Toisaalta minusta on fiksumpaa jos jonkinlaista pelimoottoria väkertää ensin itse ennenkuin siirtyy valmiisiin.

Kun ymmärtää miten moottoreita luodaan, näkee myös ihan eri tavalla käyttömahdollisuudet ja voi itse laajentaakin niitä. Plus harrastelijan ole mitään järkeä käyttää muiden valmiita tuotoksia tiettyjä peruskirjastoja lukuunottamatta. :-)

punppis [23.06.2008 00:34:39]

#

Tzaeru kirjoitti:

Toisaalta minusta on fiksumpaa jos jonkinlaista pelimoottoria väkertää ensin itse ennenkuin siirtyy valmiisiin.

Kun ymmärtää miten moottoreita luodaan, näkee myös ihan eri tavalla käyttömahdollisuudet ja voi itse laajentaakin niitä. Plus harrastelijan ole mitään järkeä käyttää muiden valmiita tuotoksia tiettyjä peruskirjastoja lukuunottamatta. :-)

Voisiko joku vielä selventää, että mitä pelimoottori oikein sisältää. Jotain valmiita funktioita ja luokkia? Sisältyykö siihen näppäinten käsittelyt ja äänien toistaminen.

Niin ja sen verran vielä, että en oikeastaan harrastepohjalta tätä tee, vaan pikemminkin työmielessä. Haaveena olisi päästä johonkin isoon pelitaloon joskus ohjelmoimaan. Tämä on tietysti vielä monen vuoden ohjelmoimisen päässä, mutta jostainhanse on aloitettava.

Onkohan minun vielä edes järkevää mitään 3D-ohjelmointia opetella, kun hallussa on oikeastaan PHP ja jonkinverran C/C++. Eilen yöllä lueskelin jotain Direct3D-opasta (sitä ennen luin WinApi-oppaan), ja tuon tyhjän ikkunan tekemiseenkin näyttää menevän monta kymmentä riviä koodia. Kaikenmaailman kaksoispuskurointeja, ikkunoita ja kahvoja. Etenkin tuon ensimmäisen vastauksen OpenGL-opas on aika vaikean oloinen. Se on vielä tehtykin joskus 90-luvulla, ja uusittu vuonna 2000, joten se on aika vanha. Eiköhän kahdeksassa vuodessa 3d-ohjelmointi ole kehittynyt aika reippaasti!

Tzaeru [23.06.2008 01:21:33]

#

punppis kirjoitti:

Niin ja sen verran vielä, että en oikeastaan harrastepohjalta tätä tee, vaan pikemminkin työmielessä. Haaveena olisi päästä johonkin isoon pelitaloon joskus ohjelmoimaan. Tämä on tietysti vielä monen vuoden ohjelmoimisen päässä, mutta jostainhanse on aloitettava.

Jos aikoo ihan Aikuisten oikeasti tehdä peliohjelmointia työkseen niin imo on hyvä olla hanskassa asiat sen verran tahdikkaasti, että osaisi pelimoottorin itsekin tehdä jos niikseen tulisi: Eihän sitä ole pakko tehdä, mutta kyllä sitä tehdessä paljon oppii ja saa ymmärrystä..

punppis kirjoitti:

Eilen yöllä lueskelin jotain Direct3D-opasta (sitä ennen luin WinApi-oppaan), ja tuon tyhjän ikkunan tekemiseenkin näyttää menevän monta kymmentä riviä koodia. Kaikenmaailman kaksoispuskurointeja, ikkunoita ja kahvoja. Etenkin tuon ensimmäisen vastauksen OpenGL-opas on aika vaikean oloinen. Se on vielä tehtykin joskus 90-luvulla, ja uusittu vuonna 2000, joten se on aika vanha. Eiköhän kahdeksassa vuodessa 3d-ohjelmointi ole kehittynyt aika reippaasti!

Itse asiassa perustoimintamallit eivät ole varsinaisesti pahasti vanhentuneet. Oppaita on päivitetty ja jos katsot paria ekaa uutista, niin niissä on tehty uudestaan alkupään oppaat vertex arrayden avulla.

Ei se minusta ollut kovin vaikea kun kopioi koodin suoraan ja sitten katteli mitä tapahtuu tästä ja tuosta.. :)

Ja käytä sitä vaikka SDL:n kanssa, tulee roimasti helpompaa. Lataa ensimmäisten oppaiden SDL-versiot sieltä alhaalta.

punppis kirjoitti:

Onkohan minun vielä edes järkevää mitään 3D-ohjelmointia opetella, kun hallussa on oikeastaan PHP ja jonkinverran C/C++.

Kannattaa opetella ensin C tai C++ jotenkuten kattavasti. Esim. ilman osoittimia/viittauksia ei kovin pitkälle välttimättä pääse, joten ne on hyvä olla hanskassa. C++:n olio-ominaisuudet helpottavat useampaakin asiaa.

Jonkin kielen täydellinen osaaminen on sinänsä sivuseikka, matematiikka on 3D-ohjelmoinnissa pääroolissa.

punppis [24.06.2008 10:57:09]

#

Ok kiitos vastauksesta, Tzaeru. Pitääkin aloittaa hardcore-c++-opiskelu =D

moptim [03.07.2008 17:42:35]

#

Löytyyhän suomipeleistä ainakin DirectX-opas ja sitten on DirectSoundit ja DirectInputit yms. eri artikkeleissa samalla sivulla.

Le-Co-Las [09.07.2008 09:00:40]

#

Kiitos poijat, hyvistä vastuksista ja ennenkaikkea linkeistä ; )

punppis [11.07.2008 01:34:12]

#

moptim kirjoitti:

Löytyyhän suomipeleistä ainakin DirectX-opas ja sitten on DirectSoundit ja DirectInputit yms. eri artikkeleissa samalla sivulla.

Ei oikein tuo DirectX 8 nappaa, koska ainakin mitä olen esim. DirectX 10 ohjeita lukenut, niin niissä lähinnä keskitytään siihen, että kuinka joku perusjuttu tehdään erilailla 10:ssä, kuin 9:ssä. Eli tuossa kasin ja ysin välissäkin on varmaan aikamoiset operaatiot sitten.


Sivun alkuun

Vastaus

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

Tietoa sivustosta