2017-12-18 191 views
3

我正在使用Unity编程多人RPG游戏,并且在战斗场景中,玩家必须确定他或他使用哪种攻击。当玩家按下攻击按钮时,玩家向服务器发送发布请求,服务器在发布请求合法或不合法时进行强制检查,如果请求合法,则服务器将数据库值标记为“开启”,或者准确地说,例如,它从“0”变为“1”,即所谓的“攻击决定”。每5秒钟检查一次数据库值是否很昂贵,而且有很多用户数如10000或更多?

问题是,我不得不再次发出http请求来检查这个值。战斗中最多有6个字符,如果所有人都想检查attack_determined是0还是1,则每个攻击请求会发出6个请求。例如,我不想考虑用户数量是否增加到10000。处理这些用于我正在使用的VPS服务器的请求将非常困难。有什么办法可以减少请求数量吗?我不想使用套接字,我正在考虑使用会话或memcache。我在服务器端使用PHP,而在Unity客户端使用C#。

+3

这似乎是一个非常糟糕的方式来设计交互式的东西。 –

+0

我同意@DavidSchwartz你需要重新考虑你的架构。 – Eimsas

+3

如果你有类似网络的东西(这可能是一个浏览器内UI,或者可能是一个使用http而不是专用套接字协议的客户端应用程序),Web套接字就是一种合适的方法。它可以很好地扩展你想要做的事情(甚至更高;我们的网络套接字服务器目前有450k的开放连接)。每隔几秒Http轮询:会立即杀死我们。如果您将所有其他流量合并到同一个网络套接字上:甚至更好。 –

回答

6

我不想使用套接字

使用WebSockets。

您可以使用websocket独立库或使用Unity的网络API并启用websocket。如果您决定使用Unity Network API,只需将NetworkServer.useWebSockets设置为true即可启用。

一旦启用,Unity将从套接字切换到websocket。如果你只是在研究WebGL应用程序,你可以看看assetstore上的这个websocket插件。