MetaBoard: a framework for board
By Laura Risani (alias) with the
collaboration of Stéphane Ducasse
A tiled space through which pieces are moved
according to some rules
Boardician’s design metaphor
There is a board on a table, a post-it of game data
attached to it, players sitting around and a director
He says 'play' successively to each of them and, as a
consequence, they according to their thoughts (play-
conditions) modify other players' thoughts by saying
things to them and modify the board/post-it with
•BGPlayer : action of modifying game’s board/data/players'
1. receiving #play
2. receiving other msg to do some work related to its
•<PlayCondition> : anything that conditions how a player
behaves when receiving #play (like
BGDirection : BGDown, … ;
BGPlayState : BGOver , BGPaused, … ;
BGUserInput: BGClick, BGKeyStroke). Not necessarily directly
known by the player.
•BGHuman : action of modifying (…) because of user input.
•BGDirector : action of directing game flow. Initialize and
know the things that made up the board game. Loop while
game not over : decide who plays next, send him #play.
•BGBoard : board’s space and items placed at it.
•BGData : game data that doesn't belong to any particular
object (like lives, score, ... )
•BGUserInterface : handling of user input/output.
•BGFloor can hold any type of BGBoardItem
(BGMovableItem, BGSteadyItem), while BGWall doesn’t
A possible workflow
To implement a game with the framework
1. Define game's director (subclass of BGDirector) and
then define/implement successively what is needed
in each msg sent from within BGDirector's msg
2. Run game sending 'BGDirectorSubclass new play'
and adjust details according debug windows.
3. Add enhancements (menu, settings, … )
•MIData: mines left, seconds spent playing.
•MITileAction: action of doing something on a tile (toggle flag /
uncover) and carrying on its consequences. It’s play-conditions are
the pointed MITile’s MICoverState and MIFlagState.
( 1° )
( 2° ) MICoverState
Example : Tetris (DP-)
•DPData: number of completed lines.
•DPPieceMover: action of moving current piece. It’s play-condition is
•DPPieceDropper: action of dropping current piece (if not bottomed
periodically drop it, if bottomed add it to board and drop a new one).
It’s play-conditions are aBGTimedState and the BGPosition of the
board where new pieces are first dropped)
( 1° )
( 2° )
( 3° ) BGPosition
•EData: lives, score.
•EMoveConsequencer : action of carrying on consequences of
moving an EEater / EMonster. Play-conditions: BGPosition,
EEater/EMonster , EPositionSituation subclasses.
•EEaterMover : action of moving an EEater and carrying on
consequences. Play-conditions: BGDirection.
•EMonsterMover: action of moving an EMonster and carrying on
consequences. Play-conditions: BGFloor subclasses, BGDirection,
•EScoreItemPlacer : action of placing/displacing a EScoreItem on the
board. Play-conditions: BGTimedState.
Other example games : Sokoban, Snake, SameColor.
More info at
Questions? Comments? Suggestions? Mail me at
Thank you !
Parece que tem um bloqueador de anúncios ativo. Ao listar o SlideShare no seu bloqueador de anúncios, está a apoiar a nossa comunidade de criadores de conteúdo.
Atualizámos a nossa política de privacidade.
Atualizámos a nossa política de privacidade de modo a estarmos em conformidade com os regulamentos de privacidade em constante mutação a nível mundial e para lhe fornecer uma visão sobre as formas limitadas de utilização dos seus dados.
Pode ler os detalhes abaixo. Ao aceitar, está a concordar com a política de privacidade atualizada.