Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Mielipiteitä koodaustavasta

Sivun loppuun

punppis [18.01.2012 02:58:33]

#

Ajattelin alkaa tekemään huvin vuoksi tuollaista Travian-tyylistä selainpeliä, jossa voi siis generoidaan rahaa, voi lähettää hyökkäyksiä (jotka kestää x aikaa) ja tuhota joukkoja.

Mietin vain sellaista, että kannattaisiko jokainen hyökkäys tehdä ajastettuna cron-ajona vai sillain että jokainen sivunlataus hoitaa mahdolliset hyökkäykset sun muut toiminnot, jotka tapahtuu vasta x-ajan päästä ja vaikuttaa molempien pelaajien joukkoihin/rahoihin.

Cronin kanssa systeemi olisi huomattavasti helpompi tehdä, mutta löytääkö joku siitä jotain huonoja puolia?

Synomi [18.01.2012 09:47:31]

#

Joukothan kumminkin joutuu varaamaan hyökkäystä varten, että niitä ei voi käyttää muualla samaan aikaan, niin sinänsä tuossa sivun latauksen yhteydessä tapahtuvassa tarkistuksessa ei pitäisi olla ongelmia. Voihan sitä käyttää jotain teksti tiedostoa vaikka että tarkistukset taistelujen varalta tehdään vain minuutin välein tms, eikä joka ikisellä lataus kerralla.

Mites tuo sitten niin paljon helpompi cronin avulla olisi tehdä, tarve on kumminkin pystyä peruttamaan hyökkäykset(luulisi) ja saada niistä tietoakin irti. Kuhan ne tietokannassa on, niin tuo ainakin onnistuu helposti.

Eli eipä sitä kummempia tartte ko kattoo sivun latauksessa jos hyökkäys_perillä_date < nykyinen_date, niin toteutetaan taistelu ja poistetaan rivi.

Tietty sivulle voisi lisätä myös samalla jonku viivästetyn ajax päivityksen(aina uudelleen ja uudelleen siihen asti kun hyökkäys on tapahtunut), joka päivittää joukot/resurssit jne. sen jälkeen hyökkäys tapahtuu. Ja tämänkin ajax-kutsun yhteydessä voi tarkastaa onko taisteluja mitkä pitää toteuttaa, joten vaikka kukaan ei lataisi sivua niin saisi taistelut käytyä.

Hennkka [18.01.2012 10:51:44]

#

Periaatteessa riittää, että päivität aina sivun latauksen yhteydessä lataajan kylän, kylään saapuvat hyökkäykset ja kylästä lähteneet hyökkäykset. Lisäksi päivitetään kylä aina, kun sen tietoja tutkitaan. Jos kylään on tullut useita taisteluita, suoritetaan ne saapumisjärjestyksessä.

User137 [18.01.2012 12:37:14]

#

Lyhyesti ainut huono puoli sivunlataus-tyylin kanssa on että serveri tekee enemmän, ehkä paljonkin enemmän töitä. Jos tuosta on tarkotus tehä peli pienelle käyttäjäkunnalle tai suurilla resursseilla, niin kai se toimii.

Metabolix [18.01.2012 16:42:04]

#

Minusta cron on paljon vaikeampi ja epävarmempi tapa. Muutenkaan cron ei ole kertaluontoisten asioiden ajamiseen oikea työkalu, vaan siihen on esimerkiksi atd (at daemon).

Suosittelen joka tapauksessa sivunlatauksia, jos ne mahdolliset laskut eivät vie kohtuuttoman kauan.

User137 kirjoitti:

Serveri tekee enemmän, ehkä paljonkin enemmän töitä.

Mitä töitä se tekee? Minusta koneen kokonaistyömäärä voi olla jopa vähäisempi.

qeijo [18.01.2012 16:58:15]

#

punppis kirjoitti:

kannattaisiko jokainen hyökkäys tehdä ajastettuna cron-ajona

Meinasitko luoda jokaisen käyttäjän jokaista hyökksäyksestä uuden cron jobin? :D

User137 [18.01.2012 17:02:45]

#

En tiedä mikä cron on, enkä ole pelannut Traviania, mutta jos se toimii kuten muut pelaamani selainpelit, niin se laskee tietyn ajan välein pelin tapahtumat. Esim jotkut vanhat StarSphere ja Planetia laski tapahtumat tasan tunnin välein ja se prosessi saatto kestää jopa 5 minuuttia, jos taisteluja oli paljon.

Kun sinä aikana pelaaja vain "asettaa muuttujia ja lukee niitä", niin serverin tehtäväksi jää vain kertoa pelaajille nykytilanne ja ottaa vastaan uusia käskyjä. Jos kaikki 100000 pelaajaa voisikin yhtäaikaa suorittaa myös taisteluja, niin se saisi laskettavakseen paitsi taisteluita, myös tilanteen päivityksiä ja muuta reaaliajassa. Logit ja tilastoinnit mm. vaatii oman suoritinaikansa. Peli oli ihan tarpeeksi laginen ilman noitakin.

No nuo nyt oli vain äärimmäisen yksinkertaisia pelejä, joissa ei käytännössä ollut kuin lista aluksia joita pelaaja osti lisää. Oletan että Travianissa tapahtuu paljon enemmän.

Metabolix [18.01.2012 17:32:59]

#

User137: Eivätkö siis ehdottamasi vaihtoehdot ole pieni lagi joka sivunlatauksella tai 5 minuutin täysjumitus aina tunnin välein? Summa lienee suunnilleen sama, ellei tuota kerran tunnissa ajettavaa osuutta ole erikseen toteutettu jollain tehokkaammalla kielellä kuin pelin muita osia. Oikein toteutettuna systeemistä tulee sellainen, että vaihto näiden kahden tavan välillä on ihan muutaman rivin muutos.

punppis [18.01.2012 19:46:38]

#

Nyt kun tarkemmin miettii niin eipä tuosta cronista kyllä ole mitään hyötyä... Näillä eteenpäin, kiitos vastauksista!


Sivun alkuun

Vastaus

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

Tietoa sivustosta