NoMansSky:Current State of Modding
Current State of Modding
What we know so far
Here is a non exhaustive list of numerous aspects of the game we have become reasonably familiar, and allow for some fairly extensive changes.
Editing game global settings
No Man's Sky exposes all its variables via simple files named Globals. There are thousands of variables, from wind strength to camera positions, from walk speed to savegames order. So the easiest thing you can do in NMS is opening one of the global files, change one or several of these values, each (almost) properly named, then recompile and repack the global file and enjoy the changes in game 2 minutes later.
NMS Textures use the well known .DDS file format, that can be read and write by major painting tools. So you can remake some poor textures in 4K or recreate them completely to match your own style.
Changing any game text or dialog
All the game strings can be found in the LANGUAGE folder in the form of 5 files declined for each of the language supported. Thanks to NMS Translator, you can easily convert the .MBIN files into simple and readable .txt files to do any thing from fixing a typo, changing an object name, rewrite dialogs or even create your own language translation.
Changing or adding rewards from any interactions, like opening containers, is a fairly easy task. By modifying the REWARDTABLE.MBIN' found in METADATA\REALITY\TABLES, one can adjust amounts of currency and/or items received, or change the items entirely with a simple change of the product/substance IDs, which can be found in the Reference Tables. You will also find a complete list of reward triggers as long as reward items on this page.
Adding Custom Buildable Objects
Custom 3D objects can be added to the game and they can also be added to the build menu.
Adding Custom Interactions
This goes two ways.
- There are the interaction types which are involved with alien and facility terminal interactions (largely found in NMS_DIALOG_GCALIENPUZZLETABLE.MBIN, in METADATA\REALITY\TABLES), which we can add to with our separate custominteraction types, enabling new pools of interactions to be created. That is, if you're tired of the same old Gek conversations and Observatory puzzles, you could rewrite and/or add to them using the existing interaction type, or simply replace them with a pool of your own with a custominteraction type.
- Alongside this there are the roots of interactions themselves found in entities, where one can script in some events with ActionTriggers, such as particle effects going off, messages displaying, and entire elements of an object being switched off and removed from view.
Add New Interior Layouts
Since we can customize scenes to our liking, and since interiors are largely layout scenes, we can totally overhaul the interiors of buildings we encounter in the game. We can slightly rearrange them, replace them, and/or simply add to the list of them to give buildings a more varied feel to them!
Adjust Building Generation Altogether
With the improved understanding of L-SYSTEMS established recently, we now have a better sense of how we could alter the generation of structures entirely. This means that instead of lonely little structures with nothing but a single room, we could make it so that they have new wings on the sides with almost whatever we imagine to add to them.
Change planets biomes
Many have complained that existing biomes rapidly become too familiar, so why not create your own!? Through extensive work, you can customize and make new biomes through examining the existing biomes in METADATA\SIMULATION\SOLARSYSTEM\BIOMES.
Add custom ships
Although this requires some 3D modeling experience, you can create new ships. This way you can add to the existing variety of ship looks, and fly in ships of your own design!
And these are only a few of the things we've figured out !
What we still need to figure out!
Some aspects of the game remain hidden and without more experimentations, the effects of some settings and files simply cannot be known. Due to this, there are still some aspects to modding that cannot be done consistently and some that may perhaps never be possible.
In NMS, every planet, tree, ship, multi-tool is procedural... and proceduraly generated things are based on a seed. This seed will then result via mathematical formulae into selections. What piece is used for this, what color is drawn there... Sometimes we would really know how seeds are used to create our perfect ship. The possibility to have our most appealing nose, our most appealing wings, the perfect color scheme is tempting. But seeds keep their mystery so far and nobody knows how to decrypt them. So some tried to do the reverse, cataloging ships, tools, NPCs and expose their seeds for others to pick. That's the point of NM Seeds.
GLOBALS unknown properties
While almost all of the Globals values now have a label, sometimes unknown properties remain as such as they do not have attached names to be found within the binary from which MBINCompiler obtains most structures for EXML files. In such case, there is just *no way* to find out exactly what most of these properties are unless one is willing to test them manually by changing some values and observing differences in-game.
So if you want to help revealing what these unknown properties do, back these GLOBALs up, make and note your changes and play awhile until you notice some changes. If you've been feeling a little burnt out on the game, this may be an excellent way to spice things up through trying to really break it in in new ways. But if you do so, please, please, please note which properties you changed, in which GLOBAL, and how you changed them, as this will enable others to reproduce and refine whatever strange effects they may have had on your game!
Currently, you can add your findings to the MBINCompiler Github wiki if you've a Github account.
Animations and collisions
Complex custom animations are currently out of scope and are not yet supported by the model exporter. Translating Blender animation armatures into No Man's Sky's animation system is a difficult task and not yet doable for robust animations (e.g. creature movement). If you've the skills to do so, however, and are willing to help in producing a plugin, please give us a hand!
Mesh collisions have been broken since the release of Atlas Rises. Any help in restoring these would be greatly appreciated. Source for the Blender plugin involved in exporting custom models may be found here.
New mission stuff
Missions have received major attention with v1.3x, and it looks like it is possible that you are able to create custom missions that allow the player to be sent to specific places and do specific interactions. Testing the boundaries and flexibility of these would be very useful.
Much mission-related information can be found in METADATA\SIMULATION\MISSIONS, and almost certainly weaves through the NMS_DIALOG_GCALIENPUZZLETABLE.MBIN as well the REWARDTABLE.MBIN.
- While spawning objects on planets is doable, the ability to spawn new objects in space is largely locked within the game binaries rather than the MBIN files and thus cannot be changed without modifying the game executable itself.
- Any form of functionality the game does not provide by default (3D suns to name one) cannot be introduced without modifying the executable itself or inserting code during runtime via NMSE (script extender). There is currently no way to natively access scripting otherwise.
- Shaders have been converted into Vulkan since Beyond. Sadly these .spv shaders files are a total mess to be able to edit shaders in any effective way.