La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Programmation Réactive

Présentations similaires


Présentation au sujet: "Programmation Réactive"— Transcription de la présentation:

1 Programmation Réactive
MIZERA Frédéric ZUCCHINI Gilles CIABRINI Damien WOELFFLE Thierry

2 TER Programmation Réactive
PLAN Contraintes et objectifs Choix d’implémentation Le langage réactif Le Réactif dans le jeu Conclusion sur les essais réalisés TER Programmation Réactive

3 Contraintes et objectifs
Nécessité du jeu : faire évoluer des objets en concurrence entités du jeu autonomes synchronisation précise partie visuelle pas trop complexe  Choix d’un billard en 3D TER Programmation Réactive

4 Déroulement d’une phase de jeu
Boule blanche frappée... Pour toutes les boules : Fin du tour quand il n’y a plus de mouvement. Mouvement Collisions : - boules - trous - murs Inertie Rendu Tant que la boule n’est pas tombée TER Programmation Réactive

5 Choix d’implémentation
Programmation par “thread” pas assez précise : ordonnancement des tâches imprévisible manque d’équité entre les différents threads implémentation fastidieuse  Programmation réactive apporte une solution … TER Programmation Réactive

6 La programmation réactive
Propriétés : fait évoluer des entités en concurrence n’utilise pas de thread gestion intégrée de la synchronisation (instant) communication par événements (diffusion instantanée) Domaine d’application : contraintes de synchronisation “forte” TER Programmation Réactive

7 La programmation réactive
Junior : implémentation du modèle réactif en Java développé par F.Boussinot (Mimosa - INRIA) initialement conçu pour les jeux Senior, moteur réactif utilisé pour le jeu : version Scheme, inspirée de Junior développé par J.Demaria (INRIA) pour Bigloo TER Programmation Réactive

8 TER Programmation Réactive
Besoins annexes Connexions développées pour Bigloo : SDL OpenGL Moteur 3D complémentaire : API Scheme en modèle « objet » optique de programmation de plus haut-niveau TER Programmation Réactive

9 TER Programmation Réactive
Le langage réactif La machine réactive : instancier une machine (define ma-machine (machine&)) ajouter des instructions (add& ma-machine instr . L) faire « réagir » la machine (react& ma-machine) Deux grandes classes d ’instructions : contrôle de l’exécution des instructions communication / synchronisation entre les « tâches » TER Programmation Réactive

10 Contrôle de l’exécution
Mise en séquence (seq& (atom& (print "s1")) (atom& (print "s2"))) Résultat : s1 s2 Mise en parallèle (par& (atom& (print "s1")) (atom& (print "s2"))) Résultat : s s2 s s1 ou TER Programmation Réactive

11 TER Programmation Réactive
Synchronisation Exemple avec deux tâches : (par& (loop& (atom& (print "gen")) (generate& ‘event) (stop&)) (scan& ‘event (print "catched"))))  Communication par événements non valués TER Programmation Réactive

12 TER Programmation Réactive
Le Réactif dans le jeu Durée de vie d’un comportement (until& ‘fire-ball-ok (loop& (scan& ‘return-pressed (launch-whiteball o) (generate-in-machine& ‘fire-ball-ok)))) Ajout dynamique d’instructions TER Programmation Réactive

13 TER Programmation Réactive
Le Réactif dans le jeu Formes Scheme réactives : funcall&, apply& Utilisation avancée des événements : valués locaux (define (render o) (loop& (generate& ‘refresh o) (stop&))) (define (refresh) (loop& (scan& ‘refresh (render-obj3d (the-value&))))) TER Programmation Réactive

14 Exemple non trivial : la boule
(define (ball-behavior o)  (local& 'fallen  (until& 'fallen  (par& (funcall& move o) (funcall& collision o) (funcall& inertia o) (funcall& render o) (funcall& fall o)) (atom& (print "killed"))))) (define (fall o) (loop& (if& (is-fallen o)  (generate& 'fallen)) (stop&)))  Evénement local  Durée de vie du comportement  Mise en parallèle de lambdas réactives TER Programmation Réactive

15 TER Programmation Réactive
Utilité du projet Couche « multimédia » rajoutée à Bigloo : SDL, OpenGL, moteur 3D réutilisables Utilisation avancée de Senior : Billard entièrement réalisé en réactif Sémantique de Senior modifiée : (funcall& render obj) copie profonde de obj supprimée TER Programmation Réactive

16 TER Programmation Réactive
Avis personnels Avantages : apprentissage assez rapide réel bénéfice de la couche Scheme faibles ressources machine nécessaires postage d’événements “instantané” sémantiques de certaines instructions Inconvénients : manque de souplesse de certaines instructions manque d’orthogonalité dans la communication avec la machine TER Programmation Réactive

17 TER Programmation Réactive
Conclusion Réponse aux besoins de tests Le billard a permit de valider l’API Senior Senior pratique à l’usage : comportement de la boule  10 lignes comportement du jeu entier  700 lignes TER Programmation Réactive

18 TER Programmation Réactive
Conclusion Programmation réactive puissante par rapport aux threads : 100 boules sur le billard mécanismes de synchronisation automatique bénéfices énormes pour de plus gros jeux TER Programmation Réactive


Télécharger ppt "Programmation Réactive"

Présentations similaires


Annonces Google