更新日志
版本:v1.2.0 优化与修复更新
发布日期:2026-08-09
---
📌 一、新增功能
· 技能系统:新增“旋风斩”(范围伤害,冷却8秒)和“治疗术”(恢复30%最大生命,冷却15秒),并配有独立的冷却UI倒计时。
· 词缀重铸系统:在铁匠铺中可对稀有度≥1的装备重新随机词缀,消耗金币,保留强化等级与基础属性。
· 装备合成系统:3件同ID、同稀有度(传说以下)的装备可合成为高一级稀有度的装备,词缀随机,强化等级取最高。
· 沙漠商人:在沙漠地图(黄沙戈壁)中新增NPC,提供“绿洲之泉”服务,消耗金币完全恢复生命值。
· 每日签到系统:纯本地存储,7天循环签到奖励(金币、药水、铁剑),支持连续签到天数累计。
· 2.5D 上帝视角:自动战斗开启时,相机自动切换为玩家后上方俯瞰视角,挂机视野更开阔(可在设置中关闭)。
· 精英怪系统:每击杀25只普通怪物,在附近生成一只“精英怪”,拥有3倍血量、2倍攻击、2.5倍经验与更高掉落率。
· 对话NPC系统:围绕树木扩散10个可互动NPC,靠近自动弹出个性化对话内容(纯文本展示)。
· 仓库扩容:支持花费金币扩容仓库(每10格扩容一次),并支持“一键存入背包”功能。
· 离线收益系统:登录时自动检测离线时长,弹窗领取金币与经验奖励。
---
🐛 二、Bug 修复
· 修复“建筑/树木悬浮”问题:修正了 SpriteProp 和 Tree 的贴地偏移量(从纯数学 size * 0.5f 改为 0.1f 或 size * 0.5f - offset),消除图片透明边距导致的视觉悬浮,建筑现在稳稳落地。
· 修复 OpenGL 上下文丢失(锁屏/黑屏恢复):全面补充 cleanup() 和 SharedShaders.init(),解决了锁屏解锁后画面丢失、纹理失效、程序句柄泄漏的严重问题。
· 修复地图切换时资源未清理:补全了 SpriteBoss、SpriteDesertMerchant 等精灵的 cleanup() 调用,避免切换地图时GPU程序/纹理泄漏。
· 修复新手村安全区怪物穿透:强制将刷新在安全区内的怪物推出半径35的圆形范围,保护村民NPC和建筑不受怪物围攻。
· 修复副本进出逻辑异常:进入副本前清理普通怪物并释放资源,退出副本时正确恢复普通怪物刷新,解决“副本结束后无怪”或“卡死在副本内”的问题。
· 修复稀有度/词缀装备存档丢失:WarehouseSlot 与 Item 序列化新增完整词缀(攻击/防御/生命/暴击/吸血)及稀有度字段,取出时完整还原,不再丢失强化与词缀属性。
· 修复飘字缓存与纹理泄漏:FloatingText 销毁时删除纹理,避免累积泄漏。
---
⚡ 三、性能优化
· 矩阵分配优化(核心):移除了 draw() 方法内频繁 new float[16] 的行为,改为在 GameRenderer 中复用共享矩阵 sharedModel 和 sharedMvp,大幅减少GC抖动的卡顿。
· 文字缓存扩容:将 TextTexture 的 LruCache 上限从 2MB 提升至 5MB,避免战斗中大量飘字时频繁重新生成位图与上传纹理。
· 角度运算优化:自动战斗中的 yaw 差值归一化改用数学取模(((diff % 360) + 540) % 360 - 180),去掉了冗余的 while 循环。
· 减少临时数组分配:移除了 pushOutOfVillage 方法中的 float[] xz 数组分配,改为直接传递 float x 和 float z 的引用,减少每帧GC压力。
· UI 更新节流:在 GameRenderer.updateUI() 中增加了时间戳判断,避免高频事件(如连续受击)频繁向主线程发送 post 消息导致界面卡顿。
· 受击红屏特效复用:使用静态 FloatBuffer 绘制全屏红色四边形,避免受击期间每帧分配72字节堆内存。
---
🔧 四、底层与安全加固
· 线程安全增强:对 GameData.bag 的遍历、增删、装备/卸下、回收等操作全部加 synchronized(bag) 锁,杜绝 ConcurrentModificationException。
· 资源防御性检查:在所有 GL 调用前增加 program == 0 判断,防止上下文丢失后 glUseProgram(0) 导致渲染崩溃。
· 音效加载保护:SoundManager 改用 tryLoadSound 安全加载,资源缺失时静默返回 -1,绝不闪退。
· 怪物多样性:区分草原、森林、沙漠三张地图的专属怪物池,每张地图拥有独立的怪物名称、属性与体型,不再是单一哥布林。
---
温馨提示:本次更新为底层优化版本,所有新增功能均兼容旧存档(自动升级)。


