我有一款基于 PHP 的游戏,目前以典型的请求/响应方式运行,生成并输出页面。我希望将演示和游戏逻辑完全分开,所以我移植到基于 API(使用 Phalcon )。这也将允许我制作一个可以与相同代码库交互的移动应用程序。
我是整个 REST API 的新手,所以我正在尝试遵循 RESTful Web Services 中规定的指南。 .据我了解,API 应按如下方式工作:
POST to /v1/users adds a new user.
GET to /v1/users returns a list of existing users... and so on.
但是,使用我的 API 的客户端(很可能通过 AJAX)应该只发出更高级别的命令。例如,我不希望精明的用户调用 API 来改变他们的体验。相反,数据修改将是基于玩家输入发生的游戏 Action 的副作用。
例如,客户端可能会说“嘿,攻击这个怪物”,此时服务器会验证玩家是否有足够的能量,进行攻击,给玩家增加金币和经验,并返回结果给客户。这些操作是非常事务性的,需要满足多个条件并且需要出现多个结果才能将操作视为成功。
我把这个功能想象成这样:
/v1/attack/player - with the id of the player being a post variable.
/v1/work - with the amount of time being worked as a post variable.
然而,这似乎属于 RPC 类型的架构,如书中所定义的,我的理解并不相同。
- 我该如何处理这种情况?
- 我认为 REST API 适用于此的想法是否正确?看来我需要调用远程过程的本性从根本上与我正在阅读的 REST 相悖。
- 假设我以错误的心态处理这个问题 - 是否有其他更适合的架构,或者我应该继续我提到的看到它工作的方式?
任何关于我是否正朝着正确的方向前进以及我可以做得更好的建议都会对我非常有益。
谢谢。
最佳答案
我会发送一个 POST/attack
并在正文中描述参数。您可以为每个对手创建链接。所以这可能适用于简单的游戏,但服务器无法将数据推送到您的浏览器,除非您使用轮询。
对于实时游戏,使用 websockets 的基于事件的方法要好得多......
关于php - 我将如何通过 REST API 处理游戏操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25772227/