Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.