本地AI从零生成3D网页FPS:Qwen模型与DSH智能体实战

0 阅读

为什么选择本地AI做游戏开发

想做一个能跑的3D第一人称射击游戏(FPS),传统路径并不轻松。你需要处理Three.js的场景渲染、物理碰撞、玩家输入映射,还要写敌人AI和状态管理。对于非专业前端或游戏开发者来说,光是配置Webpack或Vite环境就可能劝退一半人。

现在的思路变了:不再要求你手写每一行代码,而是让AI充当“初级程序员”,你担任“技术主管”。核心工具链包括本地运行的大语言模型(LLM)和能够操作文件系统的AI智能体(Agent)。

这种模式的优势在于隐私安全和可控性。所有代码生成都在本地完成,无需将项目源码上传至云端API。同时,通过分模块迭代,可以避免一次性生成大量代码导致的逻辑混乱和幻觉问题。

本文将复现一套基于 Qwen3.8-27B 模型与 DeepSeek Harness (DSH) 的开发流程,从环境搭建到最终通过内网穿透分享给朋友试玩,全程无需编写复杂代码,但需要理解基本的开发逻辑。

硬件与软件准备

本地运行27B参数量的模型对硬件有一定门槛。显存是瓶颈,推理速度取决于显卡性能。

硬件建议

  • 推荐配置:NVIDIA RTX 3090/4090 或同等算力显卡,显存24GB及以上。这能保证模型加载后仍有足够显存处理上下文,推理流畅。
  • 最低配置:16GB显存显卡。可以运行,但可能需要使用量化版本(如IQ4_XS),且生成速度较慢,部分运算会溢出到系统内存。
  • 不可行配置:显存低于16GB。极易出现OOM(显存溢出)错误,导致模型加载失败或频繁崩溃。

软件清单

在开始之前,请确保安装以下基础工具:

  1. Node.js (LTS版):DeepSeek Harness 和后续的游戏服务都依赖Node环境。务必选择长期支持版(LTS),避免使用最新测试版,以防兼容性问题。
  2. Git:用于版本控制和依赖管理,DSH在读写项目文件时需要调用Git命令。
  3. LM Studio:用于本地加载和运行Qwen模型,并提供标准的OpenAI兼容API接口。
  4. DeepSeek Harness (DSH):核心智能体工具,能够读取项目目录、编写代码、执行终端命令并自动修复报错。
  5. VS Code(可选):用于查看和微调AI生成的代码,虽然DSH可以自动修改,但人工审查有助于理解项目结构。

搭建本地开发环境

安装基础运行时

首先安装 Node.js。访问官网下载LTS安装包,安装过程中务必勾选“Add to PATH”选项,以便在命令行中直接调用。安装完成后,重启命令行窗口,输入 node -v 和 npm -v,若显示版本号则安装成功。

接着安装 Git。下载Windows版安装包,保持默认设置一路下一步即可。在命令行输入 git --version 验证安装。

部署本地大模型

LM Studio 是目前最易用的本地模型运行工具之一。访问其官网下载安装包,安装过程无特殊选项。

启动 LM Studio 后,在搜索栏输入 Qwen3.8-27B。建议选择 IQ4_XS 或 Q4_K_M 等量化版本,它们在保持较高智能水平的同时,显著降低显存占用。下载完成后,在右侧聊天界面加载该模型。

关键步骤是开启本地API服务。点击左侧“Local Server”标签,确保服务器处于运行状态,默认端口通常为 1234。此时,任何支持 OpenAI 格式的程序都可以通过 http://127.0.0.1:1234/v1 访问这个本地模型。

配置 DeepSeek Harness

DSH 是一个命令行驱动的智能体,但它提供了一个 Web UI 方便配置。以管理员身份打开 PowerShell,执行以下命令启动:

npx @deepseek-ai/dsh web

首次运行会提示安装,输入 y 确认。启动成功后,终端会显示一个本地地址(通常是 http://localhost:xxxx),在浏览器中打开该地址进入 DSH 的管理界面。

在 DSH 界面中,我们需要配置模型提供方。点击“Settings” -> “Models”,添加一个新的自定义Provider:

  • Provider ID:填写 local 作为标识。
  • Display Name:例如 Qwen-Local。
  • API Base URL:填入 LM Studio 的地址 http://127.0.0.1:1234/v1。
  • API Key:由于是本地服务,可以随意填写一串字符,或者留空(视DSH版本要求而定)。
  • Model Name:手动添加模型名称,需与 LM Studio 中加载的模型ID一致,例如 qwen3-27b-iq4_xs。

保存配置后,在对话界面选择该模型,发送一条测试消息如“Hello”,若能收到回复,说明链路已打通。

分阶段构建FPS游戏

直接让AI“写一个FPS游戏”通常会得到一堆无法运行的碎片代码。正确的做法是拆解任务,采用“极简主程序+独立模块”的策略,分轮次推进。

第一步:初始化项目框架

在电脑上新建一个纯英文路径的文件夹(避免中文和空格),作为项目根目录。在 DSH 中绑定该目录。

发送第一条指令:

基于 Three.js 搭建一个极简的3D网页游戏框架。创建 index.html 和 main.js,初始化场景、相机和渲染器,添加一个简单的地面平面和光源。确保项目可以通过 npm start 或 live-server 正常运行并在浏览器中显示3D场景。

DSH 会自动创建文件结构,安装 three.js 依赖,并生成基础代码。此时你可以在浏览器中看到一个大平面和天空背景。

第二步:实现玩家控制

有了场景,接下来需要让玩家动起来。发送指令:

添加第一人称控制器。实现 WASD 键移动,鼠标移动控制视角旋转,空格键跳跃。请使用 PointerLockControls 或类似方案,确保鼠标指针被锁定在游戏画面中。优化移动手感,增加惯性阻尼,修复视角卡顿问题。

AI 会修改 main.js,引入控制逻辑。测试时注意检查跳跃是否穿模,移动是否平滑。如果有bug,直接将报错信息或异常现象反馈给 DSH,它会自动定位并修复代码。

第三步:核心射击机制

现在玩家可以在场景中跑动,接下来添加射击功能:

实现射击系统。监听鼠标左键点击事件,从相机中心发射射线(Raycaster)检测碰撞。生成子弹轨迹视觉效果,添加简单的射击音效。当射线击中地面或物体时,显示击中标记。

这一步涉及交互逻辑。AI 会编写射线检测代码,并可能创建一个简单的子弹几何体作为视觉反馈。确保击中判定准确,没有延迟。

第四步:敌人AI与游戏循环

静态场景缺乏挑战,需要加入敌人:

添加简易敌人AI。生成几个立方体作为敌人,它们会缓慢向玩家位置移动。添加血量系统,玩家射击击中敌人后减少其血量,血量归零时敌人消失并计分。添加玩家血量,被敌人接触时扣除玩家血量,归零后游戏结束并重置。

这里引入了游戏状态管理。AI 需要维护敌人数组、玩家状态和计分板。测试时观察敌人寻路是否合理,碰撞检测是否生效。

第五步:场景细化与氛围营造

基础玩法跑通后,可以提升视觉效果。例如构建一个具体的场景主题:

重构场景为“镰仓高校前电车站”。使用代码生成简单的电车模型、站台和远处的大海背景。调整光照为黄昏色调,添加体积云效果。保持代码模块化,不要将所有几何体生成逻辑堆砌在主循环中。

这一步考验 AI 的空间想象力和代码组织能力。通过分块生成模型,可以避免单次生成代码过长导致的截断。你可以要求 AI 参考特定图片的配色,虽然它不能直接“看”图,但可以依据描述调整材质颜色。

第六步:细节打磨

最后添加提升沉浸感的细节:

增加射击反馈。玩家开枪时枪械模型产生后坐力动画,子弹飞行保留短暂轨迹。敌人身上显示血条。添加环境音效,如海浪声和电车经过的声音。

至此,一个具备基本可玩性的3D FPS原型就完成了。整个过程中,你主要在做需求拆解和测试验证,具体代码实现由 DSH 调用本地 Qwen 模型完成。

内网穿透与分享

游戏在本地 localhost:3000 运行,朋友无法直接访问。为了让其他人也能体验,需要使用内网穿透工具将本地服务映射到公网。

安装 cpolar

cpolar 是一款常用的内网穿透工具。在Linux或WSL环境中,可以通过一键脚本安装:

sudo curl https://get.cpolar.sh | sh

Windows用户可以直接下载客户端安装。安装完成后,启动服务并登录账号。

配置隧道

登录 cpolar Web 管理界面(通常为 http://localhost:9200)。点击“隧道管理” -> “创建隧道”:

  • 隧道名称:自定义,如 fps-game。
  • 协议:选择 http。
  • 本地地址:填写游戏运行的端口,如 3000。
  • 域名类型:初期可选择“随机域名”进行测试。

创建成功后,cpolar 会分配一个公网地址。将该地址发送给朋友,他们即可在浏览器中直接访问你的游戏。

固定域名(可选)

随机域名每次重启都会变化,不适合长期分享。在 cpolar 控制台预留一个二级子域名(如 myfps.cpolar.cn),然后在隧道配置中将域名类型改为“二级子域名”,填入预留的名称。更新后,你将获得一个固定的访问地址。

总结与展望

通过这套流程,我们验证了“本地LLM + 智能体”在游戏原型开发中的可行性。Qwen3.8-27B 提供了足够的代码生成能力,DSH 解决了代码落地和执行的问题,而分阶段指令策略则规避了当前AI在处理长上下文复杂任务时的局限性。

这种模式并非要取代专业游戏引擎(如Unity或Unreal),而是在快速原型验证、教育学习或小型Web游戏开发场景下,提供了一条低门槛的路径。未来,随着模型上下文窗口的扩大和多模态能力的增强,AI或许能直接根据概念图生成完整的3D资产,进一步缩短从创意到成品的距离。

对于开发者而言,掌握如何向AI清晰表达需求、如何拆解复杂任务,比记忆具体的API语法变得更为重要。