CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
性能调优

【性能调优】纹理压缩:ASTC 格式的加载优化

2026-09-21 11:48 作者:996 技术组 性能调优

实战应用:用在哪里

ASTC 纹理压缩格式在保持视觉质量的同时将纹理内存占用减少 60% 到 75%:2GB 的贴图资源压缩后只占 500MB 到 800MB。纹理的内存占用是前端性能的大头,ASTC 的引入让低端机的贴图加载不再卡顿。

ASTC 的引入

lua

---纹理的格式选择:按设备能力选择压缩格式
function TextureLoader.pickFormat()
    local gpu = deviceInfo.gpu
    if gpu.supportsASTC then return ".astc" end
    if gpu.supportsETC2 then return ".etc2" end
    return ".png"
end

function TextureLoader.load(imagePath)
    local fmt = TextureLoader.pickFormat()
    local path = imagePath .. fmt
    return GUI:Image_Create(nil, path, 0, 0, path)
end

纹理的加载按设备 GPU 的支持能力选择格式:支持 ASTC 的用 ASTC,不支持的选择 ETC2 作为降级,两者都不支持时回退 PNG。格式的选择在纹理加载的入口统一处理,业务层不需要感知格式差异。

内存的收益

lua

---纹理内存的统计对比
function TextureStats.report()
    local stats = { astc = 0, png = 0, count = 0 }
    for _, tex in ipairs(loadedTextures) do
        stats[tex.format] = stats[tex.format] + tex.memoryKB
        stats.count = stats.count + 1
    end
    QF_PushToDash("texture_memory", stats)
end

ASTC 的压缩比在视觉质量可接受的前提下达到 4 比 1 到 8 比 1,纹理的内存从 2GB 压缩到 250MB 到 500MB。压缩的开关按设备内存阈值自动切换:内存低于 2GB 的设备强制 ASTC,高内存设备可用 PNG 保画质。纹理的加载队列按可视距离优先排序,视野内的纹理优先加载,视野外的延迟加载。

验证与监控

纹理的加载耗时与内存占用的日报,ASTC 的解码耗时在低端机上的实测数据指导压缩级别的选择。

踩坑记录

ASTC 的压缩质量参数曾经统一用最快模式,视觉质量明显下降后被玩家投诉,压缩级别按贴图的重要性分级设置。ASTC 的兼容性检查遗漏了部分低端 GPU,回退到 ETC2 的降级逻辑补齐后兼容性问题关闭。

上线要点

ASTC 的压缩在构建流水线自动完成,压缩的参数(块大小、质量级别)按贴图的用途配置。纹理的内存看板按格式分类统计,ASTC 与 PNG 的占比数据是压缩策略调整的依据。纹理的降级策略进设备分级的配置表,设备的能力等级决定加载的格式与质量。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

网络通信聊天聚合

【网络通信】跨服聊天话题聚合:多服聊天的话题合并设计

实战应用:用在哪里 跨服开放后,各服的世界频道各自为政,热门话题被服务器墙分隔。话题聚合方案:带话题标签的消息汇聚到跨服频道…

2026-09-22 17:43 996 技术组
数据存储行为数据周报

【数据存储】玩家行为周报摘要:行为数据的聚合存储设计

实战应用:用在哪里 运营要的是“这周谁打了副本、谁在挂机、谁在交易”,不是每天几万条的原始行为流。周报摘要方案:行为流水按玩…

2026-09-22 17:43 996 技术组
界面UI聊天轮盘

【界面UI】聊天快捷短语轮盘:常用语轮盘的交互设计

实战应用:用在哪里 战斗中打字报点来不及,快捷短语轮盘让玩家按住轮盘键滑向常用语松手即发:集合、撤退、求奶、集火左,八条槽位…

2026-09-22 17:43 996 技术组
前端接口手柄适配

【前端接口】游戏手柄按键映射:外设适配的映射实现

实战应用:用在哪里 部分玩家用手柄玩传奇,键位习惯各不相同。按键映射方案:手柄的摇杆、十字键、肩键映射到游戏动作,映射表玩家…

2026-09-22 17:43 996 技术组
Lua实战闭包封装

【Lua实战】闭包封装状态:计数器与工厂函数的实战应用

实战应用:用在哪里 模块级的计数器、限流器都面临一个问题:状态存全局容易被别的代码改坏。闭包把状态封在函数的作用域里,外部只…

2026-09-22 17:43 996 技术组
玩法设计师徒副本

【玩法设计】师徒双人副本:协同关卡的匹配与奖励设计

实战应用:用在哪里 师门任务的日常共同任务做成师徒双人副本:师父带徒弟进入专属关卡,关卡机制要求两人配合——师父扛伤开门、徒…

2026-09-22 17:43 996 技术组