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

请教关于网页的简单游戏的架构等问题

  •  
  •   phjy007lt · 2013-11-04 21:17:51 +08:00 · 3064 次点击
    这是一个创建于 4066 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我的想法是想做一个桌游的对战游戏(2-4人左右,属于棋牌类)。原本想做成客户端的,但后来还是觉得Web端的最方便,无论是电脑还是平板都可以玩。
    之前基本没有游戏开发的经验或认识,所以在架构方面就没啥想法了...我目前的想法是,用户登录后可以创建房间,然后其他用户可以加入房间来进行游戏。我也咨询了过几位朋友(尽管貌似他们也没有相关经验,但我觉得还是有收获),貌似都推荐用WebSocket来做。那这样的话,势必是不是势必就要用js来做了?之前我只对Web开发有所了解,用Django做过一些东西。但我仔细想了想,像Web网站这样的程序是不是可以认为是一个单向的通信模式,即“只有在用户向服务器发起request之后,服务器才会response回给相应的用户”;但在线多人游戏的话,应该就需要每个用户和服务器之间的一个双向通信了,即服务器也会经常主动发给各个用户一些信息,来维持整个游戏和各个用户之间的同步。基于这样的想法,我觉得好像当前的Web开发框架(就比如Django)都无法套用到这样的通信模型上。有朋友说可以用Node.js,但我也没有任何Node.js经验(求大牛莫拍砖...),因此也不知道能否实现。另外,还有朋友提醒我说,尽管我可能认为我的游戏的动画方面的特效要求很低,但还是建议我用一些游戏引擎,来简化一些代码和操作。最后就是想把这个游戏架在SAE或者BAE上面。
    因此在这里真心求教各位大牛,聊聊大家对Web在线类的游戏技术方案、架构或具体设计方面的任何想法,先谢过啦。

    PS:我不是很想用Flash和ActionScript,所以...
    9 条回复    1970-01-01 08:00:00 +08:00
    phjy007lt
        1
    phjy007lt  
    OP
       2013-11-04 21:21:25 +08:00
    还有,比方说,普通的Web开发中,至少服务器端都用MVC的模式,这样的话,数据模型、业务逻辑等界限的分割都很清晰。那假如是Web游戏的话,在架构方面,像网络通信、游戏的具体逻辑、用户系统啥的该如何架构呢。。
    ovear
        2
    ovear  
       2013-11-04 23:59:24 +08:00
    websocket不一定要javascript啊,websocket只是一个协议,顺带着兼容javascript的socket而已。。用Flash都行。能不用轮寻就别用。
    Mutoo
        3
    Mutoo  
       2013-11-05 09:46:19 +08:00
    pomelo.netease.com
    可以用网易开源的柚子引擎(Pomelo, node.js游戏服务端),推荐你读一下它的架构说明,会有很多灵感的。
    https://github.com/NetEase/pomelo/wiki/pomelo%E6%A1%86%E6%9E%B6%E6%A6%82%E8%BF%B0
    huwewa
        4
    huwewa  
       2013-11-05 12:07:16 +08:00
    假如用java来开发,该怎么架构呢
    phjy007lt
        5
    phjy007lt  
    OP
       2013-11-05 14:07:39 +08:00
    @ovear 谢谢~不过俺不想用Flash的说。那这样的话,要使用Websocket的话,只能用js了咯...
    phjy007lt
        6
    phjy007lt  
    OP
       2013-11-05 14:09:11 +08:00
    @Mutoo 万分感谢!一看到你推荐的这个游戏引擎,我仿佛瞬间觉得Web游戏制作的引擎就好比Web开发的那些框架(Django、RoR等),游戏需要考虑到的一些基本功能、模块、机制都已经架构好了。不知道这种想法或认识是否正确呢?
    Mutoo
        7
    Mutoo  
       2013-11-05 16:29:54 +08:00
    @phjy007lt 柚子实际上只是游戏服务端引擎,它解决的是客户端与服务器通讯以及服务端架构的问题。游戏的基本功能模块还需要客户端游戏引擎来解决,如果你打算做web游戏的话,客户端可以考虑用cocos2d-html5

    游戏的重复性工作不会比一般APP少,所以选好引擎也是提高效率至关重要的一步。
    phjy007lt
        8
    phjy007lt  
    OP
       2013-11-05 18:24:11 +08:00
    @Mutoo 实在感谢!我再请教一下,比如说我要写的是一个棋牌类的游戏,这样的话,比如游戏的具体逻辑(比如棋牌的规则等等)是写在哪里的呢?是服务器端还是客户端的呢?
    ovear
        9
    ovear  
       2013-11-05 18:44:56 +08:00
    @phjy007lt 游戏的逻辑要看情况的,如果是涉及平衡性(比如说作弊啥的)就一定要写在服务端的~
    反之可以放客户端。其实所谓的游戏服务器架构一般都很简单的。Channel Server ,World Server就够了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6147 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 02:29 · PVG 10:29 · LAX 18:29 · JFK 21:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.