javascript - 浏览器多人网络策略——这看起来是一个可行的解决方案吗?

标签 javascript python webgl multiplayer gevent

<分区>

我有兴趣制作某种多人 Angular 色扮演游戏,作为一种纯粹基于浏览器的游戏,几乎没有或没有插件要求。经过大量研究,我得出了以下计划。我知道我在这里引用的某些技术并未在所有浏览器(特别是 IE)中采用,但我暂时愿意接受。

另外 - 我知道 MMO 在任何情况下都是一个值得为之奋斗的崇高目标,但过去我在类似的方向上做过很多较小的项目,我觉得我想好好尝试一下终于。

所以这是一个粗略的概述,我很想听听任何人都可以在这种安排中看到的明显问题:

客户: WebGL/Javascript(可能是three.js)。使用浏览器本地存储来保存游戏 Assets ,接受删除浏览器缓存将删除这些 Assets 。

消息: 使用 google protocol buffers 对客户端/服务器之间的消息进行编码,为了方便和减小尺寸。消息传递将通过 WebSocket。

游戏服务器:gevent 之上运行在 python 中(看起来是处理许多并发的好解决方案)。将使用分片模式构建,基于设计 here:

数据库服务器: 数据库为MySQL,游戏服务器与数据库之间为PHP。

详情: 我打算让游戏服务器每秒大约更新单个客户端 15-20 次,并使用客户端预测来填补空白。客户端可以 30 fps 的速度向服务器发送键输入/消息。我更喜欢尽可能接近实时的体验,而不是回合制。我主要担心的是 WebSocket 基于 TCP 的协议(protocol),这会使整个事情变得不可能吗?

这个解决方案对 SO 来说是否现实?

非常感谢,

最佳答案

使用 localStorage API 通常可以获得 5MB 的空间。如果你真的有一个带声音/音乐的 3D 游戏,它很快就会被你的 Assets 消耗掉(现在高质量的 mp3 有多大?)。您需要非常积极地压缩 Assets ,并且很可能必须想出一种机制,在游戏运行时将内容流进流出本地存储。

我会问为什么游戏服务器和数据库之间需要PHP。游戏服务器不能直接与数据库对话并为您节省一些工作吗?

祝你的项目好运。

关于javascript - 浏览器多人网络策略——这看起来是一个可行的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7900488/

相关文章:

javascript - svg rect 多种填充颜色

javascript - knockoutjs 撤销 ko.mapping.fromJS

javascript - Three.js shader在不同电脑上报错(同一个浏览器)

javascript - javascript 中 typeof 的行为

javascript - 使用字符串变量调用 Javascript 对象

python - Django项目文件结构

python - 我如何创建mysql数据库的增量备份

python - Python中的树形图

opengl-es - 在 OpenGL 着色器中在 main 之外进行计算是否合理?

opengl-es - 如何增加台面驱动程序的 GL_MAX_TEXTURE_SIZE?