SlideShare a Scribd company logo
The BGA framework at a glance
Intro

The BGA framework helps you to build a online
board game adaptation:
● That will be played in realtime.
● That will be played by several human players.

● That will be played from an internet browser.

● That will have rules enforcement (ie : no possibility to cheat).




This presentation shows at a glance how BGA
framework is working
After reading this presentation, you'll be able to understand how a game is running on the
BGA platform.
We won't go into details, in order you can have a good overview of the platform, and
afterwards immediately understand « which component is doing what ».
Clients & server


                                                    BGA server
                                                     BGA server

Here's an overview of the BGA
architecture.

3 players : Alice, Bob and Charlie
are playing a game on the BGA
server using their web browser.
                                         Alice's
                                          Alice's     Bob's
                                                       Bob's      Charlie's
                                                                   Charlie's
                                        browser
                                         browser     browser
                                                      browser     browser
                                                                   browser
Clients & server


                                                    BGA server
                                                     BGA server


While developing your game logic,
you'll have to work on both server
side and client side.

Let's see what's on each side.

                                         Alice's
                                          Alice's     Bob's
                                                       Bob's      Charlie's
                                                                   Charlie's
                                        browser
                                         browser     browser
                                                      browser     browser
                                                                   browser
The server side

On the server side, you'll find 3
components :                                             BGA server
                                                          BGA server
●   The game database :

This is the current state of the
game (ex : scores, tokens place on
board, which card is where...)

●   The game logic :                           Game         Game           Game
                                              database   logic (rules)   resources
This is the rules of the game. The game
logic ensures that it's not possible to
cheat (« rules enforcement »).

●   The game resources :

This is what's going to be downloaded to
be used by the client browsers (ex :
images, stylesheets, ...).
The client side

                                                Alice's browser
                                                 Alice's browser


On the client side, you'll find the
user interface (UI).

The user interface manage all what
is displayed to the user (ex : « this
token has moved from A to B »),                      Game
and make possible all user actions                    UI
on the game (ex : « a click on this
card plays this card »).
The client side

To do this, you will use 4 different
types of resources :                               Alice's browser
                                                    Alice's browser

●A HTML view which defines the
basic layout of your game UI.

● Some images to display the
game art.                                                 Game
                                                           UI
● A CSS stylesheet which defines
the style and position of elements
of your game UI.

● A javascript script which
defines the mechanisms of your
UI (ex : click on this button trigger    HTML    Images    Stylesheet   Javascript
this action).                             view
Summary : technologies
                       used
 The game database is using MySQL.




 The game logic is using the PHP language.




 The game ressources, used for the user interface, are using :



HTML language                CSS                      Javascript script
  (HTML4)                 stylesheet                (with Dojo framework)
Information flow


                                                    BGA server
                                                     BGA server
Now, let's have a look on how all
these components interact with a
simple example.

Our three players A, B and C are
starting a game together. The name
of this fake game is «mygame ».
                                         Alice's
                                          Alice's     Bob's
                                                       Bob's      Charlie's
                                                                   Charlie's
                                        browser
                                         browser     browser
                                                      browser     browser
                                                                   browser
Creating a new game

                                                   BGA server
                                                    BGA server
As soon as everyone accept to
start the game, your PHP method
« setupNewGame » is called (from
game logic).

This method must setup the initial       ««setupNewGame »»
game situation, as described in             setupNewGame
game rules, ie you have to create
the right SQL statements to
initialize the database according to
the game rules.

This is it, you can now welcome
your players !
                                        Alice's
                                         Alice's      Bob's
                                                       Bob's     Charlie's
                                                                  Charlie's
                                       browser
                                        browser      browser
                                                      browser    browser
                                                                  browser
Loading the game


                                                              BGA server
                                                               BGA server
Alice's browser requests to load the
game with the path :

« /mygame?table=9999 »                 http://boardgamearena.com/mygame?table=9999

Where « 9999 » is the identifier of
the table.
                                             Alice's
                                              Alice's            Bob's
                                                                  Bob's              Charlie's
                                                                                      Charlie's
                                            browser
                                             browser            browser
                                                                 browser             browser
                                                                                      browser
Loading the game

                                                    BGA server
                                                     BGA server




At first, we have to gather all
informations about the current
game situation in order Alice's           ««getAllDatas »»
browser can setup game situation             getAllDatas
on client side.

For this, your « getAllDatas » PHP
method is called.



                                      Alice's
                                       Alice's         Bob's
                                                        Bob's     Charlie's
                                                                   Charlie's
                                     browser
                                      browser         browser
                                                       browser    browser
                                                                   browser
Loading the game

                                                     BGA server
                                                      BGA server




Your getAllDatas method gather all
information Alice can see from the       ««getAllDatas »»==
                                            getAllDatas
game (and not the cards in the
hand of Bob!), and return this data.




                                        Alice's
                                         Alice's        Bob's
                                                         Bob's     Charlie's
                                                                    Charlie's
                                       browser
                                        browser        browser
                                                        browser    browser
                                                                    browser
Loading game

Then, we have to generate for Alice                      BGA server
                                                          BGA server
a classical webpage where she can
play « mygame ». Of course, this
webpage is in classic HTML.

This is the view of the game.

You can use some logic to create                   HTML
some dynamic HTML page, but                      (inc data
most of the time we'll let the client            for Alice)
do the biggest part of the game
setup and return a simple piece of
static HTML here.

Note that the HTML generated
embed automatically the data              Alice's              Bob's     Charlie's
previously generated (in « json »          Alice's              Bob's     Charlie's
                                         browser
                                          browser             browser
                                                               browser   browser
                                                                          browser
format).
Loading the game


                                                   BGA server
                                                    BGA server




The HTML webpage and all
information are returned to Alice...


                                        Alice's
                                         Alice's     Bob's
                                                      Bob's      Charlie's
                                                                  Charlie's
                                       browser
                                        browser     browser
                                                     browser     browser
                                                                  browser
Loading the game


                                                  BGA server
                                                   BGA server



Then, like any classic webpages,
resources are downloaded : your
images, your javascript and your
css stylesheet.

                                       Alice's
                                        Alice's     Bob's
                                                     Bob's      Charlie's
                                                                 Charlie's
                                      browser
                                       browser     browser
                                                    browser     browser
                                                                 browser
Loading the game


Finally, your « setup » javascript                  BGA server
                                                     BGA server
method is called.

In this method, you can use the
data returned by the server
(« Alice data ») to finalize the
game setup for Alice.                                  ««setup »»
                                                          setup
                                         Alice's
                                          Alice's
Ex : wow, Alice starts the game         browser
                                         browser
with 3 money tokens. Let's set her                    Bob's         Charlie's
                                                       Bob's         Charlie's
money counter to « 3 ».                              browser
                                                      browser       browser
                                                                     browser
Loading the game


                                                  BGA server
                                                   BGA server


This is it !

Alice has now a view of the current
game situation, and she's ready to
play.
                                       Alice's
                                        Alice's     Bob's
                                                     Bob's      Charlie's
                                                                 Charlie's
                                      browser
                                       browser     browser
                                                    browser     browser
                                                                 browser
Loading the game


                                                 BGA server
                                                  BGA server



Of course the same thing
happened to Bob and Charlie.

Now, everyone is ready to play!

                                      Alice's
                                       Alice's     Bob's
                                                    Bob's      Charlie's
                                                                Charlie's
                                     browser
                                      browser     browser
                                                   browser     browser
                                                                browser
Making a move


                                                       BGA server
                                                        BGA server
It's Alice turn. She is the « active
player ».

Let say Alice want to play a card,
and then clicks on a card.


                                           Alice's browser       Bob's
                                            Alice's browser       Bob's Charlie's
                                                                         Charlie's
                                                                browser browser
                                                                 browser browser



                                         « clic »
Making a move


                                                       BGA server
                                                        BGA server

During the initial « setup » of the
page, we setup a handler for this
« clic » event for this card.

Let say this handler is a javascript                          «onClicMyMethod»
                                                               «onClicMyMethod»
method call « OnClicMyMethod ».
                                           Alice's browser       Bob's
OnClicMyMethod is called.                   Alice's browser       Bob's Charlie's
                                                                         Charlie's
                                                                browser browser
                                                                 browser browser



                                         « clic »
Making a move


                                                      BGA server
                                                       BGA server


OnClicMyMethod gets the ID of the        /mygame/mygame/playAcard.html?card=99
Alice's card (ex : 99), and send a
request to BGA server at this url :
                                                              «onClicMyMethod»
                                                               «onClicMyMethod»
/mygame/mygame/playAcard.html?
card=99
                                          Alice's browser          Bob's
                                           Alice's browser          Bob's Charlie's
                                                                           Charlie's
                                                                  browser browser
                                                                   browser browser



                                        « clic »
Making a move

                                                          BGA server
                                                           BGA server




On server side, your corresponding                              «playAcard( 99 )»
                                                                 «playAcard( 99 )»
method « playAcard » is called,
with the id of the card played in
parameter.



                                     /mygame/mygame/playAcard.html?card=99


                                           Alice's
                                            Alice's          Bob's
                                                              Bob's          Charlie's
                                                                              Charlie's
                                          browser
                                           browser          browser
                                                             browser         browser
                                                                              browser
Making a move

                                                              BGA server
                                                               BGA server




Your first work, on this method, is to
check if this is a right move :
● Is Alice the active player really ?
                                                                    «playAcard( 99 )»
                                                                     «playAcard( 99 )»
● Can she play a card at this

moment of the game ?
● Does she really have this card in

hand ?
● ...



                                         /mygame/mygame/playAcard.html?card=99


                                               Alice's
                                                Alice's          Bob's
                                                                  Bob's          Charlie's
                                                                                  Charlie's
                                              browser
                                               browser          browser
                                                                 browser         browser
                                                                                  browser
Making a move

                                                          BGA server
                                                           BGA server

Done !

Now, you just have to apply the
rules of the game to the current
situation.                                                      «playAcard( 99 )»
                                                                 «playAcard( 99 )»
Let's say the card played by Alice
gives her 2 money tokens. We write
in the database that she has 2
more money tokens and that her
card is now discarded (and that
                                     /mygame/mygame/playAcard.html?card=99
Bob is the new active player).

                                           Alice's
                                            Alice's          Bob's
                                                              Bob's          Charlie's
                                                                              Charlie's
                                          browser
                                           browser          browser
                                                             browser         browser
                                                                              browser
Making a move

                                                               BGA server
                                                                BGA server
Now, we have to notify all the
players that the situation has
evolved.

Note that we can't notify only Alice
here. All players must be notified                                   «playAcard( 99 )»
                                                                      «playAcard( 99 )»
that she has played a card and got
2 money tokens.

The BGA framework proposes a
simple method to create and send
notifications to players :                /mygame/mygame/playAcard.html?card=99
« notifyAllPlayers ».

Now let's notify all players that Alice         Alice's
                                                 Alice's          Bob's
                                                                   Bob's          Charlie's
                                                                                   Charlie's
got 2 money tokens...                          browser
                                                browser          browser
                                                                  browser         browser
                                                                                   browser
Making a move

                                                             BGA server
                                                              BGA server
                                                                                «playAcard( 99 )»
                                                                                 «playAcard( 99 )»



Let's name our notification
« takeMoneyToken ».

We associate to the notification a                         « takeMoneyToken »
little packet of data saying that the
concerned player is Alice and that
the number of token is 2.

The notification is sent to all         /mygame/mygame/playAcard.html?card=99
players.
                                              Alice's
                                               Alice's          Bob's
                                                                 Bob's             Charlie's
                                                                                    Charlie's
                                             browser
                                              browser          browser
                                                                browser            browser
                                                                                    browser
Making a move


                                                                  BGA server
                                                                   BGA server

Let's have a look on what happend
on Bob's browser.                       …/playAcard.html?...
                                                               « takeMoneyToken »
He receives a « takeMoneyToken »
notification. Automatically, your                                         «notif_takeMoneyToken»
associated javascript method                                               «notif_takeMoneyToken
« notif_takeMoneyToken » is               Alice's                 Bob's browser         Charlie's
called, with arguments saying that it      Alice's                 Bob's browser         Charlie's
                                         browser
                                          browser                                       browser
                                                                                         browser
concerns Alice and that the number
of money tokens is 2.
Making a move


                                                                 BGA server
                                                                  BGA server

… and finally, your
notif_takeMoneyToken just have to      …/playAcard.html?...
increase money tokens number of                               « takeMoneyToken »
Alice by 2 on the web page.

Of course the same thing happens                                         «notif_takeMoneyToken»
                                                                          «notif_takeMoneyToken
on Alice's and Charlie's browser, so
everyone knows that Alice is             Alice's                 Bob's browser
                                                                  Bob's browser        Charlie's
                                          Alice's                                       Charlie's
wealthier.                              browser
                                         browser                                       browser
                                                                                        browser
Making a move


                                                            BGA server
                                                             BGA server

Afterwards, two additional
                                     …/playAcard.html?...
notifications are sent to notify
players that Alice's card has been
discarded and that it's now Bob's
turn.

And this is it : Bob can take some       Alice's              Bob's
                                                               Bob's      Charlie's
action, and so on...                      Alice's            browser       Charlie's
                                        browser
                                         browser              browser     browser
                                                                           browser
Summary


● You know what is managed on the server side, and what is manager on the client
(browser) side.

●   You know which technology is used for each part of the game adaptation.

●You know what happened during basic steps of the game lifecycle : game setup,
page load and making a move.

●You understand the concepts of game database, game view, game action and
notification.

More Related Content

What's hot

20 Game Ideas You Should Steal
20 Game Ideas You Should Steal20 Game Ideas You Should Steal
20 Game Ideas You Should Steal
Stuart Dredge
 
A modern approach to game analysis and design: the AGE framework
A modern approach to game analysis and design: the AGE frameworkA modern approach to game analysis and design: the AGE framework
A modern approach to game analysis and design: the AGE framework
Roberto Dillon
 
Raw Fury: Pitch Deck Template
Raw Fury: Pitch Deck TemplateRaw Fury: Pitch Deck Template
Raw Fury: Pitch Deck Template
Johan Toresson
 
Various Topics on Game Design
Various Topics on Game DesignVarious Topics on Game Design
Various Topics on Game Design
Martin Ruskov, PhD
 
Game development Pre-Production
Game development Pre-ProductionGame development Pre-Production
Game development Pre-Production
Kevin Duggan
 
個人からトリプル A タイトルのゲーム開発者まで。Azure PlayFab で LiveOps しよう
個人からトリプル A タイトルのゲーム開発者まで。Azure PlayFab で LiveOps しよう個人からトリプル A タイトルのゲーム開発者まで。Azure PlayFab で LiveOps しよう
個人からトリプル A タイトルのゲーム開発者まで。Azure PlayFab で LiveOps しよう
Daisuke Masubuchi
 
Game Design as a Career
Game Design as a CareerGame Design as a Career
Game Design as a Career
ArtfulArtsyAmy
 
Creating a Game Design Document
Creating a Game Design DocumentCreating a Game Design Document
Creating a Game Design Document
Karl Kapp
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
강 민우
 
Game Design fundamentals
Game Design fundamentalsGame Design fundamentals
Game Design fundamentals
Mirco Pasqualini
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方Daisaku Mochizuki
 
Unreal Engine 4 Introduction
Unreal Engine 4 IntroductionUnreal Engine 4 Introduction
Unreal Engine 4 Introduction
Sperasoft
 
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
Photon運営事務局
 
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
David Salz
 
State-Based Scripting in Uncharted 2: Among Thieves
State-Based Scripting in Uncharted 2: Among ThievesState-Based Scripting in Uncharted 2: Among Thieves
State-Based Scripting in Uncharted 2: Among ThievesNaughty Dog
 
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
gree_tech
 
Case Study: Large Video Game Product Development
Case Study: Large Video Game Product DevelopmentCase Study: Large Video Game Product Development
Case Study: Large Video Game Product DevelopmentSociotechnical Roundtable
 

What's hot (20)

20 Game Ideas You Should Steal
20 Game Ideas You Should Steal20 Game Ideas You Should Steal
20 Game Ideas You Should Steal
 
A modern approach to game analysis and design: the AGE framework
A modern approach to game analysis and design: the AGE frameworkA modern approach to game analysis and design: the AGE framework
A modern approach to game analysis and design: the AGE framework
 
Raw Fury: Pitch Deck Template
Raw Fury: Pitch Deck TemplateRaw Fury: Pitch Deck Template
Raw Fury: Pitch Deck Template
 
Game design doc template
Game design doc   templateGame design doc   template
Game design doc template
 
Various Topics on Game Design
Various Topics on Game DesignVarious Topics on Game Design
Various Topics on Game Design
 
Game development Pre-Production
Game development Pre-ProductionGame development Pre-Production
Game development Pre-Production
 
Ten page document
Ten page documentTen page document
Ten page document
 
個人からトリプル A タイトルのゲーム開発者まで。Azure PlayFab で LiveOps しよう
個人からトリプル A タイトルのゲーム開発者まで。Azure PlayFab で LiveOps しよう個人からトリプル A タイトルのゲーム開発者まで。Azure PlayFab で LiveOps しよう
個人からトリプル A タイトルのゲーム開発者まで。Azure PlayFab で LiveOps しよう
 
Game Design as a Career
Game Design as a CareerGame Design as a Career
Game Design as a Career
 
Creating a Game Design Document
Creating a Game Design DocumentCreating a Game Design Document
Creating a Game Design Document
 
Game design document
Game design document Game design document
Game design document
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
Game Design fundamentals
Game Design fundamentalsGame Design fundamentals
Game Design fundamentals
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
 
Unreal Engine 4 Introduction
Unreal Engine 4 IntroductionUnreal Engine 4 Introduction
Unreal Engine 4 Introduction
 
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
 
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
Albion Online - Software Architecture of an MMO (talk at Quo Vadis 2016, Berlin)
 
State-Based Scripting in Uncharted 2: Among Thieves
State-Based Scripting in Uncharted 2: Among ThievesState-Based Scripting in Uncharted 2: Among Thieves
State-Based Scripting in Uncharted 2: Among Thieves
 
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
 
Case Study: Large Video Game Product Development
Case Study: Large Video Game Product DevelopmentCase Study: Large Video Game Product Development
Case Study: Large Video Game Product Development
 

Recently uploaded

This Is The First All Category Quiz That I Made
This Is The First All Category Quiz That I MadeThis Is The First All Category Quiz That I Made
This Is The First All Category Quiz That I Made
Aarush Ghate
 
Young Tom Selleck: A Journey Through His Early Years and Rise to Stardom
Young Tom Selleck: A Journey Through His Early Years and Rise to StardomYoung Tom Selleck: A Journey Through His Early Years and Rise to Stardom
Young Tom Selleck: A Journey Through His Early Years and Rise to Stardom
greendigital
 
A TO Z INDIA Monthly Magazine - JUNE 2024
A TO Z INDIA Monthly Magazine - JUNE 2024A TO Z INDIA Monthly Magazine - JUNE 2024
A TO Z INDIA Monthly Magazine - JUNE 2024
Indira Srivatsa
 
Hollywood Actress - The 250 hottest gallery
Hollywood Actress - The 250 hottest galleryHollywood Actress - The 250 hottest gallery
Hollywood Actress - The 250 hottest gallery
Zsolt Nemeth
 
From Slave to Scourge: The Existential Choice of Django Unchained. The Philos...
From Slave to Scourge: The Existential Choice of Django Unchained. The Philos...From Slave to Scourge: The Existential Choice of Django Unchained. The Philos...
From Slave to Scourge: The Existential Choice of Django Unchained. The Philos...
Rodney Thomas Jr
 
Create a Seamless Viewing Experience with Your Own Custom OTT Player.pdf
Create a Seamless Viewing Experience with Your Own Custom OTT Player.pdfCreate a Seamless Viewing Experience with Your Own Custom OTT Player.pdf
Create a Seamless Viewing Experience with Your Own Custom OTT Player.pdf
Genny Knight
 
The Evolution of Animation in Film - Mark Murphy Director
The Evolution of Animation in Film - Mark Murphy DirectorThe Evolution of Animation in Film - Mark Murphy Director
The Evolution of Animation in Film - Mark Murphy Director
Mark Murphy Director
 
240529_Teleprotection Global Market Report 2024.pdf
240529_Teleprotection Global Market Report 2024.pdf240529_Teleprotection Global Market Report 2024.pdf
240529_Teleprotection Global Market Report 2024.pdf
Madhura TBRC
 
Meet Crazyjamjam - A TikTok Sensation | Blog Eternal
Meet Crazyjamjam - A TikTok Sensation | Blog EternalMeet Crazyjamjam - A TikTok Sensation | Blog Eternal
Meet Crazyjamjam - A TikTok Sensation | Blog Eternal
Blog Eternal
 
Skeem Saam in June 2024 available on Forum
Skeem Saam in June 2024 available on ForumSkeem Saam in June 2024 available on Forum
Skeem Saam in June 2024 available on Forum
Isaac More
 
Scandal! Teasers June 2024 on etv Forum.co.za
Scandal! Teasers June 2024 on etv Forum.co.zaScandal! Teasers June 2024 on etv Forum.co.za
Scandal! Teasers June 2024 on etv Forum.co.za
Isaac More
 
Panchayat Season 3 - Official Trailer.pdf
Panchayat Season 3 - Official Trailer.pdfPanchayat Season 3 - Official Trailer.pdf
Panchayat Season 3 - Official Trailer.pdf
Suleman Rana
 
Meet Dinah Mattingly – Larry Bird’s Partner in Life and Love
Meet Dinah Mattingly – Larry Bird’s Partner in Life and LoveMeet Dinah Mattingly – Larry Bird’s Partner in Life and Love
Meet Dinah Mattingly – Larry Bird’s Partner in Life and Love
get joys
 
I Know Dino Trivia: Part 3. Test your dino knowledge
I Know Dino Trivia: Part 3. Test your dino knowledgeI Know Dino Trivia: Part 3. Test your dino knowledge
I Know Dino Trivia: Part 3. Test your dino knowledge
Sabrina Ricci
 
Christina's Baby Shower Game June 2024.pptx
Christina's Baby Shower Game June 2024.pptxChristina's Baby Shower Game June 2024.pptx
Christina's Baby Shower Game June 2024.pptx
madeline604788
 
Tom Selleck Net Worth: A Comprehensive Analysis
Tom Selleck Net Worth: A Comprehensive AnalysisTom Selleck Net Worth: A Comprehensive Analysis
Tom Selleck Net Worth: A Comprehensive Analysis
greendigital
 
Maximizing Your Streaming Experience with XCIPTV- Tips for 2024.pdf
Maximizing Your Streaming Experience with XCIPTV- Tips for 2024.pdfMaximizing Your Streaming Experience with XCIPTV- Tips for 2024.pdf
Maximizing Your Streaming Experience with XCIPTV- Tips for 2024.pdf
Xtreame HDTV
 
Treasure Hunt Puzzles, Treasure Hunt Puzzles online
Treasure Hunt Puzzles, Treasure Hunt Puzzles onlineTreasure Hunt Puzzles, Treasure Hunt Puzzles online
Treasure Hunt Puzzles, Treasure Hunt Puzzles online
Hidden Treasure Hunts
 
Reimagining Classics - What Makes a Remake a Success
Reimagining Classics - What Makes a Remake a SuccessReimagining Classics - What Makes a Remake a Success
Reimagining Classics - What Makes a Remake a Success
Mark Murphy Director
 

Recently uploaded (19)

This Is The First All Category Quiz That I Made
This Is The First All Category Quiz That I MadeThis Is The First All Category Quiz That I Made
This Is The First All Category Quiz That I Made
 
Young Tom Selleck: A Journey Through His Early Years and Rise to Stardom
Young Tom Selleck: A Journey Through His Early Years and Rise to StardomYoung Tom Selleck: A Journey Through His Early Years and Rise to Stardom
Young Tom Selleck: A Journey Through His Early Years and Rise to Stardom
 
A TO Z INDIA Monthly Magazine - JUNE 2024
A TO Z INDIA Monthly Magazine - JUNE 2024A TO Z INDIA Monthly Magazine - JUNE 2024
A TO Z INDIA Monthly Magazine - JUNE 2024
 
Hollywood Actress - The 250 hottest gallery
Hollywood Actress - The 250 hottest galleryHollywood Actress - The 250 hottest gallery
Hollywood Actress - The 250 hottest gallery
 
From Slave to Scourge: The Existential Choice of Django Unchained. The Philos...
From Slave to Scourge: The Existential Choice of Django Unchained. The Philos...From Slave to Scourge: The Existential Choice of Django Unchained. The Philos...
From Slave to Scourge: The Existential Choice of Django Unchained. The Philos...
 
Create a Seamless Viewing Experience with Your Own Custom OTT Player.pdf
Create a Seamless Viewing Experience with Your Own Custom OTT Player.pdfCreate a Seamless Viewing Experience with Your Own Custom OTT Player.pdf
Create a Seamless Viewing Experience with Your Own Custom OTT Player.pdf
 
The Evolution of Animation in Film - Mark Murphy Director
The Evolution of Animation in Film - Mark Murphy DirectorThe Evolution of Animation in Film - Mark Murphy Director
The Evolution of Animation in Film - Mark Murphy Director
 
240529_Teleprotection Global Market Report 2024.pdf
240529_Teleprotection Global Market Report 2024.pdf240529_Teleprotection Global Market Report 2024.pdf
240529_Teleprotection Global Market Report 2024.pdf
 
Meet Crazyjamjam - A TikTok Sensation | Blog Eternal
Meet Crazyjamjam - A TikTok Sensation | Blog EternalMeet Crazyjamjam - A TikTok Sensation | Blog Eternal
Meet Crazyjamjam - A TikTok Sensation | Blog Eternal
 
Skeem Saam in June 2024 available on Forum
Skeem Saam in June 2024 available on ForumSkeem Saam in June 2024 available on Forum
Skeem Saam in June 2024 available on Forum
 
Scandal! Teasers June 2024 on etv Forum.co.za
Scandal! Teasers June 2024 on etv Forum.co.zaScandal! Teasers June 2024 on etv Forum.co.za
Scandal! Teasers June 2024 on etv Forum.co.za
 
Panchayat Season 3 - Official Trailer.pdf
Panchayat Season 3 - Official Trailer.pdfPanchayat Season 3 - Official Trailer.pdf
Panchayat Season 3 - Official Trailer.pdf
 
Meet Dinah Mattingly – Larry Bird’s Partner in Life and Love
Meet Dinah Mattingly – Larry Bird’s Partner in Life and LoveMeet Dinah Mattingly – Larry Bird’s Partner in Life and Love
Meet Dinah Mattingly – Larry Bird’s Partner in Life and Love
 
I Know Dino Trivia: Part 3. Test your dino knowledge
I Know Dino Trivia: Part 3. Test your dino knowledgeI Know Dino Trivia: Part 3. Test your dino knowledge
I Know Dino Trivia: Part 3. Test your dino knowledge
 
Christina's Baby Shower Game June 2024.pptx
Christina's Baby Shower Game June 2024.pptxChristina's Baby Shower Game June 2024.pptx
Christina's Baby Shower Game June 2024.pptx
 
Tom Selleck Net Worth: A Comprehensive Analysis
Tom Selleck Net Worth: A Comprehensive AnalysisTom Selleck Net Worth: A Comprehensive Analysis
Tom Selleck Net Worth: A Comprehensive Analysis
 
Maximizing Your Streaming Experience with XCIPTV- Tips for 2024.pdf
Maximizing Your Streaming Experience with XCIPTV- Tips for 2024.pdfMaximizing Your Streaming Experience with XCIPTV- Tips for 2024.pdf
Maximizing Your Streaming Experience with XCIPTV- Tips for 2024.pdf
 
Treasure Hunt Puzzles, Treasure Hunt Puzzles online
Treasure Hunt Puzzles, Treasure Hunt Puzzles onlineTreasure Hunt Puzzles, Treasure Hunt Puzzles online
Treasure Hunt Puzzles, Treasure Hunt Puzzles online
 
Reimagining Classics - What Makes a Remake a Success
Reimagining Classics - What Makes a Remake a SuccessReimagining Classics - What Makes a Remake a Success
Reimagining Classics - What Makes a Remake a Success
 

BGA Studio: The BGA framework at a glance

  • 1. The BGA framework at a glance
  • 2. Intro The BGA framework helps you to build a online board game adaptation: ● That will be played in realtime. ● That will be played by several human players. ● That will be played from an internet browser. ● That will have rules enforcement (ie : no possibility to cheat). This presentation shows at a glance how BGA framework is working After reading this presentation, you'll be able to understand how a game is running on the BGA platform. We won't go into details, in order you can have a good overview of the platform, and afterwards immediately understand « which component is doing what ».
  • 3. Clients & server BGA server BGA server Here's an overview of the BGA architecture. 3 players : Alice, Bob and Charlie are playing a game on the BGA server using their web browser. Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 4. Clients & server BGA server BGA server While developing your game logic, you'll have to work on both server side and client side. Let's see what's on each side. Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 5. The server side On the server side, you'll find 3 components : BGA server BGA server ● The game database : This is the current state of the game (ex : scores, tokens place on board, which card is where...) ● The game logic : Game Game Game database logic (rules) resources This is the rules of the game. The game logic ensures that it's not possible to cheat (« rules enforcement »). ● The game resources : This is what's going to be downloaded to be used by the client browsers (ex : images, stylesheets, ...).
  • 6. The client side Alice's browser Alice's browser On the client side, you'll find the user interface (UI). The user interface manage all what is displayed to the user (ex : « this token has moved from A to B »), Game and make possible all user actions UI on the game (ex : « a click on this card plays this card »).
  • 7. The client side To do this, you will use 4 different types of resources : Alice's browser Alice's browser ●A HTML view which defines the basic layout of your game UI. ● Some images to display the game art. Game UI ● A CSS stylesheet which defines the style and position of elements of your game UI. ● A javascript script which defines the mechanisms of your UI (ex : click on this button trigger HTML Images Stylesheet Javascript this action). view
  • 8. Summary : technologies used The game database is using MySQL. The game logic is using the PHP language. The game ressources, used for the user interface, are using : HTML language CSS Javascript script (HTML4) stylesheet (with Dojo framework)
  • 9. Information flow BGA server BGA server Now, let's have a look on how all these components interact with a simple example. Our three players A, B and C are starting a game together. The name of this fake game is «mygame ». Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 10. Creating a new game BGA server BGA server As soon as everyone accept to start the game, your PHP method « setupNewGame » is called (from game logic). This method must setup the initial ««setupNewGame »» game situation, as described in setupNewGame game rules, ie you have to create the right SQL statements to initialize the database according to the game rules. This is it, you can now welcome your players ! Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 11. Loading the game BGA server BGA server Alice's browser requests to load the game with the path : « /mygame?table=9999 » http://boardgamearena.com/mygame?table=9999 Where « 9999 » is the identifier of the table. Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 12. Loading the game BGA server BGA server At first, we have to gather all informations about the current game situation in order Alice's ««getAllDatas »» browser can setup game situation getAllDatas on client side. For this, your « getAllDatas » PHP method is called. Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 13. Loading the game BGA server BGA server Your getAllDatas method gather all information Alice can see from the ««getAllDatas »»== getAllDatas game (and not the cards in the hand of Bob!), and return this data. Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 14. Loading game Then, we have to generate for Alice BGA server BGA server a classical webpage where she can play « mygame ». Of course, this webpage is in classic HTML. This is the view of the game. You can use some logic to create HTML some dynamic HTML page, but (inc data most of the time we'll let the client for Alice) do the biggest part of the game setup and return a simple piece of static HTML here. Note that the HTML generated embed automatically the data Alice's Bob's Charlie's previously generated (in « json » Alice's Bob's Charlie's browser browser browser browser browser browser format).
  • 15. Loading the game BGA server BGA server The HTML webpage and all information are returned to Alice... Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 16. Loading the game BGA server BGA server Then, like any classic webpages, resources are downloaded : your images, your javascript and your css stylesheet. Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 17. Loading the game Finally, your « setup » javascript BGA server BGA server method is called. In this method, you can use the data returned by the server (« Alice data ») to finalize the game setup for Alice. ««setup »» setup Alice's Alice's Ex : wow, Alice starts the game browser browser with 3 money tokens. Let's set her Bob's Charlie's Bob's Charlie's money counter to « 3 ». browser browser browser browser
  • 18. Loading the game BGA server BGA server This is it ! Alice has now a view of the current game situation, and she's ready to play. Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 19. Loading the game BGA server BGA server Of course the same thing happened to Bob and Charlie. Now, everyone is ready to play! Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 20. Making a move BGA server BGA server It's Alice turn. She is the « active player ». Let say Alice want to play a card, and then clicks on a card. Alice's browser Bob's Alice's browser Bob's Charlie's Charlie's browser browser browser browser « clic »
  • 21. Making a move BGA server BGA server During the initial « setup » of the page, we setup a handler for this « clic » event for this card. Let say this handler is a javascript «onClicMyMethod» «onClicMyMethod» method call « OnClicMyMethod ». Alice's browser Bob's OnClicMyMethod is called. Alice's browser Bob's Charlie's Charlie's browser browser browser browser « clic »
  • 22. Making a move BGA server BGA server OnClicMyMethod gets the ID of the /mygame/mygame/playAcard.html?card=99 Alice's card (ex : 99), and send a request to BGA server at this url : «onClicMyMethod» «onClicMyMethod» /mygame/mygame/playAcard.html? card=99 Alice's browser Bob's Alice's browser Bob's Charlie's Charlie's browser browser browser browser « clic »
  • 23. Making a move BGA server BGA server On server side, your corresponding «playAcard( 99 )» «playAcard( 99 )» method « playAcard » is called, with the id of the card played in parameter. /mygame/mygame/playAcard.html?card=99 Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 24. Making a move BGA server BGA server Your first work, on this method, is to check if this is a right move : ● Is Alice the active player really ? «playAcard( 99 )» «playAcard( 99 )» ● Can she play a card at this moment of the game ? ● Does she really have this card in hand ? ● ... /mygame/mygame/playAcard.html?card=99 Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 25. Making a move BGA server BGA server Done ! Now, you just have to apply the rules of the game to the current situation. «playAcard( 99 )» «playAcard( 99 )» Let's say the card played by Alice gives her 2 money tokens. We write in the database that she has 2 more money tokens and that her card is now discarded (and that /mygame/mygame/playAcard.html?card=99 Bob is the new active player). Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 26. Making a move BGA server BGA server Now, we have to notify all the players that the situation has evolved. Note that we can't notify only Alice here. All players must be notified «playAcard( 99 )» «playAcard( 99 )» that she has played a card and got 2 money tokens. The BGA framework proposes a simple method to create and send notifications to players : /mygame/mygame/playAcard.html?card=99 « notifyAllPlayers ». Now let's notify all players that Alice Alice's Alice's Bob's Bob's Charlie's Charlie's got 2 money tokens... browser browser browser browser browser browser
  • 27. Making a move BGA server BGA server «playAcard( 99 )» «playAcard( 99 )» Let's name our notification « takeMoneyToken ». We associate to the notification a « takeMoneyToken » little packet of data saying that the concerned player is Alice and that the number of token is 2. The notification is sent to all /mygame/mygame/playAcard.html?card=99 players. Alice's Alice's Bob's Bob's Charlie's Charlie's browser browser browser browser browser browser
  • 28. Making a move BGA server BGA server Let's have a look on what happend on Bob's browser. …/playAcard.html?... « takeMoneyToken » He receives a « takeMoneyToken » notification. Automatically, your «notif_takeMoneyToken» associated javascript method «notif_takeMoneyToken « notif_takeMoneyToken » is Alice's Bob's browser Charlie's called, with arguments saying that it Alice's Bob's browser Charlie's browser browser browser browser concerns Alice and that the number of money tokens is 2.
  • 29. Making a move BGA server BGA server … and finally, your notif_takeMoneyToken just have to …/playAcard.html?... increase money tokens number of « takeMoneyToken » Alice by 2 on the web page. Of course the same thing happens «notif_takeMoneyToken» «notif_takeMoneyToken on Alice's and Charlie's browser, so everyone knows that Alice is Alice's Bob's browser Bob's browser Charlie's Alice's Charlie's wealthier. browser browser browser browser
  • 30. Making a move BGA server BGA server Afterwards, two additional …/playAcard.html?... notifications are sent to notify players that Alice's card has been discarded and that it's now Bob's turn. And this is it : Bob can take some Alice's Bob's Bob's Charlie's action, and so on... Alice's browser Charlie's browser browser browser browser browser
  • 31. Summary ● You know what is managed on the server side, and what is manager on the client (browser) side. ● You know which technology is used for each part of the game adaptation. ●You know what happened during basic steps of the game lifecycle : game setup, page load and making a move. ●You understand the concepts of game database, game view, game action and notification.