04-09-2012, 08:24 PM
(04-09-2012, 07:57 PM)Sephi-Chan a écrit : 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).
Non c'est un jeu multi. Mais dans une approche très naive de backbone, s'il se met une tonne d'or et que le modèle est sauvegardé, ça update sur le serveur, donc il pourrait acheter sa grosse épée. Bon, ce n'était qu'une introduction au problème.
(04-09-2012, 07:57 PM)Sephi-Chan a écrit : 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.
Voilà, d'où mon interrogation.
(04-09-2012, 07:57 PM)Sephi-Chan a écrit : Dans ton cas, je verrais bien une méthodeheal
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 attributtype
(attack, heal, etc.). Effectuer une action reviendrait à sauvegarder cet objet, et donc envoyer une requête POST à l'URLcharacters/:character_id/actions
).
Donc ok j'envoie une simple commande, c'est ce que je compte faire. Ensuite utiliser un modèle Action c'est sexy, on peut ajouter des validations clients-side pour soulager le serveur par exemple. Tiens je me dis même que pour implémenter une barre d'action à la WoW on crée des modèles Action avec comme vue les boutons, et le clic est directement mappé sur .save(). ça me plaît bien comme approche.
(04-09-2012, 07:57 PM)Sephi-Chan a écrit : 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).
C'est bien le problème ! Tu me donnes ça comme exemple et ça me paraît simple et efficace. Est-ce la solution que tu emploierais ? Les autres ?