Browser strategy games, punten berekening

  • Hallo allemaal,


    Ik heb dit onderwerp even aangemaakt omdat ik me iets af aan het vragen was.
    (Geen idee of de titel 100% duidelijk is)


    Hoe worden punten in browser strategy games (zoals Tribal Wars of Travian) berekend?


    Ik ging er namelijk altijd vanuit dat als de speler een "bouw opdracht" plaatste deze in de database terecht kwam met een uur dat deze gedaan was.
    Als de speler dan terug inlogt (of een andere speler zijn profiel bekijkt) en de tijd is verstreken dan wordt de opdracht uit de database verwijdert en krijgt de speler extra punten.


    Maar hoe worden de punten dan berekend op bijvoorbeeld een ledenlijst?
    Als je bijvoorbeeld de top 10 qua punten wilt berekenen, betekend dit in principe dat je alle leden moet afgaan om te kijken of ze nog een opdracht hebben die is afgelopen?
    Als je veel leden hebt lijkt me dat wel allesbehalve handig.


    Wie o wie kan deze vraag beantwoorden?


    Groetjes,
    Willem

  • Vroeger toen ik zo'n games maakte, was de telling steeds in 2 apparte tabellen. Eentje voor de tijd + aantal seconden in de toekomst.
    Dit was voor de berekening wanneer de opdracht klaar was.


    Ik had dan nog een 2de veld waarin ik de punten schreef hoeveel de speler kreeg als de opdracht klaar was.


    Eenmaal de tijd verstreken was schreef ik die punten bij de totaalscore van de speler en zette ik die tabel op 0.


    Per doe item op je website met tijd kan je apparte tabbelen maken in je database. Zo kan je de score steeds gaan bijschrijven.
    Zo kan je een totaalscore gaan berekenen.



    Uiteraard zijn er nog verschillende manieren hoe je dit kan doen. Dit was er eentje van.

  • Dus als je dan een lijst van de leden wilt selecteren doe je gewoon een LEFT JOIN van de users met de aparte tabel met punten en dan tel je die punten samen om ze zo te ordenen?

    dat kan je doen ja, ik tel de punten al samen in 1 tabel. Zodat ik later niet steeds geheel de database moet laten samentellen ( hoe meer tabbellen +hoe meer leden hoe trager dat het anders zal gaan)

  • Misschien is een tussenvorm beter, waarbij je een soort van score-log bijhoudt, met bijvoorbeeldd de volgende structuur:
    (id)
    user id
    datumtijd
    punten
    reden of event-id op grond waarvan je punten krijgt


    Deze tabel stelt je in staat om snel (mits je een index op user id hebt :p) totaalscores uit te rekenen maar nog veel belangrijker: je hebt een historie van hoe deze totaalscores totstand kwamen.


    Als je enkel een totaalscore bijhoudt dat kun je op geen enkele manier (meer) afleiden hoe deze score was opgebouwd. En als iemand onterecht punten heeft gekregen dan kan dit ook lastig worden teruggedraaid omdat dit niet te herleiden is.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!