Tutorial:Modding FAQ: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(Removed ipairs and fixed "game.oninit" -> "script.on_init".)
(Correct reset recipes/technologies usage)
Line 47: Line 47:


* Q : I've modified the recipe and/or technology prototypes and when I load my save game the changes aren't there even though it works in a new game.
* Q : I've modified the recipe and/or technology prototypes and when I load my save game the changes aren't there even though it works in a new game.
* Fix : You need to run <pre style="display:inline-block">for i, player in pairs(game.players) do player.force.reset_recipes() end</pre> and/or <pre style="display:inline-block">for i, player in pairs(game.players) do player.force.reset_technologies() end</pre>  
* Fix : You need to run <pre style="display:inline-block">for i, force in pairs(game.forces) do force.reset_recipes() end</pre> and/or <pre style="display:inline-block">for i, force in pairs(game.forces) do force.reset_technologies() end</pre>  
To make Factorio reload the prototypes, this can be done using the console (~) or via the script.on_init event in control.lua (which will run when the mod is first added to a game), or through [[Migration_scripts|migration]] files (if you've made a mod release and need to 'migrate' user's saves to a new version automatically). The first is the easiest while testing, the second when you're releasing a mod for the first time, and the third for when you've already made a mod release. The prototypes are saved in the save file so as to (eventually) allow making changes to them during runtime (control.lua), which is why they need to be 'reset' for saves.
To make Factorio reload the prototypes, this can be done using the console (~) or via the script.on_init event in control.lua (which will run when the mod is first added to a game), or through [[Migration_scripts|migration]] files (if you've made a mod release and need to 'migrate' user's saves to a new version automatically). The first is the easiest while testing, the second when you're releasing a mod for the first time, and the third for when you've already made a mod release. The prototypes are saved in the save file so as to (eventually) allow making changes to them during runtime (control.lua), which is why they need to be 'reset' for saves.



Revision as of 10:18, 20 March 2017

Modding FAQ

< Main Page

Welcome to the modding FAQ. (work in progress) Here we have a list of questions that are common to get while writing a mod. And the fix for the problem (if someone managed to find a fix) feel free to edit this page and add more Q and A's.

Questions / Fix
  • Q : Why do I get the error "C:\Factorio\mod doesn't match the expected mod_version# (case sensitive!)" error?
  • Fix :
The folder name of your mod must include the version
number. So if your mod is titled "myMod" version 0.0.1, in order
for Factorio to read it, the folder must be titled "myMod_0.0.1".
  • Q : my item / entity wont load the sprite I made.
  • Fix :
Make sure your path is right : __mod-name__/map-name/2nd-map-name/sprite.png
Pay attention to case, the following file is not the same as previous:__Mod-name__/Map-name/2nd-map-name/sprite.PNG
  • Q : The name of my item is displayed as "Unknown key: item-name.yourname"
  • Fix :
Make sure you have valid locale mappings. Create a "locale" directory with an "en" subdirectory and create a "item-name.cfg" file.
It should contains something like:
 [item-name]
 itemx=Item X
 itemy=Item Y
 
 Do the same for your entities, but put them in an "entity-name" section/file.
  • Q : What does ('=' character not found in line) mean?
  • Fix :
If you get the error message '=' character not found in line , chances are you 
created a new document as something other than a .txt file, adding in format text
to  the document that is causing this error.  Copy the contents of your .cfg file
and make a new .txt file, rename it to .cfg, and paste your configuration into it.
  • Q : Error while loading prototype "entity-name": No such node (pictures).
  • Fix :
Make sure your entity contains the right amount of lines for that type of entity, 
for example a chest needs 1 picture for the entity to work but a wall needs 20. 
Look in the factorio base/prototypes/entity/entity.lua.
And you can see that different entities need different amounts of pictures.


  • Q : I've modified the recipe and/or technology prototypes and when I load my save game the changes aren't there even though it works in a new game.
  • Fix : You need to run
    for i, force in pairs(game.forces) do force.reset_recipes() end
    and/or
    for i, force in pairs(game.forces) do force.reset_technologies() end

To make Factorio reload the prototypes, this can be done using the console (~) or via the script.on_init event in control.lua (which will run when the mod is first added to a game), or through migration files (if you've made a mod release and need to 'migrate' user's saves to a new version automatically). The first is the easiest while testing, the second when you're releasing a mod for the first time, and the third for when you've already made a mod release. The prototypes are saved in the save file so as to (eventually) allow making changes to them during runtime (control.lua), which is why they need to be 'reset' for saves.


  • If you have anymore questions or just want to come socialize, we have an official and un-official irc channel:
Official Factorio Channel
IRC Server: irc.esper.net
Channel Name: #factorio

Un-Offical Modding Channel
IRC Server: irc.esper.net
Channel Name: #factorio-modding