Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Firebase中编写游戏逻辑_Firebase_Google Cloud Firestore_Google Cloud Functions_Firebase Security - Fatal编程技术网

在Firebase中编写游戏逻辑

在Firebase中编写游戏逻辑,firebase,google-cloud-firestore,google-cloud-functions,firebase-security,Firebase,Google Cloud Firestore,Google Cloud Functions,Firebase Security,我正在开发一个乘法器棋盘游戏(非常类似于国际象棋)。我使用Firestore作为后端。我知道为了防止在游戏中作弊,我需要将游戏逻辑(验证合法移动、更改回合、倒计时)放在服务器端,而不是客户端。现在,据我所知,在Firebase中配置服务器端行为主要有两个地方:云功能和安全规则。我考虑使用安全规则来验证移动,使用云函数来翻转和倒计时。我对安全规则没有太多经验,但我认为编写规则来验证移动太复杂了。或者,我考虑阻止客户端对Firestore的所有写访问,并编写HTTPS云函数供客户端调用。例如,我有一

我正在开发一个乘法器棋盘游戏(非常类似于国际象棋)。我使用Firestore作为后端。我知道为了防止在游戏中作弊,我需要将游戏逻辑(验证合法移动、更改回合、倒计时)放在服务器端,而不是客户端。现在,据我所知,在Firebase中配置服务器端行为主要有两个地方:云功能和安全规则。我考虑使用安全规则来验证移动,使用云函数来翻转和倒计时。我对安全规则没有太多经验,但我认为编写规则来验证移动太复杂了。或者,我考虑阻止客户端对Firestore的所有写访问,并编写HTTPS云函数供客户端调用。例如,我有一个移动的函数。客户端将调用此函数,而不是直接写入Firestore。我不知道该怎么办。你认为呢?

正如你所说,有两个广泛的选择:

  • 验证移入安全规则
  • 验证“移入云”功能
  • 由于安全规则接近图灵完备,所以几乎可以用它们表达任何需求。但随着游戏规则变得越来越复杂,您将看到在那里实现游戏逻辑的回报越来越小。对于我们大多数人来说,安全规则的声明性本质很难正确理解

    所以对于更复杂的游戏规则,我通常会选择一个代码来执行它们,以云函数的形式。因此,在这种情况下:

  • 客户端向数据库写入“游戏回合”
  • 此博弈回合的结构由安全规则验证
  • 写操作触发一个云函数
  • 此云函数解释游戏回合,并更新游戏状态
  • 所有客户端都会看到新的游戏状态

  • Firebase的Doug Stevenson游戏在Google I/O 2017上展示了这一方法的精彩演讲:。虽然他在那里使用Firebase实时数据库(因为Firestore尚未发布),但同样的方法也适用于云Firestore。

    正如您所说,有两个广泛的选择:

  • 验证移入安全规则
  • 验证“移入云”功能
  • 由于安全规则接近图灵完备,所以几乎可以用它们表达任何需求。但随着游戏规则变得越来越复杂,您将看到在那里实现游戏逻辑的回报越来越小。对于我们大多数人来说,安全规则的声明性本质很难正确理解

    所以对于更复杂的游戏规则,我通常会选择一个代码来执行它们,以云函数的形式。因此,在这种情况下:

  • 客户端向数据库写入“游戏回合”
  • 此博弈回合的结构由安全规则验证
  • 写操作触发一个云函数
  • 此云函数解释游戏回合,并更新游戏状态
  • 所有客户端都会看到新的游戏状态

  • Firebase的Doug Stevenson游戏在Google I/O 2017上展示了这一方法的精彩演讲:。虽然他在那里使用Firebase实时数据库(因为Firestore尚未发布),但同样的方法也适用于Cloud Firestore。

    这句话不准确,无法防止在游戏中作弊,我需要将游戏逻辑放在服务器端,不确定这些信息来自何处。如果这是真的,那么任何数据都可能被泄露。规则控制对存储在Firebase中的应用程序数据的读/写访问-它们可能不是验证移动的正确位置,因为(通常)应用程序处理的操作会涉及逻辑。e、 g.防止主教在板上垂直移动;您可能可以在规则中实现这一点,但通过代码级计算会更好。任何有足够经验的人都可以模仿您的客户机。这不是Firebase的问题。这是软件的本质。任何可访问的软件都可以用足够的时间和精力进行逆向工程。您可能会发现这个答案很有帮助是-完美的答案并直接说明了我所说的,这就是为什么您可以安全访问Firebase数据…(使用Authenticaton和)安全规则(用于数据库或存储),以确保他们只能访问授权访问的数据。。很好的回答,非常准确地回答了你的问题。看看下面的问题和答案,好吧,那么你同意我们必须把游戏逻辑放在服务器端而不是客户端吗?这句话不准确,无法防止游戏作弊,我需要把游戏逻辑放在服务器端,不确定这些信息来自何方。如果这是真的,那么任何数据都可能被泄露。规则控制对存储在Firebase中的应用程序数据的读/写访问-它们可能不是验证移动的正确位置,因为(通常)应用程序处理的操作会涉及逻辑。e、 g.防止主教在板上垂直移动;您可能可以在规则中实现这一点,但通过代码级计算会更好。任何有足够经验的人都可以模仿您的客户机。这不是Firebase的问题。这是软件的本质。任何可访问的软件都可以用足够的时间和精力进行逆向工程。您可能会发现这个答案很有帮助是-完美的答案并直接说明了我所说的,这就是为什么您可以安全访问Firebase数据…(使用Authenticaton和)安全规则(用于数据库或存储),以确保他们只能访问授权访问的数据。。很好的回答,非常准确地回答了你的问题。看看下面的问题和答案,好吧,那么你同意我们必须把游戏逻辑放在服务器端而不是客户端吗?我想在这个极好的答案中添加一个注释,即广泛的选项1。二,。如果一开始就制定了适当的规则,就永远不需要这样做。换句话说,如果规则不允许