作者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
1F:→ dream1124:GAE channel API demo tic-tac-toe project 11/28 23:25
2F:→ LaPass:谢谢关键字 11/28 23:56
3F:→ lovdkkkk:网页的话用一层 div 吃落子 (click) 事件, 下完隐藏就好 11/29 01:00
4F:推 lovdkkkk:(并更新 server 资料,通知对手显示落子层跟更新观众画面) 11/29 01:01
5F:→ lovdkkkk:感觉完全用不到 thread 11/29 01:02
6F:→ lovdkkkk:防作弊的话 server 也加个检查就可以了 11/29 07:42
7F:推 PsMonkey:GAE channel API 看不到 server side 实做方式阿 XD 11/29 17:15