Vousiko joku selittää miten tehdään online pokeri. Mikä on idea sen takana. Eli mitkä osat hoidetaan netissä mitä tietoa lähetetään pelaajille jonka he hoitavat. Olen tällähetkellä viikon kirjoittanut koodia hataran suunnitelman pohjalta ja nyt huomasin että tämä idea ei toimi. Voisiko joku ihan sanallisesti kertoa jos on kokemusta.
Palvelin/Server = P
Asiakasohjelma/Client = A
Palvelin pitää kirjaa pelaajista, paljonko kelläkin pelaajalla on rahaa, ketkä pelaajat osallistuvat mihinkin peliin, mikä minkäkin pelin tilanne on (kädet, pakka, potti)
Pelilooppi
1) P lähettää kunkin pelaajan A:lle tiedon senhetkisestä pelitilanteesta, eli olennaisesti ne tiedot mitä pelaaja normaalistikin näkisi pelatessaan pokeria (omat kortit, avopokerissa muiden avoimet kortit, "potin" eli pelaajien asettamat panokset
2) A esittää nuo tiedot pelaajalle, tyypillisesti graafisesti
3) A antaa pelaajan tehdä valinnat (kuten mitä kortteja laittaa vaihtoon, paljonko panostaa, foldaako yms). Tyypillisesti clientti antaa käyttäjän tehdä vain sallittuja valintoja.
4) A lähettää pelaajan tekemät valinnat P:lle.
5) P tarkistaa että valinnat ovat valideja ja päivittää tilanteen niiden mukaan
Jatketaan 1:stä.
Tuossa perusmalli ja eri toimijoiden roolit. Toteutuksen voi sitten tehdä valitsemillaan työkaluilla ja tavoilla. Lisäksi tulee huomoida erilaiset virhetilanteet, kuten että clientilta katkeaa yhteys palvelimelle. Yleensä yhteyden katketessa pelaaja voi tietyn aikaa ottaa yhteyttä uudestaan, mutta jos ei onnistu niin foldaa jos joku korottaa (paitsi jos on jo esim. all-in)
Huijauksen estämiseksi on kaksi olennaista asiaa mitkä pitää muistaa:
1) Palvelimelta ei saa lähettää clientille mitään tietoa jota käyttäjän ei kuulu nähdä (esim. pakassa jäljellä olevia kortteja, muiden pelaajien piilokortteja)
2) Palvelimen täytyy tarkistaa kaikki clientilta tulevat valinnat ja hylätä korruptoituneet, epävalidit, sääntöjen vastaiset, puutteelliset yms tiedot.
Eli clientin rooli on vaan toimia käyttöliittymänä. Sen ei kuulu pyörittää mitään pelilogiikkaa. Se voi käyttäjäystävällisyyden nimissä estää käyttäjää tekemästä epävalideja valintoja (ettei käyttöliittymän päivittämisen tarvitse odottaa vastausta palvelimelta) mutta siihen clientin älyn kuuluu rajoittua.
Kiitos todella paljon vastauksesta
Aihe on jo aika vanha, joten et voi enää vastata siihen.