-
Notifications
You must be signed in to change notification settings - Fork 0
Code design
Cette page sera amenée à évoluer au fil des versions.
Il existe différents états dans l'application qui peuvent être le menu principal, le jeu, l'écran de pause par exemple. Le développement étant réalisé sur le passage d'un état à un autre, il est nécessaire de développer le jeu dans l'état du jeu (gameplay/GameState)
En gros, on va faire du MVC (Modèle Vue Controlleur). Le Modèle représente toutes les données, tout l'état du jeu : les unités, les bâtiments, les score, les ressources, etc... Puisque le modèle est commun à tout le monde ce sera sur le serveur. Mais ce seront des objets très simples, pas de renseignements graphiques,
uniquement ce qui sert à la simulation du jeu : leurs positions, leurs capacités, leur état (en marche, en combat...).
Ensuite on a le contrôleur qui est chargé de modifier le modèle en fonction des messages qu'il reçoit.
Cependant, le contrôleur a la charge de vérifier les messages reçus afin de ne pas mettre le modèle dans un état incohérent. Pour éviter la triche, le contrôleur sera sur le serveur.
Enfin il y a la Vue. Elle est chargée de représenter les données du Modèle.
Par exemple si le modèle contient le nombre de gens qui mange chaque jour
dans un gros tableau dont les colonnes seraient : jour, nombre.
Le modèle contient toutes les données en brutes dans un gros tableau
et c'est à la Vue de se charger de les mettre en forme,
par exemple, aussi sous forme de tableau (avec des couleurs)
ou alors sous forme d'histogramme, ou alors seulement les données sur un mois, etc.
Cependant cela ne change rien au Modèle. C'est uniquement la Vue qui change
Vous l'aurez compris, la Vue sera donc sur le client
(Le client est essentiellement la Vue, elle représente l'état du jeu de manière graphique et sonore).
Ensuite c'est la Vue qui traite les demandes de l'utilisateur (en effet, c'est elle qui interagit avec lui) pour les traduire en messages que la vue transmettra au contrôleur.
Par exemple, sur un site web, une vue affiche un formulaire d'inscription. Elle se charge de vérifier que tous les champs sont remplis et qu'ils sont valides (le mail ressemble à un mail, le captcha). Et lorsque tout est ok, elle transmet l'inscription au contrôleur. en pseudo code :
control_inscription.ajouter_membre(nom, prenom, mail, tel);
De la même manière, notre Vue devra se charger de déterminer quelles unités sont sélectionnées par l'utilisateur lorsqu'il donne un ordre de déplacement. On peut dire que le contrôleur ne gère que des identifiants d'unités. On aurait alors :
control.move_units(position_to_move, units_identifier_array);