我有一个基于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调用来修改他们的体验。相反,数据修改将是基于玩家输入发生的游戏动作的副作用。
例如,客户可能会说"嘿,攻击这个怪物",此时服务器将验证玩家是否有足够的能量,进行攻击,将黄金和经验添加到玩家,并将结果返回给客户端。这些操作非常具有事务性,需要满足多个条件,并且需要发生多个结果才能将操作视为成功。
我认为这在以下几个方面起作用:
/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类型的体系结构,如本书中所定义的,我理解为不一样。
关于我是否朝着正确的方向前进以及我能做得更好的任何建议对我都非常有益。
谢谢。
答案 0 :(得分:0)
我会发送POST /attack
并描述正文中的参数。你可以为每个对手创建链接。所以这可能适用于简单的游戏,但服务器无法将数据推送到您的浏览器,除非您使用轮询。
对于实时游戏,使用websockets的基于事件的方法要好得多......