Eli mitä ohjelmointikieltä suosittelette mikäli tavoitteena olisi tehdä simppeli selainpeli?
Peli olisi siis suoraa ylhäältäpäin kuvattu autopeli, jossa voidaan ajaa vapaasti kaupungissa. Tarkoitus olisi myös, että jos useampi ajelee omalla autollaan kaupungilla, niin muidenkin pelaajien autot näkyisi kartalla samanaikaisesti.
Ja aina plussaa jos homma toimii käyttäjälle päin suoraa selaimella, ilman minkään kilkuttimien asetamista.
Eli mitä ratkaisua suosittelisitte kieleksi ja tuoksi ratkaisuksi, että toisten pelaajien sijaiti saadaan lennosta peliin?
Selainpelin kieleksi sopii javascript erittäin hyvin, koska se suoritetaan selaimessa ja sillä voi piirtää esim. html5:en canvas-elementtiin. Tuo ratkaisu, jolla saadaan toisten pelaajien sijainti peliin voi olla esim WebSocket. Sitä voi käyttää javascriptillä selaimen päässä, mutta hakeaksesi muiden pelaajien sijainnin tarvitset palvelimelle jonkun skriptin (esim. Pythonilla ja Tornadolla tehdyn), joka hakee esim. tietokannasta pelaajien sijainnin ja lähettää ne WebSocketin kautta selaimeen. Tosin ratkaisusta voi tulla tuolla tavalla hidas, jos pitää hakea monesti sekunnissa autojen sijainti, mutta taitaa olla helpoin tapa.
Reaaliaikaista dataa ei kannata minnekään tietokantaan tallentaa, vaan aina kun pelaajan kone lähettää serverille dataa, serveri lähettää sen eteenpäin muille pelaajille. WebSocket on tarkoitettu juuri mahdollistamaan kaksisuuntainen tiedonvaihto selaimen ja palvelimen välillä, kun perinteiset ajax-tyyppiset ratkaisut sallivat palvelimen ainoastaan lähettää vastauksen (response) selaimelta tulleeseen pyyntöön (request). WebSocketia käyttäen palvelin voi lähettää spontaanisti dataa selaimelle.
Alchemist: totta. En ole käyttänyt WebSocketia vielä niin paljoa, joten en tajunnut tuollaista. Sainpahan taas lisää tietämystä.
WebSocket kylläkin vaatii erillisen palvelinohjelman, jota taas ei webhotelleissa välttämättä järjesty.
Ripen mainitsema Tornado on kenties yksi yleisimmistä tällaisista sovelluksista. "Palvelinohjelma" voi tosin kuulostaa hienommalta kuin mitä oikeasti tarvitaan; voihan sen koodata php:lläkin. Tosin kokemukseni mukaan WS-protokolla on aika monimutkainen juttu toteuttaa*, joten valmiin softan käyttö olisi paljon helpompaa.
* Viimeksi kun leikin WebSocketeilla, piti tukea kolmea melko erilaista versiota WS-protokollasta samaan aikaan, koska eri selaimet toteuttivat eri version standardista...
The Alchemist kirjoitti:
"Palvelinohjelma" voi tosin kuulostaa hienommalta kuin mitä oikeasti tarvitaan; voihan sen koodata php:lläkin.
Voihan sen koodata millä tahansa, mutta tavallinen HTTP-palvelimen kautta haettava nettisivu ei silti kelpaa, vaan koodi pitää saada käyntiin pysyvästi.
Oma palvelin on mahdollinen, joten webhotellin rajoituksia ei tarvitse miettiä.
Olisiko tuohon websocketin käyttöön jonkinmoista hyvää tutoriaalia? Entä Tornadon?
Itse ainakin olen saanut kirjoitettua pienen webchatin ihan Google-hakua hyödyntäen, suosittelen kokeilemaan sitä ensin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.