NoMansSky:Current State of Modding: Difference between revisions

From Step Mods | Change The Game
No edit summary
(35 intermediate revisions by the same user not shown)
Line 2: Line 2:
{{NMSPage|contentTitle=Current State of Modding}}
{{NMSPage|contentTitle=Current State of Modding}}
{{TOC_right}}
{{TOC_right}}
== What We Know So Far! ==
== What we know so far ==
Some aspects of the game remain hidden and without more experimentation through playing with more heavily modified configurations of the game, the effects of these configurations 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. However, there are numerous aspects of the game with which we have become reasonably familiar, and allow for some fairly extensive changes.
Here is a non exhaustive list of numerous aspects of the game we have become reasonably familiar, and allow for some fairly extensive changes.


=== Rework Textures ===
=== Editing game global settings ===
NMS Textures uses a standard file format, the .DDS, that can be read and write by major painting tools. So you can remake some poor textures in 4K or redo them to match your own style.
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 [https://wiki.step-project.com/NMS:Reference_Guides/Global_Files 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.
 
=== Reworking Textures ===
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 [https://www.nexusmods.com/nomanssky/mods/658 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.


=== Adjusting Rewards ===
=== Adjusting Rewards ===
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 [[NMS:Reference_Guides/Reference_Tables|Reference Tables]]. You will also find a complete list of reward triggers as long as reward items [[NMS:Reference_Guides/Reward_Types|on this page]].
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 [[NMS:Reference_Guides/Reference_Tables|Reference Tables]]. You will also find a complete list of reward triggers as long as reward items [[NMS:Reference_Guides/Reward_Types|on this page]].


=== Adding Objects to the Build Menu ===
=== Adding Custom Buildable Objects ===
Not only can we add existing objects to the Build Menu, which can be incredibly helpful in testing out custom interactions, but any custom objects which one may create can also be added here.
Custom 3D objects [https://wiki.step-project.com/NMS:Tutorials/Adding_new_buildable_objects can be added to the game] and they can also be added to the build menu.


=== Adding Custom Interactions ===
=== Adding Custom Interactions ===
This goes two ways.  
This goes two ways.<br>
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.
* 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.
* 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 ===
=== 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!
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! ===
=== Adjust Building Generation Altogether ===
With the improved understanding of [[NMS:Reference_Guides/LSYSTEM|LSYSTEMs]] 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.
With the improved understanding of [[NMS:Reference_Guides/LSYSTEM|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.


There are undoubtedly constraints to this, but so far, no one has pushed the LSYSTEMs far enough to uncover what those constraints might be.
=== 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!


=== Transform Planets with Custom 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 More Ships! ===
And these are only a few of the things we've figured out !
Although this requires some 3D modeling experience, you can create new ships to have appear in the game. This way you can add to the existing variety of ship looks, and fly in ships of your own design!
<br>
<br>


And these are only a few of the things we've figured out, without even mentioning shader mods and some AI grouping stuff!
== 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.


== What We're Still Figuring Out! ==
=== Seeds ===
=== GLOBALS EXML Files Unknown Properties ===
In NMS, every planet, tree, ship, multi-tool is procedural... and proceduraly generated things are based on a seed.
Many of the most game-changing attributes and structs are found in the GLOBALS EXML files that are all found in the root directory of a fully extracted game archive. These include everything from the physics values of spacecraft, the density of clouds and fog on planets, the way information is rendered in the HUD, and more.
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 [https://www.nmseeds.club/ NM Seeds].


While almost all of these values have already been exposed, 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. There is currently *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.
=== 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.


Provided this, back these GLOBALs up, make and note your changes to specific Unknown Properties in specific GLOBALs 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!
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 [https://github.com/monkeyman192/MBINCompiler/wiki/Community-Notes MBINCompiler Github wiki] if you've a Github account.
Currently, you can add your findings to the [https://github.com/monkeyman192/MBINCompiler/wiki/Community-Notes MBINCompiler Github wiki] if you've a Github account.


=== Tool-Related ===
=== Animations and collisions ===
'''Complex custom animations''' are currently out of scope and are not yet supported by the [https://github.com/monkeyman192/NMSDK/tree/Experimental 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!
Complex custom animations are currently out of scope and are not yet supported by the [https://github.com/monkeyman192/NMSDK/tree/Experimental 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 [https://github.com/monkeyman192/NMSDK/tree/Experimental found here].
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 [https://github.com/monkeyman192/NMSDK/tree/Experimental found here].


=== New Stuff in Familiar MBINs ===
=== New mission stuff ===
Missions have received major attention with v1.3x, and it looks like it is possible that you are able to do 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.
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.
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.


=== Oddities Not Found in MBINs ===
=== Other oddities ===
While spawning objects on planets have a wide variety of [[NMS:Tutorials/Spawning_and_Testing_Objects_Scenes|already-existing solutions]], 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.
* 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 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.
* 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.


Vulkan .spv shaders, found in the SHADERS folder and .bin files inside PIPELINES folder among the unpacked game files are heavily used by NMS for a variety of different visual elements of the game. If .spv files need to be converted in a readable format, .bin files are typicaly .txt files that can be opened and modified with any text editor.
* 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.
{{NMSPageClose}}
{{NMSPageClose}}

Revision as of 10:24, August 15, 2020

Template:TOC right

What we know so far[edit | edit source]

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[edit | edit source]

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.

Reworking Textures[edit | edit source]

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[edit | edit source]

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.

Adjusting Rewards[edit | edit source]

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[edit | edit source]

Custom 3D objects can be added to the game and they can also be added to the build menu.

Adding Custom Interactions[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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![edit | edit source]

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.

Seeds[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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.

Other oddities[edit | edit source]

  • 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.

Template:NMSPageClose