2010-07-27 4 views
1

J'ai une variable pool, partagée par tous les clients, qui stocke tous les ennemis restants dans une partie. Quand un client commence un jeu, il obtient des ennemis de pool. Quand il termine, les ennemis qu'il n'a pas tués sont remis à pool. Le jeu vérifie également si tous les ennemis ont été tués (c'est-à-dire pool est vide).Affinage et gestion de variables très occupées

Quelle est la meilleure façon de mettre en œuvre pool? Je suis préoccupé par la limite de 5 mises à jour par seconde sur une entité de banque de données.

Répondre

2

À quelle fréquence attendez-vous qu'un jeu démarre/se termine? Si la réponse est nettement inférieure à 5 par seconde, il suffit d'utiliser une seule entité pour représenter pool et utiliser les transactions pour obtenir et mettre à jour de manière atomique au fur et à mesure que les jeux commencent et se terminent.

Si vous attendez vraiment beaucoup de clients à partager un seul pool qu'il sera mis à jour à un taux soutenu de plus de 5 fois par seconde, alors considérez pool en plusieurs parties. Lorsque le client démarre un jeu, supprimez les entités de l'un des fragments. Pour tester si le pool partitionné est vide, il suffit de récupérer toutes les partitions et de voir si elles sont toutes vides. (Lors de la modification d'un fragment, vous devrez toujours utiliser une transaction.)

+0

+1 Vous pouvez optimiser un peu en récupérant uniquement un sous-ensemble de fragments pour voir si un fragment a encore des ennemis, et donc le pool n'est pas vide . –

Questions connexes