04-09-2012, 07:57 PM
(Modification du message : 04-09-2012, 07:58 PM par Sephi-Chan.)
Tout d'abord, il faut savoir ce qu'est ton jeu : un jeu solo en temps réel avec validation server-side (c'est la partie avec le boss qui me laisse penser ça) ? Car ça change totalement l'approche.
Quoi que tu fasses, on pourra pourras toujours tricher d'un point de vue UI. Si le gars s'amuse à se donner des tonnes d'or c'est tant pis pour lui : ça va lui dégriser les boutons pour acheter sa super arme mais quand il cliquera dessus, le serveur lui balancera une erreur (qu'il n'aurait pas eu en temps normal, puisque le bouton aurait été inactif).
Ensuite, l'approche qui consiste à recevoir objet JSON en réponse aux requêtes n'est pas adaptée, selon moi. Ça marche pour des applications à la con (type todo list), pas quand l'objet devient assez complexe pour ne pas être complet à chaque fois.
Dans ton cas, je verrais bien une méthode
D'ailleurs, on pourrait même imaginer un modèle Action avec un attribut
Pour le push, tu peux par exemple lancer tes listeners dans la méthode
Quoi que tu fasses, on pourra pourras toujours tricher d'un point de vue UI. Si le gars s'amuse à se donner des tonnes d'or c'est tant pis pour lui : ça va lui dégriser les boutons pour acheter sa super arme mais quand il cliquera dessus, le serveur lui balancera une erreur (qu'il n'aurait pas eu en temps normal, puisque le bouton aurait été inactif).
Ensuite, l'approche qui consiste à recevoir objet JSON en réponse aux requêtes n'est pas adaptée, selon moi. Ça marche pour des applications à la con (type todo list), pas quand l'objet devient assez complexe pour ne pas être complet à chaque fois.
Dans ton cas, je verrais bien une méthode
heal
du modèle (qui envoie une requête POST à /characters/:character_id/heal?target_id=target_character_id
). On se fiche un peu de ce qu'elle renvoie (éventuellement des erreurs de traitement). L'effet client-side de ton heal est immédiat.D'ailleurs, on pourrait même imaginer un modèle Action avec un attribut
type
(attack, heal, etc.). Effectuer une action reviendrait à sauvegarder cet objet, et donc envoyer une requête POST à l'URL characters/:character_id/actions
).Pour le push, tu peux par exemple lancer tes listeners dans la méthode
initialize
de tes modèles, et avoir un callback spécifique aux différents canaux. Il n'y a plein de façon de faire (comme toujours avec Backbone).