51. 2023-03-12周总结

  1. 服务器资源问题
  2. 特效变体问题
  3. 抖音小程序(WebGL)请求Http无法拿到内容
  4. 关于服务器的一些思考

服务器资源问题

上周末因为没做好压力评估,导致服务器整体的资源压力比较大。虽然通过开了另外一台机器解决了问题,但这周发现带宽这一块成本巨高,光带宽费一天就1W。

云服务的带宽有两种购买模式,一种是按流量计费,大概0.85元/G,流量包括上行和下行(之前我误以为上行不计费),这种计费方式下可以设置带宽,带不影响价格。另外一种模式是按带宽包年计费。我们服务器之前流量一直不高,选择了按流量计费,同时带宽选择了100Mbs。导致的问题是,这几天巨大的流量产生了很多费用。

我们做了几个措施:

  1. 大大降低了对服务器发起存档的频率,由原来上行速率为70Mbs降低为7Mbs。
  2. 修改配置为按带宽计费,因为我们流量比较稳定,所以修改合适的带宽包年配置降低整体费用。
  3. 修改按流量计费的带宽,虽然带宽不影响按流量计费的单价,但是修改带宽到合适值可以减少某些流量被刷或者出现问题时候带来的巨额带宽费用。

变体问题

上周遇到的shader_feature变体不生效问题找到了原因,主要原因是因为YooAsset打包没使用明白的原因,导致变体收集文件没有和Shader打在一个ab包里面。

YooAsset打包的时候会自动将所有shader打入到unityshader.xxx的ab包中,而shadervariants文件,如果不选择PackShaderVariants规则的话则不会打进unityshader.xxx的ab中。

抖音小程序(WebGL)请求Http无法拿到内容

在之前转微信小游戏的基础上,我们将游戏进一步移植到了抖音小游戏上,但一直发现在抖音小游戏里面,我们请求的任何http地址,返回200但是拿到的内容为空。卡了我们好一阵子,最终发现是因为我们用了2021.3.16版本的Unity,而抖音官方推荐的是2021.3.14版本。降级到2021.3.14版本之后问题修复。

关于服务器的一些思考

之前一直想将游戏客户端,游戏服务端,Web端,都统一成C#语言来开发,减少开发人员的学习成本,快速的可以上手开发所有端。目前客户端(Unity),Web端(asp.net)都已经在使用C#,而游戏服务端设计了好几版也没有让我非常满意。其中有一版是设计一套C#的skynet,但是写了之后发现await回来之后设置不了当前正在执行的service的上下文,最近突然来了灵感,可以利用自定义SynchronizationContext将上下文恢复。后面就比较顺了,用了比较少的代码把简化版的service模型实现了出来。

光有service模型还不够,还想做几个东西:

  1. 可存档的变量变更可以自动存档到数据库
  2. 可同步的变量变更可以自动同步到客户端

这两个东西还在设计中,做了以后可以进一步简化开发的复杂度,更多的只需要专注于业务上的逻辑。