Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB6] 3D-roolipeli (C)

Sivun loppuun

rautamiekka [03.12.2007 19:48:47]

#

Haluan ajan kuluksi ja mielenkiinnoksi VB6:sella tehtailla 3D roolipeliä jossa on rippeitä muun muassa runescapesta, diablosta, wowista ja Dungeon Siegestä. Ohjeita alusta asti grafiikan ja karttojen piirtämisestä hahmokoodaukseen tarvitsen. Jotkin taitavat kuten Antti Laaksonen vissiinkin osaavat sanoa jotain.

nomic [03.12.2007 20:11:25]

#

Melkoisen vaikea projekti kyseessä. En tiedä sinun taidostasi ja kokemuksestasi, mutta toivon sinulla olevan aikaisempaa kokemusta. Oletko vasta kehitellyt ideoita, vai suunnitellut jo kunnolla? Entä juoni?
Varsinkin mmorpg:n tekeminen on melkoisen vaikeaa. Yritetty on. Parempi aloittaa jostain 2d-chatista ennemmin, jotta saa käsityksen miten esimerkiksi client/servu toimii keskenään, miten tieto jaetaan, kenelle jaetaan (Esimerkiksi jos pelaaja sanoo 'moi', niin sitä ei lähetetä kaikille, vaan otetaan tietokannasta selville ne, jotka on lähettyvillä). Hommaa on todella paljon, mutta toivottavasti innostus riittää. En tahdo teilata. :)

-Suunnittele ensiksi koko homma ja katso, jos osaat koodata nuo asiat, tai luulet löytäväsi ongelmiin vastauksia.
-Valitse kirjasto, jolla grafiikkaa piirtelet. VB:n omat on toivottoman huonoja.
-Pidä koodi selkeänä ja kommentoituna (tästä on apua, kun aletaan ylittää sitä kolmea tuhatta riviä)

rautamiekka [03.12.2007 20:17:14]

#

Kokemusta on yksinkertaisten ja vähän monimutkaistenkin ohjelmien teosta, olen myös kirjan mukaan tehnyt Laivanupotuksesta modauksia.

Ei tarkoitus ole tehdä MMORPG-peliä joka pyörii netissä, tarkoitus on tehdä mielenkiinnosta koneelle yksinpeli.

Jokos kuulostaa helpommalta ? :D

Olen valmis koodaamaan vaikka miten vain koska opin heti jos haluan.
OpenGL, FFS hahaha. Voin käyttää muutakin mutta ei sitten dx niin kirveelläkään.
Logiikkani ja selkeys on edistynyttä.

Lumpio [03.12.2007 20:18:07]

#

Ei kuulosta riittävän helpolta.

rautamiekka [03.12.2007 20:21:16]

#

Ei varmaan helpolta enkä sitä odotakaan, on mun aika opetella koodaamaan paremmin ;)

PS. Kielenä on ja pysyy VB6, piste.

sooda [03.12.2007 20:26:19]

#

rautamiekka kirjoitti:

on mun aika opetella koodaamaan paremmin

rautamiekka kirjoitti:

Kielenä on ja pysyy VB6

olen havaitsevinani viestissäsi tietynlaista epäyhtenäisyyttä :o

rautamiekka [03.12.2007 20:29:53]

#

Teen pelin VB6:sella, c:eetä en opettele. Ja olen tosissani.

nomic [03.12.2007 20:35:33]

#

Tuli vaan mieleen tuo mmorpg, kun kerta oli moisia pelejä listattuna. ;)
Mutta edelleen: suunnittele se kunnolla, äläkä lähde heti koodailemaan. Pidä se koodaaminen maistuvana jälkiruokana, kuin kruunu kuninkaalle.

Ja jos kerta on normaali rpg, niin suunnittele myös juoni kunnolla. Tulee hirveää jälkeä, jos ei ole tottunut moiseen ja lähtee vain kirjoittamaan. Se kuulostaa helpolta jutulta, mutta esimerkiksi käänteiden pohjustamiseen tarvitaan jo hieman taitoa, ettei homma latistu entisestään.

Minulla on lähes valmis rpg-moottori, ja sihen meni pitkä aika, jotta sain siitä jonkinlaisen. Tosin, se on 2d, ja vaikka on tullut koodattua vb:llä pitkään, niin silti tuli ongelmia, koska oli muutama kohta, jota en ollut suunnitellut tarpeeksi hyvin. Eli painotan edelleen sitä. ;)

Pekka Karjalainen [03.12.2007 20:56:27]

#

"Ohjeita alusta asti grafiikan ja karttojen piirtämisestä hahmokoodaukseen tarvitsen."

Grafiikka? Aloita merkkigrafiikalla. Sitä ei tarvitse piirtää.

Kartat? Tee ensin käsin. Aluksi tarvit kaksi elementtiä: seinä ja tyhjä tila. Sitten lisää, kun keksit ihan itse, mitä niillä muilla elementeillä on vaikutusta peliin.

(Vinkki: seinään ei voi kävellä, ellei ole haamu.)

Hahmokoodaus? Se ei ole sinun pelisi, jos joku muu neuvoo tämän. Mutta jos et keksi mitään, tee peli jossa on yksi statti: kuinka kova hahmo on.

Lisäksi ekasta pelistä on hyvä tehdä yksiulotteinen. Ne ulottuvuudet ovat siinä järjestyksessä siksi, että aloitteleva pelintekijä tajuaisi aloittaa projekteista, joihin rahkeet riittävät. 3D-peli onnistuu vasta kolmantena projektina.

Lumpio [03.12.2007 21:07:22]

#

Mikset halua opetella C:eetä tai jotain edes vähän VB:isualbasicia parempaa kieltä? VB on ihan kamalaa.

Antti Laaksonen [03.12.2007 22:03:40]

#

Ohjelmointikieli on viimeinen asia, josta kannattaa murehtia pelin teossa. Jos ei onnistu tekemään VB:llä jotain, puutteet ovat omissa taidoissa eikä VB:ssä. Kaikilla ohjelmointikielillä pystyy nimittäin tekemään tarkalleen samat asiat.

Eri ohjelmointikielten tyyleistä voidaan toki keskustella, mutta ne ovat pelkkiä mielipideasioita. Tosin C:n kohtalo on hieman surullinen, koska VB on nykyaikaisempi ja korkeamman tason kieli. Tässä on yksi vertailu VB:n ja C:n välillä (C-koodi ei mahdu tähän täydellisenä):

Select Case i
Case 10 To 100
    Print "aaa"
Case 5000
    Print "bbb"
Case Is >= 500
    Print "ccc"
End Select
switch (i) {
    case 10:
    case 11:
    case 12:
    /* tapaukset 13 - 97 */
    case 98:
    case 99:
    case 100:
    printf("aaa");
    break;
    case 5000:
    printf("bbb");
    break;
    case 500:
    case 501:
    case 502:
    /* tapaukset 503 - int-muuttujan maksimi */
    printf("ccc");
}

Blaze [03.12.2007 22:15:36]

#

Antti Laaksonen kirjoitti:

Ohjelmointikieli on viimeinen asia, josta kannattaa murehtia pelin teossa. Jos ei onnistu tekemään VB:llä jotain, puutteet ovat omissa taidoissa eikä VB:ssä.

Njoh, siitä ollaan samaa mieltä, että kielen valinta on vähemmän oleellista ku moni muu asia, mut oikean työkalun valinta on osa ammattitaitoa. Yleensä puut kannattaa kaataa kirveellä tai sahalla ja laudat naulata vasaralla, eikä esim. toisinpäin.

Antti Laaksonen kirjoitti:

koska VB on nykyaikaisempi ja korkeamman tason kieli.

Ja korkeamman tasosena on pääsääntösesti vähemmän tehokasta.

Antti Laaksonen kirjoitti:

Select Case i
Case 10 To 90
    Print "aaa"
Case 5000
    Print "bbb"
Case Is >= 500
    Print "ccc"
End Select

No nyt vaan teeskentelet osaamattomuutta.

if(i >= 10 && i <= 90) {
  puts("aaa");
} else if(i == 5000) {
  puts("bbb");
} else if(i >= 500) {
  puts("ccc");
}

KeKimmo [03.12.2007 22:18:39]

#

Tässä yksi vertailu C:n ja VB:n välillä.

if (a > 0)
{
  printf("moi");
}
Select Case a
  Case 1
    Print "moi"
  Case 2
    Print "moi"
  Case 3
    Print "moi"
  Case 4
    Print "moi"
' jatkuu
  Case 271828
    Print "moi"
' jatkuu
  Case 13753256
    Print "moi"
' jatkuu
End Select

Joo, voihan sitä kirjoitella vaikka millaisia koodiesimerkkejä, jos tekee tahallaan huonoa koodia.

Lumpio [03.12.2007 22:49:21]

#

Antti Laaksonen kirjoitti:

Ohjelmointikieli on viimeinen asia, josta kannattaa murehtia pelin teossa. Jos ei onnistu tekemään VB:llä jotain, puutteet ovat omissa taidoissa eikä VB:ssä. Kaikilla ohjelmointikielillä pystyy nimittäin tekemään tarkalleen samat asiat.

Paitsi jos tarvitaan nopeutta. Ja sitähän tarvitaan esimerkiksi tämän threadin aloittaneen tyypin kuvaileman pelin tekemiseen.

Tietty jos ajattelet että kaikki ohjelmat ajetaan kuvitteellisella, äärettömän tehokkalla koneella niin ei, kielellä ei ole juurikaan väliä. Oikeassa elämässä valitettavasti vaan on.

Grey [04.12.2007 00:04:42]

#

@Blaze
@KeKimmo

Mutta kuten näemme esimerkeistänne, ei c:ssä näköjään ole kunnollista CASE-systeemiä, vai voitteko todistaa asian olevan toisin?..

-Grey-

Metabolix [04.12.2007 07:01:11]

#

Ihan yksinkertaisesti sanottuna 3D:hen on pitkä matka 2D:stä ja RPG:hen on pitkä matka laivanupotuksesta. Ota vain yksi harppaus kerralla. Toki jos tarkoitat Diablon tyylistä "3D:tä", joka on oikeasti 2D ja siksi toimii paikoin aika tyylittömästi, niin voit heti unohtaa hienolta kuulostavan termin "3D". 100 % Diablosta on luultavasti koodattu 2D:nä. Ylhäältä kuvatussa pelissä käytettäisiin samaa kuvaa pyöritettynä liikkumissuunnan mukaan, tuollaisessa pseudo-3D-jutussa taas käytetään eri kuvasarjaa joka suunnalle. Siksi suunnatkin pitää rajoittaa esimerkiksi kahdeksaan. Lisäksi Diablo (myös Diablo II) taitaa olla vieläpä ruudukkopohjainen, jolloin laskuissa pärjää halutessaan kokonaisluvuilla. Lakujen kannalta hahmo sijaitsee tietyssä ruudussa, ja piirtäminen hoidetaan niin, että jalat osuvat oikeaan kohti.

Kun nyt kielistä soditaan, niin mahtaako VB:n case taipua samaan kuin Pascalin?

case i of
  2, 4, 6..12: (* 6..12 = 6 to 12 *)
    Writeln('Moi!');
  1, 3, 5:
    Writeln('Hei!');
end;

Ja entäpä set-tietotyyppi?

if Ase in [Kivi, Puukko, Kirves] then
  Writeln('Hävisit tappelun.')
end;

Kannattaa siis koodata Pascalilla, ei noista muista ole mihinkään. ;)

Janezki [04.12.2007 08:17:40]

#

En minäkään haluaisi lannistaa hyvää yritystä, mutta suosittelen lämpimästi jättämään sen 3D:n pois tässä vaiheessa. Tee vaikka versio ykkönen, joka on kaksiulotteinen tai ascii-grafiikoilla. Jos peli on suosittu/hyvä niin lähdet kehittämään kakkosta joka on kolmiulotteinen. Mutta sanonpa vaan että komiulotteispelit on täysin oma lukunsa.

Tätä tekniikkaahan Pro-pilkin tekijätkin noudattivat. Ensin ykköseen toimivat systeemit, kakkosversioon sitten kaikki hienoudet.

Pekka Karjalainen [04.12.2007 11:37:49]

#

Aloittelevat ohjelmoijat ovat monesti liian huolestuneita nopeudesta. Onhan se toki järkeenkäypää tässä 3D-pelin tapauksessa, koska hidasta kielen toteutusta käyttämällä oman koneen käytännön suoritusnopeus voi vastata kymmenen vuotta vanhaa konetta.

Ja kuten hyvin muistamme, kymmenen vuotta sitten ei ollut yhtään 3D-peliä, koska niitä ei yksinkertaisesti voitu tehdä.

Olisihan se aivan sopimatonta väittää, että joskus harrastelijan peliprojektit kaatuvat ihan muusta syystä kuin siitä, että ei tullut alussa valittua tarpeeksi "nopeaa kieltä". Joku voisi vielä vaikka väittää, että sellaiselle hitaan kielen maineessa olevalle jutulle kuin Rubylle on tehty muka joku 3D-pelientekosysteemi.

http://ogrerb.rubyforge.org/

Tosi koodari tietää, että jos näistä asioista edes puhuu, seuraavasta C++-ohjelmasta minkä tekee tulee kaksi kertaa hitaampi. Prosessorimenninkäiset kostavat pahat puheet, tai kääntäjäpeikko kääntää for-silmukat väärin päin.

Älkää sitten sanoko, etten varoittanut! Hidas koodi väijyy kaikkialla.

TsaTsaTsaa [04.12.2007 12:30:21]

#

Kopeekka kirjoitti:

Ja kuten hyvin muistamme, kymmenen vuotta sitten ei ollut yhtään 3D-peliä, koska niitä ei yksinkertaisesti voitu tehdä.

No kyllähän niitä jo 1997 oli, hä?

rautamiekka [04.12.2007 16:29:38]

#

Okei okei rauhoitutaan ettei aloiteta mitään sotaa tyyliin win VS Linux tai irak vs USA :)

@Kopeekka

Itse olen graafisuuden kannalla, en ymmärrä ASCII-peleistä enempää kuin pulu pesäpallosta hehe.

Niin, miten teet kartat ? Entä miten niissä liikutaan (<- tuo tosin enemmä liittyy kameraan)

Mites sitten saat hahmon käyttäytymään kuin sen pitäisi ? En näe sitä että se ei olisi mun peli jos pyydän teiltä apua. Pyydän apua OpenSource-aatteellisesti pääasiassa siksi että itsellä ei ole taitoja/tietoja tähän; lopputulos olisi hieman lopahtanut. Of course etsin ja kyselen lisää tietoa sitä mukaa kun keksin peliä enemmän.

@Lumpio

Koska C on hyvin sekava ja täysin epälooginen kieli toisinkuin VB jota voit lukea melkein kohtisuoraan. C:eessä taas joudut hunteeraamaan "nii mitä vit tämä nyt tekikään ..."

@Antti Laaksonen

Kiitos kauniista sanoista ! <3. Sitä mäkin että se kieli jolla tehdään ei vaikuta lopputulokseen vaan taito jota mulla ei ole niin paljoin kun sulla :)

@Blaze

Jaskanmarjat. Yks hailee mikä on sen niinsanotun ammattimaisuuden taso jotain tehtäessä. Hyvin harvat pelaa wow ammatikseen ja ollakseen paras, huvikseen sitä pelaavat.

@KeKimmo

Huono muistini kaivoi repaleisen tiedon että VB:eellä tuo sama onnistuu näin

Select Case a

	Case 1 to 10

		Print "moi"

	Case 11 to 100000

		Print "Ensin pieni, sitten iso :)"

End Select

@Metabolix

Olen täysin samaa mieltä että 2D:eestä 3D:eehen on pitkä matka, mutta vettä löytyy matkata keitaalta toiselle :D

Pystytkö selittämään tuota Set-tietotyyppiä ? Se vaikuttaa mielenkiintoiselta mutta en ymmärtänyt.

@Janezki

Jos olet koskaan edes nähnyt runescape 1:stä toiminnassa, voisi ensin tehdä sen näköisen, sitten oikein laillisen (kuten me sanomme)

@Kopeekka
Kyllä 3D:eetä oli jo tyyliin -92, just parasta aikaa <3

(Mod. Edit. Kooditagit ja parikymmentä tyhjää riviä pois. Säästähän tilaa.)

T.M. [04.12.2007 16:51:03]

#

rautamiekka kirjoitti:

Haluan ajan kuluksi ja mielenkiinnoksi VB6:sella tehtailla 3D roolipeliä jossa on rippeitä muun muassa runescapesta, diablosta, wowista ja Dungeon Siegestä. Ohjeita alusta asti grafiikan ja karttojen piirtämisestä hahmokoodaukseen tarvitsen. Jotkin taitavat kuten Antti Laaksonen vissiinkin osaavat sanoa jotain.

Näyttää siltä ettei sinulla ole minkäänlaista kokemusta noista asioista, joten unohda tuon pelin tekeminen nyt ainakin vähintään vuoden ajaksi.

Opettele nuo osa-alueet kunnolla ennen kuin edes mietit pelien tekemistä...

Dude [04.12.2007 16:57:36]

#

Kopeekka kirjoitti:

Ja kuten hyvin muistamme, kymmenen vuotta sitten ei ollut yhtään 3D-peliä, koska niitä ei yksinkertaisesti voitu tehdä.

TsaTsaTsaa kirjoitti:

No kyllähän niitä jo 1997 oli, hä?

Sanootaan ny vielä esimerkiks Ignition, joka on 3D autopeli(grafiikanki saa jopa 800x600).

aegis [04.12.2007 17:13:05]

#

Ainakin skenessä väännettiin vektoreita jo yhdeksänkytluvun alkupuolella, tiedä sitten oliks kuusnepalla mitään aikasemmin

Pekka Karjalainen [04.12.2007 17:23:36]

#

Sarkasmi -- toimii aina yhtä hyvin :-P

Itse pelasin ekaa 3D-peliä jo 80-luvulla. Olisikohan se ollut Elite.

Jos sillä nyt on väliä, niin en suinkaan valita, jos aloittelijoille suositellaan C++-kieltä, koska minulla ei ole mitään erityistä sitä vastaan (paitsi pari uutta C++0X-ominaisuutta voisi tulla nopeammin käyttöön...). Sen sijaan nopeus on huono peruste. Itse asiassa kielet eivät ole nopeita tai hitaita. Niiden eri toteutukset voivat olla nopeita tai hitaita.

Aloittelijan koodi harvoin on nopeaa. Toimivuus ja ylläpidettävyyskin pitäisi ensin saada hanskaan. Niitä taas voi harjoitella ihan millä kielellä kukin lystää.

Olisi se vaan jännä asia, kun joku joskus tekisi hyvän pelin valmiiksi ja sitten kysyisi, että mitenkäs tätä optimoidaan, että saa 500 ölliäistä kerralla ruudulle. Sen sijaan yleinen huoli ölliäisistä tulee esitettyä varhaisessa vaiheessa kehitystä, ja loppuvaihe jää usein kokonaan tekemättä :-)

aegis [04.12.2007 18:02:03]

#

Täällä nyt harvemmin tietää onks joku sarkastinen vai ei :(

rautamiekka [04.12.2007 18:59:49]

#

@T.M
En vissiin lopeta, opiskelen samalla, se on kaikkein tehokkainta.


En ole täysin aloittelija ja opin nopeasti jos haluan.

Megant [04.12.2007 20:04:30]

#

Jos sinulla ei ole hajuakaan edes mitä kaikkea sellaisen tekemisessä pitäisi osata, etkä ymmärrä esimerkiksi sitä miten yksinkertaisen (vaikka tilepohjaisen) kartan pitäisi toimia, suosittelen että jätät nuin vaikeat projektit myöhemmälle.

Kannattaa tehdä aluksi jotain paljon yksinkertaisempaa, jonka avulla ymmärtää mitä kaikkea tarvitsee monimutkaisempaan peliin, ja että miten se sitten kannattaa toteuttaa.

Merri [04.12.2007 21:12:25]

#

Tai sitten lähtee vain tekemään projektia ja keskittyy yhteen osa-alueeseen kerrallaan. Todennäköisesti haluat ihan ensimmäiseksi tehdä jotakin mitä toimii, eli jonkinnäköisen rungon ilman varsinaista/kunnollista grafiikkaa. Jotakin yksinkertaista minkä kautta näet, että edistyt. Ei ole pakko tehdä saman tien finaalia koodia, vaan lähteä yksinkertaistetusta mallista sen suhteen, mitä olet tekemässä.

Järkevintä on pitää peliprojekti sellaisena, että jos tarvitsee jotakin opetella/kokeilla, niin ei tee sitä siihen pelin pääprojektiin, vaan aloittaa uuden projektin jossa kokeilee miten asiat toimivat, ja vasta sitten toteuttaa sen itse pelin päärunkoon. Tällä tavoin välttää voi välttää sitä, että kehittää jotakin asiaa todella pitkälle, ja sitten huomaakin että se polkee jotakin toista osa-aluetta vastaan -> on aina vaikea lähteä poistamaan ja korjaamaan koodia.


Ihmiset kannustavat toisiaan liian harvoin.

Lumpio [04.12.2007 22:36:58]

#

rautamiekka kirjoitti:

@Lumpio

Koska C on hyvin sekava ja täysin epälooginen kieli toisinkuin VB jota voit lukea melkein kohtisuoraan. C:eessä taas joudut hunteeraamaan "nii mitä vit tämä nyt tekikään ..."

Mutta VB:ssä on On Error Resume Next. 'nuff said.

(Oikeasti, noin sanovat vain ne, jotka eivät ole vielä onnistuneet vääntämään pieniä aivojaan C:n ympäri. Se on erittäin järkeenkäypä ja tehokas kieli kun sen tajuaa.)

Kiitos opeista btw.

Grey [04.12.2007 22:50:09]

#

C ja C++ ovat kumpikin aivan yhtä tehottomia! Tosimies koodaa vain ja ainoastaan suoraan binaaryna, paremman puutteessa vaikka asmilla..

-Grey-

Merri [04.12.2007 23:10:39]

#

Voitaisiinko tässä pikkuhiljaa tehdä sopimus siitä, että jos keskusteluhuoneen nimi on QBasic ja Visual Basic, niin keskustelu myös pysyy siinä? Tämäkin keskustelu on jotain ihan muuta kuin sen pitäisi olla. Hävetkää. *vetää soosoo pahasetäilmeen päälle* ^_^

T.M. [04.12.2007 23:28:25]

#

Merri kirjoitti:

Ihmiset kannustavat toisiaan liian harvoin.

Katso joskus Idolsia ym sen kaltaisia ohjelmia, ja mieti miksi sinne on mennyt todella perseestä olevia tyyppejä itkemään kun he vihdoin kuulevat totuuden että he ovat täysin perseestä?
Vastaus: kotona iskä ja äiti kannustanu taivaisiin saakka, ja kakara luullu olevansa maailman valtias.

Ei siis mielellään kannusteta ettei todellisuuden taju aivan kokonaan katoa...

kayttaja-2791 [05.12.2007 01:22:02]

#

T.M. kirjoitti:

Ei siis mielellään kannusteta ettei todellisuuden taju aivan kokonaan katoa...

Toitotetaan että et osaa, niin lopulta väite pitää paikkansa kun itsetunto on saatu murennettua ja toinen heittää hanskat tiskiin? Parempi tapa mielestäni on kannustaa vaikka siitä vähästäkin tai edes vastata asiallisesti kysyttyihin asioihin ilman sitä kettuilua, pääasia että tekeminen pysyy yllä ja sitäkautta taidot karttuvat. Eritoten ohjelmoinnissa, missä valtaosan taidosta muodostaa pelkkä raaka tekninen tietämys, toisin kuin esimerkiksi mainitsemassasi laulamisessa joka on suuresti kiinni synnynäisistä ominaisuuksista.

T.M. [05.12.2007 17:29:15]

#

JTS kirjoitti:

Toitotetaan että et osaa

Ei? Vaan kerrotaan rehellisesti totuus. Tällöin hän tietää varmasti minkä tasoinen hän on, ja osaa kehittää itseään entistä paremmin, kun tietää viat.

Mobel [05.12.2007 19:05:52]

#

Merri kirjoitti:

Tai sitten lähtee vain tekemään projektia ja keskittyy yhteen osa-alueeseen kerrallaan. Todennäköisesti haluat ihan ensimmäiseksi tehdä jotakin mitä toimii, eli jonkinnäköisen rungon ilman varsinaista/kunnollista grafiikkaa. Jotakin yksinkertaista minkä kautta näet, että edistyt. Ei ole pakko tehdä saman tien finaalia koodia, vaan lähteä yksinkertaistetusta mallista sen suhteen, mitä olet tekemässä.

Järkevintä on pitää peliprojekti sellaisena, että jos tarvitsee jotakin opetella/kokeilla, niin ei tee sitä siihen pelin pääprojektiin, vaan aloittaa uuden projektin jossa kokeilee miten asiat toimivat, ja vasta sitten toteuttaa sen itse pelin päärunkoon. Tällä tavoin välttää voi välttää sitä, että kehittää jotakin asiaa todella pitkälle, ja sitten huomaakin että se polkee jotakin toista osa-aluetta vastaan -> on aina vaikea lähteä poistamaan ja korjaamaan koodia.

Olen samaa mieltä Merrin kanssa. Itse aloittelin pelintekoa juurikin näin (kokeilemalla asioita uusissa projekteissa ja lisäämällä niitä sitten itse peliin) ja jatkan edelleen, jolloin homma pysyy mielekkäänä ja opittuja asioita voi soveltaa siihen mistä ohjelmoinnissa pitää - tässä tapauksessa pelien tekoon. Ei minuakaan suuremmin napannut lähteä koodaamaan kioskin kassaohjelmaa pinojen opetteluun, jota harjoituksessa esitettiin, vaan harjoittelin asiaa mielummin NPCident puheiden koodauksessa.

En kuitenkaan väitä, että tämä olisi paras tapa oppia(jo siksi, että monet oppivat eritavoilla), muttei varmasti huonoin. Toki arvostan ihmisiä, jotka ovat opiskelleet ohjelmointia tai mitä vaan muuta opettelemalla ensin osa-alueet kuntoon ja soveltamalla sitten tietojaan haluamiinsa tarkoituksiin.

En myöskään jaksa uskoa, että laivanupotuksen jälkeen olisit valmis 3D-peliä koodaamaan. Suosittelen tutustumaan putkan pelioppaaseen, jonka päälle on grafiikat sitten helppo luoda. Opas on QB:lle, mutta VB:n ja QB:n syntaksit tunnetusti ovat lähes identtisiä. Kyseinen opas opettaa 2D-pelin perusasiat (kuten juuri karttojen tallentamisen taulukkoon, törmäystarkistuksen jne.) ja siitä on sitten helppo siirtyä eteenpäin. Opas löytyy täältä: https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=qbmgpo1

hunajavohveli [09.12.2007 16:53:52]

#

Mobel kirjoitti:

Suosittelen tutustumaan putkan pelioppaaseen, jonka päälle on grafiikat sitten helppo luoda. Opas on QB:lle, mutta VB:n ja QB:n syntaksit tunnetusti ovat lähes identtisiä. Kyseinen opas opettaa 2D-pelin perusasiat (kuten juuri karttojen tallentamisen taulukkoon, törmäystarkistuksen jne.) ja siitä on sitten helppo siirtyä eteenpäin. Opas löytyy täältä: https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=qbmgpo1

Kyseisen opassarjan kehitys vain jäi valitettavasti hieman puolitiehen, kun siirryin koodailemaan enemmän muilla kielilä. Olen kuitenkin kaavaillut kirjoittavani sarjan uudelleen, tällä kertaa yleispätevämmästä näkökulmasta, jota olisi helppo soveltaa mille kielelle tahansa. En uskalla tässä vaiheessa lupailla mitään, mutta uskon tämän suunnitelman vielä toteutuvan.

rautamiekka kirjoitti:

Itse olen graafisuuden kannalla, en ymmärrä ASCII-peleistä enempää kuin pulu pesäpallosta hehe.

Pointti oli kaiketi se, että pelin toiminnalisuus on helpompi kehittää, jos ei alkuun tarvitse murehtia grafiikoita. Sitten kun moottori alkaa muuten olla valmis, grafiikat on helppo lisätä mukaan.

Grey kirjoitti:

Mutta kuten näemme esimerkeistänne, ei c:ssä näköjään ole kunnollista CASE-systeemiä, vai voitteko todistaa asian olevan toisin?..

Itse olen aina pitänyt C:n case-viritelmää jotenkin epäkäytännöllisenä ja epäesteettisenä, mutta enpä toisaalta muista törmänneeni tilanteeseen, jossa se olisi voinut ratkaista jonkin pulmani if-lausetta ovelammin.

rautamiekka: Kukaan ei varmaan halua latistaa intoasi, mutta kokeneemmalla ohjelmoijalla on taipumus ajatella aloittelijan tilannetta realistisesti. Minun mielestäni on lähes varmaa, että nykyisellä kokemuksellasi et tule onnistumaan tavoitteessasi. Se ei kuitenkaan tarkoita, että sinun pitäisi luopua siitä. Päinvastoin, sinun kannattaa ehdottomasti pitää siitä kiinni, mutta suosittelen siitä huolimatta etenemään hitaasti, tekemään yhden asian kerrallaan ja täydentämään koodiasi sitä mukaa, kun opit lisää. Sillä kuten tämän aiheen aikana on todettu, sinun voi olla vaikea saada muiden sympatiaa puolellesi, jos yrität tehdä kaiken kerralla ja pyydät muita auttamaan valtavassa projektissa, jonka kaikki tietävät sellaisenaan olevan tuhoon tuomittu. Eli hiljaa hyvä tulee. Mistä sitten lähteä liikkeelle? Suosittelen heti alkuun unohtamaan kaikki grafiikat, kartat ja 3D:t ja keskittymään pelin toiminnalliseen rakenteeseen. Esittämällä kysymyksiä aluksi vain sitä koskien sinun on paljon helpompi saada muilta neuvoja ongelmiisi.

rautamiekka [16.12.2007 22:34:11]

#

En puutu tämän keskustelun sisältämään offtopickiin kun on oikeastaan virkistävää lukea sitä ;)

Tiedän hyvin tasoni VB6:sessa; väitän sen olevan peruskouluasteikolla 4-10 numerossa 5½.

Olen kyllästynyt kuulemaan että on mahdotonta tehdä jotain. Daa oikeasti, KAIKKI, K-A-I-K-K-I on pirun mahdollista. Tiedän että on myös mahdollista mun oppia C++ mutta en pidä siitä sitten alkuunkaan. Java kiinnostaa sen universaalisen järjestelmätukensa vuoksi, VB kiinnostaa koska se on yksinkertaista, loogista ja sopivan tehokasta. En tarvitse C++:n ruttotautisen tehokasta prosessoripohjaista pyöritystukea joka VB:eessä on hitaampi koska suoritetaan binääriä eikä lukua. Ei haittaa, EI.

Ei kiinnosta kuinka kauan teen tätä peliä, teen sen silti. Olen pelannut koko ikäni ja aina ollut kiinnostunut tekemään oman osani jonkin softan puolesta ja sen teen.

Te olette koodanneet niin monta softaa ettette edes osaa laskea niin pitkälle. Munkin aika tulee ja olen valmis kirjoittamaan satoja satoja tuhansia tuhansia koodirivejä VB:eetä saadakseni pelin pyörimään.

Tämä pelityyppi jonka mukaan teen pelin kiinnostaa sen tarinakertoisen pelattavuutensa ja tavoittensa vuoksi. Tehtäviä teen kyllä jos näen niissä olevan mielenkiintoa ja ohjeilla vasta teen vaikka useimpien mielestä se on surkeaa huijausta. No, ketä vattua se haittaa; en ole aivokäyräni korkeudella pilattu, älykkyysosamääräkin on 80 eli tyhmän tasolla mutta kun annan alitajuntani hoitaa ajattelun olen toisinaan IQ150 ;)

Joten, sanokaa mitä sanotte, ei ole toista paikkaa mistä hakeisin koodausapua joten täältä sitä haen. MuroBBS ei ole lempipaikkani, toisinaan olen voivotellut sieltä saaman tuen vähyyttä ja/tai epäammattimaisuutta MUTTA en väitä itseäni täysin oppineeksi enkä vissiin tule koskaan olemaankaan, silti opettelen kaiken minkä saan.


Conclusion: Aletaas tehdä peli koko kansan mieliksi :)

Heikki [16.12.2007 23:25:35]

#

rautamiekka kirjoitti:

Olen kyllästynyt kuulemaan että on mahdotonta tehdä jotain. Daa oikeasti, KAIKKI, K-A-I-K-K-I on pirun mahdollista.

--

Te olette koodanneet niin monta softaa ettette edes osaa laskea niin pitkälle. Munkin aika tulee ja olen valmis kirjoittamaan satoja satoja tuhansia tuhansia koodirivejä VB:eetä saadakseni pelin pyörimään.

Kyllä, täällä on ihmisiä, joilla on kokemusta useista projekteista. Ja jotka ymmärtävät, kuinka pirun iso projekti 3D-roolipeli on.

En puutu kysymykseen ohjelmointikielestä: tässä tapauksessa se ei ole relevanttia. Aina löytyy ihmisiä, joiden mielestä kielen X valitseminen on väärin. Sen sijaan painotan muiden tapaan, että ei kannata haukata liian suurta palaa kerralla.

Kun mietin miten itse opettelin ohjelmointia, niin alkeiden opettelun jälkeen tein pieniä pelitynkiä. Hyvin pieniä sellaisia. Ensin tekstipohjaisia, sitten sellaisia, jossa liikuteltiin neliötä tai jotain vastaavaa - tietysti 2-ulotteisessa maailmassa. Tämä piti motivaatiota yllä: kun oppi pikku hiljaa lisää, pystyi tekemään aina vähän hienompia pikkupelejä. Ja kantapään kautta opin pitämään projektit pieninä: kun on aloittanut monta Suurta ja Mahtavaa projektia ja lopettanut yhtä monta, tajuaa että ehkäpä sitä Quake vitosta ei heti aluksi saa aikaan.

Sinulla on selvästi motivaatiota, se on hyvä. Ja täällä on ihmisiä, jotka haluavat auttaa sinua. Kukaan ei voi antaa tarvittavia tietoja 3D-roolipelin tekemiseen yhdessä foorumin viestiketjussa. Mutta tässä ketjussa on juurikin kerrottu, miten voit oppia tarvittavat asiat. Lähde liikkeelle siitä, että saat vaikka kirjaimen liikkumaan näytöllä. Sitten miti, miten tekisit maailman tämän "pelihahmon ympärille" ja siitä sitten jatkat esimerkiksi miettimällä miten hahmo ja pelimaailma vaikuttavat toisiinsa (törmäystarkistus, näkökenttä jne)...

Tee sitten esimerkiksi ristinolla, matopeli ja tetris. Ja jatka siitä sitten mielenkiinnon mukaan ja kokeile uusia asioita. Jossain vaiheessa alat tajuamaan, mistä "palasista" haluamasi peli koostuu, ja voit alkaa rakentamaan haluamaasi projektia.

Lähes kaikki on kyllä mahdollista, mutta monesti tavoitteen saavuttamiseksi on tehtävä työtä. Ja kannattaa kuunnella kokeneempia, ettet löisi turhaan päätäsi seinään.

Grey [17.12.2007 03:07:42]

#

Hm, voisin olla melkein avuksi projektissasi, tai ainakin mahdollisuuksien puitteissa pitää sinua omissa projekteissani mukana. Tosin käyttämäni kieli on Qbasic (vaikka C alkanut kiehtoa, mutta enemmänkin jossain mahdollisimman pienessä), vaan periaatteita voi minulta kyllä oppia ja järjettömiä koodaustekniikoita..

-Grey-

rautamiekka [17.12.2007 10:34:42]

#

@Heikki
:)

Viimein joku sanoo jotain järkevää kun aina olen saanut lukea niitä masentavia puolisanomattomia maailmanloppulauseita.

Voin pystyttää alueen ZoltanSoftwareni tiloihin jossa saatte autettua tämän OpenSource-pelin tekemisessä.


@Grey
Voit auttaa ideoimalla :)

rautamiekka [17.12.2007 14:27:48]

#

@Grey
Voit privalla antaa jelppia koodaustekniikoissa ja muissa sitä mukaa kun mielit :)

rautamiekka [17.12.2007 16:10:51]

#

Pienenä korjaukseni tekstiini: ... ja jos ei ole mahdollista, niin sitten mutkan kautta :)

atomimalli [25.12.2007 15:47:29]

#

Minä itse pidän projektia mahdollisena, mikäli sen sen rönsyilyn estää ja tekee vain yhtä asiaa kerrallaan sekä miettii sen sopivuutta tulevaisuuden kannalta, Ylipäätänsä välttää tekemästä virheitä, jota aloitteliat yleensä tekee(kokeneemmat neuvoo). Ja opettelee asian ennenkuin lisää sen koodiin, kuten heikki sanoi.

Mikäli koodi sattuisi menemään auttamattomasti solmuun ja tuo motivaatio säilyy, niin senhän tekee uudestaan alusta.(*mielessä pari esimerkkiä*)

Täytyy sanoa että tuossa projektissa on ainakin 4 kertainen vaiva, miltä alussa näyttää.

Perusteellisella suunnittelulla olisi vältetty parin minun tietämän rpg pelin kaatuminen. Ne oli 2d, joten 3d:ssä asia on erittäin paljon tärkeämpi.

rautamiekka [31.12.2007 18:42:03]

#

Atomimalli jo otti yhteyttä meilillä ja kehui auttavansa miten vain voi enkä kiellä tai hylkää apua.

rautamiekka [24.01.2008 15:56:34]

#

Atomimalli havainnollisti niin selkeästi pelimoottorin ja ennakkotiedon tekemisestään tärkeyden että tulin vakuuttuneeksi opetella asiat ennenkuin yritän koodata moottoria tai peliä. Olen tutkinut muita pelejä enkä ole lainkaan ymmärtänyt niitä For-silmukoita vaikka kuinka siinä olisi kommentti. Alla oleva For on 3D-sokkelopelistä, täältä Putkasta löydetty.

For i = 1 to MaXX

Tämä rivi ei sano mitään. Tiedän vain että "i" on vain käskypalikka saada For käyntiin ja että MaXX on muuttuja (arvo: 8) joka määrittää että kartta ei saa olla yli 8 neliötä pitkä pystysuunnassa.

Tässä on se meili, pikkasen kirotusvirheitä mutta selvää saa:


Jotta pelistä tulisi mitään, siinä pitää olla pelimoottori, se huolehtii puoli automaattisesti tapahtumien kulusta, törmäyksistä,ja kaikesta, ilman sitä koodin määrä 10-100000 kertaistuisi, riippuen pelin laajuudesta.

Itseasiassa moparscapessa ei ole paljoa eroa runescapeen, sen koodi on ladattu tietokoneelle, modattu tukemaan yksityisservereitä ja otettu käyttöön. Minä itse latasin joskus runescapen(sen ohjelman, jonka avulla se näkyy), koneelle ja ajoin takaperinkoodaavan ohjelman läpi, joka teki siitä selkokielistä javaa. En kyllä älynnyt koodista itsekkään mitään. Voin toki vilkaista jos vältämäti vaadit, silloinhan en osannut niin paljon asioita enkä edes c:tä.
En kuitenkaan usko siitä löytyvän mitään hyödyllistä, koska kaikki pelilogiikka tapahtuu serverin päässä, joka sijaitsee fyysisesti jossain aivan muualla, clientin(se ohjelma joka on käyttäjän päässä) sisällä sijaitsee vain käyttöliittymä, joka on aivan pieni osa kokonaisuutta, se käsittelee lähinnä renderöintiä, inventoryä, minimappia, keskustelua sekä toimintojen välittämistä serverin ja clientin välillä.

Minun mielestäni moparin/runen sourcen(lähdekoodin, vapaa suomennos: sorsan) katselemisesta ei paljoa kostu. Paremmin sen pelilogiikkaa voisi analysoida. Ajatella että eikeasti kaikki tapahtuu siinä ylhäältä päin. Kikki pelilogiika, peli toimisi aivan samoin, jos siitä tekisi 2d version. Runescape toimii teknisesti aivan samanlailla kuin 2d-pelit, siihen on vaan muutettu näytölle piirtämin 3d muotoo, sekä hiiren käsittely.

Jos puhut moottorista, josta annoin linkin, niin se on tehty coolbasicilla, siitä ei ole aijetta tehdä mitään käännöstä, mutta idea on aivan sama, jolla haluaisin sinunkin toteuttavan pelimoottorisi, itseasiassa olin miettinyt sitä niin paljon että halusin testata sitä käytännössä vaihtamalla sen kaverin alkeellisen moottorin tilalle.
Moottorin pohja sisältää noin 50 riviä koodia, se hoitaa toimintojen automatisoinnin, loput voi koodata itse siihen päälle.

Sen jälkeen, kun pohja on tehty, niin tuo mistheman pelimoottori alkaa/on alkanut lähtemään omaan suuntaan sen toteutustavoissa koska systeemi on äärimmäisen laajennettavaja vapaa.

Siinä on sellainen joidenkin mielestä rajoittava asia, että se ei ole oliopohjainen, mikä ei joidenkin mielestä ole järkevää, vaan koko homma perustuu taulukoille. Ennen moderneja kieliä se oli ainot mahdollinen toteutustapa, ja toimi ihan hyvin... Itseasiassa se voi olla helposti muutettavissa käyttämään olioita, mutta en ole tutkinut asian sitä puolta vielä tarpeeksi, enkä ole varma että tuleeko pariin kuukauteen vielä tutkittuakaan, kun on kuoulu niin pahasti jäljessä(käyn etäkoulua).

Luulen että ohjelmointiputkaan kannattaa aihe laittaa sittenkun on jonkinlaista pohjaa valmiina ja olet oppinut tarpeeksi asioita itse asiaan menemistä varten.
Mitään ei oteta oikein vakavasti ohjelmointipiireissä, jos ei ole mitään oikeata näyttöä asista, varsinkaan jos ei ole aikaisempaa näyttöä takana.(seurannut asiaa neljä ja puoli vuotta)

Nimi kuulostaa ihan ok:lta, vaikka itse yritän pysyä tätä nykyä kaikista rpg pelistä erossa niiden addiktoivan vaikutuksen takia, muunmuassa.

Kuten jo aikaisemmin asian hiukan erillaila ilmaisi, pelimoottorin idea on tehä pelin tekemisestä mielekästä, yksinkertaista tehdä pelin tekemisestä ylipäätään mahdollista, vähentää pelin tekemiseen menevää aikaa, helpottaa hommaa, ja auttaa ratkaisevasti bugien löytämistä. Tein ensimmäistä peliäni liian alkeellisella pelimoottorilla, tai puolikkaalla sellaisella, koodia tuli ihan älyttömästi siihen verrattuna mitä ruudulla näkyi, koska jouduin joka-asialle kopioimaan koodinpätkän, minkä pelimoottori tekisi automaattisesti ja sen joutuisi kirjoittamaan vain kertaalleen(siinä se idea tulikin esille). Siis pelimoottori tekee puoli automaattisesti asioita, mitä pelaaja muuten joutuisi kopioida samat jutut jokaiselle uudelle asialle erikseen(esimerkiksi painovoima ja törmäys tasohyppelyssä).

Eli pelimoottori pitää huolen kaikista tärkeistä asioista, jokaisessa pelissä on erillainen pelimoottori, joten sitä ei kieli voi tarjota valmiiksi(coolbasicissa on mukan objekti moottori, mutta sen lisäksi joutuu vähänkin laajempaa peliä tehdessä rakentaa oman moottorinsa, objektimoottori ei sisällä muuta kuin törmäyksen ja helposti käsiteltävät kartat)

Minä vastaan mielelläni kysymyksiin pelimoottoreista ja niiden toimintaan liittyen.

Otin yhden oppipojan coolbasicia oppimaan, joten nyt on melkein viikon kokeimus ohjelmoinnin varsinaisesta opettamisesta, aiheen on ollut silmukat sun muut.


Sanoppas että missä vaiheessa olet opettelussa tällä hetkellä, ja että miten voin auttaa siinä, ja mitä et ole älynnyt.

Sano jos tiedät että miten grafiikkaa saa vbssä näytölle, niin opettaminen helpottuu aika kovasti.

Kuten runescapesta mainitsin, niin se perustuu suoraan 2d pelimaailmaan, sen takia kaikki sanookin että pitää ensin tehdä 2d versio, liikkumenen ruutujen mukaan on helppo poistaa tekemällä ukkelille elikoordinaatit, siis ruudun sisällä olevat koordinaatit.


Ohjelmointia kannattaa kuitenkin opetella vielä jonkin aikaa ennen enginen tekemistä, on tiettyjä asioita mitä ilman ei voi aloittaa, kuten tuo taulukoiden käsittely, sen lisäksi pitää miettiä sellaisia teknisiä asioita kuten että voiko esineitöä olla maassa päällekkäin, vai kuinka monta niitä voi olla ja muuta, kunhan niistä on aluksi viitteellistä tietoa, niin sen voi koodata moottoriin mahdollisuudeksi, jonka voi myöhemmin ottaa moottorissa käyttöön, kun se tulee tareelliseksi.

Voin viikonloppuna tehtailla perusteellisen selostuksen pelimoottorin toiminnasta, jos haluat, pääasiassa se kuitenkin toimii niin että kartan ruudukossa on joku numero, joka kertoo että mikä ukkeli siinä on ja sitten katsotaan vain että mikä koodi sen tapauksessa suoritetaan.(viittaus pelimoottorin ideaan) Silloin ei tarvitse jokaista yksittäistä tyyppiä kohti kopioida samaa koodia. Ukkeli/esine voi tarvittaessa tehdä vaikka mitä temppuja, vain mielikuvitus on rajana, kopioida itseään, muuttua toiseksi, muuttua esineeksi, liikkua(lol), käyttää tekoälyä, muuttaa maastoa, hoitaa ilmiöitä(esimerkiksi riittää että seinän sisässä tai missä vaan on jokin *olio*, niin taivaalle saa sillä linnut), muokata maailmaa mielensä mukaan, teleportata, mitä mieleen tulee.
Esimerkiksi siinä kaverin pelimoottorissa kartan vaihdotkin tehdään noilla jutuilla, eli jos pelaaja kävelee sellaista päin, niin sen sisällä oleva koodi aktivoituu, joka vaihtaa kartan.


Pelimoottorin tekemisen jälkeen kaikki valta pelimaailmaan on tekijän käsissä, maailman toiminta on pelimoottorin vastuulla, eikä sitä tarvitse enään miettiä, kunhan koodaa pelimoottorille, eikä jotain irrallista.(esim piirtää laatikon keskelle näyttöä ja ihmettelee että miksi se ei liiku muun kuvan mukana, se pitää antaa pelimoottori liikuteltavaksi)

Jotain reaaliaikastakin keskustalua olisi kiva käydä jossain vaiheessa. Minulla on sellainen unirytmi että herään yleensä hiukan ennen kahtatoista illalla suomen aikaa(elelen vietnamissa tällä hetkellä) ja käyn päiväunilla aamun aikoihin ja olen noin koulun aikaan hereillä eli sopivaa aikaa on ehkä vaikea löytää. Olisi tarkoitus aikaistaa tuota rymiä vielä joten nyt painun nukkumaan.

rautamiekka [25.01.2008 17:08:18]

#

Täällä Putkassa on "OpenGL:län käyttö VB:eessä" joka todella toimii, tosin siellä oleva linkki siihen kirjastoon on väärä, Googleta "opengl visual basic" niin löydät heti sen. Huomasin että A-XP2800+ koneella prossu käy täysillä piirtäessään kolmiota, oli pyörimisnopeus mikä vain. Ehkä tuota kirjastoa voisi käyttää tämän pelin saamiseksi 3D:eeksi ?


Sivun alkuun

Vastaus

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

Tietoa sivustosta