Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Millä kannattaa pyörittää pokerin servereitä?

E1ss [22.01.2017 17:48:23]

#

Eli olen kehittelemässä unityllä pokeria puhelimelle. Tarkoituksena olisi tehdä siihen nettiturnauksia joten olen miettinyt miten saan ylläpidettyä servereitä. Ajattelin että ostaisin esim. Hostgatorista tai vastaavasta serverit ja voisin jokaiselle pöydällä tehdä aladomainin jonne pelaaja lähettäisi tiedot ja lukisi. Onko tämä järkevää eli toimiiko se nopeasti ja onko saako nettisivut jotenkin salattua ettei kuka tahansa voi mennä lähettämään vääriä tietoja. Eli jos huonosti selitin niin lyhyesti:
Miten saan pokeri pöydän tiedot kaikille pelaajille eli nettiin?

fergusq [22.01.2017 18:20:24]

#

Sillä, minkä domain-nimen alla pyörität palvelimia, ei ole käytännössä mitään merkitystä tietoturvan kannalta. Luotettavien palveluntarjoajien pitäisi olla turvallisia. Nopeus riippuu ihan siitä, miten hyvät palvelimet vuokraat. Olettaisin, että nopeampi internetyhteys ja parempi rauta maksavat enemmän.

Tärkeintä lienee järjestää palvelinohjelmiston ja asiakasohjelmiston välinen yhteydenpito turvallisesti. Tähän kuuluu sekä viestin salaus että osapuolien aitouden varmentaminen. Tähän on olemassa paljon valmiita kirjastoja, käytä hakusanoja cryptography, encryption ja authentication. On vaikea sanoa, mikä olisi paras tapa toteuttaa tämä ilman tarkempia tietoja siitä, miten pelisi toimii ja minkälaista protokollaa se käyttää.

E1ss [22.01.2017 19:00:33]

#

Kiitos tästä. Tutustun noihin juttuihin tarkemmin kun itsellenikin on selvinnyt paremmin miten toteutan nettiosuuden.

The Alchemist [23.01.2017 19:28:32]

#

fergusq kirjoitti:

Tärkeintä lienee järjestää palvelinohjelmiston ja asiakasohjelmiston välinen yhteydenpito turvallisesti. Tähän kuuluu sekä viestin salaus että osapuolien aitouden varmentaminen. Tähän on olemassa paljon valmiita kirjastoja, käytä hakusanoja cryptography, encryption ja authentication. On vaikea sanoa, mikä olisi paras tapa toteuttaa tämä ilman tarkempia tietoja siitä, miten pelisi toimii ja minkälaista protokollaa se käyttää.

Salaukseen riittää kyllä ihan tavallinen ssl-suojattu yhteys. Periaatteessa tärkeämpää on varmistaa viestin koskemattomuus, sillä nettipeleissä tahallinen huijaaminen on suurin ongelma. Pokeripelissä toisaalta kaikki oleellinen tieto (ts. pelaajille jaetut kortit) voidaan laskea palvelimella, joten huijaamisen estämiseksikään ei tarvinne kehitellä erikoisia menetelmiä.

Jos peliin liittyisi vaikkapa nopan heitto, niin täytyisi jollain tavalla varmistaa, että arvottu silmäluku on todellakin koneen arpoma eikä pelaajan itsensä huijauskeinoilla määrittämä arvo. (Tässäkin tapauksessa riittäisi se, että silmäluku arvotaan palvelimella eikä asiakasohjelmassa.)

E1ss [27.01.2017 17:38:23]

#

Sellanen kysymys että jos mulla on database onko se täysin salainen jos kellään muulla kun mulla ei ole salasanaa vai pääseekö sen näkemään jotenkin.

Lisäys: Eli ajatuksena olisi tehdä androidille tämä peli unityä käyttäen. Jos kokemusta sanokaa!!! Mietin että olen tehnyt monta päivää koodia c#illa joka tarkistaa käden arvon. Olisiko mitenkään mahdollista että pelaaja "itse" tarkistaisi (eli hänen puhelimensa koodi) käden arvon ja lähettäisi sen php tiedostolle joka lähettää sen edelleen tietokantaan. Eli onko mahdollista tarkistaa että tieto käden arvosta on oikea?

Jonne [28.01.2017 13:03:30]

#

PHP backendinä on lähtökohtasesti väärä valinta tämäntyyliseen projektiin. Backendin pitäisi toimia reaaliajassa ja olla jatkuvasti tietoinen pelikierroksen tapahtumista, sen sijaan että yksittäisen pelaajan yksittäinen ratkaisu tallennettaisiin tietokantaan. (Toki pelikierroksen jälkeen kierroksen tapahtumat tallennetaan tietokantaa, ts. käsihistoria)

The Alchemist [02.02.2017 14:42:21]

#

E1ss kirjoitti:

Olisiko mitenkään mahdollista että pelaaja "itse" tarkistaisi (eli hänen puhelimensa koodi) käden arvon ja lähettäisi sen php tiedostolle joka lähettää sen edelleen tietokantaan. Eli onko mahdollista tarkistaa että tieto käden arvosta on oikea?

Tuossahan minä yllä kirjoitin sinulle ennakoivasti, että asiakasohjelmassa ajettavat toimenpiteet on helppoa väärentää. Periaatteessa voit aina kehitellä millaisia suojauksia tahansa ja vastapuoli voi aina murtaa ne. Jos murtamaton suojaus olisi olemassa, niin sitä käytettäisiin kaikkialla peli- ja mediateollisuudessa.

Käyttäjän antamaan syötteeseen on luotettava vain silloin, kun se on käytännön sanelema pakko. Joudut joka tapauksessa pitämään kirjaa palvelimella pelaajille jaetuista korteista ja pelaajien kädessä pitämistä korteista, joten tulosten laskeminen keskitysti on jo siitäkin syystä järkevää. Ei kannata duplikoida samaa koodia moneen eri paikkaan.

Jonne kirjoitti:

PHP backendinä on lähtökohtasesti väärä valinta tämäntyyliseen projektiin. Backendin pitäisi toimia reaaliajassa ja olla jatkuvasti tietoinen pelikierroksen tapahtumista, sen sijaan että yksittäisen pelaajan yksittäinen ratkaisu tallennettaisiin tietokantaan.

Pienessä mittakaavassa toimivien pelien kanssa backendin kielellä ei ole niin väliä. Php:llekin on monenlaisia cachetuspalikoita, joilla dataa voidaan säilöä tietokannan sijaan käyttömuistiin, jolloin toimintaperiaate ei oleellisesti poikkea python- tai java-sovellutuksista. Kyse ei ole amatöörimäisestä kikkailusta vaan arkisista optimointikeinoista, joilla php:llä kirjoitettuja järjestelmiä pyritään nopeuttamaan.

Vastaus

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

Tietoa sivustosta