作者LaPass (LaPass)
看板java
標題[問題] 對亦遊戲的 SERVER 端怎麼寫?
時間Thu Nov 28 22:35:40 2013
打算用websocket在網頁上寫個對弈遊戲
例如黑白棋、五子棋、圍棋等等
目前已經將websocket的連線轉接過
所以可以不用管那些技術細節
現在我在做的是對奕室的SERVER部份
就是,兩人輪流子,以及把棋盤的結果傳輸給觀眾的部份
裡面有
1.一群觀眾
2.玩家(a) (要考慮網頁視窗多開的可能性,因為應該會有人這樣幹)
3.玩家(b)
流程是這樣:
1.輪到玩家(a)下棋,通知玩家a進入落子模式
2.等候玩家(a)
3.當任何一個玩家(a)的連線收到落子訊號時,忽略其他玩家(a)連線的落子
並關閉玩家(a)的落子模式
4.通知所有使用者(玩家a、玩家b、觀眾)棋盤上多了顆旗子
5.判斷勝負,如果出現勝負就切換到遊戲結束的流程
6.輪到玩家(b)落子,以下略
因為沒看過別人關於這部份的設計
也不知道該用什麼關鍵字去找這樣的範例或設計模式
自己想了兩個....
一是依照一般的遊戲流程,分成update()跟draw()兩部份
由更上層的執行序控制的邏輯,去定時呼叫計算跟繪圖兩部份
一般遊戲的是60fps,不過如果是對弈類的,應該300毫秒就很即時了
但是 ,這樣可能會讓程式變得很複雜
理由是每次執行到update()時,他都要去判斷現在的流程到哪個地方
然後在決定要作什麼事情這樣
二是專門開一條執行序去跑遊戲邏輯的loop
如果跑到要等待的地方就把他blok在那邊
這樣程式會比較好寫
但是我覺得這方法可能會有個問題就是.....
萬一有一千個人在下棋,就有一千個遊戲室
那不就意味著有一千條執行序在跑?
我沒寫過什麼太大的、一堆人同時在線的程式
不知道這樣寫會不會有什麼問題.....
所以想請問
一般遊戲SERVER是怎麼處理這種遊戲邏輯的?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.38.73.123
※ LaPass:轉錄至看板 GameDesign 11/28 22:36
→ dream1124:GAE channel API demo tic-tac-toe project 11/28 23:25
→ LaPass:謝謝關鍵字 11/28 23:56
→ lovdkkkk:網頁的話用一層 div 吃落子 (click) 事件, 下完隱藏就好 11/29 01:00
推 lovdkkkk:(並更新 server 資料,通知對手顯示落子層跟更新觀眾畫面) 11/29 01:01
→ lovdkkkk:感覺完全用不到 thread 11/29 01:02
→ lovdkkkk:防作弊的話 server 也加個檢查就可以了 11/29 07:42
推 PsMonkey:GAE channel API 看不到 server side 實做方式阿 XD 11/29 17:15