This is a documentation for Board Game Arena: play board games online !
Khác biệt giữa bản sửa đổi của “Post-release phase”
(Không hiển thị 9 phiên bản của 2 người dùng ở giữa) | |||
Dòng 14: | Dòng 14: | ||
== How to submit changes? == | == How to submit changes? == | ||
There is 3 (short) steps to make your changes visible on BGA (from your Control Panel): | |||
* Commit your changes. | |||
* Build a new version (don't forget to do a successful commit BEFORE your build). | |||
* Deploy your new version in production. | |||
== What can be modified after release? == | == What can be modified after release? == | ||
Dòng 48: | Dòng 36: | ||
Of course, as a rule of thumb, you should avoid to introduce changes that break a game in progress. Sometimes however, you do not have any other choice. In this case: | Of course, as a rule of thumb, you should avoid to introduce changes that break a game in progress. Sometimes however, you do not have any other choice. In this case: | ||
* Try to group all your updates in one | * Try to group all your updates in one version, thus we won't have to block your game several times. | ||
* Tell us explicitly that you introduce some update that can break games in progress, | * Tell us explicitly that you introduce some update that can break games in progress so we can block the game during a short time. | ||
* | |||
Note: in the near future, we will introduce the possibility for you to block/unblock a game directly from your Control Panel in order to perform all the process by yourself. | |||
=== Updating Statistics === | |||
You should be careful when updating a statistics: | |||
* If you want to add a new statistics, please refer to the paragraph above ("changes that breaks the games in progress"). | |||
* If you want to update a statistic, please update it and do not remove/create another one. Otherwise, the statistic won't keep the same ID and players will lost all the historical statistics data. | |||
* If your game is published on BGA, please don't remove any statistics (historical data will be lost). | |||
=== Updating the database schema === | |||
If you want to update the database schema of the game (dbmodel.sql), you should inform us before releasing the new version (see "[[#Changes that breaks the games in progress|changes that breaks the games in progress]]"). | |||
Any modification in dbmodel.sql should also appear in your nameofyourgame.game.php, in a function | |||
function upgradeTableDb( $from_version ){ | |||
if( $from_version <= YYMMDDHHMM ){ // where your CURRENT version in production has number YYMMDD-HHMM | |||
// You DB schema update request. | |||
// Note: all tables names should be prefixed by "DBPREFIX_" to be compatible with the applyDbUpgradeToAllDB method you should use below | |||
$sql = "CREATE TABLE DBPREFIX_xxxxxxx ...."; | |||
// The method below is applying your DB schema update request to all tables, including the BGA framework utility tables like "zz_replayXXXX" or "zz_savepointXXXX". | |||
// You should really use this request, in conjunction with "DBPREFIX_" in your $sql, so ALL tables are updated. All utility tables MUST have the same schema than the main table, otherwise the game may be blocked. | |||
self::applyDbUpgradeToAllDB( $sql ); | |||
}} | |||
Note: of course you need to change your dbmodel.sql accordingly, so that new games get your updated scheme. | |||
Note2: this is always risky to modify the DB scheme, so: | |||
_ it may be worthy to contact us before, so we can stop the realtime games during the update (this way, only turn based games are concerned by the DB live upgrade). | |||
_ if you can avoid it... try to avoid it :) | |||
=== Updating string to be translated === | |||
When you update a string that has been marked to be translatable, please keep in mind that all current translations done by the BGA community will be lost. | |||
Consequently, when you are about to modify a string to be translated (after release), please ask you the following questions: | |||
* Is it just an English misspelling? In this case, it is better to fix the English translation of the string than the original string to be translated. | |||
* Has the meaning of the string changed? If yes, you HAVE to change the original string in order to invalidate all translations that has been done already. | |||
* Is there a similar string already used elsewhere in my game? In this case, you'd better use it again to enjoy immediately all translations already available. | |||
===Major changes=== | ===Major changes=== | ||
Dòng 60: | Dòng 92: | ||
... please tell us. In this case, we can: | ... please tell us. In this case, we can: | ||
* Make your game back from "gold" to "public beta", to incite player to report bugs. | * Make your game back from "gold" to "public beta", to incite player to report bugs. | ||
* And eventually, publish a news about it :) | * And eventually, publish a news about it :) | ||
Bản mới nhất lúc 09:38, ngày 22 tháng 5 năm 2018
Your game is now on BGA: congrats!
But what happened when there are some bugs to fix or when you want to optimize something?
Don't be afraid: you're still allowed to modify your game. You just have to pay attention to the points below.
Bugs reporting
Bugs are reported in the BGA bugs forum.
During days after your game has been published and from time to time, please have a look at it to check if everything is fine.
How to submit changes?
There is 3 (short) steps to make your changes visible on BGA (from your Control Panel):
- Commit your changes.
- Build a new version (don't forget to do a successful commit BEFORE your build).
- Deploy your new version in production.
What can be modified after release?
Everything can be modified. BUT, some items requires a special attention, and you must inform us in some cases:
Changes that breaks the games in progress
Some changes will break the games in progress at the moment the release/the hotfix will be performed. Each time you make a change, you should ask you the question "it is safe to make this change in a game in progress", and if the answer is "no" you have to inform us.
Example of changes that break the games in progress:
- Changes in the database schema of the game (dbmodel.sql).
- New global variable or game option accessed during the game (if it's only used during setup, it should be safe).
- New statistic (it won't be initialized properly, so it's going to crash the game).
- Change ID of existing game states (adding new game states is fine).
Of course, as a rule of thumb, you should avoid to introduce changes that break a game in progress. Sometimes however, you do not have any other choice. In this case:
- Try to group all your updates in one version, thus we won't have to block your game several times.
- Tell us explicitly that you introduce some update that can break games in progress so we can block the game during a short time.
Note: in the near future, we will introduce the possibility for you to block/unblock a game directly from your Control Panel in order to perform all the process by yourself.
Updating Statistics
You should be careful when updating a statistics:
- If you want to add a new statistics, please refer to the paragraph above ("changes that breaks the games in progress").
- If you want to update a statistic, please update it and do not remove/create another one. Otherwise, the statistic won't keep the same ID and players will lost all the historical statistics data.
- If your game is published on BGA, please don't remove any statistics (historical data will be lost).
Updating the database schema
If you want to update the database schema of the game (dbmodel.sql), you should inform us before releasing the new version (see "changes that breaks the games in progress").
Any modification in dbmodel.sql should also appear in your nameofyourgame.game.php, in a function
function upgradeTableDb( $from_version ){ if( $from_version <= YYMMDDHHMM ){ // where your CURRENT version in production has number YYMMDD-HHMM // You DB schema update request. // Note: all tables names should be prefixed by "DBPREFIX_" to be compatible with the applyDbUpgradeToAllDB method you should use below $sql = "CREATE TABLE DBPREFIX_xxxxxxx ...."; // The method below is applying your DB schema update request to all tables, including the BGA framework utility tables like "zz_replayXXXX" or "zz_savepointXXXX". // You should really use this request, in conjunction with "DBPREFIX_" in your $sql, so ALL tables are updated. All utility tables MUST have the same schema than the main table, otherwise the game may be blocked. self::applyDbUpgradeToAllDB( $sql ); }}
Note: of course you need to change your dbmodel.sql accordingly, so that new games get your updated scheme.
Note2: this is always risky to modify the DB scheme, so: _ it may be worthy to contact us before, so we can stop the realtime games during the update (this way, only turn based games are concerned by the DB live upgrade). _ if you can avoid it... try to avoid it :)
Updating string to be translated
When you update a string that has been marked to be translatable, please keep in mind that all current translations done by the BGA community will be lost.
Consequently, when you are about to modify a string to be translated (after release), please ask you the following questions:
- Is it just an English misspelling? In this case, it is better to fix the English translation of the string than the original string to be translated.
- Has the meaning of the string changed? If yes, you HAVE to change the original string in order to invalidate all translations that has been done already.
- Is there a similar string already used elsewhere in my game? In this case, you'd better use it again to enjoy immediately all translations already available.
Major changes
If you do some major changes to your game like:
- Introducing a new expansion.
- Major code rewriting/refactoring.
... please tell us. In this case, we can:
- Make your game back from "gold" to "public beta", to incite player to report bugs.
- And eventually, publish a news about it :)