游客你好,登录后能编辑wiki哦!
帮助:开发者说明
本文旨在描述已有内容的技术实现,便于后续Wiki维护者修改、重构或更新数据。
物品信息栏
每个物品页面右侧都有一个物品信息栏。
用于显示图标、图片、配方、原料和内部信息。内部信息如内部名、分类、生命值、抗性、堆叠数量、音效等等。
这些信息是从游戏中提取的,当前由模板 物品栏 实现。
物品栏 模板的前身是 模板:物品信息, 由大佬(256152) 我爱五子棋37 创建。
目前的版本是新手 (39886146) Lu_23333 在维护更新。
模板:物品栏
模板提供架子,数据来源于它调用的模块。模块的数据源于游戏,数据获取在下一节详述。
物品栏涉及:
- 读取页面名称,获取物品名
- 拼接图标、图片并显示
- 调取模块 显示配方,包括合成和原料表
- 调取模块/widget 显示游戏数据
物品名。从物品名称参数获取,这一参数源于页面的名称。因此,对于页面“物品:木制箱”来说物品名称参数的值是“物品:木制箱”。所以要通过{{#replace: {{{物品名称}}}|物品:|}}替换物品冒号前缀。
图标。调用图标模板。
图片。拼接物品名英文名+entity,如对于高速传送带,图片为:Fast Transport Belt Entity.Png
配方。调用模块:配方。这一模块负责查询数据并拼接HTML,数据从“模块:数据:配方”中获取。而“模块:数据:配方”的数据请参见下一节。
其他数据。调用widget,查询并显示数据。目前的问题是它是非异步的,在第一次访问wiki时,可能因为加载数据导致页面空白。
从游戏中读取信息
通过解析游戏的data.raw,我们可以获得几乎所有游戏数据。
用户 (39886146) Lu_23333 写了个程序提取游戏数据。
代码开源在:https://github.com/Lu-233/FactorioDataRaw2Json
它通过获取wube官方开源的数据项目factorio-data中的数据,可以读取并解析任意游戏版本的data.raw数据,并转换为Json.
其转换的json中,recipe.py 可以解析配方数据,并转化为更规则的json,也可以通过第三方工具把json转换为luatable以供模块使用。
“模块:数据:配方”中的数据就是来源于此。
类似的开源项目还有很多,如果不想用Python解析数据,还可以按维护者擅长的语言寻找相关开源项目。
科技信息
科技页面最初是由 (39886146) 批量生成的内容。
通过解析游戏数据,给出了相关信息。
如果后续的版本大范围重构了科技,难以逐个更新,可以尝试重新解析生成。