游客你好,登录后能编辑wiki哦!

全站通知:

帮助:开发者说明

来自异星工厂WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
Signal each.png
,请注意文章时效!

本文旨在描述已有内容的技术实现,便于后续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) 批量生成的内容。

通过解析游戏数据,给出了相关信息。

如果后续的版本大范围重构了科技,难以逐个更新,可以尝试重新解析生成。