Day: January 8, 2009

  • 关于 web game 运算负载的只言片语

    没办法整理成长篇大论了,就写点只言片语吧。
    起因看这里:http://www.javaeye.com/topic/305801?page=1
    -----------------
    看了一遍,忍不住了,插句嘴~~

    webgame 根本没有,也不需要什么大量实时数据要处理~~

    例如类似部落战争的行军,这个其实早就根据所选兵种、指挥官、宝物等等生成了一个事件存放在事件队列中(可能是内存对象、可能是某种数据缓存更有可能是数据库的某条记录),然后服务器在那个事件事件到达的时候取出事件对象执行一下,得到一个结果,接着存起来。至于行军途中到哪个位置如何如何,那是给玩家想象的,服务器根本不管。总之,事件运算有三种方式:1。玩家请求时已经运算完成,到了特定时间通知玩家。2。事件执行时间运算完成,并通知玩家。3。在服务器空闲时,处理待处理的运算,到了特定时间通知玩家。

    webgame, MMO 实时性不是首先考虑的。例如资源增长,如果服务器有 10W 激活用户,在同一时间增长资源是几乎不可能的。那就将一分钟划分60秒(废话),每秒开一个新线程来处理一部分用户(10W/60)的资源增长。资源增长基本上就是浮点数加减乘除,对于现在的 cpu 来说,并不是很高。何况服务器 N 个 cpu……

    简单的说,webgame 不像 MMO 需要“随时”客户端跟服务器端通讯。更多情况,web 服务器通过某种方式从 game server 中获得一个当前游戏状态的快照返回到浏览器。并从浏览器接收数据,然后在一个可接受的,合理的时间内去修改 game server 的状态。请再次注意,again!这不是“实时”的!

    最后再罗嗦一下,webgame 的 game server 更多情况下是一个 task server。它不需要去预测客户端行为,也不需要计算碰撞、寻找可行路径……
    另外,我个人的体会,RPG 类型的 webgame 在运算负载上来说,远小于策略形的。并且通常只需要 3 台服务器配合:web server、task server、db server。

    哦,还有,如果用 flash 的 socket 方式开发,不在上述范围内。当这种模式是个客户端能力稍差的 MMO 好了。

  • 主修经济的

    今天在例行学习爱枣报年终特刊的时候看到这么一个针对专家提出车票涨价言论的评论,很雷:
    “我是主修经济学的学生,关于春运火车票价的问题,单从经济学的效率理论分析,提高调价确实是正确的,可是这不符合社会公平的要求。在经济学当中,效率和公平从来都是两难问题。所以,并不能说这个经济学理论观点是错的,只能说这个解决方法没有实操性罢了。”
    我不懂经济,不过我懂:如果一个理论没有可操作性。或者与现实相左,那这个理论也就废掉了。上帝啊,为什么这些专家要用一个已经废掉的理论来说事呢?难道因为老百姓不懂经济,拿来糊弄么?还有就是,评论留言的这位“修经济的”,明知道作为票价涨价的理论基础不具有可操作性,那还给大家解释有这么一个具体理论干什么呢?有潜质,当中国经济学家的潜质……专家的事情,我不懂!