17-09-2013, 05:51 PM
(Modification du message : 17-09-2013, 05:55 PM par Sephi-Chan.)
Le joueur ne peut se connecter qu'aux canaux que tu lui autorises.
Quand la demande de connexion arrive, tu peux utiliser les informations de session du joueur pour l'identifier, tu peux donc savoir à quelle équipe il appartient. Tu reçois également le nom du canal qu'il tente de rejoindre, tu peux donc avoir un peu de logique qui te permettra de déterminer la réponse à donner.
Par exemple :
Le problème du multi est un autre problème, plus complexe et qui va te coûter un paquet d'énergie pour rien (puisque tu n'arriveras pas à l'empêcher de manière sûre) : mieux vaut investir cette énergie dans la création du jeu en te disant qu'au pire, l'espionnage fonctionne dans les deux sens.
Quand la demande de connexion arrive, tu peux utiliser les informations de session du joueur pour l'identifier, tu peux donc savoir à quelle équipe il appartient. Tu reçois également le nom du canal qu'il tente de rejoindre, tu peux donc avoir un peu de logique qui te permettra de déterminer la réponse à donner.
Par exemple :
# session[:player_id] est l'identifiant du joueur stocké en session.
player = Player.find(session[:player_id])
# Les noms de canaux sont de la forme "team:dark-angels".
# params[:channel] est le nom du canal sur lequel le type veut se connecter.
# team_slug vaudra "dark-angels" (ou "salamanders", "alpha-legion", etc.).
regexp = /^team[\w-]+)$/
matches = regexp.match(params[:channel])
team_slug = matches[1]
if team_slug
if player.team.slug == team_slug
Rails.logger.info "Player #{player.name} joined the channel of #{player.team.slug}."
render(json: true)
else
Rails.logger.cheat "Player #{player.name} tried to join the channel of #{team_slug} despite he is member of #{player.team.slug}!"
render(json: false)
end
else
Rails.logger.info "Player #{player.name} tried to join the invalid channel #{params[:channel]}."
end
Le problème du multi est un autre problème, plus complexe et qui va te coûter un paquet d'énergie pour rien (puisque tu n'arriveras pas à l'empêcher de manière sûre) : mieux vaut investir cette énergie dans la création du jeu en te disant qu'au pire, l'espionnage fonctionne dans les deux sens.