Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Opasta alkeellisen verkkopelin tekoon?

Sivun loppuun

pipo [11.02.2009 00:19:52]

#

Haetaan koodi- tai linkkivinkkiä, miten toteutetaan nettiyhteyden kautta moninpelattava numeronarvauspeli tai reaaliaikaisuutta korostaakseni vielä parempi olisi matopeli. Ei vissiin vaadi montaa riviä koodia* mutta tietoa vähän enemmän. En keksinyt googeliin montaa hyvää suomenkielistä(!) hakusanaa.

Jos joku vaivautuu tämmösen kirjoittamaan, niin kommentointia / dokumentaatiota sitten liiankin kanssa. Tälläkin sivustolla oli joitain aihetta sivuavia viestejä, joita ei oltu tarkoitettu opiskelua varten ja kommentointi oli sen mukaista.

* Saa oikaista jos on tarvetta.

Grez [11.02.2009 00:30:03]

#

Kielellä ei ilmeisesti väliä..

pipo [11.02.2009 00:39:42]

#

Ymmärtääkseni kielellä on väliä, muttei minulle. Jos saan ehdottaa niin suomi tai pseudo tai joku ohjelmointikieli jota keskiverto harrastelija osaa käyttää tai kääntää yleensä käyttämälleen kielelle. Itte olen tottunut eniten pythoniin, c-sukuisten syntaksi on minulle hyvin hidasta luettavaa.
Sä osaat varmaan itte vastata kysymykseesi paremmin kuin mä. :)
ps. ei brainfuck

groovyb [11.02.2009 00:46:24]

#

pistäppä kuukkeliin hakusanaksi php multiplayer tutorials ja läheppä siitä liikkeelle

Grez [11.02.2009 01:15:52]

#

Ei mulle ole kielellä väliä. Mutta joo, suomi tai pseudo kuulostaa hyvältä..

Ajattelisin, että esimerkiksi TCP-pohjaisessa matopelissä yksi kone voisi toimia palvelimena (samalla koneella toki voi toimia myös yksi asiakas). Eli peli koostuisi kahdesta erillisestä "tehtävästä"

--Palvelin--:
Alustus (vaihe 1, pelaajien kerääminen):
- Alusta tyhjä pelaajalista
- Kuuntele porttia x

Yhteyspyynnön saapuessa:
- Hyväksy yhteyspyyntö
- Lähetä clientille palvelimen tunniste
- Odota clientin tunnistetta ja pelaajanimeä
- Lähetä clientille aikaisemmin saapuneiden pelaajien lista
- Lähetä aikaisemmin saapuneille pelaajille tämän uuden nimi
- Jatka datan vastaanottamista kultakin clientilta

Jonkun clienteista lähettäessä pelin aloituskommennon:
- Arvo pelaajille alkupisteet
- Lähetä kaikille clienteille tieto että peli on alkanut
- Vastaanota clienteiltä tietoa suunnanvaihdoksista
- Kerran sekunnisa (tms) päivitä kunkin pelaajan matoa clientiltä viimeksi tulleeseen suuntaan. Päivitä kaikkien matojen tiedot kaikille clienteille. Jos tiellä on toinen mato tai seinä, lähetä tieto, että peli ko. pelaajan osalta päättyi

Kun vain yksi mato jäljellä:
- Lähetä clienteille tieto voittajasta
- Palaa odottamaan pelin aloitusta

--Clientti--:
- Kysy pelaajan nimi
- Ota yhteys palvelimeen
- Tarkista että palvelimen vastaus on kelvollinen
- Lähetä clientin tunniste ja pelaajan nimi
- Vastaanota palvelimelta pelaajalista ja näytä pelaajat käyttäjälle
- Siirry odottamaan pelin alkamista

Pelin alkua odottaessa:
- Jos käyttäjä valitsee aloituksen, lähetä aloituspyyntö palvelimelle
- Jos tulee uusia käyttäjiä, lisää käyttäjälle näkyvälle listalle
- Jos palvelin ilmoittaa että peli on alkanut, siirry pelitilaan

Pelitilassa:
- Jos käyttäjä painaa nuolinäppäintä, lähetä tieto palvelimelle
- Päivitä madot näytölle palvelimen antamien tietojen mukaan

Pelin päättyessä omalta osalta:
- Näytä "Game over" ja jatka ruudun päivittämistä muiden matojen osalta

Pelin päättyessä kaikkien osalta:
- Jätä ruudulle lopputilanne ja siirry pelin alun odottelu-tilaan.


Tuo oli aika korkealla tasolla, mutta kieliagnostisesti on aika vaikeaa mennä tuon matalammalle tasolle, kun nuo näytön piirtämiset, näppäimistön lukemiset sekä TCP-yhteyksien muodostamiset ja kuuntelut riippuu niin paljon kielistä ja kehitysympäristöstä.

pipo [11.02.2009 20:33:17]

#

Joo kiitos Grez, toi on kerrottu lukuisissa nettitutoriaaleissa varmaan kaikille kielille. Mutta mitä sitten pitää tehdä kun noi on koodattu.
Esim mato.py clientille, matoserveri.py serverille, ja käytetään Apachea.

Grez [11.02.2009 20:43:13]

#

No tuossa minun ehdotuksessa ohjelmat käynnistetään ja clientin käsketään ottaa yhteyttä serverille (ja Apachea ei siinä tarvita mihinkään). Ja sitten vaan pelataan.

pipo [11.02.2009 21:21:35]

#

Aijaa. Jos mulla on omalla koneella client- ja serveriohjelma, niin nekö keskustelee sitten vaan käyttämällä kahta eri porttia? Ja jos meiän äiskällä on samanlainen clienttiohjelma, niin sen pitää ottaa yhteyttä mun iipeeseen ja samaan porttiin kuin mitä serveriohjelma käyttää, jotta me päästään pelaamaan?

Grez [11.02.2009 21:32:03]

#

Niin, serveri kuuntelee porttia x, ja clientit ottaa yhteyden serverin porttiin x. Clientit yhteyttä ottaessaan arpoo yleensä itselle jonkin vapaan portin 1024 ylöspäin, mistä ottavat yhteyttä, mutta tällä ei ole merkitystä ja käytännössä ohjelmoijan ei tarvitse siitä välittää.


Sivun alkuun

Vastaus

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

Tietoa sivustosta