線上遊戲的資料庫
線上遊戲的資料庫大多都是用MS-SQL(Microsoft)來管理的,另外還有ORACLE、MYSQL等,這邊我也不會講太深,不然連我都會睡著,而且可能網友馬上就把網頁右上的X按下去了,簡單提一點玩家比較關心的,關於遊戲製作和資料庫相關的部分,順便講點盜資料庫的問題和被誤解的點。
遊戲資料庫的重要功能
我想,應該是大部分的玩家都不知道線上遊戲資料的結構和實際作用。
資料庫主要作用是用來管理數據和表單。此外就是用來查詢和分析各種營收,可以從相關的欄位撈出數字,分析遊戲的營收族群和付費比例,例如某道具一天可以獲利多少,是哪些等級的人消費、買了哪些東西、賣出多少個等等。另外舉凡怪物掉寶、數值、技能、玩家能力、NPC列表、地圖編號、座標紀錄、玩家成長數據、對話、各種紀錄等等等等等……,很多都是從表單來管理與變更調整。
表單設計與管理工作
SQL的表單可以由企劃人員用Excel先填好,再丟給server去轉存丟進資料庫讀取,所以表單的欄位需求一般是由企劃開出的,例如以mmorpg的玩家資訊來看,玩家資訊列表的欄位內可能就會有等級、名稱、頭銜、聲望、血量、力、敏、攻、防、技能、屬性點數…諸如此類的數值填在表內,這些就是欄位需求,這很重要,欄位需求沒開完整就會造成有些數據抓不到,不然就是查不出來,甚至產生錯誤。而這些數據的多寡和平衡,全由遊戲企劃人員來控制和調整,表單也可以控制一些東西的開關和機率,例如某個欄位設成0,地圖就進不去;遊戲內送虛擬寶物的寶箱,可以在表單內控制讓它多久出現一次,或是送出幾個就停止。
欄位設定與寶物的保值、監控
我在這邊直接講幾個有趣的案例,網友會比較喜歡看。
以MMORPG來說,我們可以在表單內控制設定一個禮拜只會出兩把大馬士革鋼刀,掉寶重新開啟的時間通常是每週維修時段,所以這個禮拜等於兩把刀出完,就打不到了,你再打五萬隻怪也一樣,得等下個禮拜伺服器重開。所以產生一個很有趣的情況,很多人應該有發現,維修完開機那一天很容易打到東西,或是發生一些幸運的事情,然後維修前一天很難打到寶物,部分就是這個鎖寶的控制。
鎖寶控制並不是故意要限制玩家賺錢什麼的,有很多人都覺得遊戲公司故意鎖寶不讓玩家取得,會幹這種事情都是出了一些利益薰心的管理者所下的命令(例如某倒閉的遊戲公司,鎖寶自己賣)。
以遊戲設計者來看,高等物品的數量管制絕對是必要的,尤其你沒辦法做出很正確的機率設定之下,例如我預估某個武器掉落率為0.01%,大概一萬個玩家幾天只能得到一把,但是有時候機率這東西常會出乎你意料之外,什麼時候會超過你預期,沒辦法掌握,東西的數量掌控一但出錯,很容易造成市場物價平衡瞬間傾斜。
所以控制虛寶取得量除了保障價值以外,再來就方便作監控管理。簡單來講,我一周只送1張波利卡,一個月最多就不會超過5張,萬一這東西逮到有人大量在賣,或是第一個禮拜就發現有人賣兩張,那很明顯可能是遊戲產生漏洞或是設定錯了,這時候就可以來追查這部分,查看看玩家怎樣去弄到這麼多被限制的物品或是哪邊有問題。
但如果單純以機率來控制虛寶的產生,如設定波利卡掉落率五萬分之一,有些人是不是真的運氣很好一個禮拜可以打到五張,還是洗出來的,你不去查就會很難抓到,這是限寶機制和丟給機率去Run的差異。
所以高價的物品除了機率以外,還要做數量的控制,當然其他比較小的材料或垃圾物品,就會單純只以機率來控制掉落率。
其實這部分可以講很多,下次我會針對怪物掉寶的設定和規則直接開一個主題來講!
資料庫重要後端搜尋,違法問題的追查
講完掉寶了,回到資料庫來談,進階一點的話,就如我之前常說的,配合後端資料網頁的表單,就可追查作弊或數據異常玩家,之前我常在談的後端資料就是靠這東西來引導,然後將可能發生異常的數值欄位條列成冊,再請程式使用語法設計成網頁介面,就可成為一套基本的後端監控查詢工具,你只要在網頁頁面按下一個按鍵,就可以查詢「本日某玩家資金流動紀錄」、「每日交易超過XXX元的帳號」、「儲值超過5000點的玩家帳號」等,像這種紀錄都可以做成後端工具來撈資料。甚至可以設定每日把哪些重要的項目在每天幾點寄到你的Email,方便觀察或追蹤,也可以知道遊戲有沒有出事情。
問題追查後如何處理
這邊網友要了解一點,並不是靠著後端系統就一定可以追查異常問題並修正,最重要的還是「人力」,有了後端工具,還要考慮有沒有辦法娜出特定的人力來針對這些問題做追蹤,並且提去測試修正。有些遊戲到了後期,整個團隊可能剩不到五個人,甚至只剩下一兩個程式和一個GM在維護,絕不誇張。這些程式可能還兼任其他遊戲的工作,這時候誰管你後端如何,如果沒有異常當機或重大問題,差不多遊戲就是擺著過一天算一天,然後偶爾辦一下活動,因此玩家回報的Bug可能也堆積成冊,等待無限卻無法到來的處理時間。
所以遊戲的壽命如果到了盡頭,在商業考量之下,很多維護都會被犧牲,如果這些修正工作不會有利益成長,也常常會被放棄掉。在台灣這種很商業化的環境之下「花這些時間幹這些事情,有沒有好處?」這點都優先被放在老闆的腦袋內思考,要盡善盡美通常是建立在利潤之下。所以你在一個沒什麼人玩的遊戲,丟了一個bug回報,然後發現一年半載公司沒有人回應過你,大概就是你這問題小到不會影響他們的營收,或是遊戲已經等著自然死了。
所以當你告訴老闆,玩家有回報某東西,我要花20小時去修改程式,更新一個不會增加利潤,對玩家也不會有太大影響的小問題,如果那20小時你可以做更多對公司有貢獻的事情,你就是會被指派去做後者。
你會覺得遺憾,當然我們也會,有時候我們想讓遊戲更完美,但是從商考量以及和工作時程賽跑之下,老闆把你調去做其他更大的工程,是為了以後要賺更多錢,對遊戲設計者和玩家來說都是無奈的,有時候不是不願意做,而是執行權不在手上,無可奈何,當然這也是線上遊戲商業的一個小環節。所以這也是有時候玩家和遊戲公司兩邊很難產生交集的問題所在。
這種情況能改變嗎?大概可以,等哪一天也許你或我有機會成為決策者,大概就可以改變,當然我也不保證以後我們不會變成他們那個樣子。
:)
星期五, 二月 16, 2007
線上遊戲-遊戲資料庫(上) 鎖寶!不想讓玩家過太好?
去年底有預告說要聊一下資料庫的東西,好不容易利用每天中午吃飯的精華時間整理一點東西,這次要來談談線上遊戲的資料庫。資料庫是做什麼用的?黑客入侵資料庫能做些什麼?盜取資料庫對玩家一定會造成威脅嗎?虛擬寶物鎖寶管制,另外你能跟遊戲公司客服直接取得遺忘的遊戲密碼,你可能正處於危險族群!

由 涼 發表於 2:45 PM | 文章分類: 線上遊戲非法防治系列








由 涼 發表於 2:45 PM | 文章分類: 線上遊戲非法防治系列
迴響留言
"SQL的表單可以由企劃人員用Excel先填好,再丟給server去轉存丟進資料庫讀取"
我最怕就接到這種"資料庫". 大多數的企劃都不懂得正規化與命名規則.
通常接手的人會吐血而死. 要不是資料的空間大得要死, 就是鬼才看得懂的schema, 完全沒有軟體工程的設計概念.
最後就是一堆巴垃都在資料庫中.
比較好的方式, 企劃把需求提出. 交由SA去作完分析, 在去設計, 最後coding.
OOAD, 最重要概念就是要作到隱藏資料. 所以企劃看到就是一個工具, 一個表單.
但實體資料庫規劃, 與命名其實企劃不太需要知道.
我最怕就接到這種"資料庫". 大多數的企劃都不懂得正規化與命名規則.
通常接手的人會吐血而死. 要不是資料的空間大得要死, 就是鬼才看得懂的schema, 完全沒有軟體工程的設計概念.
最後就是一堆巴垃都在資料庫中.
比較好的方式, 企劃把需求提出. 交由SA去作完分析, 在去設計, 最後coding.
OOAD, 最重要概念就是要作到隱藏資料. 所以企劃看到就是一個工具, 一個表單.
但實體資料庫規劃, 與命名其實企劃不太需要知道.
這就是教育訓練的問題了,老實講由誰去命名都沒關係,但是規則要制定出來,大家查詢的文件要一樣,省去很多溝通會出現的麻煩。
不過老實說我比較贊同你的意見,這部分一開始的需求由企劃提出後,應該由程式人員來執行規劃所有部分,當然包含欄位命名。 :)
個人經歷是,這部分由企劃來做,簡直是自找麻煩......
不過老實說我比較贊同你的意見,這部分一開始的需求由企劃提出後,應該由程式人員來執行規劃所有部分,當然包含欄位命名。 :)
個人經歷是,這部分由企劃來做,簡直是自找麻煩......
天堂掉寶規則我不是很清楚,這部分大概無法回答你
維修通常是做玩家資料檔的備分,以及各種遊戲資料存檔
以防萬一損毀或有重大問題可以回溯
另外就是會有一些bug修正必須在伺服器關機才能更新檔案
因為這些動到程式的部分重開才會生效,所以只能維修時做
不知道有沒有回答到你的問題~ :)
維修通常是做玩家資料檔的備分,以及各種遊戲資料存檔
以防萬一損毀或有重大問題可以回溯
另外就是會有一些bug修正必須在伺服器關機才能更新檔案
因為這些動到程式的部分重開才會生效,所以只能維修時做
不知道有沒有回答到你的問題~ :)
張貼迴響:
引用列表
本篇文章引用網址: http://yblog.org/api/trackback/?id=6968
沒有引用
本篇文章引用網址: http://yblog.org/api/trackback/?id=6968
沒有引用
訪客來源網址(僅列最多的10個外部來源):
- https://www.google.com.tw/ (653)
- https://www.google.com/ (232)
- http://www.google.com.tw/ (17)
- https://www.google.com.hk/ (13)
- http://yblog.org (10)
- https://www.google.com.tw (6)
- http://www.google.com/ (5)
- https://tw.search.yahoo.com/ (5)
- android-app://com.googl...lequicksearchbox (5)
- http://www.google.com/search (5)
- http://www.google.com/webhp?source=search_app (4)
- http://forum.gamer.com....94743&tnum=1 (3)
- http://tw.search.yahoo....ei=utf-8&v=0 (3)
- http://www.google.com.t...ource=search_app (3)
- http://www.google.com/s...ome&ie=utf-8 (2)
59.104.91.* | 標記為廣告 | 回應此篇迴響