MetaBoard: a framework for board
games.
By Laura Risani (alias) with the
collaboration of Stéphane Ducasse
Motivation
Games like
•PacMan
• Tetris
•Sokoban
•Snake
•Miner
•SameTile
•Atomic
•BoulderDash
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
standing.
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
their hands.
board
data
play-
conditions
#play
director
player
player
player
player
BGPlayer
BGDirector
BGData BGUserInterface
BGBoardSpace
BGBoardPlace
BGWall
BGFloor
BGMovableItem
BGSteadyItem
<PlayCondition>
BGBoard
BGPosition
*
*
*
*
BGHuman
BGPointer
•BGPlayer : action of modifying game’s board/data/players'
play-conditions when
1. receiving #play
2. receiving other msg to do some work related to its
playing purpose
Tell #nextPlayer.
•<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
accept any
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
#initialize.
2. Run game sending 'BGDirectorSubclass new play'
and adjust details according debug windows.
3. Add enhancements (menu, settings, … )
Example : Mines (MI-)
BGFloor
MIBoard
MITile
MIMine MINumber MIVoid
BGBoardSpace
MICoverState
MICovered
MIUncovered
MIFlagState MIFlagged
MIUnflagged
BGBoard
*
BGData MIData
BGPlayer
MITileAction
BGHuman MIHuman
BGDirector MinesGame
•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
MIFlagState
Example : Tetris (DP-)
BGSteady
Item
DPBoard
DPSquare
DPPiece
BGBoard
BGMovable
Item
DPPieceLayout
*
BGData
DPData
•DPData: number of completed lines.
BGPlayer
DPPieceMover
BGHuman DPHuman
BGDirector TetrisGame
•DPPieceMover: action of moving current piece. It’s play-condition is
aBGDirection.
•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° )
BGTimedState
BGDirection
DPPieceDropper
( 3° ) BGPosition
Example : Pacman (E-)
BGBoardSpace
BGFloor
BGMovableItem
BGSteadyItem
EBoard
*
*
EEater
BGBoard
EBiFloor
ETeletransporter
ETriFloor
EDirectedFloor
EBullet
EBigBullet ESmallBullet
EScoreItem
EMonster
BGData EData
BGPlayer
EEaterMover
BGHuman EHuman
BGDirector PacmanGame
( 1° )
( 2° )
BGTimedState
BGDirection
EMonsterMover
( 3° )
EScoreItemPlacer
( 4° )
BGDirection EAttitude
EVulnerability
EMoveConseq
uencer
, ,
EPositionSituation
EEaterAtBullet ,
EEaterAtEmptyFloor ,
EEaterAtMonster ,
EEaterAtScoreItem ,
EMonsterNotAtEater
•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,
EVulnerability, EAttitude.
•EScoreItemPlacer : action of placing/displacing a EScoreItem on the
board. Play-conditions: BGTimedState.
Other example games : Sokoban, Snake, SameColor.
More info at
http://boardician.blogspot.com/2015/07/metaboard.html
Questions? Comments? Suggestions? Mail me at
laura.risani@gmail.com
Thank you !
<3

MetaBoard

  • 1.
    MetaBoard: a frameworkfor board games. By Laura Risani (alias) with the collaboration of Stéphane Ducasse
  • 2.
  • 3.
    Boardician’s design metaphor Thereis a board on a table, a post-it of game data attached to it, players sitting around and a director standing. 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 their hands.
  • 4.
  • 5.
  • 6.
    •BGPlayer : actionof modifying game’s board/data/players' play-conditions when 1. receiving #play 2. receiving other msg to do some work related to its playing purpose Tell #nextPlayer. •<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.
  • 7.
    •BGDirector : actionof 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 accept any
  • 8.
    A possible workflow Toimplement 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 #initialize. 2. Run game sending 'BGDirectorSubclass new play' and adjust details according debug windows. 3. Add enhancements (menu, settings, … )
  • 9.
    Example : Mines(MI-) BGFloor MIBoard MITile MIMine MINumber MIVoid BGBoardSpace MICoverState MICovered MIUncovered MIFlagState MIFlagged MIUnflagged BGBoard *
  • 10.
    BGData MIData BGPlayer MITileAction BGHuman MIHuman BGDirectorMinesGame •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 MIFlagState
  • 11.
    Example : Tetris(DP-) BGSteady Item DPBoard DPSquare DPPiece BGBoard BGMovable Item DPPieceLayout * BGData DPData •DPData: number of completed lines.
  • 12.
    BGPlayer DPPieceMover BGHuman DPHuman BGDirector TetrisGame •DPPieceMover:action of moving current piece. It’s play-condition is aBGDirection. •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° ) BGTimedState BGDirection DPPieceDropper ( 3° ) BGPosition
  • 13.
    Example : Pacman(E-) BGBoardSpace BGFloor BGMovableItem BGSteadyItem EBoard * * EEater BGBoard EBiFloor ETeletransporter ETriFloor EDirectedFloor EBullet EBigBullet ESmallBullet EScoreItem EMonster BGData EData
  • 14.
    BGPlayer EEaterMover BGHuman EHuman BGDirector PacmanGame (1° ) ( 2° ) BGTimedState BGDirection EMonsterMover ( 3° ) EScoreItemPlacer ( 4° ) BGDirection EAttitude EVulnerability EMoveConseq uencer , , EPositionSituation EEaterAtBullet , EEaterAtEmptyFloor , EEaterAtMonster , EEaterAtScoreItem , EMonsterNotAtEater
  • 15.
    •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, EVulnerability, EAttitude. •EScoreItemPlacer : action of placing/displacing a EScoreItem on the board. Play-conditions: BGTimedState.
  • 16.
    Other example games: Sokoban, Snake, SameColor. More info at http://boardician.blogspot.com/2015/07/metaboard.html Questions? Comments? Suggestions? Mail me at laura.risani@gmail.com Thank you ! <3