FF14Search — 综合查询工具
项目简介
FF14Search 是一个专为《最终幻想14》玩家打造的综合性游戏数据查询工具,基于 UniApp 开发,主要面向微信小程序和 QQ 小程序,同时支持 H5。
这个项目起初只是想在手机上查道具价格少折腾几步,后来功能越堆越多,从最基础的道具搜索一路长到了配装器和战绩查询,逐渐演变成了相对完整的游戏辅助工具。
核心功能
道具搜索与详情
支持中文模糊搜索和精确匹配,查询结果来自 Garland Tools 的中文数据库。道具详情页会展示:
- 基础属性与稀有度
- 获取途径(商店、成就奖励、副本掉落等)
- 可装备职业与等级需求
- 升级链(武器/防具强化路径)
- 坐骑/鱼类等特殊道具信息
市价查询
对接 Universalis 开放 API,展示服务器实时市场挂单价、近期成交记录与价格趋势。用户可在个人设置中固定默认服务器,后续查询自动使用偏好服务器。
零式战绩
通过角色名 + 服务器查询玩家的零式副本进度与战绩数据,方便在组队前了解成员的打本经历。
配装器(Gearing)
这是迭代最多、也是最有意思的模块。从 ffxiv-gearing 移植了核心配装逻辑,在 UniApp 环境下重新实现了:
- 全职业配装构建与属性计算
- 魔晶石镶嵌收益计算(含溢出提示)
- 食物 / 爆发药加成模拟
- ShareCode 编解码(Base62 BigInt,v5 格式)
- 一键分享 / 导入配装
配装数据初期纯本地存储,后来引入了后端服务,实现云端持久化和公开分享(见 配装广场后端设计)。
技术栈
| 层 | 选型 |
|---|---|
| 框架 | UniApp 3 + Vue 3.5 |
| 语言 | TypeScript |
| 状态管理 | Pinia |
| UI 组件 | uni-ui + uv-ui |
| 构建工具 | Vite 5 |
| 数据缓存 | UniApp Storage(7天 TTL) |
架构概览
分包策略
小程序对主包体积有严格限制(2MB),功能越堆越多后必须拆分。目前按功能领域划分了以下分包:
| 分包 | 主要内容 | 说明 |
|---|---|---|
master | 道具详情页、升级链组件 | Garland 详细数据相关 |
universalis | 市价详情页、Universalis API 模块 | 独立 Store 管理用户偏好 |
gearing | 配装器完整功能(4个页面) | 含计算逻辑、数据与 Pinia Store |
utilities | 副本招募(Remote Party Finder)等工具 | 周期性更新的副本数据 |
关于分包工程化的实践细节,可以看这篇文章:UniApp 分包设计实践。
数据流
用户输入关键词
↓
data-indexer(本地全文索引)
↓
命中本地缓存? ── 是 ──→ 直接渲染
↓ 否
远程 API 请求(Garland / Universalis)
↓
写入 Storage 缓存(7天 TTL)
↓
渲染结果游戏基础数据(道具列表、职业信息等)在首次启动时批量拉取并本地建立索引,后续搜索全在本地完成,无需频繁请求远端。
设计系统
v5 版本做了一次比较彻底的 UI 重构,引入了 --ff-* CSS 变量令牌体系,统一了深色 / 浅色主题下的颜色、间距和排版。详情见 为小程序搭一套设计令牌系统。
数据来源
- Garland Tools(中文站):道具、职业、成就、商店、任务等结构化数据
- Universalis:全服务器市场价格、成交历史(完全开放的社区 API)
这两个数据源都是 FF14 社区的公益项目,质量高且更新及时,省去了自己维护数据的大量工作。