Tworzę grę MMO i właśnie doszedłem do momentu, w którym muszę wdrożyć osiągnięcia ... Jak to zrobić? Najprostszą rzeczą do zrobienia byłoby uruchomienie tego raz na 100 ms:
for a in achievements
for p in players
if a.meetsRequirements(p) then p.completeAchievement(a)
Ale to tylko powoduje jeszcze więcej komplikacji. Na przykład, jak sprawdzić, czy osiągnięcie zostało rzeczywiście ukończone? Czy gracze mają na sobie niestandardowe właściwości tylko dla konkretnego osiągnięcia? Robiłem coś takiego z zadaniami, ponieważ są one głównie „zbierz 100 drewna”, więc aktywne zadania u gracza to sprawdzają. Ponadto musi być lepszy moment, aby to sprawdzić, co moim zdaniem spowalnia okresowo mój serwer.