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

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

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.

Romain Tribes

June 25, 2013
Tweet

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.