EM
流浪者 内容归档、专题聚合、持续更新
文章详情

ggelua多功能热更新系统

作者:流浪者 发布时间:2026-04-29 21:25 浏览:30 评论:0
内容字数 2548
预计阅读 6 分钟
最近更新 23天前


服务器端部署

需求:

  • 一个支持 HTTP 访问的 Web 服务器(Apache、Nginx、IIS 等)
  • 或者使用云存储服务(阿里云 OSS、腾讯云 COS 等)

推荐配置:

  • 带宽:至少 5Mbps(根据玩家数量调整)
  • 存储:至少 1GB(根据更新包大小调整)
  • 我测试的时候使用更新包55.7 MB里面全部map素材大概1700个文件,解压的时会闪烁,
  • 如果你更新的文件数量比我还多,调整热更系统390行 最大解压数量=5 改成30或别的数字
  • 按到不需要这么大的5是我在测试的时候用的多文件,一般你也不会更新这么多文件进去。

步骤 2:创建更新文件和目录

根据你自己设定的域名目录就行了,上传版本文件
比如我现在的目录是files你的目录是222那么你域名哪里就要更改同步一样。
创建 version.txt 文件,内容为当前版本号:1.0
注意:

  • 版本号格式:主版本.次版本.修订号(如:1.0、1.1、2.0.1)
  • 文件编码:UTF-8(无 BOM)
  • 不要有多余的空行或空格

步骤 3:本地准备更新包

  1. 压缩为 ZIP 格式
    • 使用 Windows 自带压缩或 7-Zip
    • 压缩格式:ZIP(不要用 RAR 或 7z)
    • 压缩方式:标准压缩(不要用超强压缩)
    • 文件名:g2d.zip
      重要: ZIP 包内的目录结构必须与客户端一致!

步骤 4:上传到服务器

将文件上传到服务器:

/files/
├── version.txt    # 版本号:1.0
└── g2d.zip       # 更新包
``

### 步骤 5:测试服务器访问

在浏览器中测试:

http://你的域名/files/version.txt
http://你的域名/files/g2d.zip


确保两个文件都能正常下载。

---

## 客户端部署

### 步骤 6:确认必需文件

确保客户端包含以下文件:

Client/
├── g2d.exe # 游戏主程序
├── version.txt # 本地版本号(初始:0.0.0)
├── main.lua # 已集成热更新代码、观看步骤7
└── Script/
├── 热更新系统.lua # 热更新核心模块
└── 异步下载器.ps1 # PowerShell 下载脚本(可选,用于更好的进度报告)

gge/Extend/
└── ZIP类.lua # minizip 解压模块(必需!)


**重要:** 
- `gge/Extend/ZIP类.lua` 是必需的,用于解压更新包。缺少此文件会导致解压失败。
- `异步下载器.ps1` 是可选的,如果存在会提供更准确的下载进度报告。如果不存在,系统会动态生成下载脚本。

### 步骤 7:集成到你自己源码 main.lua

需要在 `main.lua` 中添加三处代码:

#### 位置 A:初始化热更新系统

在 `引擎(标题,800,600,60,true)` 和 `窗口图标(...)` 之后插入:

-- ==================== 热更新系统(启动器内置更新)====================
print("\n【系统】正在初始化热更新系统...")

local 热更新加载成功, 热更新错误 = pcall(function()
    热更新系统 = require("Script/热更新系统")
end)

if 热更新加载成功 and 热更新系统 then
    -- 初始化
    热更新系统:初始化()

    -- 立即开始更新流程
    热更新系统:开始更新()
else
    print("【热更新】模块加载失败: " .. tostring(热更新错误))
end
-- ==================== 热更新系统加载结束 ====================

#### 位置 B:更新热更新系统

在 `function 渲染函数(dt,x,y)` 中,`鼠标.x,鼠标.y=x,y` 之后插入:

```lua
    -- 更新热更新系统(在渲染前更新,不阻塞)
    if 热更新系统 and 热更新系统.更新 then
        热更新系统:更新(dt)
    end

关键: 必须在 yq.渲染开始() 之前调用,确保更新逻辑在渲染前执行。

位置 C:渲染热更新界面

yq.场景:显示(dt,x,y)游戏公告:显示(dt,x,y) 之后插入:

    -- 如果正在更新,在游戏场景之上渲染更新界面
    if 热更新系统 and 热更新系统.状态 and 热更新系统.状态.显示界面 then
        热更新系统:渲染()
    end

关键: 必须在 yq.渲染结束() 之前调用,确保更新界面显示在最上层。

步骤 8:配置服务器地址

编辑 Client/Script/热更新系统.lua,修改服务器地址:

-- 配置
热更新系统.配置 = {
    服务器地址 = "http://你的域名/files/",  -- ← 修改这里
    版本文件 = "version.txt",
    更新包文件 = "g2d.zip",
    本地版本文件 = "version.txt",
    临时目录 = "temp_update/",
    游戏主程序 = "g2d.exe",
}

步骤 9:本地客户端设置初始版本号

创建或编辑 Client/version.txt: #注意Client是我自己的客户端目录,你随便叫什么都行,只要里面有version.txt 内容跟你热更服务端不同就行0.0.0

说明:

  • 初始版本设为 0.0.0,确保首次启动会检测到更新
  • 如果不想首次更新,设置为与服务器相同的版本号
    -源码仅单机测试
    [lv] [/lv]
原始链接:https://dfdoud.cn/soft/10151.html 最后更新时间:23天前
相关推荐

评论 (0)

还没有评论,快来抢沙发吧!

友情链接

来自后台链接管理,维护一次即可自动同步到主题展示。

暂无友情链接 请到后台 `链接管理` 添加友情链接,添加后这里会自动显示。