In other languages: Deutsch Русский Українська 简体中文

Modding: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
m (minor formatting/rewording)
mNo edit summary
(35 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{Languages}}
{{Languages}}
{{sublinks|Main Page}}
This page tells you how to download and install mods, and gives a quick overview of what you should keep in mind when creating a mod. For more detailed instructions on creating mods, you may view the [[Tutorial:Modding_tutorial| modding tutorial page]]. If you are looking for the modding API, check out the [http://lua-api.factorio.com/latest/ official Factorio Lua API documentation] website. If you wish to know where to install a mod which is in a zipped format, please read the instructions on the [[Application_directory|application directory]] page.
[[File:Fff-18-entity-graph.jpg|400px|thumb|'Diagram of entities' (objects on the map) class inheritance structure generated by doxygen. Taken From Friday Facts #18 http://www.factorio.com/blog/post/fff-18]]


Modding in Factorio allows for more content created by the community.
== Downloading & installing mods ==


==Getting started==
You can download the mods from the following places:
A good overview is the [[Mods| list of mods]] or the [http://www.factorioforums.com/forum/index.php Factorio forum].


A good starting point is also the [http://www.factorioforums.com/forum/viewforum.php?f=25 modding-Help-Board]. The community is always answering to concrete questions. Sometimes within minutes. Or you could try the [[Modding FAQ]] page.
* Mod portal (in-game)
* [https://mods.factorio.com/ Mod portal (website)]
* [https://forums.factorio.com/viewforum.php?f=14&sid=68de6ef9ee46dcd7566653335917752b Mod subforum]


The [http://lua-api.factorio.com/ Official Lua API documentation] is a great reference for understanding the Factorio functions and types in the game.
=== Mod portal (in-game) ===


==Licensing==
The "Mods" section of the main menu is the best way to get mods. It combines downloading & installing, checking installed mods for updates, and enabling/disabling installed mods.
All mods require a license since v0.11. If a mod has no license it is assumed to have a Creative Commons [http://creativecommons.org/licenses/by-nc/4.0 Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)] license.


See also
=== Mod portal (website) ===
* [http://www.factorioforums.com/forum/viewtopic.php?f=6&t=6202&p=48971#p48968 this forum article].
: In this article the devs explain also, that the base-mod (which is part of Factorio) can be used to create new mods, but not used for "outside of Factorio domain".
* http://www.factorio.com/terms-of-service


==Creating a scenario from a saved game (map)==
The [https://mods.factorio.com/ mod portal (website)] is the center of mod hosting, where authors upload mods, and you can find previous versions, and discussions. Mods come as ZIP files, installed by copying (not unzipping) into the "mods" directory in the [[Application_directory#User_Data_directory|user data directory]]. Verify a successful installation by viewing the "Mods" list through the main menu, in-game.
An often asked question is how to make a scenario (something which can be edited in the map editor) from a map:
[http://www.factorioforums.com/forum/viewtopic.php?f=18&t=2844 Factorio can convert them] ([http://www.factorioforums.com/forum/viewtopic.php?f=5&t=3801&p=28289#p28289 see also this post]):
./bin/prod/factorio --map2scenario mapfoo


[[GameClient|More about the client parameters]]
=== Mod subforum ===


==Creating scenarios with the map editor==
Mod authors maintain threads in the official [https://forums.factorio.com/viewforum.php?f=14&sid=68de6ef9ee46dcd7566653335917752b mod subforum] to support their work. There may be experimental mods or updates here that aren't available on the main portal. They will be downloaded as ZIP files, either as forum "attachments", or with a link to a hosting site. These are installed the same way as mods downloaded from the portal.
Another first step is also making maps with the ingame editor. That stores the map as a '''scenario''', which is just a directory on disk with some files in it. You can look into those files to get a better understanding as to what they are for, or you can read the following pages:


==Overview==
=== Dependencies ===
* [[Modding overview]]
* [[Prototype definitions]]
* [[Data.raw]]
* [[Lua/Events|Lua events]]
* [[Lua objects]]
* [[Script interfaces]]
* [[Lua/Data Lifecycle]]
* [[Migration scripts]]
* [[Modding FAQ]]
* [[Modding Tutorial]]


==Other interesting stuff==
Many mods use Factorio's base mod as their only dependency which you do not have to install separately. However, some mods may require you to install other mods for them to work and can also make suggestions for you to install other mods for them to extend their functionality.
* Tutorial: [http://www.factorioforums.com/forum/viewtopic.php?f=15&t=8613 Create graphics for your mod...], how to generate sprite maps
 
==== Required dependency ====
 
When a mod you installed requires you to install another mod for it to work, the other mod, in this case, is a required dependency. The in-game mod portal automatically downloads required dependencies when downloading any mod.
 
==== Optional dependency ====
 
When a mod makes a suggestion to install another mod, but if it does not need that other mod for it to work, the other mod, in this case, is an optional dependency. You can install the optional dependencies which extend the functionality of a mod to enhance your gaming experience with the mod.
 
==== Incompatibility ====
 
The dependencies can also be used to declare a mod to be incompatible with other mods, which prevents them from being loaded together.
 
== Creating mods ==
: ''See also: [[Tutorial:Modding tutorial|Modding tutorial]]''
 
=== API documentation ===
 
* [[Prototype definitions|Prototype documentation]] — What prototypes can be added to the game, and what are their properties
* [http://lua-api.Factorio.com/latest Documentation of the runtime API] — Hook into events and change the world around the player.
* [[Tutorial:Mod structure|Mod structure]] — The basic structure of all mods
* [https://github.com/wube/factorio-data Factorio data github repository] — Tracks changes of the Lua prototype definitions in Factorio between releases.
* [[Data.raw]] — Lists the names and types of all built-in prototypes
 
=== Lua scripting ===
 
You need to use the Lua programming language (version 5.2.1) to create any mods in Factorio. The game's mod system injects your code into the startup and to the data construction stage of the game. You can use any text editor to write the code for your mod. Well-known text editors that offer syntax highlighting for Lua are Notepad++ and Sublime Text.
 
Useful resources for Lua:
 
* [http://lua-users.org/wiki/TutorialDirectory Lua tutorial]
* [https://www.lua.org/manual/5.2/ Lua reference manual]
* [https://repl.it/languages/lua Lua REPL] : A Lua read-eval-print-loop, essentially a sandbox.
 
=== Licensing ===
 
Every mod requires a license since Factorio '''v0.11'''. If a mod has no license, it is assumed to have a Creative Commons license — [http://creativecommons.org/licenses/by-nc/4.0 Attribution-Noncommercial 4.0 International (CC BY-NC 4.0)]. However, it is possible to purposely make the mod [https://choosealicense.com/licenses/unlicense/ unlicensed], to allow the code within it to be available to the public domain. The most popular distribution licenses for Factorio mods are the [https://choosealicense.com/licenses/mit/ MIT license] and the [https://choosealicense.com/licenses/gpl-3.0/ GPLv3] license.
 
Other useful legal links include:
 
* [http://www.factorioforums.com/forum/viewtopic.php?f=6&t=6202&p=48971#p48968 Forum post on allowed use of base-mod content]
* [http://www.factorio.com/terms-of-service Factorio terms of service]
* [https://choosealicense.com/licenses/ Choose a license]
 
== See also ==
* [[:Category:Technical]] — Documentation of technical formats and API's not related to modding

Revision as of 21:06, 8 November 2021

This page tells you how to download and install mods, and gives a quick overview of what you should keep in mind when creating a mod. For more detailed instructions on creating mods, you may view the modding tutorial page. If you are looking for the modding API, check out the official Factorio Lua API documentation website. If you wish to know where to install a mod which is in a zipped format, please read the instructions on the application directory page.

Downloading & installing mods

You can download the mods from the following places:

Mod portal (in-game)

The "Mods" section of the main menu is the best way to get mods. It combines downloading & installing, checking installed mods for updates, and enabling/disabling installed mods.

Mod portal (website)

The mod portal (website) is the center of mod hosting, where authors upload mods, and you can find previous versions, and discussions. Mods come as ZIP files, installed by copying (not unzipping) into the "mods" directory in the user data directory. Verify a successful installation by viewing the "Mods" list through the main menu, in-game.

Mod subforum

Mod authors maintain threads in the official mod subforum to support their work. There may be experimental mods or updates here that aren't available on the main portal. They will be downloaded as ZIP files, either as forum "attachments", or with a link to a hosting site. These are installed the same way as mods downloaded from the portal.

Dependencies

Many mods use Factorio's base mod as their only dependency which you do not have to install separately. However, some mods may require you to install other mods for them to work and can also make suggestions for you to install other mods for them to extend their functionality.

Required dependency

When a mod you installed requires you to install another mod for it to work, the other mod, in this case, is a required dependency. The in-game mod portal automatically downloads required dependencies when downloading any mod.

Optional dependency

When a mod makes a suggestion to install another mod, but if it does not need that other mod for it to work, the other mod, in this case, is an optional dependency. You can install the optional dependencies which extend the functionality of a mod to enhance your gaming experience with the mod.

Incompatibility

The dependencies can also be used to declare a mod to be incompatible with other mods, which prevents them from being loaded together.

Creating mods

See also: Modding tutorial

API documentation

Lua scripting

You need to use the Lua programming language (version 5.2.1) to create any mods in Factorio. The game's mod system injects your code into the startup and to the data construction stage of the game. You can use any text editor to write the code for your mod. Well-known text editors that offer syntax highlighting for Lua are Notepad++ and Sublime Text.

Useful resources for Lua:

Licensing

Every mod requires a license since Factorio v0.11. If a mod has no license, it is assumed to have a Creative Commons license — Attribution-Noncommercial 4.0 International (CC BY-NC 4.0). However, it is possible to purposely make the mod unlicensed, to allow the code within it to be available to the public domain. The most popular distribution licenses for Factorio mods are the MIT license and the GPLv3 license.

Other useful legal links include:

See also

  • Category:Technical — Documentation of technical formats and API's not related to modding