Create and Play your PacMan Game with the GEMOC Studio
Dorian Leroy 1 Erwan Bousse 2 Manuel Wimmer 2 Benoit Combemale 3 Wieland Schwinger 1
1JKU Linz 2TU Wien 3University of Toulouse (UT2J)
Create and Play your PacMan Game with the GEMOC Studio Dorian Leroy 1 - - PowerPoint PPT Presentation
Create and Play your PacMan Game with the GEMOC Studio Dorian Leroy 1 Erwan Bousse 2 Manuel Wimmer 2 Benoit Combemale 3 Wieland Schwinger 1 1 JKU Linz 2 TU Wien 3 University of Toulouse (UT2J) September 17th 2017 Introduction Overview of the
1JKU Linz 2TU Wien 3University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Execution Rules Abstract Syntax entities 0..* tiles 0..*
Board AbstractTile PassableTile WallTile Entity
+initialTile
Pacman Ghost
Execution Metamodel
PassableTile Ghost
targetTile 1 top 0..1 bottom 0..1 left 0..1 right 0..1
SuperPellet Pellet AbstractPellet
currentTile 1
AbstractTile
0..1 pellet
Tile Pacman
+pelletsEaten: int +lives: int +energized: boolean
Entity
+speed: int
Tile GhostHouseTile
merges run(Board: board) update(Board: board, int: deltaTime) update(Entity: entity, int: deltaTime) modifySpeed(Entity: entity, int: speed) activate(Ghost: ghost) energize(Pacman: pacman) enterNextTile(Entity: entity) imports initialTile 1 up(Pacman: pacman) down(Pacman: pacman) left(Pacman: pacman) right(Pacman: pacman)
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Execution Rules Abstract Syntax entities 0..* tiles 0..*
Board AbstractTile PassableTile WallTile Entity
+initialTile
Pacman Ghost
Execution Metamodel
PassableTile Ghost
targetTile 1 top 0..1 bottom 0..1 left 0..1 right 0..1
SuperPellet Pellet AbstractPellet
currentTile 1
AbstractTile
0..1 pellet
Tile Pacman
+pelletsEaten: int +lives: int +energized: boolean
Entity
+speed: int
Tile GhostHouseTile
merges run(Board: board) update(Board: board, int: deltaTime) update(Entity: entity, int: deltaTime) modifySpeed(Entity: entity, int: speed) activate(Ghost: ghost) energize(Pacman: pacman) enterNextTile(Entity: entity) imports initialTile 1 up(Pacman: pacman) down(Pacman: pacman) left(Pacman: pacman) right(Pacman: pacman) How to safely call these execution rules, while main execution loop of the game is ongoing?
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
EventQueueManager
processEvents() loop
EventInterpreter
[for evt in eventQueue] dispatchEvent(evt) canProcessEvent(evt) canProcess
[canProcess] executeRule (evt.name,evt.params) manageEvents()
ExecutionEngine
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)
Introduction Overview of the Approach Demo Conclusion
Dorian Leroy , Erwan Bousse , Manuel Wimmer , Benoit Combemale , Wieland Schwinger JKU Linz, TU Wien, University of Toulouse (UT2J)