Je développe un jeu utilisant le sondage pour la méthode d'entrée. Cependant, maintenant que j'explore plus profondément les menus du jeu et les autres composants de l'interface utilisateur, je constate que j'aimerais probablement avoir une entrée pilotée par les événements. Peut-être même avoir les deux, en utilisant l'événement piloté pour l'interface utilisateur et l'interrogation pour l'entrée "monde". Je suis curieux de savoir quelle est la meilleure façon de procéder.
Je définis l'interrogation comme: à chaque boucle de mise à jour, je vérifie quelles touches sont pressées, où se trouve la souris, les boutons enfoncés, puis les parcoure et fais des actions en fonction des informations collectées.
Je définis un événement piloté comme: des événements basés sur une interruption, lorsqu'un événement se produit et qu'une interruption est déclenchée et qu'un bloc de code est exécuté en fonction de l'événement.
Pensez-vous qu'il est préférable de passer à tous les événements, à tous les sondages, ou une combinaison des deux est-elle acceptable? Si vous avez des avantages et des inconvénients pour l'un ou l'autre, veuillez les énumérer. Merci.
ÉDITER
Le jeu est basé sur Java / OpenGL, il sera donc publié sur Windows / Mac / Linux. La possibilité d'étendre cela aux appareils mobiles est faible. Le jeu est de style RTS, 3e personne en 3D.
EDIT 2
Je ne suis toujours pas totalement satisfait de la façon dont j'ai implémenté cela, mais ce vers quoi je m'oriente est d'attraper des événements dans mon interface utilisateur et s'ils ne sont gérés par aucun de mes composants d'interface utilisateur, je transmets l'événement au "Monde" pour la sélection / sélection. Quelque chose comme:
@Override
private boolean handleEvent(Event event) {
if(hud.handleEvent(event)) {
return true;
}
return WORLD.handleEvent(event);
}
De cette façon, je ne reçois pas de clics qui fuient dans l'interface utilisateur pour sélectionner des objets derrière les boutons et ce qui ne l'est pas.
Actuellement, les commandes de ma caméra sont toujours basées sur l'interrogation, et cela semble fonctionner pour l'instant, mais je pourrais le mettre à jour plus tard.
J'apprécie toutes les réponses, désolé je n'ai pu en choisir qu'une!