This is a documentation for Board Game Arena: play board games online !
Studio logs
- 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
Logs allows you to check out what happened recently on server and to debug your game.
BGA Studio logs are available directly from your game development interface. You can also navigate to them: https://studio.boardgamearena.com/1/mygame/mygame/logaccess.html?table=######, where you replace mygame and ###### accordingly.
BGA request&SQL logs
This log is useful:
- When you want to check what SQL requests has been built during a request.
- When you want to debug your PHP code using "self::trace"
- When you want to know why a request takes too many time.
On this log, you can see:
Your requests
Example:
20/06 21:50:56 [info] [T403] [4/mytest0] /cinco/cinco/exchange4Cards.html?id=4&lock=97d1c7a1-903a-4d1f-8206-de39ce8204fc&table=403&testuser=4&dojo.preventCache=1371757856044
Note that the best way to check your Ajax request is to read the [Input/Output section].
Request responses
Example:
20/06 21:50:56 [notice] [T403] [4/mytest0] OK-0 169 d141 c8 e0 I9 A158 V0 T0 /cinco/cinco/exchange4Cards.html?id=4&lock=97d1c7a1-903a-4d1f-8206-de39ce8204fc&table=403&testuser=4&dojo.preventCache=1371757856044
You can recognize a response because it contains [notice]. Usually, there is one response for each request.
Let's details the beginning of the log:
- 20/06 21:50:56: the date
- [notice]
- [T403]: this is a log from table 403
- [4/mytest0]: this is use "mytest0", with id 4
- OK-0: it means that the request ended up successfully, with no exception (expected or unexpected).
- 169: this is the time taken to process the request (169ms).
- d141: this is the total Database time used to process the request (141ms).
SQL requests
Example:
20/06 21:50:56 [info] [T403] [4/mytest0] 0.26 SELECT player_tokenColor FROM player WHERE player_id ='4'
All requests to Database are traced in this log. You can see here the time take by the request (0,26ms).
Custom trace
You can use special PHP methods in your PHP code to left some trace in this log:
- self::trace( "your message here" ); // Display "your message here" in the log
- self::dump( "My variable", $variable_to_dump ); // Display the content of $variable_to_dump in the log
BGA unexpected exceptions logs
In this log you can check the last Unexpected exceptions from your game.
Exceptions management on PHP side [is described here].
The log displayed the complete stacktrace of the exception, so you can debug it.
The SQL log is very verbose and sometimes it too hard to extract your tracing from it, in this case you can use error log for tracing temporarily. You can add debug statement using self::warn() which will appear in that the log. Do not leave these tracing method calls after you done debugging unless they are real warnings or errors (only the error log level will appear in production).