作者sunmat (昶(こなた~~~!))
看板GameDesign
標題[請益] 關於網路橋牌遊戲
時間Sat Dec 6 21:00:12 2008
目前我正在做學校的專題
但是我的基礎並沒有打的很好
連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
1F:推 darkflier:你開四個thread去接受四個單一訊息 12/06 21:11
2F:→ darkflier:跟開一個thread去收會進來的n個訊息 12/06 21:11
3F:→ darkflier:有什麼差別嗎? 還是你流量大到需要開那麼多thread? 12/06 21:12
4F:→ sunmat:有道理...因為我是問別人收的方法,他跟我說每個client都要 12/06 21:20
5F:→ sunmat:一個thread去服務他,那時覺得很有道理就這樣寫下去了... 12/06 21:21
6F:→ sunmat:現在想想流量很小的確不用到這麼多thread...謝謝你的回答! 12/06 21:22
7F:推 NDark:一個thread服務四個client,如果5個client怎麼辦.... 12/06 22:03
8F:→ NDark:是程式架構的優化.還是要特化4個client這部份? 12/06 22:04
9F:推 NDark:while loop的話.善用sleep就行了. 12/06 22:06
10F:→ sunmat:嗯...所以一個thread服務一個client這樣比較好?還是看需求? 12/06 22:45
11F:推 darkflier:看需求啦...越多thread就越複雜就越可能當機 12/06 23:32
12F:→ darkflier:C# 印象中是force safe thread所以開越多會越慢 12/06 23:33
13F:→ darkflier:試著想看看每個thread都需要判斷a=0是否成立那a是不是會 12/06 23:35
14F:→ darkflier:一直被lock住?那你就得等他unlock所以會比較慢 12/06 23:35
15F:→ darkflier:c#的話不用去注意是不是被使用 換來的是效能比較不好 12/06 23:36
16F:→ sunmat:喔喔...原來如此~ 謝謝! 12/06 23:37
17F:推 kuso0516:我想藉機問 學多緒要看哪種書阿 我沒有要寫網路程式 12/07 14:31
18F:推 NDark:CodeProject有文章 0rz.tw/8e5db VS6.0搭網路含程式 12/07 17:12
19F:→ NDark: 0rz.tw/21573 單純講.NET上的Thread,從理論開始講 12/07 17:13
20F:→ adms:如果是多人線上到數千人 用while-loop就會明顯比thread快很多 12/08 00:02
21F:推 ppaass:以這種牌類遊戲是屬於 client 多,小訊息多的狀況, 12/18 11:10
22F:→ ppaass:建議是指開一個 thread 專職負責收 message queue 就好。 12/18 11:10