This is a documentation for Board Game Arena: play board games online !
Game meta-information: gameinfos.inc.php
- Main game logic: yourgamename.game.php
- Your game state machine: states.inc.php
- Game database model: dbmodel.sql
- Players actions: yourgamename.action.php
- Game material description: material.inc.php
- Game statistics: stats.inc.php
- Game interface logic: yourgamename.js
- Game art: img directory
- Game interface stylesheet: yourgamename.css
- Game layout: view and template: yourgamename.view.php and yourgamename_yourgamename.tpl
- Your game mobile version
- Translations (how to make your game translatable)
- Game options and preferences: gameoptions.inc.php
- Game meta-information: gameinfos.inc.php
- Game replay
- 3D
- Some usual board game elements image ressources
- Deck: a PHP component to manage cards (deck, hands, picking cards, moving cards, shuffle deck, ...).
- Counter: a JS component to manage a counter that can increase/decrease (ex: player's score).
- Scrollmap: a JS component to manage a scrollable game area (useful when the game area can be infinite. Examples: Saboteur or Takenoko games).
- Stock: a JS component to manage and display a set of game elements displayed at a position.
- Zone: a JS component to manage a zone of the board where several game elements can come and leave, but should be well displayed together (See for example: token's places at Can't Stop).
Undocumented component (if somebody knows please help with docs)
- Draggable: a JS component to manage drag'n'drop actions.
- ExpandableSection: a JS component to manage a rectangular block of HTML than can be displayed/hidden.
- Wrapper: a JS component to wrap a <div> element around its child, even if these elements are absolute positioned.
- BGA game Lifecycle
- First steps with BGA Studio
- Tutorial reversi
- Tutorial gomoku
- Tutorial hearts
- Create a game in BGA Studio: Complete Walkthrough
- Tools and tips of BGA Studio - Tips and instructions on setting up development environment
- Practical debugging - Tips focused on debugging
- Studio logs - Instructions for log access
- BGA Studio Cookbook - Tips and instructions on using API's, libraries and frameworks
- BGA Studio Guidelines
- Troubleshooting - Most common "I am really stuck" situations
- Studio FAQ
- Pre-release checklist - Go throught this list if you think you done development
- Post-release phase
- BGA Code Sharing - Shared resources, projects on git hub, common code, other links
From this file, you can edit the various meta-information of your game.
Once you modified the file, don't forget to click on "Reload game informations" from the Control Panel in order in can be taken into account.
Most information provided in this file are self-explainable. Some information, though:
- You are not allowed to set the "is_beta" to 0 before the game has been released on BGA and stabilized.
- "fast/medium/slow_additional_time": please set high values here: after the game has been released, we will lower these value to match the real game duration.
- "players":
- during the first step of development of a game, you'd better allow the "1 player" configuration: much easy to start/stop a game this way.
- if you change the minimum number of players from for example 1 to 2, make sure the new tables you create are not restricted from 1 to 1 player otherwise when you create a new table and this account setting is used, there will be a conflict with the new minimum number of players allowed.
- suggest_player_number / not_recommend_player_number: don't specify anything here if there is no configuration that is REALLY better/worst than another one. You can check player's poll on BoardGameGeek game page if you have any doubt.
Losers not ranked between themselves
By default, all player are ranked, but in some games, the rules says that there is only one winner and that all the other players are losers and not ranked between themselves. You can set this option to true so that for your game, there is only one winner and losers, without a full ranking of all players.
The score in this case should be 1 for the winner and 0 for the losers.
// If in the game, all losers are equal (no score to rank them or explicit in the rules that losers are not ranked between them), set this to true // The game end result will display "Winner" for the 1st player and "Loser" for all other players 'losers_not_ranked' => false,
Disable player rotation in case of rematch
By default, in case of a rematch players are rotated so that the first player changes. If for your game it's better to always have a random player order you can change this option.
// When doing a rematch, the player order is swapped using a "rotation" so the starting player is not the same // If you want to disable this, set this to false 'disable_player_order_swap_on_rematch' => false,
Custom "buy this game" button
By default, the "buy this game" button is a link to an Amazon search with the name of the game.
You can replace it by a different URL / game button label with :
'custom_buy_button' => array( 'url' => 'http://yoururl.com', 'label' => 'Name of the website' ),
Note : button label will be "Buy on <Name of the website>"
Tags
Any number of Tags can be attribute to your game. Tags are useful to place your game in the correct place and to give a good quick overview of what the game is about to players.
Main game category (you MUST specify one tag AND ONLY ONE from this category):
- 1: Abstract game
- 2: Casual games
- 3: For regular players
- 4: For core gamers
Other tags (you can specify any numbers of tags):
- 10: Short game (<10 minutes)
- 11: Medium length game (10 minutes to 30 minutes)
- 12: Long game (>30mn)
- 20: Awarded game (Win a prestigious award) (the game must have been at the first place of one the following major awards list).
- 22: Prototype (This game has not been published yet)
- 23: Classic (This game is a classic from Public Domain)
- 30: 2 players (2p game / best with 2 players)
- 100: Fantasy theme
- 101: Science Fiction them
- 102: Historical theme
- 103: Adventure
- 104: Exploration
- 105: Conquest
- 106: Building
- 200: Card game (Cards plays a central role in this game)
- 201: Dice
- 202: Solo game
- 203: Worker placement
- 204: Hand management
- 205: Bluff
- 206: Tile placement
- 207: Combinations
- 208: Majority
- 209: Race
- 210: Collection
- 211: Cooperative game
Game Presentation
Short game presentation text that will appear on the game description page, structured as an array of paragraphs.
Each paragraph must be wrapped with totranslate() for translation and should not contain html (plain text without formatting). A good length for this text is between 100 and 150 words (about 6 to 9 lines on a standard display)
Example:
'presentation' => array( totranslate("This wonderful game is about geometric shapes!"), totranslate("It was awarded best triangle game of the year in 2005 and nominated for the Spiel des Jahres."), ... ),
Tie breaker description
Describe tie breaker score calculation (player_score_aux in player table).
Important: This is used in the javascript too, which is automatically generated. Using newlines in here will cause errors in the javascript, which will cause the game to not load.
Example:
'tie_breaker_description' => totranslate('Number of remaining cards in hand"),