身為獨立開發者,擁有一套 Server 的夢想是否有點超過?又或者也有人和我一樣,無論是 Online Game 也好,連線遊戲也好,分割畫面也好,能和人一起玩的遊戲,是我從小就最喜歡的遊戲方式;所以,今天想嘗試用簡單的方法,一步一步的來聊聊,如何開發一組遊戲伺服器架構。 圖1實在是過分簡單了些,但這是個起點,有可能是一台玩家配對伺服器,可能是玩家聊天室、也可能是提供某些遊戲運算的伺服器;圖中所謂的 Server,通常就是一支由我們自行開發的程式,無限迴圈的在一台主機裡執行,負責不停的接受連線、收取封包、處理請求、然後回覆給玩家,所以最基本的一支 Server 程式,要具有聽取某 Port 值的連線請求、收送封包的功能,當然,還要能夠同時處理所有使用者的連線事務。 現在的 Server 功能: Game Server 負責遊戲功能運算 - 網路連線、封包收送、執行請求。

「儲存玩家資料」 但到目前為止,遊戲的資料並不儲存在 Server 端,一般來說,或多或少會存一些玩家資料在 Server 端,或許是帳號密碼、排行榜分數、登入位置,於是我們加入了資料庫,如圖2。

在圖2中,開始加入了一台 Database,這個 Database,指的是一台安裝了資料庫系統的主機,可能是 MySQL,可能是 NoSQL,重點是資料必須有良好的管理與存取運作方式,採用資料庫系統是最好的;當然,想直接存成檔案也是沒人反對,比如說供人下載用的圖片與更新檔,通常是不會塞進資料庫裡去的;不熟悉資料庫的話,可以先把資料庫想像成 Excel 檔案 (以MySQL為例),裡面是二維的表格,橫著一行行的,是一個個的玩家資料,直著的欄位,是一個玩家的各種資料,有了 Database,我們可以把玩家的帳號、分數、各種資料分門別類的整齊存入。 有了資料庫,我們的伺服器安全性、社群的能力,便開始大幅提升,我們可以驗證玩家身分、提供離線互動系統,玩家參觀他的好友、評價、留言、做一些輕互動、甚至 PvP,都不需要好友在線上,Database 擁有好友的一切資料;到這裡,現在 Game Server 上的這支程式,除了前面所講的網路連線功能,還要有和 Database 溝通的能力,透過該資料庫廠商提供的 API,呼叫函式就可以連上資料庫,並且使用 SQL 語法存取你想要的資料。

 

創作者介紹

tc的家

tckitkit 發表在 痞客邦 PIXNET 留言(0) 人氣()