2024.09.25

工作内容

服务器 GameShared 测试

昨天版本构建不稳定,所以今早提交做测试;

这个是构建项目目录中的 shared 文件:

这个是 MechaServer 构建出来上传至189归档目录的shared文件:

最后解压545020的roomsvr压缩包,发现里面shared文件并没有替换,md5显示:b35af …

测试失败


经查证,gameshared文件在【Unity构建】任务中就已经将项目中的shared文件拷贝了一份副本到产出物压缩目录,又因为下载shared文件需要等待MechaServer编译完毕才能下载,所以存在请求等待的情况下不能放在【Unity构建】之前,只能放在后面执行。

重新拼接了一个产出物目录,将shared文件替换产出物目录文件,经过测试验证*****545208*****版本的服务器包内的shared文件是被替换的版本矫正文件。

构建流水线熟悉

今天看了一下内网部署和外网推送的脚本流程,大致看了一下客户端加密签名的流程,还需要继续深入阅读。

加密签名文件长期归档

新增展会预备包归档,因为展会加密签名包是从分支构建出来的类bvt的版本里把客户端包单独做加密签名处理,生成对外发布的一个链接(新的拼接规则),并且今天正好看了一下 客户但加密签名 流程,是没有将对应的pdb等文件做备份归档的,所以如果要将对外的加密签名客户端存档的话,归档如下内容:

  • 单独只存一份 对外的 加密签名客户端文件

  • 对外版本对应的类bvt版本构建的所有前后端产物

两者同时归档,保证内部文件和外部文件都齐全

Other

  • 协助 林正森 记录版本构建出错原因

  • 下班前和zilve清理了 AB构建机 的BuildData/ 和 Library/ 并做了压缩归档(189),然后执行了重导Library

待办

  • Shader 编译相关的需求

  • 加密签名对外发布流程

Knowledge

  • windows md5

    1
    certutil -hashfile example.txt MD5
  • SHA3-512 [ C++ ]

    在 C++ 中,你可以使用 CryptoPP(Crypto++)库来生成字符串的 SHA3-512 哈希值。以下是具体实现:

    步骤

    1. 安装 Crypto++ 库。

    2. 编写并编译代码。

    安装 Crypto++ 库

    你可以从 Crypto++ 官方网站下载源代码并进行编译安装,或者使用包管理器安装。例如,在 Ubuntu 上可以这样安装:

    1
    sudo apt-get install libcrypto++-dev

    编写代码

    下面是一个简单的 C++ 程序,用于计算字符串的 SHA3-512 哈希值:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #include <iostream>
    #include <string>
    #include <cryptopp/sha3.h>
    #include <cryptopp/filters.h>
    #include <cryptopp/hex.h>

    std::string generate_sha3_512_hash(const std::string &input) {
    using namespace CryptoPP;

    // 创建 SHA3-512 对象
    SHA3_512 hash;

    // 存储哈希输出值
    std::string digest;
    StringSource ss(input, true,
    new HashFilter(hash,
    new HexEncoder(
    new StringSink(digest)
    ) // HexEncoder
    ) // HashFilter
    ); // StringSource

    return digest;
    }

    int main() {
    std::string input = "hello world";
    std::string hash_value = generate_sha3_512_hash(input);
    std::cout << "SHA3-512 hash of '" << input << "': " << hash_value << std::endl;
    return 0;
    }

    代码解析

    1. 包含必要的头文件

      1
      2
      3
      4
      5
      #include <iostream>
      #include <string>
      #include <cryptopp/sha3.h>
      #include <cryptopp/filters.h>
      #include <cryptopp/hex.h>
    2. 定义 generate_sha3_512_hash 函数

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      std::string generate_sha3_512_hash(const std::string &input) {
      using namespace CryptoPP;

      // 创建 SHA3-512 对象
      SHA3_512 hash;

      // 存储哈希输出值
      std::string digest;
      StringSource ss(input, true,
      new HashFilter(hash,
      new HexEncoder(
      new StringSink(digest)
      ) // HexEncoder
      ) // HashFilter
      ); // StringSource

      return digest;
      }
      • 使用 CryptoPP::SHA3_512 创建 SHA3-512 哈希对象。

      • 使用 StringSource 将输入字符串编码为字节,并传递给 HashFilter,然后通过 HexEncoder 获取十六进制格式的哈希值,最终存储在 digest 中。

    3. 主函数

      1
      2
      3
      4
      5
      6
      int main() {
      std::string input = "hello world";
      std::string hash_value = generate_sha3_512_hash(input);
      std::cout << "SHA3-512 hash of '" << input << "': " << hash_value << std::endl;
      return 0;
      }
      • 调用 generate_sha3_512_hash 函数获取输入字符串的 SHA3-512 哈希值,并输出结果。

    编译和运行

    假设你已经安装了 Crypto++ 库,可以使用以下命令编译和运行程序:

    1
    2
    g++ -o sha3_512_hash sha3_512_hash.cpp -lcryptopp
    ./sha3_512_hash

    这将输出类似如下的结果:

    1
    SHA3-512 hash of 'hello world': B7F783BAED8297F0DBE6C07E9D618D4BF21A9D7755BBA7B9284361F9068EC504B6F8535AC6F3AB42F4CB506B11DA3430D1B3A6E3B4A22DDDC149BED9279338E4

    以上代码展示了如何在 C++ 中使用 Crypto++ 库生成字符串的 SHA3-512 哈希值。