申请了n多免费的web空间,除了一两个性能好的拿来测试代码以外 一般基本没有用处 有一天我突然想到能不能用这些web空间做些别的事呢 比如游戏服务器! 一般人估计马上就会否决了我的这个想法 诚然,web空间响应慢,还有数据传输效率比较低 再一个无法实时连接 因为http服务器给出数据后会马上断开连接 当然你也许可以靠发送http请求头来使connection保持keep-alive 但是这个保持也不长久 不过经过很长时间的思考,我认为web空间完全可以用做游戏服务器 当然不是所有游戏都适用,象cs的就不行,呵呵 那么哪些游戏适合呢??? 我认为凡是回合制的游戏都适合,比如联众起家的那些打牌啊,打麻将啊,下棋啊都可以 当然一些策略性的游戏也可以.比如策略的三国 现在我就拿5子棋来举例说明吧 之所以选择5子棋是因为5子棋需要传送的数据很少,再一个数据格式很简单,同时如果不需要人机对战而只是人与人对战的话客户端很简单 我们可以把下五子棋看成两个人在一个特殊的聊天室里对话 这个聊天室里面只能你一句我一句的说话,绝对不可以有两个人连续说话 服务器端需要有个记录文件,记录上一步是谁说话来着的,这样在甲提交说话的信息时判断这次是不是他说话从而决定是否把甲提交的信息记录下来并输出 想想看,五子棋是不是这样呢,只不过他发送的数据不是说话的信息,而是用户落子的坐标,就是一个x和y,当然前面还要加个数据类型,表示这个信息是下棋指令,因为用户发送的不单是下棋,还有别的指令,比如"投降" 这个过程客户端的具体实现跟聊天室差不多,我想我不用说了,请各位参考网络上的聊天室代码 需要讲的是服务器端的响应方式以及内部的一些结构 我是比较赞成用get方式传送数据的 因为这个数据传送比较简单(这个是我在使用vb的inet控件时候的深切体会,一个post方式传送数据害我在各大论坛问了数天,结果最后还是自己解决的) 数据输入后就要判断数据类型,即web空间要知道这个数据是干什么的 这个可以靠制定一套协议来解决,如果有非法的信息或者不符合程序的信息应该停止操作并输出error 如果数据处理成功应该输出ok,并且给出相应的信息,比如你传送的是下棋的数据,那么在ok后面会有"甲方,落子坐标x,y"如果你传送的是投降的信息,那么ok后面就会有"对战结束,甲方投降",这样输出是为了方便客户端核对数据是否准确 我在创亿无限群里提出这个思路的时候曾有群友指出,web空间承受不了许多同时连接和频繁的刷新 我认为可以这么解决 首先,说刷新频繁没有多少根据,因为免费的web空间开聊天室又不是没有,下五子棋的刷新频率完全可以参考聊天室的刷新频率,聊天室可以运行,五子棋自然没事 再一个,同时连接问题,具体的问题是如果有许多房间的话,可能同时连接的人就非常多了,这个问题确实是个不能忽略的 我的解决方案是:完全分布式 就是不同的房间可以分布在不同的服务器上 比如我在a服务器申请了一个比较好的免费空间,那我装两个房间,而在另外b服务器上申请的一个比较差的空间,我就只装一个房间.这样一来,问题就解决了,因为下棋的只有两位,带观战的也就几十个人,如果真的是高手对决有n多人观战的话,那完全可以买个收费空间(都做到这个知名度了还没钱买空间??) 那么又有人问了,还需要一个汇总的服务器,就是游戏的大厅,这个同时连接是很大的,我认为可以把总服务器做成一个黄页,这个黄页上没别的,就是记录了一些安装了游戏房间的web地址,是静态文本,这样服务器的负担完全降低下来了 你要觉着还不保险,你可以做多个分服务器,类似镜象服务器那样,就是内容一样,但放在不同空间上,比如网通的用户访问装在网通空间上的,电信的访问装在电信空间上的 思路我就说到这里,至于具体如何实现大家可以到我群里来探讨 (隐私资料删除 2013/10/25)