作者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