# 棋牌新遊戲架構部署文件 ## 說明 ### 更動服務 - game0; 支持房間代理線水庫運算, 且向下兼容既有系統. - center; 支持新款遊戲架構, 提供客製化遊戲房間配置, 且向下兼容既有系統. - hhdz; 支持代理線分房運算遊戲結果 ### 已知問題 - 既有棋牌後台代理部分功能不兼容 ### 遊戲架構改變 | 以前 | 現在 | | --- | --- | | 遊戲區分牌桌 `只能區別` 到廳主 | 遊戲區分牌桌 `能細分` 到代理線 | | 遊戲相關資訊儲存於 redis `set` | 遊戲相關資訊儲存於 redis `hset` | | 動態房間水庫透過 `redis` 鍵值更新資訊 | 動態房間水庫透過 `nats` 傳遞資訊 | | 遊戲房間採 `全手動` 設定 | 遊戲房間採 `全自動` 設定, 有額外客人製需求才另外手動設定 | | 遊戲房間託管採用 `單一` 託管 | 遊戲房間託管採用 `託管池` 託管 | | 代理 `共用` 廳主房間水庫, 代理玩家可以過分 | 代理線 `獨立` 使用房間倍率水庫, 代理玩家無法過分 | | `透過` 層級/代理線/殺率, 操作玩家遊玩房間 | `廢除` 層級/代理線/殺率, 相關功能 | | 設定檔模組 `不可` 指定 AES 值, 大部分服務採用環境變數, 僅 center 服務支持設定檔 | 設定檔模組 `可以` 指定 AES 值, 除了遊戲採用環境變數, 其餘服務採用設定檔運行 | | 服務日誌輸出到 `stdout` 透過 supervisor 做日誌整理 | 部分服務日誌輸出到 `檔案`, 自動做整理, 減少 stdio | | 玩家登入透過 `stored_procedure` 操作確認是否創建對應帳號/廳主/代理資訊 | 玩家登入透過 `代碼` 內部實現, 操作確認是否創建對應帳號/廳主/代理/代理線資訊 | --- ## 步驟 ### MySql 欄位修改 ```sql -- 1. 會員帳號增加 `linecode` 資訊 ALTER TABLE `chesscards`.`tbl_account` ADD COLUMN `linecode` varchar(32) NOT NULL DEFAULT '' COMMENT 'linecode' AFTER `agent_login_id`; -- 2. 會員廳主代理資料表 `ukey` 欄位擴充 ALTER TABLE `chesscards`.`tbl_agent` CHANGE `ukey` `ukey` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT 'sn_agentid'; -- 3. 遊戲房間設置增加 `linekey` 資訊; `sn^agent_id^linecode` ALTER TABLE `chesscards`.`tbl_game_room` ADD COLUMN `linekey` varchar(64) NOT NULL DEFAULT '' COMMENT 'sn^agent_id^linecode' AFTER `currency_code`; -- 4. 將新遊戲架構水庫設置改寫至 `chesscards`.`tbl_run_rtp` 並增加 `ukey` 資訊; `gameId^sn^agent_id^linecode^room_type` CREATE TABLE `chesscards`.`tbl_run_rtp` ( `game_id` bigint(32) DEFAULT NULL COMMENT 'gameID', `sn` varchar(32) DEFAULT NULL COMMENT '廳主名稱', `agent_id` varchar(32) DEFAULT NULL COMMENT '代理id', `linecode` varchar(32) DEFAULT NULL COMMENT '代理線', `room_type_code` int(11) DEFAULT NULL COMMENT '房間類別', `ukey` varchar(64) DEFAULT NULL COMMENT 'gameId^sn^agent_id^linecode^room_type', `current_grade` bigint(20) DEFAULT NULL COMMENT '库存当前值(厘)', `total_bet` bigint(20) DEFAULT NULL COMMENT '总投注(厘)', `total_settlement` bigint(20) DEFAULT NULL COMMENT '总派彩(厘)', `created_at` bigint(20) DEFAULT NULL COMMENT '创建时间(UNIX时间戳)', `updated_at` bigint(20) DEFAULT NULL COMMENT '最后更新时间(UNIX时间戳)', UNIQUE KEY (`ukey`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='房间各项数据'; -- 5. 玩家在線報表 `sn` 欄位擴充 ALTER TABLE `chesscards_busi`.`tbl_online_count` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20230918` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20230925` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231002` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231009` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231016` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231023` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231030` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231106` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231113` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231120` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231127` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231204` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231211` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231218` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ALTER TABLE `chesscards_busi`.`tbl_online_count_20231225` CHANGE `sn` `sn` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''; ``` ### Redis 鍵值增加 ```bash= # 將 set_redis_data 放置在執行檔目錄中即可執行 mv set_redis_data /home/kyo/releases/set_redis_data chmod +x set_redis_data cd /home/kyo/releases ./set_redis_data # sn:li00, gameId: 15, isAddSn: false, cyCode: CNY, cyDisplayName: 人民幣(CNY) # set redis data done! ``` ### 棋牌服務執行檔/設定檔替換 ```bash= # chmod 使 binary 可執行 chmod +x game0 chmod +x center chmod +x hhdz # 確認版本號 ./game0 --version # git commit num: f0dd185 ./center --version # git commit num: 551e93a ./hhdz --version # git commit num: 224b6a5 # 移動 config, 執行檔 到執行目錄 mv binary_config/config.ini /home/kyo/releases/config.ini mv binary_config/config_games.yaml /home/kyo/releases/config_games.yaml mv game0 /home/kyo/releases/game0 mv center /home/kyo/releases/center mv hhdz /home/kyo/releases/hhdz # 移動 supervisor 設定檔到 supervisor 設定檔目錄 mv supervisor_config/game0.conf /etc/supervisor/conf.d/game0.conf mv supervisor_config/center.conf /etc/supervisor/conf.d/center.conf mv supervisor_config/hhdz.conf /etc/supervisor/conf.d/hhdz.conf ``` ### 重啟 `Supervisor` 服務 ```bash= systemctl restart supervisord ``` ### 檢查是否正確更新 1. 看 log 日誌 2. 確認是否能從測試廳登入 3. 檢查登入廳主的 redisKey 是否創建(應該會自動生成) 4. 用測試廳(代理線)跑一局, 確認 RTP 是否為 97.5 或是 請企劃協助確認一下登入測試 RTP