用 AI 做鸿蒙游戏 NPC,是一种什么体验?

用 AI 做鸿蒙游戏 NPC,是一种什么体验?
在这里插入图片描述

子玥酱(掘金 / 知乎 / ZEEKLOG / 简书 同名)

大家好,我是子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。

我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括前端工程化、小程序、React / RN、Flutter、跨端方案,
在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。

技术方向:前端 / 跨端 / 小程序 / 移动端工程化
内容平台:掘金、知乎、ZEEKLOG、简书
创作特点:实战导向、源码拆解、少空谈多落地
文章状态:长期稳定更新,大量原创输出

我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、真实项目中如何取舍,希望能帮你在实际工作中少走弯路。

子玥酱 · 前端成长记录官 ✨
👋 如果你正在做前端,或准备长期走前端这条路
📚 关注我,第一时间获取前端行业趋势与实践总结
🎁 可领取 11 类前端进阶学习资源(工程化 / 框架 / 跨端 / 面试 / 架构)
💡 一起把技术学“明白”,也用“到位”

持续写作,持续进阶。
愿我们都能在代码和生活里,走得更稳一点 🌱

文章目录

引言

如果你做过游戏开发,一定写过 NPC。而且大概率是这样写的:

if(playerNear){attack()}else{patrol()}

简单、直接、可控。但也有一个明显问题:

NPC 永远是“写死的”

而当你把 AI 引入到 HarmonyOS 游戏里,事情会发生变化:

const action = npcAgent.decide(state)

这时候你会发现:

你不再是在“写 NPC”,而是在“创造一个角色”

一、从“脚本 NPC”到“智能 NPC”

先看最核心的变化。

传统 NPC

if(hp <30){runAway()}else{attack()}

特点:

  • 可预测
  • 可控制
  • 可调试

AI NPC

const action = agent.decide({ hp, enemyDistance, history })

特点:

  • 不完全可预测
  • 有“行为风格”
  • 会“变化”

本质变化:

NPC 从“规则集合”,变成“决策系统”

二、第一感受:NPC“活”了

这是最直观的体验。

传统 NPC

玩家靠近 → 攻击 玩家远离 → 停止 

AI NPC

可能会:

  • 先观察你
  • 选择绕后
  • 假装撤退再反击

开发者的第一反应通常是:

“这行为我没写过啊?”

没错—— 这正是 AI 的价值

三、第二感受:你开始“调性格”,而不是“写逻辑”

传统开发:

if(...)doSomething()

AI 开发:

prompt =` 你是一个谨慎的敌人, 优先保命,其次攻击 `

你在做的事情变成:

设计行为风格(Personality) 

示例

npcAgent.setProfile({ style:"aggressive", riskTolerance:0.8})

本质变化:

代码 → 行为设计

四、第三感受:调试方式完全变了

传统调试:

  • 打断点
  • 看变量
  • 查逻辑

AI 调试:

  • 看输入
  • 看输出
  • 调 prompt

示例

console.log("state:", state)console.log("action:", action)

你会发现:

Bug 不再是“代码错了”,而是“AI 理解错了”

五、第四感受:不确定性

AI NPC 最大的特点: 不可完全预测

好处

  • 更真实
  • 更有趣
  • 更耐玩

坏处

  • 难调试
  • 难复现
  • 可能“失控”

示例

// 有时候 NPC 突然不攻击

你会想:

“是 bug 吗?”

其实可能是:

AI 决策的结果

六、鸿蒙上的独特体验

在 HarmonyOS 上,AI NPC 还有一些独特优势。

1、端侧 AI

const action = localModel.infer(state)

优点:

  • 实时决策
  • 无网络依赖

2、多设备感知

AI 可以感知:

手机输入 TV 状态 传感器数据 

示例

agent.decide({ playerInput, deviceContext, environment })

NPC 变成:

“全场景感知角色”

3、分布式协同

多个 NPC 可以协作:

teamAgent.decide(teamState)

形成: AI 队伍

七、一个完整 AI NPC 示例

我们做一个简单 Demo:

1、NPC Agent

classNPCAgent{asyncdecide(state){if(state.hp <20){return"escape"}if(state.enemyDistance <50){return"attack"}return"patrol"}}

这是“规则 + AI”的过渡版本。

2、接入页面

const action = npcAgent.decide({ hp:this.hp, enemyDistance:this.distance })this.execute(action)

3、执行行为

execute(action:string){switch(action){case"attack":this.attack()breakcase"escape":this.runAway()break}}

这就是最小 AI NPC 架构:

State → Agent → Action → Execute 

八、进阶:接入大模型

如果你接入大模型(LLM),NPC 会更“人性化”。

示例

asyncdecide(state){const prompt =` 当前血量 ${state.hp} 敌人距离 ${state.enemyDistance} 你会怎么做? `returnawait llm.generate(prompt)}

效果:

  • 会说话
  • 会表达情绪
  • 会“演戏”

九、开发建议

1、不要一开始就用大模型

先用:

规则 → 简单 AI → LLM 

2、加“安全边界”

if(!validAction(action)){ action ="idle"}

3、记录行为日志

log.push({ state, action })

4、限制决策频率

setInterval(()=>{ agent.decide()},500)

十、最大的变化

传统 NPC :你写“它做什么”
AI NPC: 你定义“它是什么样的人”

总结

在 HarmonyOS 上,用 AI 做 NPC,本质是一次角色设计方式的升级。

可以总结为四个变化:

1、逻辑变了

if/else → AI 决策 

2、开发方式变了

写代码 → 设计行为 

3、调试方式变了

查 bug → 调 AI 

4、体验变了

NPC → 角色 

最后给你一个很有意思的结论:

当 NPC 不再是“写出来的”,而是“表现出来的”,游戏世界就开始变得真实。

而这,可能才是 AI 游戏真正的开始。

Read more

科哥OCR WebUI太香了!紫蓝渐变界面操作丝滑又高效

科哥OCR WebUI太香了!紫蓝渐变界面操作丝滑又高效 1. 这不是又一个OCR工具,而是一次体验升级 你有没有过这样的经历: 花半小时配环境、改路径、调参数,终于跑通一个OCR模型,结果打开网页——灰扑扑的Gradio默认界面,按钮挤在角落,上传框像上世纪的网页表单,检测完还得手动翻JSON看坐标? 科哥做的这个cv_resnet18_ocr-detection WebUI,彻底改写了这个剧本。 它没有堆砌炫技功能,却把“好用”刻进了每一处交互细节:紫蓝渐变的标题栏不刺眼、悬停有微光反馈、检测进度条带实时耗时显示、结果文本一键全选复制、坐标数据自动格式化为可读结构……这不是给工程师看的调试面板,而是为真实使用者设计的工作台。 更关键的是——它足够轻量。 不用GPU也能跑,CPU上单图检测3秒出结果;模型基于ResNet18轻量架构,显存占用低,连GTX 1060都能稳稳扛住批量处理;所有功能模块(单图/批量/训练/导出)都封装在同一个Web界面里,无需切终端、不用记命令,点几下就完成从前要写脚本才能做的事。 这篇文章不讲模型结构、

【前端部署在云服务器如何与本地联调--Frp内网穿透】

【前端部署在云服务器如何与本地联调--Frp内网穿透】

苍穹外卖前端部署在云服务器如何与本地联调--Frp内网穿透 * 1. 前言 * 2. FRP是什么 * 3. 解决步骤 * 3.1 在云服务器安装服务端frps,然后开启开机自启(**参考第4部分**) * 3.2 在本地电脑安装客户端fprc(**参考第4部分**) * 4. Frp(C/S)0.64.0各个系统的安装方法 * 4.1 frps安装(Linux)服务端 * 4.2 frpc安装(windows)客户端 * 4.3 frpc安装(==mac==)客户端 * 4.4 frpc安装(Linux)客户端 1. 前言 写这片文章的目的是为了解决上篇苍穹外卖项目的前端部署到云服务器的遗留问题:前端的云服务器的IP是公网IP,而我本地调试的Java后端是内网,前端响应的地址找不到本地的服务器。那么如何让云服务器上的前端项目能够找到后端的对应的地址呢?

从前端视角看鸿蒙PC开发:遇到的问题与实践

鸿蒙PC发布至今已过去6个多月。就在这个月,我终于也是通过华为得到了一台鸿蒙PC 😋 拿到的一瞬间真的很激动,它真的是太薄了,又薄又轻,比我现在用的 Macbook Air (M1) 还要薄要轻一半,属实是惊艳到我了。和我的 Macbook Air 一样也是无风扇的设计,目前不知道它的散热性能如何,但目前使用起来,发热量并不大,而且非常的安静。 拿到快递我迫不及待立刻开箱,开机,初始化配置之后,马上各个APP都看了几遍,整个系统特别的流畅丝滑,真的爽 😊 鸿蒙PC的桌面,整体风格上像是 MacOS + Windows 的结合体,将类 Windows 的开始菜单放在了左下角,将类似 MacOS 启动台放在了中间,其中中间的头四个图标(启动台、多桌面、文件管理、回收站)是无法被移除的,而其他的图标则可以按照个人需要添加和移除。 看了一下应用市场,现在鸿蒙PC的生态还是比较封闭式的,和苹果一样,甚至在应用商店的审核机制上比苹果还要更加严格。电脑一拿到,内置安装了一堆APP,

‌Web API测试工具与技巧

‌Web API测试工具与技巧

一、核心工具演进:2025–2026年主流平台能力升级‌ 2025年以来,API测试工具已从“调试器”全面进化为“全生命周期协作平台”。以下为当前行业主流工具的核心能力跃迁: 工具2025–2026年关键升级对测试工程师的价值‌Postman‌集成AI辅助测试生成器,支持自然语言描述自动生成测试用例与断言;支持动态环境变量预测与异常响应模式学习减少70%以上手动用例编写时间,提升回归测试覆盖率‌Apifox‌原生支持GraphQL测试用例管理,单接口可创建多组Query/Variables组合;内置Mock服务与自动化测试引擎一体化实现“设计-调试-测试-Mock”闭环,无需切换工具‌Swagger UI 5+‌支持OpenAPI 3.1的$dynamicRef与unevaluatedProperties,可实时验证复杂嵌套Schema;新增Webhooks交互调试面板确保API契约与实现一致,降低集成阶段返工率‌JMeter‌新增HTTP/3与gRPC协议支持;集成Prometheus监控插件,实时输出TPS、P99响应时间满足云原生架构下高性能API压测需求‌Karate‌