This is a documentation for Board Game Arena: play board games online !

Difference between revisions of "Pre-release checklist"

From Board Game Arena
Jump to navigation Jump to search
 
(10 intermediate revisions by 4 users not shown)
Line 3: Line 3:
 
If you think your game is ready to be reviewed by by BGA admins and/or Publisher (aka go to Alpha stage) please consult this checklist first
 
If you think your game is ready to be reviewed by by BGA admins and/or Publisher (aka go to Alpha stage) please consult this checklist first
  
* License
+
=== Move from Dev to Alpha ===
** BGA must have a license for the game for a project to be moved to production, even to alpha. If you don't have license yet you can continue checking other stuff from the list below, but at the end it cannot be moved until license situation is cleared.
+
# ''' License '''
* Metadata and graphics
+
## BGA must have a license for the game for a project to be moved to production, even to alpha. If you don't have license yet you can continue checking other stuff from the list below, but at the end it cannot be moved until license situation is cleared.
** [[Game_meta-information: gameinfos.inc.php]] has correct and up to date information about the game
+
# ''' Metadata and graphics '''
** Game box graphics is 3D version of the game box (if available) and publisher icon is correct (see [[Game art: img directory]]). Space around the box has to be transparent, not white.
+
## [[Game_meta-information: gameinfos.inc.php]] has correct and up to date information about the game. That includes game tags. <b>Important!!!</b> tags are only read during the first deploy.
** You have added a game_banner.jpg and some game_displayX.jpg images to make the game page pretty (NB: on the studio, you have to create a build for these images to appear on the studio game page)
+
## Game box graphics is 3D version of the game box (if available) and publisher icon is correct (see [[Game art: img directory]]). Space around the box has to be transparent, not white.
** There are no images in the img directory that are not needed anymore
+
## You have added a game_banner.jpg and some game_displayX.jpg images to make the game page pretty (NB: on the studio, you have to create a build for these images to appear on the studio game page)
** Multiple images (i.e. cards) are compressed in "Sprite" (see [[Game art: img directory]])
+
## There are no images in the img directory that are not needed anymore
** Each image should not exceed 4M
+
## Multiple images (i.e. cards) are compressed in "Sprite" (see [[Game art: img directory]])
** Total size should not exceed 10M, image compression should be used otherwise (it also helps a lot to re-encode images as indexed palette vs RBG)
+
## Each image should not exceed 4Mb
** If you use extra fonts, they should be freeware (please include a .txt with the licence information)
+
## Total size should not exceed 10Mb, image compression should be used otherwise (it also helps a lot to re-encode images as indexed palette vs RBG). If you have legitimate reason to have more than 10Mb (i.e. expansions), you have to make a note of that when requesting move to alpha
* Server side
+
## If you use extra fonts, they should be freeware (please include a .txt with the licence information)
** When giving their turn to a player, you give them some extra time with the giveExtraTime() function
+
# ''' Server side '''
** Game progression is implemented (getGameProgression() in php)
+
## When giving their turn to a player, you give them some extra time with the giveExtraTime() function
** Zombie turn is implemented (zombieTurn() in php). Note: it can only be tested if you explicitly click on the quit button to create a zombie. If you are expelled it does not generated a Zombie.
+
## Game progression is implemented (getGameProgression() in php)
** You have defined and implemented some meaningful statistics for your game (i.e. total points, point from source A, B, C...)
+
## Zombie turn is implemented (zombieTurn() in php). Note: it can only be tested if you explicitly click on the quit button to create a zombie. If you are expelled it does not generated a Zombie.
** Game has meaningful notification messages (but don't overkill it, more user logs will slow down the loading)
+
## You have defined and implemented some meaningful statistics for your game (i.e. total points, point from source A, B, C...)
** You implemented tiebreaking (using aux score field) and updated tiebreaker description in meta-data
+
## Game has meaningful notification messages (but don't overkill it, more user logs will slow down the loading)
* Client side
+
## You implemented tiebreaking (using aux score field) and updated tiebreaker description in meta-data
** Please check that you use ajaxcall only on player actions and never programmatically. Otherwise, your code will very likely create race conditions resulting in deadlocks or other errors.
+
## Database: make sure you do not programmatically manage transactions or call queries that change database schema or even TRUNCATE (queries that would cause implicit commit) during normal game opearations
*** Exception: sometimes you can do no-op moves with timeouts (i.e. user has only one choice, but its unwise to reveal this information by skipping user turn), timeout has to be canceling itself if state transition happen automaticaly (i.e. during reply)
+
## Database: make sure you DB schema would be sufficient to complete the game and good enough for possible expantions, changing db schema schema after the release even in alpha is very challenging (it is possible but much better if you don't need to deal with it)
* Special testing
+
# ''' Client side '''
** Game is tested with spectator (non player observer): change the testuser in the URL to see the game as another user (same URL as when clicking on red arrow). As a spectator, you should be able to see the game as if you were sitting beside of the players at a real table: all public information, no private information.
+
## Check that you use ajaxcall only on player actions and never initiated programmatically. Otherwise, your code will very likely create race conditions resulting in deadlocks or other errors. This can also break replays and tutorials. ''Exception: sometimes you can do no-op moves with timeouts (i.e. user has only one choice, but its unwise to reveal this information by skipping user turn), timeout has to be canceling itself if state transition happen automaticaly (i.e. during reply)''
** Game is tested with in-game replay from last move feature (by clicking on notification log items)
+
# ''' User Interface '''
** Game works in Chrome and Firefox browsers at least. Also very recommended to test in IE 11 and Edge.
+
## Review BGA UI design Guidelines [[BGA_Studio_Guidelines]]
** Game works on mobile device (if you don't have mobile device to test at least test in Chrome with smaller screen, they have a mode for that)
+
## Check all your English messages for proper use of punctuation, capitalization, usage of present tense in notification (not past) and gender neutrality. See [[Translations]] for English rules.
** Test your game in realtime mode. Usually people will run out of time if you use default times unless you add call giveExtraTime($active_player_id) before each turn
+
## If the elements in your game zone don't occupy all the available horizontal space, '''they should be centered'''.
** Test your game in 3D mode (if it makes sense; 3D mode can also be disabled through the 'enable_3d' parameter for gameinfos.inc.php, but if it "mostly works", it can be nice to keep it activated even if 2D is more appropriate for the game, just because it's fun to look at)
+
## If your game elements become blurry or pixellated when using the browser zoom, you may want to consider [[Game_art:_img_directory#Use_background-size | higher resolution images with background-size]]
** Check your game against the waiting screen, otherwise game start can fail. See [[Practical_debugging#Debugging_an_issue_with_the_waiting_screen]]
+
## Non-self explanatory graphic elements should have tooltips
* Cleanup
+
## Strings in your source code are ready for translation. See [[Translations]]. You can generate dummy translations for checking that everything is ready for translation from your "Manage game" page.
** Remove all extra console.log from your js code
+
## A prefix for example a trigram for your game that you prepend to all the css classes to avoid namespace conflicts, i.e. vla_selected vs selected
** Remove all unnecessary debug logging from your php code
+
## If you are looking for advice on design and some 3rd party testing you can post a message on the developers forum, and ask other developers, there are a lot of people who will gladly do it.
** Copyright headers in all source files have your name
+
# ''' Special testing '''
* User Interface
+
## Click "Use minified JS" and "Use minified CSS" buttons on the game management page, then test your game.  This will prevent you from having a panic attack when the game releases in alpha and it is stuck in "Connecting to game".
** Review BGA UI design Guidelines [[BGA_Studio_Guidelines]]
+
## Game is tested with spectator (non player observer): change the testuser in the URL to see the game as another user (same URL as when clicking on red arrow). As a spectator, you should be able to see the game as if you were sitting beside of the players at a real table: all public information, no private information.
** Check all your English messages for proper use of punctuation, capitalization, usage of present tense in notification (not past) and gender neutrality. See [[Translations]] for English rules.
+
## Game is tested with in-game replay from last move feature (by clicking on notification log items).
** If the elements in your game zone don't occupy all the available horizontal space, '''they should be centered'''.
+
## After finishing a game, it is possible to watch the replay (using the "Replay game" button on the table page) from game start to game end without errors.
** If your game elements become blurry or pixellated when using the browser zoom, you may want to consider [[Game_art:_img_directory#Use_background-size | higher resolution images with background-size]]
+
## Game works in Chrome and Firefox browsers at least. Also very recommended to test in Edge and Safari.
** Non-self explanatory graphic elements should have tooltips
+
## Game works on mobile device (if you don't have mobile device to test at least test in Chrome with smaller screen, they have a mode for that)
** Strings in your source code are ready for translation. See [[Translations]]. You can generate dummy translations for checking that everything is ready for translation from your "Manage game" page.
+
## Test your game in realtime mode. Usually people will run out of time if you use default times unless you add call giveExtraTime($active_player_id) before each turn
** A prefix for example a trigram for your game that you prepend to all the css classes to avoid namespace conflicts, i.e. vla_selected vs selected
+
## Test your game in 3D mode (if it makes sense; 3D mode can also be disabled through the 'enable_3d' parameter for gameinfos.inc.php, but if it "mostly works", it can be nice to keep it activated even if 2D is more appropriate for the game, just because it's fun to look at)
** If you are looking for advice on design and some 3rd party testing you can post a message on the developers forum, and ask other developers, there are a lot of people who will gladly do it.
+
## Check your game against the waiting screen, otherwise game start can fail. See [[Practical_debugging#Debugging_an_issue_with_the_waiting_screen]]
* Static Analysis
+
# ''' Cleanup '''
** Some of the checks above are automated, to run them go to control panel, go to your project and select "Check project" button (it will open like a game table, and you click on Start button to run analysis)
+
## Remove all unnecessary console.log and other tracing from your js code (Note: technically it is removed by minimizer, but not console.error)
* Finally move to Alpha status
+
## Remove all unnecessary debug logging from your php code
** If possible (meaning if there is not already a project with that name) copy your project to a new project '''matching exactly the name of the game''' (no prefix or suffix). If not possible move on to the next steps, admin will have to retrieve the other project and overwrite it.
+
## Copyright headers in all source files have your name
** Create a build for your game from the "manage game" page (using the '''Build a new release version''' section) and check the log to make sure that everything builds fine (after a successful build, you should see a new version in "Versions available for production").
+
## Remove unncessery files from main folder (can move some to misc folder)
** Send an e-mail to studio@boardgamearena.com asking to move the project forward for Alpha/Review. You cannot deploy yourself from the "manage game" page until a first deploy has been done by the admins. If they don't reply in 3 days send email again, you can also nag on discord channel and forum until you get the attention.
+
## Remove all unused graphics from img/ folder
 +
# ''' Static Analysis '''
 +
## Some of the checks above are automated, to run them go to control panel, go to your project and select "Check project" button (it will open like a game table, and you click on Start button to run analysis)
 +
# ''' Finally move to Alpha status '''
 +
## If possible (meaning if there is not already a project with that name) copy your project to a new project '''matching exactly the name of the game''' (no prefix or suffix). If not possible move on to the next steps, admin will have to retrieve the other project and overwrite it.
 +
## Create a build for your game from the "manage game" page (using the '''Build a new release version''' section) and check the log to make sure that everything builds fine (after a successful build, you should see a new version in "Versions available for production").
 +
## Send an e-mail to studio@boardgamearena.com asking to move the project forward for Alpha/Review. You cannot deploy yourself from the "manage game" page until a first deploy has been done by the admins. If they don't reply in 3 days send email again, you can also nag on discord channel and forum until you get the attention. Note: you can also ask publish for private Alpha - in this case you will invite people manually. You nobody replied after 7 days you can start getting worried.
 +
<pre>
 +
Subject: PUSH TO ALPHA: <gamename>
 +
 
 +
Hi studio admin, I went through https://en.doc.boardgamearena.com/Pre-release_checklist and I think my game is ready to be moved to public Alpha, please push it.
 +
 
 +
Game page: https://studio.boardgamearena.com/studiogame?game=<gamename>
 +
My Studio account: xxx
 +
My BGA account: yyy
 +
Rename required: <originalgamename>
 +
License status: <granted/pending/public domain>
 +
Asset status: <no issues/hi-res graphics assets are missing>
 +
</pre>
 +
* ''' Wait '''
 
** When admins publish (push to alpha) they will send an email to the developer with all relevant information about the next steps.
 
** When admins publish (push to alpha) they will send an email to the developer with all relevant information about the next steps.
* Move from Alpha to Beta
+
 
** Generally you have to have at least 10 revieweing with rank > 3.5 and not to many bugs open
+
=== Move from Alpha to Beta ===
** OR It should be approved by publisher (or in some cases pubisher can review it in Beta)
+
# The implementation '''must be approved by the publisher''' (if not a public domain game)
** Send an e-mail to studio@boardgamearena.com asking to move the project forward for Beta
+
# Generally it is recommended (but not essential) to have at least 10 approvals from reviewer with rank > 3.5 and not too many bugs opened
 +
# If the game is well-received (preferably game rating ≥4.5) and there are no pending issues the game may pass as administrative discretion without 10+ approvals
 +
# Send an e-mail to studio@boardgamearena.com asking to move the project forward for Beta
 +
 
 +
<pre>
 +
Subject: PUSH TO BETA: <gamename>
 +
 
 +
Hi studio admin, I think my game is ready to be moved to Beta.
 +
 
 +
Game page: https://studio.boardgamearena.com/studiogame?game=<gamename>
 +
My Studio account: xxx
 +
My BGA account: yyy
 +
Approved by publisher: <info of publisher approval>
 +
Number of approvals: X
 +
Approval rating: Y
 +
Remaining bugs: X
 +
</pre>
 +
 
 +
[[Category:Studio]]

Latest revision as of 19:20, 29 June 2022


Game File Reference



Useful Components

Official

  • Deck: a PHP component to manage cards (deck, hands, picking cards, moving cards, shuffle deck, ...).
  • Draggable: a JS component to manage drag'n'drop actions.
  • Counter: a JS component to manage a counter that can increase/decrease (ex: player's score).
  • ExpandableSection: a JS component to manage a rectangular block of HTML than can be displayed/hidden.
  • 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)

  • Wrapper: a JS component to wrap a <div> element around its child, even if these elements are absolute positioned.

Unofficial



Game Development Process



Guides for Common Topics



Miscellaneous Resources

If you think your game is ready to be reviewed by by BGA admins and/or Publisher (aka go to Alpha stage) please consult this checklist first

Move from Dev to Alpha

  1. License
    1. BGA must have a license for the game for a project to be moved to production, even to alpha. If you don't have license yet you can continue checking other stuff from the list below, but at the end it cannot be moved until license situation is cleared.
  2. Metadata and graphics
    1. Game_meta-information: gameinfos.inc.php has correct and up to date information about the game. That includes game tags. Important!!! tags are only read during the first deploy.
    2. Game box graphics is 3D version of the game box (if available) and publisher icon is correct (see Game art: img directory). Space around the box has to be transparent, not white.
    3. You have added a game_banner.jpg and some game_displayX.jpg images to make the game page pretty (NB: on the studio, you have to create a build for these images to appear on the studio game page)
    4. There are no images in the img directory that are not needed anymore
    5. Multiple images (i.e. cards) are compressed in "Sprite" (see Game art: img directory)
    6. Each image should not exceed 4Mb
    7. Total size should not exceed 10Mb, image compression should be used otherwise (it also helps a lot to re-encode images as indexed palette vs RBG). If you have legitimate reason to have more than 10Mb (i.e. expansions), you have to make a note of that when requesting move to alpha
    8. If you use extra fonts, they should be freeware (please include a .txt with the licence information)
  3. Server side
    1. When giving their turn to a player, you give them some extra time with the giveExtraTime() function
    2. Game progression is implemented (getGameProgression() in php)
    3. Zombie turn is implemented (zombieTurn() in php). Note: it can only be tested if you explicitly click on the quit button to create a zombie. If you are expelled it does not generated a Zombie.
    4. You have defined and implemented some meaningful statistics for your game (i.e. total points, point from source A, B, C...)
    5. Game has meaningful notification messages (but don't overkill it, more user logs will slow down the loading)
    6. You implemented tiebreaking (using aux score field) and updated tiebreaker description in meta-data
    7. Database: make sure you do not programmatically manage transactions or call queries that change database schema or even TRUNCATE (queries that would cause implicit commit) during normal game opearations
    8. Database: make sure you DB schema would be sufficient to complete the game and good enough for possible expantions, changing db schema schema after the release even in alpha is very challenging (it is possible but much better if you don't need to deal with it)
  4. Client side
    1. Check that you use ajaxcall only on player actions and never initiated programmatically. Otherwise, your code will very likely create race conditions resulting in deadlocks or other errors. This can also break replays and tutorials. Exception: sometimes you can do no-op moves with timeouts (i.e. user has only one choice, but its unwise to reveal this information by skipping user turn), timeout has to be canceling itself if state transition happen automaticaly (i.e. during reply)
  5. User Interface
    1. Review BGA UI design Guidelines BGA_Studio_Guidelines
    2. Check all your English messages for proper use of punctuation, capitalization, usage of present tense in notification (not past) and gender neutrality. See Translations for English rules.
    3. If the elements in your game zone don't occupy all the available horizontal space, they should be centered.
    4. If your game elements become blurry or pixellated when using the browser zoom, you may want to consider higher resolution images with background-size
    5. Non-self explanatory graphic elements should have tooltips
    6. Strings in your source code are ready for translation. See Translations. You can generate dummy translations for checking that everything is ready for translation from your "Manage game" page.
    7. A prefix for example a trigram for your game that you prepend to all the css classes to avoid namespace conflicts, i.e. vla_selected vs selected
    8. If you are looking for advice on design and some 3rd party testing you can post a message on the developers forum, and ask other developers, there are a lot of people who will gladly do it.
  6. Special testing
    1. Click "Use minified JS" and "Use minified CSS" buttons on the game management page, then test your game. This will prevent you from having a panic attack when the game releases in alpha and it is stuck in "Connecting to game".
    2. Game is tested with spectator (non player observer): change the testuser in the URL to see the game as another user (same URL as when clicking on red arrow). As a spectator, you should be able to see the game as if you were sitting beside of the players at a real table: all public information, no private information.
    3. Game is tested with in-game replay from last move feature (by clicking on notification log items).
    4. After finishing a game, it is possible to watch the replay (using the "Replay game" button on the table page) from game start to game end without errors.
    5. Game works in Chrome and Firefox browsers at least. Also very recommended to test in Edge and Safari.
    6. Game works on mobile device (if you don't have mobile device to test at least test in Chrome with smaller screen, they have a mode for that)
    7. Test your game in realtime mode. Usually people will run out of time if you use default times unless you add call giveExtraTime($active_player_id) before each turn
    8. Test your game in 3D mode (if it makes sense; 3D mode can also be disabled through the 'enable_3d' parameter for gameinfos.inc.php, but if it "mostly works", it can be nice to keep it activated even if 2D is more appropriate for the game, just because it's fun to look at)
    9. Check your game against the waiting screen, otherwise game start can fail. See Practical_debugging#Debugging_an_issue_with_the_waiting_screen
  7. Cleanup
    1. Remove all unnecessary console.log and other tracing from your js code (Note: technically it is removed by minimizer, but not console.error)
    2. Remove all unnecessary debug logging from your php code
    3. Copyright headers in all source files have your name
    4. Remove unncessery files from main folder (can move some to misc folder)
    5. Remove all unused graphics from img/ folder
  8. Static Analysis
    1. Some of the checks above are automated, to run them go to control panel, go to your project and select "Check project" button (it will open like a game table, and you click on Start button to run analysis)
  9. Finally move to Alpha status
    1. If possible (meaning if there is not already a project with that name) copy your project to a new project matching exactly the name of the game (no prefix or suffix). If not possible move on to the next steps, admin will have to retrieve the other project and overwrite it.
    2. Create a build for your game from the "manage game" page (using the Build a new release version section) and check the log to make sure that everything builds fine (after a successful build, you should see a new version in "Versions available for production").
    3. Send an e-mail to studio@boardgamearena.com asking to move the project forward for Alpha/Review. You cannot deploy yourself from the "manage game" page until a first deploy has been done by the admins. If they don't reply in 3 days send email again, you can also nag on discord channel and forum until you get the attention. Note: you can also ask publish for private Alpha - in this case you will invite people manually. You nobody replied after 7 days you can start getting worried.
 Subject: PUSH TO ALPHA: <gamename>

 Hi studio admin, I went through https://en.doc.boardgamearena.com/Pre-release_checklist and I think my game is ready to be moved to public Alpha, please push it.

 Game page: https://studio.boardgamearena.com/studiogame?game=<gamename> 
 My Studio account: xxx
 My BGA account: yyy
 Rename required: <originalgamename>
 License status: <granted/pending/public domain>
 Asset status: <no issues/hi-res graphics assets are missing>
  • Wait
    • When admins publish (push to alpha) they will send an email to the developer with all relevant information about the next steps.

Move from Alpha to Beta

  1. The implementation must be approved by the publisher (if not a public domain game)
  2. Generally it is recommended (but not essential) to have at least 10 approvals from reviewer with rank > 3.5 and not too many bugs opened
  3. If the game is well-received (preferably game rating ≥4.5) and there are no pending issues the game may pass as administrative discretion without 10+ approvals
  4. Send an e-mail to studio@boardgamearena.com asking to move the project forward for Beta
 Subject: PUSH TO BETA: <gamename>

 Hi studio admin, I think my game is ready to be moved to Beta.

 Game page: https://studio.boardgamearena.com/studiogame?game=<gamename> 
 My Studio account: xxx
 My BGA account: yyy
 Approved by publisher: <info of publisher approval>
 Number of approvals: X
 Approval rating: Y
 Remaining bugs: X