Noita Wiki
(added link to enemy info table. rearranged links a little.)
(Add linux details (I think accurate?))
Tag: Visual edit
(23 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  +
{{Modding Navigation}}
! name subject to change
 
   
  +
'''Notice: This page is written for aspiring modders. For installing mods, see the page [[How to install mods]].'''
(Introduction)
 
   
  +
  +
Modding Noita is quite straightforward and '''''fun''''', but can still hide many implementation details in itself. These pages hope to lower the barrier of entry and address any common pitfalls.
  +
  +
All the tools you need to get started are:
  +
  +
# a proper text editor <small>(eg. VSCode, Notepad++, Sublime, Vim)</small>
  +
# a proper image editor <small>(eg. Aseprite, Gimp, Paint.net, Photoshop)</small>
  +
  +
Noita gameplay logic is mostly implemented in [https://www.lua.org/about.html Lua] and [[wikipedia:XML|XML]], as an [[wikipedia:Entity_component_system|Entity Component system (ECS)]]. Every separate "thing" in the game (enemies, bullets, wands, items, even the player) are just entities, composed of different components. A good understanding of Lua is recommended, but a lot can be done without any programming knowledge at all, simply by editing the entity XMLs or associated spritesheets.
 
==Getting Started==
 
==Getting Started==
? list the most important ones, then link to category
 
   
 
First step before moving on, is to find the Noita base folder (most likely in <code>C:\Program Files (x86)\Steam\steamapps\common\Noita</code>) then go and read the <code>tools_modding\READ_ME_FIRST.txt</code>.
To access Noita's resources, do the following:
 
   
  +
=== Extracting data files ===
# Find Noita's root folder. It should be in <code>C:\Program Files (x86)\Steam\steamapps\common\Noita</code> or somewhere similar and have <code>noita.exe</code> inside.
 
  +
All of Noita's base assets (spritesheets, scripts, entity definitions) are packed inside <code>[[Data.wak|Noita\data\data.wak]]</code>. It is not ''technically required'' to have these extracted, but seeing the file structure and any example code is immensely helpful.
# Copy all of the files inside of the <code>tools_modding</code> folder into Noita's root folder.
 
# Run <code>data_wak_unpack.bat</code>. A terminal window should open.
 
# A File Explorer window opened to Noita's resources should appear.
 
   
  +
==== On Windows ====
Many of the resources are hidden, however. Click the "View" button and check "Hidden items" to see them.
 
 
To access Noita's data files, do the following:
   
 
# Copy all of the files inside of the <code>tools_modding\</code> folder into Noita's root folder.
You can find the resources later in <code>%UserProfile%\AppData\LocalLow\Nolla_Games_Noita</code>.
 
 
# Run <code>data_wak_unpack.bat</code>. A terminal window should open.
 
# A File Explorer window opened to Noita's resources should appear: (<code>%UserProfile%\AppData\LocalLow\Nolla_Games_Noita</code>).
  +
#Bookmark or copy this folder somewhere for easy later access.
 
#<small>Many of the resources might be hidden. Click the "View" button and check "Hidden items" to see all them.</small>
   
  +
Now you have plain access to all of Noita's Lua code, entity XML definitions and spritesheets. You can now literally go and check out any gameplay secrets, so keep a spoiler alert in mind aswell.
Most of the scripts are written in [https://www.lua.org/about.html Lua], while simpler variables, entities, and configuration are stored in [[wikipedia:XML|XML]]. A thorough understanding of Lua is required to create new scripts.
 
   
  +
==== On Linux ====
[[:Category:Modding_Basic_Guides|link]]
 
   
  +
# Start Noita on Steam, once, using <code>-wizard_unpak</code> as a launch parameter. (I.e. Right-click, Properties, General, Launch options)
! add Category:Modding_Basic_Guides to all pages you wish to be included
 
  +
# This will extract the data files into <code>.steam/steam/steamapps/compatdata/881100/pfx/drive_c/users/steamuser/AppData/LocalLow/Nolla_Games_Noita/</code>
  +
# Remove the launch parameter again.
  +
# Bookmark or copy this folder somewhere for easy later access.
   
  +
=== Next steps ===
==Advanced Guides==
 
  +
Good starting points and further reading:
^ same as above
 
   
  +
* Go through [[Modding: Basics|Modding basics, debugging & best practices]]
[[:Category:Modding_Advanced_Guides|link for Category:Modding_Advanced_Guides]]
 
  +
*Make a copy of the mod <code>mods\example</code> and make some changes to it, familiarize yourself with the file structure.
  +
* Familiarize yourself with the '''documentation''' under <code>tools_modding\</code>:
  +
**<code>component_documentation.txt</code>
  +
** <code>lua_api_documentation.txt</code>
  +
** These are always the most up-to-date documentation you can find. They are your best friends now.
  +
*Download and see what other modders have done, edit their mods, get a feeling for what is going on.
  +
**https://modworkshop.net/game/noita
  +
**https://steamcommunity.com/workshop/browse/?appid=881100&
   
==Resources==
+
== Need help? ==
  +
[https://discord.gg/SZtrP2r Noita Discord server] has an active and friendly modding community on <code>#modding-general</code> and <code>#modding-support</code>. Don't be afraid to join and ask questions!
[[:Category:Modding_Resources|link for Category:Modding_Resources]]
 
   
  +
== Related ==
* [[ID|List of spell and perk IDs]]
 
* [[:Category:Lua global functions|List of Lua global functions]]
 
* [[Enemy Information Table|Enemy Information Table with ID listing]]
 
   
  +
* [[How to install mods]]
==Other==
 
  +
*[[data.wak]]
If there's anything to note that cannot be made into a proper page or you'd like noted, dump it on this page: [[Modding Miscellaneous]]
 
   
 
[[Category:Modding]]
 
[[Category:Modding]]

Revision as of 02:53, 3 February 2021

Modding Pages
Getting startedBasicsLua ScriptingData.wakUseful Tools
AudioEnemiesEnvironmentsPerksSpellsSpritesheetsMaterialsImage Emitters
Lua APIEnumsSpecial TagsList of all tagsUtility ScriptsSound EventsEnemy Information TableSpell and Perk IDs

Notice: This page is written for aspiring modders. For installing mods, see the page How to install mods.


Modding Noita is quite straightforward and fun, but can still hide many implementation details in itself. These pages hope to lower the barrier of entry and address any common pitfalls.

All the tools you need to get started are:

  1. a proper text editor (eg. VSCode, Notepad++, Sublime, Vim)
  2. a proper image editor (eg. Aseprite, Gimp, Paint.net, Photoshop)

Noita gameplay logic is mostly implemented in Lua and XML, as an Entity Component system (ECS). Every separate "thing" in the game (enemies, bullets, wands, items, even the player) are just entities, composed of different components. A good understanding of Lua is recommended, but a lot can be done without any programming knowledge at all, simply by editing the entity XMLs or associated spritesheets.

Getting Started

First step before moving on, is to find the Noita base folder (most likely in C:\Program Files (x86)\Steam\steamapps\common\Noita) then go and read the tools_modding\READ_ME_FIRST.txt.

Extracting data files

All of Noita's base assets (spritesheets, scripts, entity definitions) are packed inside Noita\data\data.wak. It is not technically required to have these extracted, but seeing the file structure and any example code is immensely helpful.

On Windows

To access Noita's data files, do the following:

  1. Copy all of the files inside of the tools_modding\ folder into Noita's root folder.
  2. Run data_wak_unpack.bat. A terminal window should open.
  3. A File Explorer window opened to Noita's resources should appear: (%UserProfile%\AppData\LocalLow\Nolla_Games_Noita).
  4. Bookmark or copy this folder somewhere for easy later access.
  5. Many of the resources might be hidden. Click the "View" button and check "Hidden items" to see all them.

Now you have plain access to all of Noita's Lua code, entity XML definitions and spritesheets. You can now literally go and check out any gameplay secrets, so keep a spoiler alert in mind aswell.

On Linux

  1. Start Noita on Steam, once, using -wizard_unpak as a launch parameter. (I.e. Right-click, Properties, General, Launch options)
  2. This will extract the data files into .steam/steam/steamapps/compatdata/881100/pfx/drive_c/users/steamuser/AppData/LocalLow/Nolla_Games_Noita/
  3. Remove the launch parameter again.
  4. Bookmark or copy this folder somewhere for easy later access.

Next steps

Good starting points and further reading:

Need help?

Noita Discord server has an active and friendly modding community on #modding-general and #modding-support. Don't be afraid to join and ask questions!

Related