[請益] 關於網路橋牌遊戲

看板GameDesign (遊戲設計)作者 (昶(こなた~~~!))時間16年前 (2008/12/06 21:00), 編輯推噓7(7015)
留言22則, 6人參與, 最新討論串1/1
目前我正在做學校的專題 但是我的基礎並沒有打的很好 連windowsAPI或著Directx、winsock之類都沒有學過 開發環境是使用c# 我用我目前學到的觀念 把server分成三個部份 畫面、網路、流程控管 關於畫面我是用裡面GDI+來畫一些簡單方形、圓形、寫字之類 他會負責讀取流程給的state來畫出對應的畫面 在流程有一張Table表紀錄所有的圖片的location 然後負責畫面的class就照著那張Table和State來更新畫面 但是我一直覺得這方法很奇怪 這是一個小遊戲還可以這樣做,但是如果是越來越複雜、圖片越來越多的程式 應該不可能用這種方法一個一個location放上去吧? 動畫的部份也是在流程那邊改變圖片的location之後更新一次畫面的方式 所以想請問是不是有更好的方法呢? 網路部份我也有疑惑 例如4個人連進來玩牌 我用了4個Thread去一直讀取他們送來的資訊 並且放進一個player的class去紀錄 之後流程設定了一個Timer去跑個迴圈讀取4個人送來的東西 然後根據傳來的東西做相對應的事情 這樣的作法是不是很奇怪? 因為本身有Thread去服務4個client了 但是流程內又有一個Timer再去讀取player的class的訊息 最後是一個程式的問題 在寫流程的時候我常常會遇到程式必須等某個值被改變我才會繼續往下跑 例如我必須等待client出牌之後、畫出相對應的動畫、更新下一次出牌的人 目前解決辦法是用while一直去等直到事情發生... 不知道是不是有什麼方法能夠解決這種問題呢? 謝謝各位耐心的看完我的問題@@ 請各位盡量指出我的錯誤點,我會繼續學習的>"< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.151.204

12/06 21:11, , 1F
你開四個thread去接受四個單一訊息
12/06 21:11, 1F

12/06 21:11, , 2F
跟開一個thread去收會進來的n個訊息
12/06 21:11, 2F

12/06 21:12, , 3F
有什麼差別嗎? 還是你流量大到需要開那麼多thread?
12/06 21:12, 3F

12/06 21:20, , 4F
有道理...因為我是問別人收的方法,他跟我說每個client都要
12/06 21:20, 4F

12/06 21:21, , 5F
一個thread去服務他,那時覺得很有道理就這樣寫下去了...
12/06 21:21, 5F

12/06 21:22, , 6F
現在想想流量很小的確不用到這麼多thread...謝謝你的回答!
12/06 21:22, 6F

12/06 22:03, , 7F
一個thread服務四個client,如果5個client怎麼辦....
12/06 22:03, 7F

12/06 22:04, , 8F
是程式架構的優化.還是要特化4個client這部份?
12/06 22:04, 8F

12/06 22:06, , 9F
while loop的話.善用sleep就行了.
12/06 22:06, 9F

12/06 22:45, , 10F
嗯...所以一個thread服務一個client這樣比較好?還是看需求?
12/06 22:45, 10F

12/06 23:32, , 11F
看需求啦...越多thread就越複雜就越可能當機
12/06 23:32, 11F

12/06 23:33, , 12F
C# 印象中是force safe thread所以開越多會越慢
12/06 23:33, 12F

12/06 23:35, , 13F
試著想看看每個thread都需要判斷a=0是否成立那a是不是會
12/06 23:35, 13F

12/06 23:35, , 14F
一直被lock住?那你就得等他unlock所以會比較慢
12/06 23:35, 14F

12/06 23:36, , 15F
c#的話不用去注意是不是被使用 換來的是效能比較不好
12/06 23:36, 15F

12/06 23:37, , 16F
喔喔...原來如此~ 謝謝!
12/06 23:37, 16F

12/07 14:31, , 17F
我想藉機問 學多緒要看哪種書阿 我沒有要寫網路程式
12/07 14:31, 17F

12/07 17:12, , 18F
CodeProject有文章 0rz.tw/8e5db VS6.0搭網路含程式
12/07 17:12, 18F

12/07 17:13, , 19F
0rz.tw/21573 單純講.NET上的Thread,從理論開始講
12/07 17:13, 19F

12/08 00:02, , 20F
如果是多人線上到數千人 用while-loop就會明顯比thread快很多
12/08 00:02, 20F

12/18 11:10, , 21F
以這種牌類遊戲是屬於 client 多,小訊息多的狀況,
12/18 11:10, 21F

12/18 11:10, , 22F
建議是指開一個 thread 專職負責收 message queue 就好。
12/18 11:10, 22F
文章代碼(AID): #19EdTTnj (GameDesign)
文章代碼(AID): #19EdTTnj (GameDesign)