Jump to content
Ragon

Verificare periodica joc online

Recommended Posts

Posted

Salutare tuturor,

Vreau sa fac un joc online bazat pe browser.Problema este ca nu am idee cum sa fac sa actualizeze automat baza de date chear daca jucatorul ii offline. Actiunea X dureaza 30 minute.Cum fac sa actualizeze automat baza de date dupa cele 30 de minute?

Posted

Ai 2 optiuni pentru a face asta.

1. Un cronjob care din 5 in 5 minute (sau ce interval vrei tu) verifica daca sunt actiuni care trebuiesc realizate

2. La fiecare refresh verifici daca sunt actiuni care trebuie realizate.

3. Practic e un upgrade al lui 2, de exemplu ai actiunea: "construieste casa", cand verifici nivelul casei, verifici intai daca era necesar sa finalizezi o actiune in baza de date.

Varianta 1 nu o recomand sub nici o forma.

Varianta 2 e ceva mai ok, dar la un numar mare de jucatori iti face o gramada de load inutil.

Varianta 3 e cea mai buna, dar ai foarte mult de scris la coduri...

Posted
Ai 2 optiuni pentru a face asta.

1. Un cronjob care din 5 in 5 minute (sau ce interval vrei tu) verifica daca sunt actiuni care trebuiesc realizate

2. La fiecare refresh verifici daca sunt actiuni care trebuie realizate.

3. Practic e un upgrade al lui 2, de exemplu ai actiunea: "construieste casa", cand verifici nivelul casei, verifici intai daca era necesar sa finalizezi o actiune in baza de date.

Varianta 1 nu o recomand sub nici o forma.

Varianta 2 e ceva mai ok, dar la un numar mare de jucatori iti face o gramada de load inutil.

Varianta 3 e cea mai buna, dar ai foarte mult de scris la coduri...

De ce nu recomanzi cronjob?

Posted

aaa, acuma am inteles:

Daca e vorba de anumite perioade de timp mai lungi, poti face cu cronjob din cpanel pintr-un anumit fisier (wget -q -r fisier) ca sa nu se pastreze logurile.

Daca nu cum a zis si synthes, doar ca putin diferit:

Cand incepe actiunea sa se adauge in db prin NOW()+Xsecunde, ca sa rezulte timpul la care actiunea se termina, apoi:

$actiune = selectezi din db NOW()+Xsecunde;

if (time() > $actiune)

echo "Faci ceva..";

else

echo "Ai terminat de facut ceva.";

:-?

Posted

jocurile pe net ... sunt facute pe ticks:

partea de client se ocupa doar de inserari si interogari (adaugi actiune si verifici status actiune)

partea de server: la fiecare tick( o secunda sau jumate de secunda sau cat vrei ) verifici tot ce ai de verificat si updatezi ce e nevoie ( un script ce ruleaza non stop )

Posted

@Xander, deja ceea ce propui tu consuma exagerat de multe resurse. Un server shared nu ti-ar permite asta, iar pentru un joc online de nivelul celui pe care vrea el sa-l faca (e la inceput de drum, deci e ceva de nivel mic) nu s-ar merita pus pe un VPS / dedicat care sa reziste la optiunea pe care ai propus-o tu.

O alta varianta, mult mai complexa, dar cred ca ar fi cea mai ok din punct de vedere al resurselor, faci un script C++ (de preferat) sau python care sa ruleze continuu si as astepte diverse callback-uri cu actiuni pe care sa le indeplineasca. Un fel de server propriu-zis. Atunci ai avea serverul, o baza de date, interfata server-side (php-ul) si interfata client (html & js).

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...