Dream Mod 3.0Dream Mod 3.0
首页
快速开始
资源库
首页
快速开始
资源库
  • 进度

    • 更新日志
  • 指南

    • 快速上手
    • App.lua
    • Server.lua
    • 地图
    • 角色
    • 道具
    • 技能
    • 状态
    • 窗口
    • 成长
    • DmTcpClient
    • WebSocketClient
    • SqliteDB
    • 皮肤
    • 自定义组件
  • Api

    • 引擎
    • 地图
    • 角色
    • 道具
    • 技能
    • 状态
    • 窗口
    • 自定义组件
    • 音乐
    • 缓动
    • 全局
  • 控件

    • 标签
    • 按钮
    • 图片框
    • 动画框
    • 模型框
    • 文本框
    • 进度条
    • 技能格子
    • 快捷格子
    • 包裹格子
    • 道具格子
    • 角色框
    • 选择框
    • 选择夹
    • 容器
    • 地图框
    • 滑块条
    • 滚动条
    • 组合框
    • 输入框
    • 列表框
  • 组件

    • 文本
    • 艺术字
    • 精灵
    • 矩形
    • 圆形
    • 动画
    • 模型
  • 其他

    • 丰富文本
    • 模板变量
    • 资源格式
    • 游戏盒子
    • 资源列表
  • 自定义功能

    • 战斗血液效果
    • 地图天气
  • 地图天气

    ver-34 飘灰与低雾可见度修正

    用户反馈ver-33飘灰和低雾肉眼不明显。定点确认:旧灰屑在32px格内实际仅约9px宽,显示框1.5~3.5px令灰屑本体不足1px;低雾叠加密度、颜色、纹理透明度后过淡,雾团高度也偏低。

    • 飘灰:显示框改3~6世界像素,图块中灰屑本体扩大到约20px宽;默认颜色0xD0C9BFD8,800×600中画质密度1基准数120,密度0.45为54个(旧38)。硬上限仍180×画质倍率,运动和生命周期不改。自定义颜色仍优先。
    • 低雾:独立HeimeiWeather34/low_fog.png沿用旧雾的8帧形状与图集布局,纹理alpha乘1.7并限制255;默认初始雾团宽260~440×团雾大小,高为宽的0.35,之后沿用寿命伸缩,并按配置区域裁限。原大雾仍用HeimeiWeather17/fog.png,完全不受此纹理修订影响。
    • 低雾区域新增文本"当前视野":用当前镜头覆盖的世界像素矩形,随镜头更新,便于直接观察;也适合全视野地表薄雾。固定局部效果仍使用原矩形数组,空数组仍不绘制,缺失或其他文本仍返回false并保留旧天气。
    引擎.地图.设置天气 {
    
        类型='飘灰', 密度=0.45, 画质='中', 速度=16, 阵风=true, 淡入=1200,
    
    }
    
    -- 独立调用,替换上述天气:
    
    引擎.地图.设置天气 {
    
        类型='低雾', 密度=0.65, 画质='中', 速度=8,
    
        颜色=RGBA(163,173,183,154), 团雾浓度=0.65,
    
        团雾大小=1, 淡入=1500, 区域='当前视野',
    
    }
    
    

    新增注册HeimeiWeather34/ash.png和HeimeiWeather34/low_fog.png,文件路径同标识。落叶仍使用HeimeiWeather33/leaves.png,运动、数量及落地保持原样。开发端已安装资源及ver-34库;真实画面需重启后复测。

    本轮实际字节码检查覆盖飘灰数量/尺寸/纹理、低雾当前视野初始化/镜头移动、固定矩形边界、空区域、错误配置与释放,6个私有精灵配平;纹理统计与部署哈希通过。未运行全项目回归或新的真实引擎画面测试,不将数值可见度提升等同用户视觉验收。后面的ver-33参数按其历史版本理解,以本节修订为准。

    ver-33 飘灰、落叶与局部低雾

    ver-33以ver-32为底座,新增三种天气类型,保留原雨、雪、雾、黄沙及血液功能。仍为单一天气,设置新类型会释放旧天气;支持原来的密度、画质、颜色、速度、风向、阵风、淡入、暂停、清除和按地图隔离。

    类型默认速度默认颜色表现
    飘灰160xB6ABA1AE稀疏灰屑在世界坐标中缓慢漂移、轻微摆动;4.5~8秒生命周期,生成/消散渐隐,不产生火光和地面灰堆。
    落叶270xFFFFFFD0三种枯叶形状、八个旋转帧,摆动翻转下落;2.3~4.9秒飞行,落地后固定在地图位置渐隐。
    低雾80xA3ADB79A扁平雾团在指定区域缓慢流动和形变,绘制于地表之后、角色之前,无整屏底色。
    -- 以下是三个独立示例,不要连续调用;后一次会替换前一次。
    
    引擎.地图.设置天气 {类型='飘灰', 密度=0.45, 画质='中', 淡入=1200}
    
    引擎.地图.设置天气 {类型='落叶', 密度=0.55, 画质='中', 风向=0.35, 落地停留=1800}
    
    引擎.地图.设置天气 {
    
        类型='低雾', 密度=0.65, 速度=8, 团雾浓度=0.65,
    
        区域={{640,320,800,240}, {1600,700,480,180}},
    
    }
    
    
    • 落地停留:落叶专用,默认1800ms,范围200~5000ms。落地叶片使用原粒子池,不创建无限增长的新精灵。速度影响横向漂移与平面运动;生命周期和下落高度独立,速度=0不等同暂停。
    • 区域:低雾必填,最多32个 {x,y,宽,高},单位为地图世界像素,不是格子;宽高>0。空数组不绘制低雾,缺失或非法配置返回false并保留旧天气。矩形复制到天气私有状态;雾片完整包围框限制在其所属矩形内,跨区域随机分配,有界数量不保证每个矩形始终覆盖。非低雾类型传入该字段会返回false。
    • 地面区域仍只按历史规则控制水花、积雪、脚印,不作为落叶落点限制。落叶不实现地图碰撞、建筑遮挡或自动材质识别;空中叶片是场景上层,落地后才进入地表层。低雾是地面贴层,不能遮挡角色下半身来模拟体积雾,也不自动绕开墙体。
    • 飘灰/落叶中档800×600密度1时基准数85/32,数量按视口面积与画质调整;中档硬上限180/72,极高上限540/216。低雾复用雾团有界数量(低/中/高/极高最多6/12/18/36)。粒子生命周期冻结、天气清除与切换释放已做定点验证。
    • 取天气().类型直接返回新类型;粒子数包含落叶池中的空中和落地实例;低雾通过雾团数、地面批次观察。不会把新类型误报为下雪,不生成积雪、雪幕或脚印。

    新增资源注册,保留已有HeimeiWeather17资源:

    {标识='HeimeiWeather33/ash.png', 文件='HeimeiWeather33/ash.png'},
    
    {标识='HeimeiWeather33/leaves.png', 文件='HeimeiWeather33/leaves.png'},
    
    

    两张均为256×96透明程序纹理图集,3形状×8方向,每格32×32。低雾复用HeimeiWeather17/fog.png。可用图片替换整张单帧(不自动切图);叶片自定义图仍有缩放翻转感,但没有内置八方向帧。新资源继续使用既有PNG/PNGZ注册兼容入口,本轮没有转换或发布新的PNGZ。

    验证:仅替换5个天气函数;1755 Proto不变,严格解析、父链捕获、原源码等价、精确差异与反向逐字节还原通过。成品字节码定点隔离检查覆盖三类更新、落叶落地、低雾地表层与矩形边界、暂停、镜头跳转、旧四类切换与释放;14个私有精灵创建释放配平。未做全项目回归、新的真实引擎离线测试或玩家画面验收。

    ver-24 PNGZ 发布兼容与极高画质

    ver-24 以不可变 ver-23 为底座,继承既有天气、地图与音乐功能。下列历史说明按各自版本理解;本节及标有极高的参数为本次新增行为。

    天气继续沿用 HeimeiWeather17 图集。支持原 PNG 标识/PNG 文件、原 PNG 标识映射 PNGZ 文件,以及发布器把标识和文件一并转为 PNGZ 三种方式。加载时优先使用原注册标识;未注册时才查询同名 .png/.pngz 的已注册替代标识,两者都有时原标识优先。此查询沿引擎内部资源表进行,不要求项目定义内部全局,不修改调用配置。没有注册的替代文件不会自动扫描;图集 图集|帧名 保持原解析规则。

    全部 8 张天气图片都走该兼容入口,包含地面效果、雪幕、氛围和闪电;原生异步纹理继续等待就绪。仅切换实际加载标识,内置图集仍按原布局切片,不会因 PNGZ 切到自定义整图模式。发布后保留资源表注册即可,无需改回 PNG。雷声仍使用 WAV。

    四种天气均可配置 画质='极高',默认画质仍为中。极高先按高档取整,再把雨雪沙粒子数量、雾团数量、水花每次预算及水花/积雪/脚印池容量翻倍,同时把沙幕、底雾噪声和雪幕噪声从高档的 2 层增加到 4 层。显式关闭的效果继续关闭。脚印仅提高容量,实际留印仍取决于行走距离;积雪网格容量翻倍不保证当前视野的有效网格数翻倍。

    引擎.地图.设置天气 {
    
        类型='下雨', 雨量='大雨', 画质='极高', 密度=0.85,
    
        地面水花=true, 淡入=1200,
    
    }
    
    

    极高不改变速度、步距、图标尺寸、积雪积累速度、闪电频率、音量及配置中的亮度/浓度;增加流动层会提高叠加后的浓度。氛围景深、基础均匀雾和闪电仍沿用原叠层,不保证 GPU 开销恰好翻倍。

    验证:1738 个 Proto 保持,业务指令仅 6 个天气函数变化;资源表沿原始父闭包显式捕获,反向恢复与 ver-23 逐字节一致。实际候选字节码通过 12,762,881 项隔离断言,440 个私有精灵创建/释放配平;旧版 PNGZ 注册负对照失败。真实 App.exe 使用正式服 PNGZ 样本,完成 PNG、PNGZ、原标识映射 PNGZ 共 24 个场景和旧版故障对照,覆盖全部 8 张图片、图集尺寸、整数纹素、四天气高/极高数量及清除。以上是独立机器验证,没有加载用户完整游戏或取得画面截图,真实地图的视觉、交互和帧率仍需用户复测。

    适用于 Heimei-EG-lua ver-24(底座为不可变 ver-23,继承 ver-19 纹理绑定修复及 ver-17 图集)。支持下雨、下雪、大雾和黄沙,默认关闭,状态按地图隔离。天气是本地 2D 视觉效果,不改变伤害、寻路、掉落或服务器逻辑。四个方法及既有基础调用保持兼容。ver-17 修复快速移动时空中缺雪、新区域积雪重新开始及边缘裁剪空带;积雪改为同一地图共享积累进度,增加有界预生成、连续雪面、角色前景雪幕、雾图集保护边及可选氛围景深。雨丝、水花、雷暴和首版黄沙的主要参数、纹理与运动沿用 ver-16。

    ver-19 天气纹理错绑修复

    用户在 ver-18 使用下方绿色大雾配置时,实际画面出现被放大的界面图集。现场库哈希确认为 ver-18,9 个天气资源均与 ver-17 交付包相同,配置有效。

    原因是复用精灵换图时,Lua 侧资源信息已切换,底层绘制对象的纹理绑定仍待更新。天气直接调用批绘制,遗漏该绑定步骤。ver-19 在每个天气批次显式绑定当前精灵纹理,覆盖底雾、团雾、雨雪沙、地面效果、雪幕、氛围和闪电;只有天气提交函数被替换。

    安装 ver-19 库并重启游戏,沿用原资源及以下调用,无需调整颜色或浓度:

    引擎.地图.设置天气 {
    
        类型='大雾', 密度=0.85, 颜色=0x5F9641D2, 速度=25,
    
        底雾浓度=0.28, 团雾浓度=0.65, 淡入=1200,
    
    }
    
    

    静态验证:Proto 总数保持 1723,指令变化仅 P1513,常量变化仅 P1513 和启动横幅 P1722,全部上值保持,逆向恢复与 ver-18 逐字节一致。隔离测试使用实际 P157 批绘制字节码及严格 C 边界替身,主动保留错误图集绑定和非零子图坐标;旧版失败、修复版通过完整天气回归。内部同名全局置 nil,205 个精灵创建释放配平。

    真实 App.exe 独立离线对照通过原生 SetTexture / UpdateState / SetTexture 重现待绑定状态,旧版批绘制仍使用诱饵图集;修复版“大雾 → 雨 → 雪 → 沙 → 大雾”5 场景通过,覆盖全部 8 种天气图片,含池化复用。测试没有加载用户完整游戏或取得有效画面截图;完整地图视觉仍待用户复测。以下历史性能与视觉记录按其原版本理解,不作为 ver-19 的用户验收结论。

    安装资源

    将交付包 HeimeiWeather_ver-17/Res/HeimeiWeather17/ 中的 8 张 PNG 和 1 个 WAV 原样放入实际游戏 Res/HeimeiWeather17/,配套使用 ver-24 Game.lib,继续沿用 HeimeiWeather17 资源目录;发布时可统一转换为 PNGZ,注册规则见本页 ver-24 说明。新增 atmosphere.png,fog.png 和 ground.png 的图集布局也已改变,不能只换库或混用旧图集。rain.png、snow.png、sand.png、dust.png、flash.png、thunder.wav 与 ver-16 字节一致;新目录不覆盖旧资源。

    正式打包时将以下条目合并到 App.lua 的既有 资源表,不要替换整个表:

    {标识='HeimeiWeather17/rain.png', 文件='HeimeiWeather17/rain.png'},
    
    {标识='HeimeiWeather17/snow.png', 文件='HeimeiWeather17/snow.png'},
    
    {标识='HeimeiWeather17/fog.png', 文件='HeimeiWeather17/fog.png'},
    
    {标识='HeimeiWeather17/atmosphere.png', 文件='HeimeiWeather17/atmosphere.png'},
    
    {标识='HeimeiWeather17/sand.png', 文件='HeimeiWeather17/sand.png'},
    
    {标识='HeimeiWeather17/dust.png', 文件='HeimeiWeather17/dust.png'},
    
    {标识='HeimeiWeather17/ground.png', 文件='HeimeiWeather17/ground.png'},
    
    {标识='HeimeiWeather17/flash.png', 文件='HeimeiWeather17/flash.png'},
    
    {标识='HeimeiWeather17/thunder.wav', 文件='HeimeiWeather17/thunder.wav'},
    
    

    图片缺失会跳过相应绘制;取天气().资源就绪仅检查本天气所需精灵纹理,不检查雷声是否加载或实际听见。雷声默认关闭。

    设置天气与基础参数

    地图对象.设置天气(配置)成功返回 true;非法类型、档位、选项格式等返回 false, 错误文本并保留旧天气。数值字段缺失、类型错误、NaN、无穷时采用默认值;有限数值越界时截到边界。地面区域矩形的无效数值直接拒绝。传入 nil、false、{类型='晴天'}或{类型='关闭'}可清除;后两者可附带淡出毫秒数。

    每次成功设置都会替换原天气并重新淡入,不叠加两种天气,也不交叉淡出旧天气。不要每帧重复设置。

    字段默认值格式和行为
    类型必填下雨、下雪、大雾、黄沙、飘灰、落叶、低雾;晴天/关闭用于清除
    密度0.70~1,微调雨雪沙粒子数量;雾同时影响团数和浓度;0 立即关闭
    画质中关闭、低、中、高、极高;数量倍率 0/0.5/1/1.5/3。极高按高档取整后翻倍数量与相关上限,并增加流动层;不是屏幕分辨率或抗锯齿开关
    淡入10000~60000 毫秒,仅控制从透明到目标浓度的过渡;不会增加最终数量
    速度雨820、雪58、雾35、沙1000~3000,逻辑像素/秒的运动基准;0 停止基准平移,但不是完整暂停,雪花摇摆、阵风、生命周期仍可推进
    风向雨雪雾0.2、沙1-2~2,负数向左,正数向右;是水平漂移系数,不是角度。叠加阵风后可短暂反向;雾有独立基础漂移,雪有摆动
    颜色按天气预设RGBA 整数 0~0xFFFFFFFF,低 8 位为透明度;着色天空粒子、团雾及内置连续底雾;可用于绿色瘴气。地面效果、闪电、雪幕和氛围景深另有预设或独立颜色
    种子11~2147483646 的整数,私有随机序列,不影响全局 math.random;风场使用独立序列,不因镜头补粒子改变后续风向
    更新频率6015~60 次/秒,控制天空粒子/团雾顶点更新;地面效果、脚印与雷暴仍按地图绘制推进
    图片随类型选择非空图片资源标识;自定义图片按整张单帧使用,不自动切分新版图集。下雨/下雪自定义单帧不自动获得默认图集的多方向/旋转帧;大雾自定义图片不绘制内置连续底雾和噪声层
    雾图片默认 sand.png兼容旧字段名,仅黄沙使用,替换连续沙幕;自定义图片应可无缝平铺,按整张使用

    密度决定“多少/多浓”,画质决定“效果预算”,淡入决定“多久出现”。需要小雨、大雨等明显档位变化,使用下面的雨量/雪量,再用密度细调。

    雨量、水花和可选雷暴

    雨量仅用于下雨,支持小雨、中雨、大雨,不传等同中雨。数量倍率分别为 0.4、1、1.8。雨丝改为约 1 像素线芯和约 12~20 像素短雨丝;小雨略短,大雨增加数量,不再加粗加长成白柱。17 个方向帧与显示宽度使用相同量化斜率,修正默认风向 0.2 选成竖直宽白条的问题。达到画质绝对上限后,继续增大强度不再增加数量。

    引擎.地图.设置天气 {
    
        类型='下雨', 雨量='大雨', 密度=0.85, 画质='中', 淡入=1200,
    
        地面水花={强度=0.95, 大小=1, 停留=650},
    
        雷暴={
    
            开启=true,
    
            闪电=true,
    
            场景照亮=true,
    
            雷声=false, -- 需要声音时改为 true
    
            间隔={8000,18000},
    
            亮度=0.28,
    
            压暗=0.14,
    
            余闪=true,
    
            音量=45,
    
        },
    
    }
    
    

    本版保留 ver-16 的空中雨丝和三阶段水花。水花分为接触亮点、小喷溅、扩散涟漪三个动画阶段,不依赖把雨丝加粗。默认大小约 16.7~20 世界像素,动画绘制尺寸还会轻微增长,寿命约 553~748 毫秒。

    地面水花默认 true,仅下雨生效;可写 false 关闭,或配置 table:

    子字段默认值说明
    开启true水花总开关
    强度0.950~1,水花动画透明度倍率;0 不可见
    大小10.5~2,世界像素尺寸倍率
    停留650200~1500 毫秒,实际寿命再乘 0.85~1.15 的随机系数
    每次上限121~40,乘画质倍率向下取整;每次天空更新最多新增数量,不是每秒数量

    水花池低/中/高/极高上限为 50/100/150/300。极高的每次新增预算为高档取整后两倍。随雨滴到达模拟落点生成,不是水面物理碰撞或积水反射。低雨量或低更新频率会降低落点频次。

    雷暴默认 false,仅下雨生效,可写 true 或配置 table:

    子字段默认值说明
    开启truetable 总开关;设置整个雷暴=false 关闭所有雷暴效果
    闪电true从 8 组细分分支图集随机选择,并变化位置、高度与持续时间
    场景照亮true雷暴期间的暗底与闪电照亮;false 同时关闭这两项,保留闪电线或雷声的独立开关
    雷声false触发原生音效播放,延迟约 500~1400 毫秒
    间隔{8000,18000}相邻雷暴间隔随机范围,毫秒,每端限制 3000~120000;首次也等待间隔
    亮度0.280~0.5,照亮脉冲的上限,不是全游戏亮度
    压暗0.140~0.4,雷暴期间的私有暗底;0 关闭压暗,闪电照亮时暗底减弱
    余闪true主闪后可有一次较弱余闪;false 关闭余闪
    音量450~100,仍受引擎自身音量设置影响
    音效HeimeiWeather17/thunder.wav可替换的非空原生音效资源标识

    主闪约 105~175 毫秒;可选余闪在主闪开始后约 200~300 毫秒出现,持续约 100 毫秒、强度不超过主闪标量的 28%。不做持续高频或纯黑纯白交替。明暗是天气私有叠层,不写地图的环境色或黑白画面,也不影响随后绘制的普通 UI;本版没有新增天气黑白去色开关。对闪光敏感时关闭闪电及场景照亮。清除天气会取消尚未发出的雷声;已经交给原生音效池播放的声音会自然结束,不强停共享音效池。默认附带声音为约 3.5 秒程序合成雷声,不是现场录音。

    雪量、短暂积雪与脚印

    雪量仅用于下雪,支持小雪、中雪、大雪,默认中雪;数量倍率同雨量。雪花按远/中/近层约 5:3:2 分布,具有速度差、摇摆与旋转帧,初始化直接铺满视口而非让大半雪花等在屏幕上方。风场不以主角移动方向作为输入。数量预算保持 ver-16,密度仍最多为 1。连续跑动、镜头跳转和缩放时,雪粒子投影到新视口后循环补位,不再全部从屏幕上方重新落入;保留粒子的层次和运动相位。粒子模拟仍是带外沿余量的局部视场,不是整张地图同时维护所有雪花。

    引擎.地图.设置天气 {
    
        类型='下雪', 雪量='大雪', 密度=0.85, 画质='中',
    
        阵风=true,
    
        积雪={开启=true, 强度=0.82, 积累速度=1, 停留=15000, 数量上限=256, 预生成距离=256},
    
        雪幕浓度=0.12, 雪幕颜色=0xC8D9E5FF,
    
        雪地=false, -- 普通地面等待积雪覆盖达到阈值后再留印
    
        脚印={开启=true, 停留=6000, 间距=18, 大小=1, 深浅=0.7, 数量上限=160},
    
    }
    
    

    积雪默认 true,仅下雪生效;可写 false 或配置 table。ver-17 使用地图级积累进度驱动世界坐标覆盖网格,不等待雪花逐粒命中。连续周期纹理按网格拼接,替代大幅交叠的柔边白斑;仍能透出原地面纹理,不产生真实高度或修改地图素材。

    子字段默认值说明
    开启true积雪开关
    强度0.820~1,当前地图积雪进度上限,不等于屏幕像素白色比例
    积累速度10~5,覆盖增长倍率;0 停止补雪
    停留15000500~60000 毫秒;当前天气停止补雪后等待此时间,再以每秒 0.25 的覆盖标量速度消退,最多 4 秒降至 0
    数量上限25616~512,再按画质计算容量;默认低/中/高/极高为 128/256/384/768,最大高档 768、极高 1536。极高为高档取整后两倍
    预生成距离2560~1024 世界像素,向当前视野四周扩展网格准备范围;另按镜头速度预测约 500 毫秒,每轴最多向前扩展 1024 世界像素,不增加数量上限

    地图积雪进度增长为 每秒 0.125 × 雪量倍率 × 密度 × 积累速度,每个有效网格继承同一进度,不再叠加局部随机增长。大雪、密度 0.85、强度 0.82、积累速度 1 时,约 4.3 秒达到上限;写成 0.1 则约 43 秒,淡入另影响显现。低画质不额外减半增长。速度=0 或积累速度=0 停止补雪,但摇摆等仍可能推进;完整暂停请调用暂停天气。

    网格通常为 128×64 世界像素,受地图尺寸、预算和视距影响可变粗;视野外先准备一圈,并按运动方向提前准备。只缓存有界的附近网格,不遍历全图。新区域、瞬移和视距换级后的网格继承本地图当前积雪进度,不再重新等待积累;网格换级可能改变纹理颗粒尺度,但不重置覆盖量,旧级网格不重复叠画。暂停时移动镜头仍可按冻结进度重建附近网格。

    地图级进度仅属于当前天气实例:非当前或不可视地图不推进,返回后继续;成功重新设置天气、清除、切换类型或地图重置仍会释放原状态,不是跨天气、跨存档的永久全图积雪。

    停留并非切换天气后保留积雪的承诺:清除、切换天气或重置仍释放雪面与脚印,淡出仅控制整套天气的透明度。

    脚印默认 true,仅下雪生效,当前只跟踪本地图主角,不给所有 NPC/怪物创建脚印。

    子字段默认值说明
    开启true脚印开关;脚印=false 可关闭
    停留6000毫秒,500~60000;后半段逐渐淡出
    间距186~100,主角实际行走的地图世界像素距离,不是帧数
    大小10.3~3,脚印尺寸与左右偏移倍率
    深浅0.850~1,整张压痕及薄雪亮边的透明度
    数量上限16016~256;低/中/高沿用独立硬上限。极高将取整后的容量翻倍,默认 320、最大 512;不改变实际留印步距

    雪地默认 false:脚印只在覆盖标量达到 0.2 的雪面网格内产生,刚开始下雪时需等待积累。地图本身已有雪地素材时应显式设为 true,此时允许有效地面区域留印;这个标记不会绘制整屏积雪,也不会自动识别地图材质。若积雪=false 且雪地=false,则没有可留印的雪面。

    脚印使用左右交替、八方向鞋底压痕,加入冷灰凹陷和薄雪亮边;默认显示框由 18 调至 22 个世界像素,鞋底有效区域也扩大,提高辨识度。位置固定在世界坐标。镜头移动、视距改变时跟随地面,不随屏幕漂移;站立、非行走位移、明显瞬移、切换主角和不可视主角不连续补印。它按行走距离采样,不是角色动画某一帧的精确脚掌 IK。本版保留 ver-16 的压痕像素和 22 像素显示框,仅迁移图集位置,依靠连续雪面提高对比;仍是贴片,不是挖除积雪纹理的实时凹槽或高度蒙版。

    飞行/悬浮等角色需由项目显式关闭留印,不自动识别所有动作语义:

    引擎.地图.主角.附加.天气脚印 = false -- 禁止此主角产生新脚印,已有脚印自然淡出
    
    引擎.地图.主角.附加.天气脚印 = nil   -- 恢复默认允许;也可以设 true
    
    

    只在下雪期间维护脚印;清除或切换到其他天气会一并释放地面雪面、脚印。

    前景雪幕与可选氛围景深

    雪幕浓度仅下雪生效,默认 0.12,范围 0~0.6;雪幕颜色默认 0xC8D9E5FF,为 RGBA 整数。雪幕是角色之后、雪花之前绘制的轻薄流动层,让角色、宝箱与场景受到同一雪天气氛影响;设浓度 0 关闭。它不代表物体表面积雪,也不自动识别屋顶、宝箱顶面或角色轮廓。已配置自定义雪花图片时仍可使用雪幕。

    氛围景深适用于四种天气,默认 false;可写 true 或 table,通过远景染色、近景压暗与边缘渐暗模拟参考图的远近气氛。仍是固定屏幕构图的 2D 叠层,没有真实深度缓冲、景物距离判定或景深模糊;不会修改地图的环境色和黑白画面。天气整体淡入淡出同样影响此层,随后绘制的普通 UI 不受它影响。

    子字段默认值说明
    开启truetable 开关;整个字段 false 关闭
    远景颜色0x376F94FFRGBA 整数,偏画面上部的渐变色
    远景浓度0.550~0.9,远景染色强度
    近景压暗0.160~0.6,偏画面下部的黑色渐变强度
    边缘压暗0.180~0.6,四周暗角强度
    清晰范围0.70.2~1,越大暗角越靠外、中央保留区域越大;不是自动跟踪角色的对焦范围
    引擎.地图.设置天气 {
    
        类型='大雾', 密度=0.8, 颜色=0x376F94D8,
    
        底雾浓度=0.18, 团雾浓度=0.4, 淡入=1500,
    
        氛围景深={
    
            开启=true, 远景颜色=0x206591FF, 远景浓度=0.7,
    
            近景压暗=0.2, 边缘压暗=0.2, 清晰范围=0.75,
    
        },
    
    }
    
    

    上例是参考图的蓝色远近氛围方向,不保证在不同地图素材上得到相同观感。

    移动团雾与阵风撕扯

    引擎.地图.设置天气 {
    
        类型='大雾', 密度=0.9, 画质='中', 速度=35, 团雾大小=1.2,
    
        底雾浓度=0.32, 团雾浓度=0.85,
    
        阵风={强度=0.4, 间隔={2500,6500}, 持续时间=2800},
    
    }
    
    

    大雾由连续底雾、世界坐标流动噪声、柔边团雾组成,默认颜色为 0xBFC8CDF0。底雾浓度默认 0.32(0~0.8)同时控制连续底色与低/中高画质 1/2 层噪声;团雾浓度默认 0.85(0~1)独立控制团雾强度,两项还会乘密度、颜色透明度和整体淡入。团雾在 8 帧变形噪声之间交叉过渡,避免只有整张图片平移;形变循环约 25 秒。自定义图片只绘制整张单帧团雾,关闭内置底层和 8 帧形变,此时底雾浓度无效。

    雾片保留世界坐标,每团有生成、扩展、消散过程,寿命约 14~30 秒。镜头只改变投影,不再仅反向补偿 18% 导致跟随主角;视距改变会正确缩放雾片。远离当前视野较远的雾片会回收到新视野附近并从透明生成,不能理解成整张地图永久保存所有雾片。团雾大小默认 1,范围 0.4~3,本版仅影响大雾;黄沙不再使用团雾。它仍是 2D 纹理团雾,不是体积雾或自动地形遮挡;可额外启用上面的氛围景深,但不会因此获得真实景物深度。

    ver-17 将流动底雾与团雾分开图集和纹理批次:团雾帧增加透明保护边,周期底雾增加环绕保护边,纯色底层改从 64×64 实色块内部取样,不再放大单个纹素列。共同裁剪使用整数纹素主体及少量边缘补条,覆盖到精确视口边界,消除原向内取整留下的周期性空带。边缘补条仍是整数纹素近似,不是新增了浮点 UV API;真实设备上的残余采样观感仍需验收。

    颜色可直接自定义,例如绿色瘴气:

    引擎.地图.设置天气 {
    
        类型='大雾', 密度=0.85, 颜色=0x5F9641D2,
    
        底雾浓度=0.28, 团雾浓度=0.65, 速度=25,
    
    }
    
    

    颜色是根配置,格式 0xRRGGBBAA,不是放在团雾子表内。内置底雾、流动噪声和团雾共同着色;该颜色能力既有,本版增加专项验证。绿色只表示视觉气氛,不自动施加中毒伤害或状态。

    引擎.地图.设置天气 {
    
        类型='黄沙', 密度=0.8, 风向=1, 画质='中',
    
        阵风=false, -- 默认首版观感;需要额外风向变化时再配置阵风 table
    
    }
    
    

    阵风默认在雪、雾开启,雨和黄沙默认关闭;可写 true/false 或 table。黄沙不仅恢复首版连续沙幕,还恢复 dust.png、颜色 0xCBA56ABD、速度 100、数量预算、随机起点和运动公式。默认无阵风且配置相同情况下,隔离测试逐项对照首版运动。显式开启阵风时仅叠加细沙位移与较弱沙幕速度变化,不再拉长粒子或制造雾团。大雾仅有轻微伸缩,雪继续使用独立阵风与摇摆;不是物理风场。

    子字段默认值说明
    开启truetable 开关
    强度0.650~2,叠加基础风向的随机幅度
    间隔{2500,6500}每阵结束后的休歇毫秒范围,每端 500~60000
    持续时间2800每阵脉冲时长,500~15000 毫秒

    风力平滑增强再衰减;同种子、同推进时间的风场不受镜头补粒子影响。镜头移动仍会带来正常的相对运动和远近视差,不能理解成屏幕上雪花轨迹完全不受观察位置影响。

    地面区域与显示层级

    地面区域可选,最多 32 个 {x,y,宽,高}组成的连续数组,全部为地图世界像素,不是格子坐标;宽高必须大于 0。未配置时允许整个地图范围;空数组禁止所有地面水花、雪面和脚印。矩形按效果中心点筛选,不会把贴片边缘再裁到每个区域边界。

    引擎.地图.设置天气 {
    
        类型='下雪', 雪量='中雪', 雪地=true,
    
        地面区域={{640,320,1280,640}, {2200,800,600,400}},
    
    }
    
    

    地面效果继承原生地表绘制矩阵:地表 → 水花/雪面/脚印 → 原角色等场景内容 → 雪幕/底雾/氛围景深 → 团雾 → 天空雨雪/细沙 → 闪电 → 普通窗口/UI。雪面先于脚印绘制,避免新落雪立即盖住压痕。天空覆盖层仍可能覆盖地图内部气泡,不接收鼠标输入。

    不自动识别屋顶、洞穴、池水和室内。需要由项目选择天气地图,并提供可落地的区域;区域仅限制地面效果,不能挡住天空雨雪。普通地图相机移动不改写旧脚印位置;地图震屏、环境色和黑白处理仍会影响最后的整张地图画面。

    清除、暂停、查询与生命周期

    引擎.地图.清除天气(1000) -- 1000 毫秒淡出,完成后释放本天气私有精灵和状态
    
    引擎.地图.清除天气()     -- 立即清除;重复调用安全
    
    引擎.地图.暂停天气(true)
    
    引擎.地图.暂停天气(false)
    
    local 信息 = 引擎.地图.取天气()
    
    

    清除返回 true。暂停参数必须是逻辑值,否则返回 false,错误文本;无天气时调用安全。暂停冻结天空运动、地面寿命、淡入淡出和待发雷声,且清空尚未消费的天空更新余量,避免镜头变化时补算旧时间;但不是停止整个地图或已经播放的声音。暂停时请求淡出需恢复后继续,传 0 可立即清除。手动移动镜头仍会重新对齐地面效果。

    取天气()返回独立快照,修改快照不影响内部状态:

    • 保留:类型、密度、画质、速度、风向、颜色、种子、透明度、暂停、粒子数、绘制批次、资源就绪、宽度、高度。
    • 新增:当前风向、地面批次、雾团数、水花数、落雪数、脚印数、雷暴次数、雷声次数、累计水花、累计落雪、累计脚印。
    • 雨天另有雨量,雪天另有雪量。积雪覆盖是当前准备范围内有效网格的平均覆盖标量,非白色像素占比;积雪网格尺寸是世界像素宽度,高度为其一半;非积雪天气为 0。ver-17 新增地图积雪进度,表示本天气实例保留的覆盖进度;镜头完全离开地图或没有有效地面区域时,积雪覆盖可为 0,而地图进度仍保留。
    • ver-17 新增雪幕浓度(雪天配置值,其他为 0)和氛围景深(逻辑开关,不返回内部配置 table)。
    • 落雪数在 ver-17 表示当前准备范围内有覆盖的有效网格数量,含预生成区、不含旧级闲置记录,不再表示落雪斑数;累计落雪仍记录模拟落点事件,与网格增长独立,不等于新增网格数量。黄沙的雾团数为 0。雷声次数是调用原生播放接口的次数,不保证资源存在或听见声音。
    • 粒子数含屏幕外循环粒子;地面数量为当前存活记录,也可能在视口外。绘制批次是最近一次天气纹理提交数量,不是全游戏 GPU DrawCall;地面批次包含在总批次内。
    • 非当前或不可视地图返回 0 绘制批次。刚设置尚未绘制时资源就绪为 false、尺寸为 0。晴天只返回类型=晴天、粒子数=0、绘制批次=0。

    只有当前可视地图推进天气,离开后状态冻结、返回继续。地图暂停同时暂停天气;地图加速不加速天气。单帧最多推进 100 毫秒,长挂起后不补算全部经过时间。地图重置先清除,再执行原重置/创建回调;普通切图重入不自动清除缓存天气。

    视口尊重地图屏幕位置宽高,屏幕适配模式 2 的逻辑尺寸变化会重建布局,模式 1 沿用原整体缩放。丢焦点不自动清除;可在项目既有焦点事件里配合暂停天气。

    可在地图创建事件一次性设置:

    系统事件 = {
    
        创建 = function(地图对象)
    
            地图对象.设置天气 {类型='下雪', 雪量='中雪', 雪地=true, 淡入=1000}
    
        end,
    
    }
    
    

    没有新增地图根配置 天气={...} 字段。缓存地图不再需要天气时,显式清除可释放私有状态。

    性能预算与验证边界

    低/中/高粒子数为 基准数量 × 画质倍率 × 密度 × 雨雪量倍率 × 视口面积 / 480000 向下取整;极高为相同条件下高档粒子数的两倍,相关硬上限也翻倍:

    天气800×600、密度1、中画质、中雨/中雪基准低/中/高/极高绝对上限
    下雨320400 / 800 / 1200 / 2400
    下雪360450 / 900 / 1350 / 2700
    黄沙180160 / 320 / 480 / 960
    大雾无雨雪式粒子,独立雾团6 / 12 / 18 / 36 团

    800×600、密度1、中画质时:小/中/大雨为 128/320/576 个,小/中/大雪为 144/360/648 个;实际可见数量少于安排数量。大雾团数随密度与视口面积调整。黄沙低画质 1 层、中高 2 层、极高 4 层连续沙幕;原中高最多 32 个裁剪块,极高上限相应翻倍,仍只提交 1 个沙幕纹理批次。

    包含可选雷暴时,雨/雪/雾/沙最多 3/3/2/2 个天气纹理批次;雪的第三批为前景雪幕,雾的底层和团雾分成两批。额外开启氛围景深后最多为 4/3/2/3 批,雪和雾复用已有 atmosphere 纹理批次。关闭雪幕且不启用氛围景深时,雪回到最多 2 批。每个裁到边界的四边形可能拆为最多 9 个小块;完全在视口内的粒子走直接提交路径,不额外拆分。

    预生成和裁剪不提高粒子/网格池硬上限,但新增雪幕、雾图集和可选氛围会增加纹理与半透明填充成本,不能保证与旧版帧率相同。优先降低画质和密度,关闭不需要的雪幕、氛围和地面效果;更新频率只降低天空更新,不降低全部天气开销。

    粒子、贴片、顶点 table 复用,有明确数量上限;不每帧创建/销毁精灵。图像异步未就绪或创建失败时跳过,创建失败不每帧重试,修复资源后重新设置天气再尝试。清除只释放私有精灵,共享纹理缓存由引擎管理;地表适配器清理时恢复原 Draw。

    ver-17 候选字节码通过严格解析、标准化语法、全层闭包捕获、精确差异和反向逐字节还原;原地图子树字节不变,Proto 1718→1720。隔离回归覆盖四边连续裁剪、整数纹素、八方向快速移动和瞬移补雪、暂停及视距换级继承积雪、旧级不叠画、绿色雾、雪幕开关、氛围配置及既有天气功能。八方向移动测试中最少约 64.4% 安排雪粒子仍在视口内;粒子含屏外余量,这不是性能或自然度评分。

    ver-17 纹理专项检查六个沿用文件字节不变、水花/脚印像素不变、周期雪面与雾噪声的保护边、团雾帧透明边缘及渐变方向。真实 App.exe 独立离线合成地图完成 12 个场景与重置,包含快速移动、主角脚印开关、暂停世界雾、绿色雾、蓝色氛围、切图、缩放与小视口。未加载用户完整游戏;原生窗口捕获仍无可用渲染截图。辅助静态/GIF 预览来自实际 DrawVertexArray 顶点的软件合成,统一用绿色合成地面,不是引擎截图或用户地图。

    ver-17 在 1080p、高画质、密度 1、中雨/中雪的预发布隔离 Lua 记录器采样约雨 1.49、雪 1.82、雾 0.062、沙 0.41 毫秒/帧,3000 帧额外 Lua 分配约 0.61/5.79/0/0 KiB;正式发布重采样以 validation.json 为准。不含 GPU、真实地图和完整游戏负载,半透明填充开销未测。用户反馈 ver-16 有积雪边界、快速移动缺雪、角色层次和边缘/雾条纹问题;本版机器通过不能登记为用户实机视觉验收通过。

    更新记录

    日期版本简易记录
    2026-09-13ver-13新增地图私有雨、雪、雾、黄沙,提供设置、清除、暂停、查询;记录资源、批绘制、数量上限、生命周期与验证边界。
    2026-09-13ver-14增加雨雪量档位、地面水花、可选雷暴/雷声、移动团雾、独立阵风、短暂雪斑与主角左右脚印;同步新版资源、地面区域、开关、数量预算和验证边界。
    2026-09-13ver-15修正默认雨向粗白柱、世界坐标团雾及暂停残留时间;恢复首版连续沙幕,细化水花、合并粉雪斑、增强脚印压痕,增加雷暴压暗/余闪并升级专用资源。
    2026-09-13ver-16保留空中雨丝、增强三阶段水花;连续底雾与双帧形变团雾;首版黄沙参数/纹理/运动复原且默认关闭阵风;提高分层雪量,独立世界网格连续积雪,新增强度/积累速度与覆盖查询,说明缓存和性能边界。
    2026-09-13ver-17快速移动雪粒子循环补位;地图共享积雪进度与有界预生成,连续周期雪面、换级不重积;增加前景雪幕和可选 2D 氛围景深;修复公共边缘裁剪空带及雾图集保护边,补充绿色雾示例、资源与性能边界。
    2026-09-14ver-19修复池化精灵换图后天气批绘制沿用旧图集的问题;每批绑定当前纹理,沿用 HeimeiWeather17 资源和参数;旧版失败对照、完整隔离回归及真实 App.exe 离线 5 场景通过,完整游戏待复测。
    2026-09-16ver-24兼容发布后 PNGZ 资源标识并保持内置图集切片;四天气新增极高,粒子/雾团、地面池和流动层按高档翻倍,记录配置、容量边界及独立验证状态。