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

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

PS:我不是很想用Flash和ActionScript,所以...
2889 次点击
所在节点    问与答
9 条回复
phjy007lt
2013-11-04 21:21:25 +08:00
还有,比方说,普通的Web开发中,至少服务器端都用MVC的模式,这样的话,数据模型、业务逻辑等界限的分割都很清晰。那假如是Web游戏的话,在架构方面,像网络通信、游戏的具体逻辑、用户系统啥的该如何架构呢。。
ovear
2013-11-04 23:59:24 +08:00
websocket不一定要javascript啊,websocket只是一个协议,顺带着兼容javascript的socket而已。。用Flash都行。能不用轮寻就别用。
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
2013-11-05 12:07:16 +08:00
假如用java来开发,该怎么架构呢
phjy007lt
2013-11-05 14:07:39 +08:00
@ovear 谢谢~不过俺不想用Flash的说。那这样的话,要使用Websocket的话,只能用js了咯...
phjy007lt
2013-11-05 14:09:11 +08:00
@Mutoo 万分感谢!一看到你推荐的这个游戏引擎,我仿佛瞬间觉得Web游戏制作的引擎就好比Web开发的那些框架(Django、RoR等),游戏需要考虑到的一些基本功能、模块、机制都已经架构好了。不知道这种想法或认识是否正确呢?
Mutoo
2013-11-05 16:29:54 +08:00
@phjy007lt 柚子实际上只是游戏服务端引擎,它解决的是客户端与服务器通讯以及服务端架构的问题。游戏的基本功能模块还需要客户端游戏引擎来解决,如果你打算做web游戏的话,客户端可以考虑用cocos2d-html5

游戏的重复性工作不会比一般APP少,所以选好引擎也是提高效率至关重要的一步。
phjy007lt
2013-11-05 18:24:11 +08:00
@Mutoo 实在感谢!我再请教一下,比如说我要写的是一个棋牌类的游戏,这样的话,比如游戏的具体逻辑(比如棋牌的规则等等)是写在哪里的呢?是服务器端还是客户端的呢?
ovear
2013-11-05 18:44:56 +08:00
@phjy007lt 游戏的逻辑要看情况的,如果是涉及平衡性(比如说作弊啥的)就一定要写在服务端的~
反之可以放客户端。其实所谓的游戏服务器架构一般都很简单的。Channel Server ,World Server就够了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/88014

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX