GNU General Public License v3.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

深度技术分析:NomNom - NMS 存档编辑器的集大成者

项目背景与痛点

在《无人深空》(No Man’s Sky, NMS)这款游戏中,每个玩家的存档都包含了大量的个人信息和游戏进展数据。然而,原生的游戏工具相对有限,无法提供玩家自定义修改存档数据的能力。这就导致了许多高级玩家和数据挖掘爱好者需要寻找额外的工具来自定义和优化他们的游戏体验。NomNom 应运而生,它是一款针对 NMS 存档进行编辑的工具,不仅能方便地修改存档中的数据,还能提供可视化的属性展示,帮助用户更好地理解和自定义他们的游戏数据。

核心技术揭秘

技术架构与实现原理

NomNom 内部采用了一种高度模块化的架构设计,将解析存档文件与展示数据的分离。通过解析游戏中的二进制存档文件,NomNom 能够提取出各类属性与触发事件,并提供可视化的数据展示。

以下是一张 NomNom 系统架构图,展示了从用户请求到数据处理与展示的主要流程:

graph TD A[用户请求] --> B{"参数校验"} B -->|"通过"| C[执行业务] C --> D[解析存档] D --> E[展示数据] B -->|"失败"| F[返回错误] F --> G[提示修改] G --> H[重新请求] H --> A

关键技术栈与设计模式

NomNom 采用了多层结构设计,每一层都负责其特定的功能:

  1. 输入层:负责读取用户输入及存档文件。
  2. 解析层:负责解析存档文件的二进制数据。
  3. 业务逻辑层:处理数据解析后的具体逻辑,如属性展示、修改存档数据。
  4. 展示层:将数据可视化展示给用户,并提供操作界面。

通过清晰的模块划分,NomNom 实现了高效的数据流转与用户交互。

功能亮点与差异

独特设计与竞争优势

与同类工具相比,NomNom 的优势在于其全面的数据解析和展示能力。不仅提供存档数据编辑功能,还能独立展示每个道具的属性,而不需要加载存档。这种灵活性使用户能够更精细地了解和定制他们的游戏数据。此外,NomNom 还提供了多种信息展示模式及数据过滤功能,这使得在大量数据中找到用户关心的信息变得更为直接简单。

应用场景与落地建议

场景与注意事项

NomNom 主要适用于《无人深空》的深度粉丝和数据挖掘爱好者。这类用户需要对游戏存档内的数据进行精细的修改和优化。在生产环境中使用 NomNom 时,应注意以下几点:

  1. 在进行重要修改之前,请先进行一次完整备份。
  2. 使用过程中,尽量遵循工具中的提示操作,避免因误解或操作不当造成错误。
  3. 对于一些高级用法,建议阅读项目的详细文档和参数说明。

NomNom 特别适合需要自定义游戏体验的用户,尤其对于一些特定需求(例如商品实验、军队构建等),NomNom 可以作为辅助工具,提供定制化的数据展示和修改。

综合评价

NomNom 作为 NMS 存档编辑工具的佼佼者,提供了全面、直观且高效的编辑功能。其模块化的设计和用户友好的界面设计极大地提升了用户体验。然而,在具体使用前,用户需要具备一定的技术基础和对数据结构的理解,以有效利用 NomNom 的功能。总体而言,NomNom 是一款值得推荐的工具,但需要注意其使用门槛和备份操作,以确保数据安全。

关于

GitHub 原始描述(英文)

NomNom is the most complete savegame editor for NMS but also shows additional information around the data you're about to change. You can also easily look up each item individually to examine its attributes, independently of a savegame, or get other useful information that are not related to a specific savegame (but enhanced if one is loaded).

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
998
价值分
520
活跃状态
活跃

Release

贡献者

README

NomNom

Maintained Platform GitHub Release Downloads

Discord Server Supported by the No Man's Sky Community Developers & Designers

Donate via Buy Me a Coffee Donate via GitHub Sponsors Donate via Ko-fi Donate via Patreon Donate via PayPal

Table of Contents

Introduction

NomNom is the most complete savegame editor for No Man’s Sky, and also shows contextual information around the data you are about to change. You can also easily look up each item individually to examine its attributes, independently of a save, or get other useful information that are not related to a specific save (but enhanced if one is loaded).

Features

The features of NomNom can be divided into the different main parts you will see below. A detailed list can be found in the FEATURES file.

  • Manager Manage your saves!
    • Automatic backup and recovery (in case you screw something up).
    • Save your save as human-readable JSON.
    • Copy, move, and swap slots to another.
    • Transfer your save to another platform you own the game on.
    • Delete your save.
  • Editor Edit your save for your needs!
    • Ability to edit cross-save rewards from Expeditions, Twitch Drops, Titles and more.
    • Ability to manage fleets, change data values like currencies and stats, and organize inventories.
    • Ability to fast travel to any system you like and trigger space battles.
    • Ability to customize appearances.
    • Ability to edit your knowledge and recorded experiences.
    • Ability to edit the raw JSON (for advanced users).

Manager Starship Manage Fleet Base

These images are from version 4.00.0.31-beta.1. More and maybe newer can be found here.

Getting Started

Compatibility

Each version of NomNom is built with the latest game version (at that time) in mind and the version number is reflecting that. Each one is also backwards compatible down to Beyond 2.11 and even saves before that can still be edited via the built-in JSON editor. If you use NomNom with a newer game version branch than the one it was build for (e.g. your NomNom version starts with 4.60 but your game is Adrift 4.72), things should work as usual in most cases but there can always be a breaking change.

Each game version is properly supported with its own set of available items and features so you do not have to worry about adding unavailable items.

NomNom is compatible with every platform No Man’s Sky is available on (some work better than others though). You can select a specific account/folder with you saves or, for platforms on PC, one level above if you have multiple accounts.

A complete and always up-to-date overview with additional notes can be found here.

Requirements

You need to install the .NET 8 Desktop Runtime and the WebView2 Runtime. That is it.

If you choose to download the setup, all requirements will be automatically installed if missing.

NomNom is signed with a (self-signed) certificate. As this is a free app, it is currently way to expensive to purchase one from an official source but if you install this one manually, it has the same effect: Getting rid of the Windows security warnings.

You can install it as follows:

  • Download the zencq.cer file from here
  • Open the downloaded file
  • Click Install Certificate
  • Follow the wizard to install it. Use the suggested config below or adjust as you like.
    • Select Current User then Next
    • Click Place all certificates in the following store then Browse
    • Select Trusted People then OK
    • Click Next, then Finish

Currently NomNom is only officially supported on Windows but a confirmed way of using it with Linux is to go to flathub.org, install WineZGUI , and then just launching the NomNom installer.

Download

Instructions

  1. After downloading and extracting the zip file you’ll find a few files. All you need to care about is the executable (NomNom.exe) but new folders may be created at runtime (e.g. for backups) that will become relevant to you.
  2. You may want to create a shortcut to the executable for easier access.
  3. As the tool includes an automatic backup functionality you don’t need to do it manually but if you want to be absolutely save, do it.
  4. At first start the tools locates your saves at the default location of each platform but if that fails, you have to select it manually.
  5. Select a slot.
  6. Start tinkering!
  7. Guide and Catalogue will work without loading a save.

Versioning

The versioning is oriented on/a mix of the game version itself and SemVer:

  • Major mirrors the games major version.
  • Minor mirrors the games initial minor version of named updates (e.g. Synthesis 2.20 or Outlaws 3.85).
  • Patch is for every release between two named updates and can include everything from new features, to bug fixes, and other updated stuff.

This is for stable releases but there can also be pre-releases with following suffix schema that indicates its maturity.

  • Beta will increase the first digit and be resets the second one to 0 (e.g. -pre.1.0)
  • Development will just increase the second digit of the previous release (e.g. -pre.1.1)

History

The complete history can be found in the CHANGELOG file.

Contact & Support

If you like NomNom and want to support me in its further development, you can do so here on GitHub, on Buy Me a Coffee, Ko-fi, or Patreon or via PayPal. I will appreciate it!

The official Discord server is where you will find all information at one place, first hand. If you need (or want to offer) help, found a bug, have a suggestion, or something else regarding NomNom, you will find, or can post it there.

License

This project is licensed under the GNU GPLv3 license - see the LICENSE file for details.

Authors

Credits

Thanks to the following people for their help in one way or another.

  • goatfungus - Inspiration and verifying my own implementation
  • hbouma - Explaining how clearing TerrainEdit works
  • jeffswt - Algorithm to properly move base computer
  • jaszhix - rogerhnn - Coordinate conversion
  • KhaozTopsy - Creating the Assistant for No Man’s Sky API to get live data and make the transfer to the app possible
  • Novoca1n3 - Providing a proof-of-concent for the JSON editor with tree view
  • zousug - Helping to set up the Discord server

And not to forget those whose help contributed to parts of the outsourced libraries libNOM.collect, libNOM.io, and libNOM.map.

Dependencies

评论

暂无评论