推 UbaldJimenez:推,連線遊戲大抵上的確是這樣處理 11/04 00:12
※ 引述《LaPass (LaPass)》之銘言:
: 全文恕刪
: 先別管原PO的能力到底到哪裡
: 我想請問
: 如果有位小程式設計師(我承認就是我)
: 有能力完成一般小遊戲 (打磚塊、俄羅斯方塊之類的)
: 有能力做出server-client架構
: 有能力自訂/寫出簡單的MSN之類的通訊軟體
: 如果像這樣的人,想去完成一個數千甚至數萬人在線的網路遊戲
: 你們會給什麼建議呢?
: 因為會寫程式
: 所以知道,即使自己在測試時,開個五六個client端做測試
: 也不能能保證在上千上萬人時能正常運作
: 請問在寫這種大架構的遊戲時,有什麼注意事項或是know-how?
: 很多東西是在書上找不到的....
壓力測試 這是多人互動程式必做的
如果是大型3D MMO的話 還要做client端的畫面承載測試
而server的話 簡單的方法
就是寫一支bot程式 模擬client行為
然後大量開啟跟server溝通 去找出效能瓶頸點
80%的效能問題 來自20%的程式碼
有可能是大量IO處理導致 server空轉等待
也有可能是 大量的序列化/反序列化處理 浪費server效能
而越複雜的遊戲 server要處理的溝通就越多
先去參考類似遊戲的server/client架構
分析優缺點 然後把它實作並改良
比如 神魔 會在第一次開啟戰鬥後
就把所有關卡的掉寶資料透過xml傳給client
優點 不用每次打完一支怪就跟server要掉寶結果
還有資料驗證處理
server才是真實資料的存放處
client的資料只是顯示用 也就是不可信任 避免玩家透過非法手段修改
ex:神魔的體力值 真實值存在server端的DB上 client上只是給玩家參考用
因此即使玩家修改client端體力 在跟server做驗證後就會修正回正確值
server寫好了 要架在哪?
MS-Server環境方便普及 商業授權費貴 人力便宜
Linux-like環境便宜 但要找能維護linux跟能開發linux-server的人貴
這也是一開始在開發時 就要想到的問題
最後如果經驗不足 就不要把餅一開始就畫太大
把系統做好擴充性 會比一次大量功能一起做然後出包出到死的好
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.240.239.100
※ 編輯: VVll 來自: 123.240.239.100 (11/02 04:42)