V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hh54188
V2EX  ›  问与答

编写 web Server 与 game server 有什么区别?有什么要注意的地方

  •  
  •   hh54188 · 2015-04-01 14:41:45 +08:00 · 2710 次点击
    这是一个创建于 3524 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想编写一个小小的在线游戏,但是发现用编写web server的思路编写game server完全行不通,比如我目前想到了以下几个比较幼稚的问题需要解决:

    • game server是不是比web server更高并发?
    • 如何做反作弊?纸牌游戏还好,每一步都可以交给服务器处理和校验。但是实时性高的在线射击游戏哪些逻辑会放在客户端,哪些放在服务器,如何实现反作弊?杜绝反作弊是不是永远都不可能的?为什么?
    • http协议是不是已经不适用于游戏通信了?个人猜测是因为TCP协议要求可靠导致通信时间过长?那一般使用什么协议进行通信?这类协议的特征是什么?网页游戏有没有什么好的解决办法?websocket效率如何?
    • 例如我要实现多房间同时进行游戏,那我应该如何做?目前有两个想法,选择一是有多少个房间就运行多少个实例,但如何分配实例与线程资源的关系?二是可不可以有一个或几个总控,根据输入的数据处理后返回,逻辑在这里,数据在别处,类似于单例模式

    最后,有没有这方面的文章和书籍可以参考?
    多谢各位啦

    5 条回复    2015-04-02 09:28:51 +08:00
    bjtugun
        1
    bjtugun  
       2015-04-01 16:58:45 +08:00   ❤️ 2
    1. web server比game server更高并发。但是game要求的连续实时性比较高,希望延时稳定的保持在100ms以下。这个延时不仅仅指网络延时,包含输入到反馈的逻辑延时。

    不同游戏类型对实时性有不同要求,节奏慢的游戏延时可以放宽到200-400ms,但是要稳定不要剧烈波动。

    1. 理论上,所有涉及属性、财富和判定的操作都应该由服务器处理。但是实际情况为了手感会有种种妥协,比如客户端预算,或者信任客户端再校验。手游因为网络环境的不确定性会有更多妥协。

    反外挂:通信加密,客户端加壳,客户端内关键变量加密,游戏设计增加外挂获利成本。但是只要你的游戏够火,你就不可能杜绝外挂。

    1. 根据游戏类型决定协议。卡牌游戏用HTTP没什么,一个FPS当然用TCP长连接发二进制报文了。

    1. 一个进程可以承载多个房间,设计好可以水平扩展的结构就行了。这个是结构问题,各种设计大同小异的。
    hh54188
        2
    hh54188  
    OP
       2015-04-01 18:02:32 +08:00
    @bjtugun ,非常感谢你的回答,对我有很大的帮助
    顺便也去你的博客看了一看,感觉很可惜的是你回老家工作了,如果你还在北京的话可以出来交流一下
    也了解到你有寻求remote job的需求,建议可以去一些国外的网站上找找,至少在web这块还有很多Freelance的需求的,比如http://jobs.smashingmagazine.com/freelance
    aaaa007cn
        3
    aaaa007cn  
       2015-04-01 21:16:32 +08:00
    http://mienfield.com/
    一年前流行了一阵子的在线多人扫雷
    就是用的 websocket 和服务器实时通信
    ryd994
        4
    ryd994  
       2015-04-01 21:41:04 +08:00 via Android
    反作弊不一定就要实时验证啊,抽样记录,有空再审查,对老账号信任不验证,都是可以的
    bjtugun
        5
    bjtugun  
       2015-04-02 09:28:51 +08:00
    @hh54188 感谢推荐,看来还是web方面的机会比较多啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2831 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:47 · PVG 21:47 · LAX 05:47 · JFK 08:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.