跳到主要内容

星火游戏地图设置中的几个核心配置项

服务端-客户端架构

在星火编辑器中,触发分为服务端触发和客户端触发。 服务端触发是运行在服务器的,客户端触发运行在客户端。

假设一局游戏为4人合作游戏,4位玩家分别为玩家1、2、3、4:

  • 四位玩家共享本局的服务端触发和服务端触发中的全局变量
  • 四位玩家共享本局内数编蓝图的数据,例如玩家1修改了某数编蓝图,所有玩家读到的都会是修改后的版本
  • 每一位玩家独立控制自己客户端的全局变量

例如你在服务端写了一个全局变量-『活跃玩家数量』,那么这个数值默认为0 此时,如果开发者写了一个逻辑:在玩家第一次连入的时候,让『活跃玩家数量』+1,那么随着玩家的连入,这个全局变量的值会分别从0变成1、2、3、4

地图设置中的几个核心设置

在数据编辑器-地图设置-默认地图设置中可以找到如下比较重要的游戏配置信息。

时间-游戏载入(秒)

  • 等待玩家客户端加载的最长时间
  • 如果玩家客户端载入超过这个时间,服务器自动开始游戏,并触发服务端事件『游戏开始时』
  • 此玩家客户端仍然可以在加载完成后进入游戏,进入时会触发服务端事件『玩家-连入时』
  • 若在这个时间点前全部玩家均已完成加载触发『玩家-连入时』,则服务器会提前开始游戏,提前触发『游戏开始时』

例如一局游戏是有4个玩家开局,游戏载入时间设置为8s,这四个玩家的实际接入时间为【玩家1,2s】【玩家2,4s】【玩家3,7s】【玩家1,10s】,那么在8s的时候,玩家1、2、3已经完成载入并且分别触发过一次『玩家连入』;此时玩家4还没有触发,但是游戏已经『开始』了。
例如一局游戏是一个单人游戏,游戏载入时间设置为1s,且开发者将游戏初始化逻辑写在了『游戏开始』里面,但是玩家实际上在3s的时候才载入游戏。那么在1s的时候触发的『游戏开始』,涉及到的【玩家】可能就是一个nil(空值)

初始化游戏逻辑(比如开始出兵倒计时)和初始化玩家(比如让玩家选英雄)是两个事情,开发者需要考虑清楚这里的逻辑,选择合适的触发事件来处理对应的逻辑。

从过往的经验看,最好不要以『游戏开始』 作为玩家初始化的关键节点,因为这个节点可能玩家还没有完成游戏的载入。

如果你已经理解了这篇文档描述的内容,那么根据自己的游戏设定,选择合适的事件能够避免很多预期外的问题。

时间-游戏运行时间(秒)

  • 一局游戏的最长运行时间,默认86400秒对应24小时
  • 一局游戏到达最长运行时间后,会强制结束
  • 不建议将此时间设置的太长

网络连接超时时间

  • 客户端不再向服务端发送数据后,『网络连接超时时间』后服务端认为客户端『断线』的逻辑
  • 例如默认为40s,玩家切后台、直接强退后,客户端停止向服务端发送数据,40s后,触发服务端的『玩家-断线时』
  • 由于广告观看跳过需要30s以上,所以一般来说开发者需要将这个值调高一些,比如调到90s

玩家离线游戏局保留时间

  • 当玩家都已经离线后,游戏局不会立刻结束,而是在『玩家离线游戏局保留时间』之后才结束
  • 当游戏局结束时,会触发服务端时间『游戏-结束时』

玩家在上局依然活跃的情况下强行开新的一局

  • 有一种常见情况,比如玩家在上一局的时候突然关闭了游戏,并且还没有达到『网络连接超时时间』,没有触发上一局的『玩家-断线时』事件。此时玩家重启游戏并且强制要开一局新的游戏,我们会在此时将游戏从上一局强制踢出。
  • 在『数编-默认全局游戏机制配置』中,我们提供了『新的游戏局断线前处理』,在这种强行开新局的情况下,会触发此处配置的逻辑。
  • 在按顺序执行完配置的相关逻辑后,玩家会触发『玩家-断线时』