【问题标题】:Game patcher that checks for file difference between local files and new files stored on server [closed]检查本地文件和存储在服务器上的新文件之间的文件差异的游戏补丁程序[关闭]
【发布时间】:2017-01-23 06:54:16
【问题描述】:

我目前正在 Unity 中开发一款游戏,我想知道如何为我的游戏创建补丁程序。我正在寻找一个类似于 Steam 工作方式的系统、用户在其系统上安装游戏的位置以及启动器?检查游戏的本地文件到服务器上的更新文件,并扫描它们的校验和?找出哪些文件被更改,然后只下载这些文件,并将它们替换到本地游戏目录。有谁知道这是否可行?

【问题讨论】:

    标签: c# visual-studio unity3d


    【解决方案1】:

    带有编号的版本呢?定义起来似乎少了很多麻烦

    ver 1.0 = 10 files
    
    ver 1.1 = 2 new files, 0 changes
    
    ver 1.2 = 4 new files, 4 changes in 2 files, file 1, line 2:32, file 4, line 5:21 
    

    编辑:

    校验和

    //Getting the md5 hash
    using (var md5 = MD5.Create())
    {
        using (var stream = File.OpenRead(filename))
        {
            return md5.ComputeHash(stream);
        }
    }
    
    //Comparing
    if(thisHash == newVersionHash) 
    {
        ;
    } 
    

    希望对你有帮助:)

    【讨论】:

    • 这是一个有效的答案,为什么要记下来……这太粗鲁了。
    • 问题是我正在寻找一种方法来检测在新文件和旧文件之间更改了哪些文件。假设您有一个游戏,它有超过 200 个文件并占用大约 2gb 空间,您可能有版本号,例如v1、v1.1 等...您可以下载新文件,但这需要您下载 2gb。我正在寻找一种特定方法来仅检测已更改的文件(因为某些文件保持不变),并且仅将这些文件下载到游戏目录中,如果您理解我的意思,这可以将所需的下载量减少一半
    • @Seabizkit 可能其他人有这个答案,但他打败了他。 :)
    • 您可以使用清单。对于任何新的或修改的项目,请在本地更新清单。服务器上也一样。你的 manifest 可以是 json、xml 或你自己的,那么它只是比较值。
    • @CodeCaster OP 要求提供我给他的代码 sn-p(我认为至少是这样,但它仍然有点模糊)。除此之外,我还给了他一个关于设计理念的提示,他没有在实施过程中寻求帮助。如果他想要一个完整的系统,他会聘请一名程序员。
    猜你喜欢
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2011-11-21
    • 2013-05-20
    • 2015-08-25
    • 1970-01-01
    • 2017-07-10
    • 2012-12-11
    相关资源
    最近更新 更多