查看: 4424|回复: 3

[讨论] 利用Github自动更新游戏【原理】

[复制链接]
梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2020-6-11 03:47:01 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 guoxiaomi 于 2020-6-16 19:30 编辑

说实话如何实现游戏的自动更新,这问题困扰了我至少2年,终于今天我找到了一个合适的解决方案。下面简单的说一下怎么做,具体实施细节我还没定好,但是各项技术应该都到位了。

范例和教程见此贴:https://rpg.blue/thread-482150-1-1.html(就是要开2个贴反正这区也没人)

1. 把项目托管在Github上
2. 利用 Github 特殊的访问规则下载补丁文件
3. 在本地使用git-apply打上补丁

第一个没啥难的,并且你可以把自己的游戏直接release方便玩家下载。

第二个看这里:
捕获.PNG
没错!你可以直接在compare的网址后面加上.patch,然后用aria2c.exe把这个.patch下载到本地。只需要在网址里指定玩家当前玩的版本和目前的最新版本即可。
关于版本信息也可以用api得到,如查询最新的release:
  1. https://api.github.com/repos/certbot/certbot/releases/latest
复制代码


第三个我分析了一下git-apply的依赖,把所有需要用到的dll都打包进来了: patch2.zip (2.37 MB, 下载次数: 41)
你可以尝试在这个文件夹里运行:
  1. git-apply 3f44.patch
复制代码
,然后会发现hello.c和hello.exe已经发生变化了,如图:
捕获2.PNG
注:
1. git-apply是不需要本地有git仓库的,所以这一套就完全与git脱钩。
2. 这个补丁也可以在本地制作,这样写就是产生从3f44版本升级到master的补丁
  1. git diff --binary 3f44 master > 3f44.patch
复制代码


其实了解git的人应该已经知道该怎么做了,回头我整理一个简单的教程吧……

至于github抽风的问题,那没办法,不过你可以把游戏的新版本挂在X度网盘上,只是下个补丁应该挺快的吧。
或者可以自建git仓库比如gogs来托管自己的游戏~刚刚测试了一下可以直接访问.patch结尾的url获取patch文件。
再不济你自己生成.patch文件传到oss上,然后手动维护一个version.txt……

顺便说一下,我查看了国内的gitee,似乎没有提供.patch的api,可能是怕被这样薅羊毛?
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

 楼主| 发表于 2020-6-12 15:30:20 | 显示全部楼层
传个附件: Update.zip (4.27 MB, 下载次数: 50)
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
172
在线时间
935 小时
注册时间
2010-11-13
回帖
897
发表于 2020-6-16 09:22:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部