none
VS2005使用C#,開發多人連線遊戲平台該如何實作? RRS feed

  • 問題

  •  

    小弟目前接觸到必須開發一個線上的遊戲平台 , 可多人連線

    之前看了很多socket相關的資料 , 是否這樣的平台 , 使用socket是最好的選擇??

    因為實在沒有一個具體的方向 , 所以希望能請版上的各位高手指點一下

    感謝~

    2008年11月18日 上午 08:36

解答

  • HI,

     

    從效能與廣域網路的角度來看, Socket都是不錯的選擇

     

    tihs

    2008年11月18日 上午 09:36
  • 這二種我都沒用過.

    Dirextx 文件我有喵過,知道有 聲音,圖形,網路...功能.

    這只是我的建議.在系統分析時就把所有的問題都找出來,然後找出最佳的入口點.

    如果你用Socket 去做,做MSN 做 影像,做合作開發,跟做遊戲他的準則跟概念可能不同.

    其它的如ERP跟遊戲都有儲存的問題,但你千萬不要以為你的資料存取很強,就可以寫出很好的遊戲.

    所以你把整個文件看完在去決定怎麼做.

    千萬不要邊想邊做,遇到什麼解什麼這種心態.

     

    2008年11月19日 上午 03:32

所有回覆

  • HI,

     

    從效能與廣域網路的角度來看, Socket都是不錯的選擇

     

    tihs

    2008年11月18日 上午 09:36
  • 嗯嗯~~所以主要方向還是在多緒的Socket囉~~

    感謝您的回答

    那我再來好好研究該如何寫~~

    謝謝您

    2008年11月18日 上午 09:43
  • 可是用C#寫TCP連線
    封包會lost滿多的耶
    原因不明

    以前試過以C#寫Windows Service
    結果才不到100的User去模擬負載
    封包掉一堆
    2008年11月18日 上午 11:16
  • 我目前還沒碰上掉封包 (VBNET)

    建議你檢查接收段程式碼,那邊沒處理好可能會誤判。

    2008年11月18日 下午 01:39
  • 直接學Directx Or XNA Or 其它的遊戲開發引擎.

    用 Socket 太辛苦了吧!

    2008年11月19日 上午 12:15
  • 因為我本身沒這方面的經驗 ,所以公司一開始只說可能是用Socket做,我就朝這方面去看了,

    他是算開發一種類似宏碁戲谷那樣的遊戲平台,有個大廳,然後可以跟其它玩家一起玩,

    因為是Server/Client的架構,Server端有一支AP , Client端也有一支AP,然後去做連線

    大概類似這樣吧

    所以我都朝著如何寫Socket去讓多人連線這方面找資料

    感謝版上的各位高手給的提示,如果有更好的建議,小弟都會跟同事討論該用哪種方法去開發

    感謝

     

    2008年11月19日 上午 02:31
  • 老闆有交代,菜鳥要忍耐.

    如果有模型,就照原模型去做.

    如果還在分析階段,你就可以向老闆提幾個方案跟建議.

    用Socket 有許多的難度,尤其在多人,多工下是很複雜的.

    我有用過Socket 去做影音傳輸,MSN...一二個點傳輸還OK,當你有多個點在互傳,很多問題就來了.

    而且你要寫個傳輸引擎,你可能要花1-2個月,那你其它的部分就會Delay?

     

    2008年11月19日 上午 02:54
  •  

    應該算還在分析階段,只是原則上是用VS2005,C#去寫

    因為公司也是第1次接這種的,所以也不太清楚該如何做

    請問好說大,如果用VS2005,C#是否有什麼更好的做法??

    感謝您給予寶貴的意見

    2008年11月19日 上午 02:59
  • 就我說的用XNA OR Directx .

    將問題點放在 你的遊戲邏輯裡.而不要在底層的架構了.

     

    2008年11月19日 上午 03:03
  •  

    我目前負責的,是關於Server端AP的開發,如果只管通訊部份,是否還是用XNA OR DirectX比較好?

    例如:帳號審核,大廳版本更新,遊戲下載...等等的功能

    2008年11月19日 上午 03:21
  • 這二種我都沒用過.

    Dirextx 文件我有喵過,知道有 聲音,圖形,網路...功能.

    這只是我的建議.在系統分析時就把所有的問題都找出來,然後找出最佳的入口點.

    如果你用Socket 去做,做MSN 做 影像,做合作開發,跟做遊戲他的準則跟概念可能不同.

    其它的如ERP跟遊戲都有儲存的問題,但你千萬不要以為你的資料存取很強,就可以寫出很好的遊戲.

    所以你把整個文件看完在去決定怎麼做.

    千萬不要邊想邊做,遇到什麼解什麼這種心態.

     

    2008年11月19日 上午 03:32
  • 謝謝您的回答~~小弟受益良多~~

    我會再和同事討論如何做最好,以及分析好整個架構的

    感謝~~

    2008年11月19日 上午 03:35
  • XNA OR DirectX?
    你要先決定Server端的OS是跑哪一種的吧?

    如果不是Windows的話
    請改用像是ACE之類可跨平台的Library
    http://www.cs.wustl.edu/~schmidt/ACE.html
    2008年11月19日 上午 03:59
  • OS是WINDOWS

    2008年11月19日 上午 04:01
  • 說的也是,寫遊戲直接用 DirectX 就好了嘛~

     

    DirectPlay 內建多種連線方式,還不只 TCPIP 說~

    2008年11月19日 上午 10:05
  • 個人是建議

    分析的時候先把通訊層切開來

    實作的時候先用最熟悉的方式去實作 (或是範例最簡單的)

     

    等整個大架構都完整或是出現重大問題的時候

    再來調整通訊這一段

     

    畢竟通訊很重要,可是老闆看不到阿 XD

    2008年11月20日 上午 02:04
  • 好抽象的邏輯!

    系統分析時不是將所有問題點找出來.

    分析時架構大小,範圍,模型,方式都已經訂出來?

     

    系統架構跟通訊方式是密不可分的.

    一開始你就要決定通訊方式.決定是內網通訊,網際網路通訊.決定通訊協定,資料結構,序列化方式....怎麼可能讓你隨便找方式做.

     

    2008年11月20日 上午 02:34
  • 系統分析本來就要因地制宜,不是每個人分析的系統類型都和你我一樣,也不用急著去質疑別人吧。
    2008年11月20日 上午 02:43
    版主
  •  

    呵呵
    分析真的是因地制宜

     

    以發問者的問題來說
    協定可以用 TCP, UDP, HTTP, SOAP...
    實作可以用 Socket, TcpClient, DirectX, Remoting, WCF...
    而這些再做專案的時候
    可能沒有太多的時間與精力去比較優劣

     

    針對某個問題點
    一下子找不到好的解決方案
    到不如先將問題點切割出去
    用簡單的方式(或熟悉的方式)先解決
    (當然...前提是要先規劃出可抽換的層)

     

    至於,系統跟通訊
    個人習慣是將
    系統跟通訊切割成不同的層
    切割的方式
    許多的前輩有探討過
    就不班門弄斧了

    2008年11月20日 上午 05:39
  • 分析要具經驗的人去做.

    你只要具一定經驗的你就能知道哪些協定有哪些特性,哪些限制.

    比如說要寫網際網路協定的就可能限制在Http,其它的協定可能會被防火牆檔掉.

    編碼方式,如果講求跨系統可能要編碼成XML,但這會犧牲效能.編成二進制碼則相反.

     

    另外你要切出來資料結構去跟通訊層溝通.哪些要其它層做,哪些通訊層做....太多東西要事先考慮.

     

     

    2008年11月20日 上午 05:53
  • >以發問者的問題來說
    >協定可以用 TCP, UDP, HTTP, SOAP...

    UDP 會有掉封包的問題, 不建議新手去碰這
    HTTP 是純文字在傳的, 而且還有傳 HTTP 檔頭, 要傳封包量變大
    SOAP 是 XML + HTTP 在傳的, 要傳封包量變更大

    > 實作可以用 Socket, TcpClient, DirectX, Remoting, WCF...

    建議用 Socket, TcpClient,
    DirectX, 用在LAN-Game還OK, 但Internet恐不太合用, 看人啦, 據說有一些特殊的技巧
    Remoting, WCF... 則還沒用過, 無法置評


    player
    2009年2月6日 上午 11:37