Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Proposition d'architecture pour un jeu par navi...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Proposition d'architecture pour un jeu par navigateur

Découvrez l'architecture de Seelies, un jeu par navigateur constitué de modules articulés autour d'un message broker. L'objectif : un jeu facile à maintenir, à déployer, à surveiller et à distribuer.

Avatar for Romain Tribes

Romain Tribes

June 25, 2013

Other Decks in Programming

Transcript

  1. Un jeu est composé de plusieurs modules • Match making

    • Classements • Achievements • Gestions des ressources • Tours de jeux • Résolution de combats • … http://www. ickr.com/photos/justard/8608085188/
  2. Les nombreuses dépendances ralentissent les lancements, les déploiements et les

    tests http://www.flickr.com/photos/herrolsen/7582564172/
  3. Le faible volume de code de chaque composant est facile

    à relire et encourage l’écriture de tests et le refactoring
  4. Chaque composant est indépendant : on peut en relancer un

    sans impacter les autres http://www.flickr.com/photos/cubagallery/6165090517/
  5. • Les queues créent une interface • Permet de contrôler

    la concurrence • Sert de tampon quand un composant est coupé • Trivial à utiliser, quel que soit le langage • Très performant (< 5 ms par message) • Distribution transparente sur le réseau
  6. Server Side Events ou WebSocket Envoyer les données aux navigateurs

    http://www.flickr.com/photos/cityofsound/45540731/
  7. Joueur A Joueur B Web App Communication server Match Maker

    WebSocket server J’invite B et C pour une partie en 2 x 3 A invite B et C pour une partie en 2 x 3 Je regarde si c’est possible. Ok ! Noti e A, B et C. L’invitation est passée ! A t’invite pour une 2 x 3. Accepter ? Refuser ? RabbitMQ Ajax Push Email Joueur C (offline) Idem
  8. Résumé De multiples serveurs très spécialisés s’abonnent à des queues

    sur lesquels ils recoivent des messages qu’ils traitent. Traiter un message consiste parfois à agir sur les bases de données, à envoyer de nouveaux messages sur d’autres queues, à envoyer des mails, ou bien des pushs, etc.