首頁 資料庫 mysql教程 关于游戏合服的资料

关于游戏合服的资料

Jun 07, 2016 pm 05:42 PM
關於 遊戲 資料

原网址: 我们的游戏上个星期经历了第一个数据合服。简单说,就是把2个数据库合并在一个数据库,让2个服务器的玩家一起玩。 过程简直是惊心动魄,最终还是安全完成任务。 本文就分享下合服的各种技术细节。 需求说明: -------------------------- 要把2个服

原网址:  

我们的游戏上个星期经历了第一个数据合服。简单说,香港空间,就是把2个数据库合并在一个数据库,让2个服务器的玩家一起玩。

过程简直是惊心动魄,最终还是安全完成任务。

本文就分享下合服的各种技术细节。

 

需求说明:

--------------------------

要把2个服务器玩家合并,首先外部对玩家而言是不变的,包括了登陆游戏的URL,游戏中的角色等;但是物理上,确是一台服务器一个数据库。

简单的说,一服的玩家用一服入口登陆,玩一服账号;二服的玩家用二服入口登陆,玩二服账号;

即使我只有1个账号,但是不同入口登陆,依然能使用不同游戏账号进行游戏。

 

数据库设计

--------------------------

要实现合服,首先表主键必须全部使用代码生成,并用服务器编码作为前缀。

例如我的一服表主键就是 001GMxxxxxxxxxxxxxxxx。 二服就是002GMxxxxxxxxxxxxxxxx。这样合服的时候,就不需要对数据进行预处理了。直接导入。

 

其次,使用平台用户使用一个账号,登陆不同服,要获得不同账号,因此在游戏的玩家表,要通过服务器编码进行区分,例如:

Usr_Profile

:usercode 主键

:username 平台账号

:servercode 服务器编码

这样,根据传入的username+servercode就知道应该获取什么服务器账号了。

 

游戏中,玩家通过昵称识别对方,因此合服的时候,必须对昵称进行修正,防止重复,因此所有昵称都要添加后缀。我们最终方案就是添加 .x服 这个后缀。

 

有了这3方面保证,合服就变得简单了。(简单个屁。。。)

 

合服流程

--------------------------------

1. 数据库分析准备

做事前都要先准备。因此首先要对数据库表结构进行分析,判断什么表结构需要合服,什么可以忽略。

我们游戏有60多张表,其中仅仅27张表需要合并,其他的都是配置表、日志表,都不需要合并。

 

2. 数据备份

这部不用说了,首先要对数据库全备份,防止操作失误,导致数据丢失了。一般就在本机MySQL新建一个backup数据库, 然后使用bult insert进行复制,速度很快。当然,备份的时候,对于体积很大的日志表,可以跳过了。

 

3. 数据删减

这部分很重要,一个网页游戏有接近80%的账号是死号,因此合服的时候必须先过滤掉死号。规则如下:等级小于10级、没有充值、最近登录时间大于30天的,全部清除。

然后,就是上文提到的27张表中,与被淘汰账号相关的数据,也清除。

这个清除量实际上非常大的,我有张数据表接近30W数据,结果一清就清了20W,超级舒服。

 

4. 数据检测

这部分也很重要,因为我们第二个服务器当时配置错了,没有使用服务器编码作为主键,导致与一服数据存在冲突的可能,因此需要对27张表的主键进行检测,判断前缀是否002,如果不是,就要进行手动修正了。

 

5. 数据修正

这块主要针对存在主键冲突的数据进行修正,一般用SQL即可,大概耗时30~60分钟,我就用个SQL,例如 update xxx set pk = concat('001',substring(pk,4)),进行数据修复。

当然,修复前,需要对表结构进行分析,不能出现遗漏,香港服务器,特别是外键关联。

 

6. 数据导出

不要尝试使用代码等方式进行合服,速度太慢了。我使用SQLYog,对所有表进行导出,其中插入配置为Bult Insert,导入速度非常快。

 

7. 数据导入测试

最终导入的时候,要测试,看看导出的SQL是否存在问题。

 

8. 导入。

这部完成,合服成功了。

 

貌似非常简单的步骤,实际上却问题多多。接下来我将说明实际部署中存在的陷阱。

 

 

合服 生存大考验

------------------------------

1. 合服的表结构不匹配

当时我合服的时候,发现表总是导不进去,提示主键重复。不可能的啊。。从一个不重复主键的表导入会提示重复?

检查了很久发现,服1的主键是21位,服2的主键是22位,结果导入的时候22位的主键自动省略了最后一位,自然会产生了主键重复。。。

 

2. SQLYog该死的bug

SQLYog改表结构竟然和实际表结构不对应。我明明修改了char(100),可是数据库一看,还是char(21). 最终只好用命令行修改。。

嗨。关键时候,这些工具总是找麻烦。

 

3.  SQLYog导入出错竟然没有提示

也是该死的工具问题,最后我使用navicat配合SQLYog进行操作。

 

4. 部分动态生成的数据,无法批量导入

例如竞技场排名,不允许出现相同排名。所以这块数据需要在玩家登陆的时候自动生成。此类型数据都是动态生成的,无法通过批量修正,都需要通过游戏逻辑进行补全。

因此,合服的时候,这块数据将不参与合并。

 

合服历险记

------------------------------

说了这么多理论知识,接下来就说说那天我合服的经过。本来在测试机上一切顺利的,不到2个小时就合并了。可是真正操作起来, 却用了8个小时。。。。

 

开始还顺利,3个多小时就做好了数据备份、删除、修正。可是导入的时候发现总是提示主键冲突,于是不断找原因,1个小时过去,才发现原来表结构不匹配。晕死。

 

接下来导完数据,4个小时过去了,开服。一运行,玩家就投诉了,说中文乱码、丢失装备、丢失武将。

 

丢失装备、武将问题,我又花了1个小时检查,原来是潜在部分主键仍然丢失最后1位,导致找不到。这个时候,我不能停机,因此我对比2个数据库有差异的表,生成一堆update的SQL,然后手动操作。可是发现SQL多了,SQLYog会卡死,游戏也会卡死。我只好开了10多个SQLYog,采用并行方法,把SQL拆分成50一组,进行手动操作。。累死了。

 

对于武将名字乱码,是当时生成SQL文件的时候,编码格式错误了。可是武将数据接近有3W条,不可能进行手动更新了,因此我写了个更新程序,进行后台更新。这块就花了1小时。

 

终于游戏Exception少了,本来可以歇口气了,结果运营说,玩家充值失败!我检查代码,原来充值接口没有使用servercode去区分玩家账号,又是疏忽。

 

第二天,运营又投诉说,商会采集资源失败,回去检查,才发现原来漏了对账号中商会主键进行修正,又是疏忽。

 

小结

----------------------------

本来已经提前预演了2天,没有问题,可是上到战场还是错漏百出。

如果准备过于详细,会导致发展缓慢。如果准备不充分,又会很多问题。这个是个进退两难的情况。最终,我偏向了迅速准备,快速修正的方案。

毕竟,预演的时候找不到的问题,网站空间,给再多的时间也不一定找到。还不如直接上战场,随机应变。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1663
14
CakePHP 教程
1420
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
在遊戲時,CPU利用率應該是多少? 在遊戲時,CPU利用率應該是多少? Feb 19, 2024 am 11:21 AM

遊戲因消耗大量資源而導致電腦運作速度變慢是常見現象。了解遊戲時CPU的使用率是至關重要的,這樣可以避免過度負荷。因此,掌握適當的CPU使用率是維持遊戲體驗流暢的關鍵。在本文中,我們將探討遊戲執行時間CPU應該達到的適當使用率。遊戲時的CPU使用率CPU使用率是指衡量處理器工作負載的重要指標,取決於CPU的效能規格。功率較大的CPU通常具有更高的使用率。擁有更多核心和執行緒的CPU可以提高系統的整體效能。多執行緒支援有助於充分發揮CPU的潛力。在遊戲中,CPU使用率取決於處理器的使用率,這會影響遊戲

NAT Boost與遊戲的Qos;哪個比較好? NAT Boost與遊戲的Qos;哪個比較好? Feb 19, 2024 pm 07:00 PM

在當下幾乎所有遊戲都在線上的情況下,忽視家庭網路的最佳化是不可取的。幾乎所有路由器都配備了NATBoost和QoS功能,旨在提升使用者的遊戲體驗。本文將探討NATBoost和QoS的定義、優點和缺點。 NATBoost與遊戲的Qos;哪個比較好? NATBoost,又稱網路位址轉換Boost,是一種內建於路由器的功能,可提升其效能。對於遊戲而言尤其重要,因為它有助於減少網路延遲,即遊戲設備和伺服器之間資料傳輸的時間。透過優化路由器內的資料處理方式,NATBoost實現了更快的資料處理速度和更低的延遲,從而改

Nvgpucomp64.dll導致Windows PC遊戲崩潰; Nvgpucomp64.dll導致Windows PC遊戲崩潰; Mar 26, 2024 am 08:20 AM

如果Nvgpucomp64.dll導致遊戲經常崩潰,這裡提供的解決方案可能會對您有所幫助。這種問題通常是由於過時或損壞的顯示卡驅動程式、遊戲檔案損壞等原因引起的。修復這些問題可以幫助您解決遊戲崩潰的困擾。 Nvgpucomp64.dll檔案與NVIDIA顯示卡關聯。當這個檔案崩潰時,你的遊戲也會崩潰。這通常發生在《LordsoftheFallen》、《LiesofP》、《RocketLeague》和《ApexLegends》等遊戲中。 Nvgpucomp64.dll使WindowsPC上的遊戲崩潰如果N

win11蜘蛛紙牌在哪 win11玩蜘蛛紙牌遊戲的方法 win11蜘蛛紙牌在哪 win11玩蜘蛛紙牌遊戲的方法 Mar 01, 2024 am 11:37 AM

在玩夠3A大作以及手遊的小夥伴們,是不是想重溫一下兒時的電腦遊戲呀?那我們一起在windows11中尋找蜘蛛紙牌吧!點選介面上的開始選單,點選「所有應用」按鈕;點選「所有應用」。找到並選擇“MicrosoftSolitaireCollection”,這是微軟的紙牌系列遊戲應用程式;紙牌系列遊戲選擇。載入完成後,進入選擇介面,找到“蜘蛛紙牌”;選擇“蜘蛛紙牌”。雖然介面有些許變化,但還是以前的

英偉達上線 RTX HDR 功能:不支援的遊戲透過 AI 濾鏡達到 HDR 艷麗視覺效果 英偉達上線 RTX HDR 功能:不支援的遊戲透過 AI 濾鏡達到 HDR 艷麗視覺效果 Feb 24, 2024 pm 06:37 PM

本站2月23日消息,英偉達昨晚更新推出了NVIDIA‏‏應用程序,為玩家提供了全新的統一GPU控制中心,便於玩家透過遊戲內懸浮窗提供的強大錄影工具捕捉精彩時刻。在本次更新中,英偉達也引入了RTXHDR功能,本站附上官方介紹如下:RTXHDR是一款AI賦能的全新Freestyle濾鏡,可以將高動態範圍(HDR)的艷麗視覺效果無縫引入到原本不支援HDR的遊戲中。你只需擁有相容HDR的顯示器,即可對大量基於DirectX和Vulkan的遊戲使用此功能。玩家在啟用RTXHDR功能之後,運行即便不支援HD

超級人類(superpeople)遊戲下載安裝方法介紹 超級人類(superpeople)遊戲下載安裝方法介紹 Mar 30, 2024 pm 04:01 PM

超級人類(superpeople)遊戲可以透過steam客戶端下載遊戲,這款遊戲的大小在28G左右,下載到安裝通常需要一個半小時​​,以下為大家帶來具體的下載安裝教學!新的申請全球封閉測試方法1)在Steam商店(steam客戶端下載)搜尋“SUPERPEOPLE”2)點擊“SUPERPEOPLE”商店頁面下方的“請求SUPERPEOPLE封閉測試訪問權限”3)點擊請求訪問權限按鈕後,將在Steam庫中可確認「SUPERPEOPLECBT」遊戲4)在「SUPERPEOPLECBT」中點選安裝按鈕並下

Thrustmaster控制面板無法正常運作或顯示[修復] Thrustmaster控制面板無法正常運作或顯示[修復] Feb 19, 2024 am 10:45 AM

Thrustmaster是一家專門生產遊戲輪和其他遊戲配件的公司,其車輪產品在遊戲界備受歡迎。使用Thrustmaster控制面板可以安裝和調整Thrustmaster輪的設定。如果遇到控制面板無法運作或無法顯示的問題,可能會影響遊戲體驗。因此,當發生這種情況時,需要檢查連接是否正常,確保軟體驅動程式已正確安裝並更新至最新版本。另外,也可以嘗試重新啟動設備或重新連接設備,以解決可能的故障。在遇到問題時,可以參考Thrustmaster的官方網站或聯絡客服以獲得進一步協助。如何訪問Thrustma

華碩發表 BIOS 更新,提升英特爾第 13/14 代處理器遊戲穩定性 華碩發表 BIOS 更新,提升英特爾第 13/14 代處理器遊戲穩定性 Apr 20, 2024 pm 05:01 PM

本站4月20日消息,華碩公司近日發布了BIOS更新,改善了英特爾第13/14代處理器運行遊戲時崩潰等不穩定情況。本站先前報導,玩家回饋的問題包括運行萬代南夢宮格鬥遊戲《鐵拳8》PC演示版時,即便電腦擁有充足的記憶體和顯存,也會出現系統崩潰並提示記憶體不足的錯誤訊息。類似的崩潰問題也出現在《戰地風雲2042》、《遺跡2》、《要塞英雄》、《墮落之主》、《霍格華茲之遺》以及《TheFinals》等多款遊戲中。 RAD公司今年2月發布長文,解釋遊戲崩潰問題是BIOS設定、英特爾處理器的高時脈頻率和高功耗共同

See all articles