Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Modinfo.lua: Difference between revisions

From FIGHTORDER
imported>Flozi
m Details: use template
imported>Flozi
104 ! base archives now have modtype of 4 and menu archive have modtype of 5 (Also use templates & <syntaxhighlight> instead of <code>, var template sucks for filenames)
Line 1: Line 1:
==Location==
==Location==
<code>modinfo.lua</code> is a file in the root directory of a Spring Game.
{{var|modinfo.lua}} is a file in the root directory of a Spring Game.


==Purpose==
==Purpose==
Line 12: Line 12:
==Details==
==Details==
The following tags are read, all are strings unless otherwise specified:
The following tags are read, all are strings unless otherwise specified:
* {{name|name}} - The name displayed in the lobby or via Spring.exe, <code>version</code> is automatically appended. [http://springrts.com/phpbb/viewtopic.php?f=14&t=25927 Don't put the version into the name!]
* {{name|name}} - The name displayed in the lobby or via Spring.exe, {{name|version}} is automatically appended. [http://springrts.com/phpbb/viewtopic.php?f=14&t=25927 Don't put the version into the name!]


* {{name|shortName}} - A short representation of the package name, usually an acronym of the above.
* {{name|shortName}} - A short representation of the package name, usually an acronym of the above.
Line 20: Line 20:
* {{name|mutator}} - String. Is the package an official release or a mutator?
* {{name|mutator}} - String. Is the package an official release or a mutator?


* {{name|game}} - What game is this package based on? This is subtly different from the <code>name</code> attribute. Consider that a main game archive and a mutator would have the same game, but different name values.
* {{name|game}} - What game is this package based on? This is subtly different from the {{name|name}} attribute. Consider that a main game archive and a mutator would have the same game, but different name values.


* {{name|shortGame}} - Again an acronym representing the above.
* {{name|shortGame}} - Again an acronym representing the above.
Line 26: Line 26:
* {{name|description}} - A description of this content package.
* {{name|description}} - A description of this content package.


* {{name|modtype}} - What kind of content package is this? 1 for a game or mutator, 0 for a hidden base content file. Maps use 3 in [[mapinfo.lua]].
* {{name|modtype}} - What kind of content package is this? {{value|1}} for a game or mutator, {{value|4}} for a hidden base content file (prior to 104.0 this was {{value|0}}), menu archives use {{value|5}}. Maps use 3 in [[mapinfo.lua]].


* {{name|depend}} - A table of other content packages, referenced by <code>name + version</code>, not their filename, which this package depends on. Spring will load them if they are present, or throw an error if they are missing. This is used by mutators to depend on main game file and by all games to depend on base content files. New games may particularly want to depend on <code>'Spring Cursors'</code> (provided as <code>cursors.sdz</code> in the Spring <code>base</code> directory) if they do not yet have their own [[MouseCursors|custom cursors]].
* {{name|depend}} - A table of other content packages, referenced by {{name|name + version}}, not their filename, which this package depends on. Spring will load them if they are present, or throw an error if they are missing. This is used by mutators to depend on main game file and by all games to depend on base content files. New games may particularly want to depend on {{value|'Spring Cursors'}} (provided as {{var|cursors.sdz}} in the Spring {{var|base}} directory) if they do not yet have their own [[MouseCursors|custom cursors]].


* {{name|replace}} - A table of content packages, again referenced by <code>name + version</code>, that this package is meant to replace. For example if you have a base content package with your game music, you may wish to replace it with an updated version later on without having to modify the <code>modinfo.lua</code> of all packages which <code>depend</code> on it. This is not usually used to update main game archives, however, as players may wish to continue playing a previous version.
* {{name|replace}} - A table of content packages, again referenced by {{name|name + version}}, that this package is meant to replace. For example if you have a base content package with your game music, you may wish to replace it with an updated version later on without having to modify the [[modinfo.lua]] of all packages which {{var|depend}} on it. This is not usually used to update main game archives, however, as players may wish to continue playing a previous version.


==Examples==
==Examples==
===Main Game file===
===Main Game file===
<code><pre>
<syntaxhighlight lang="lua">
local modinfo = {
local modinfo = {
   name = "My Awesome Spring Game",
   name = "My Awesome Spring Game",
Line 48: Line 48:


return modinfo
return modinfo
</pre></code>
</syntaxhighlight>


===Mutator===
===Mutator===
A mutator depends on the main game file, but does not replace it, it will usually have a different <code>name</code> and <code>shortName</code> but the same <code>game</code> and <code>shortGame</code> values as the main game file. It should still have a <code>modtype</code> of 1.
A mutator depends on the main game file, but does not replace it, it will usually have a different {{name|name}} and {{name|shortName}} but the same {{name|game}} and {{name|shortGame}} values as the main game file. It should still have a {{name|modtype}} of {{value|1}}.




<code><pre>
<syntaxhighlight lang="lua">
local modinfo = {
local modinfo = {
   name = "My Awesome Spring Game Mutator",
   name = "My Awesome Spring Game Mutator",
Line 71: Line 71:


return modinfo
return modinfo
</pre></code>
</syntaxhighlight>


===Base Content===
===Base Content===
Base content is a hidden, unplayable content package which is depended on by your game. For example you might include music in a hidden content package so that it was not updated with the main game files. It must have a <code>modtype</code> of 0. The following example is from <code>springcontent.sdz</code>, which is automatically loaded by Spring for all games.
Base content is a hidden, unplayable content package which is depended on by your game. For example you might include music in a hidden content package so that it was not updated with the main game files. It must have a {{name|modtype}} of {{value|4}} ({{value|0}} prior to 104.0). The following example is from {{var|springcontent.sdz}}, which is automatically loaded by Spring for all games.




<code><pre>
<syntaxhighlight lang="lua">
local modinfo = {
local modinfo = {
   name = "Spring content",
   name = "Spring content",
   version = "v1",
   version = "v1",
   description = "Mods can depend on this archive to get all the spring content",
   description = "Mods can depend on this archive to get all the spring content",
   modtype = 0,
   modtype = 4,
   depend = {
   depend = {
     "Spring Bitmaps v1"
     "Spring Bitmaps v1"
Line 89: Line 89:


return modinfo
return modinfo
</pre></code>
</syntaxhighlight>


===Further Reading===
===Further Reading===

Revision as of 21:40, 18 December 2017

Location

{{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}modinfo.lua is a file in the root directory of a Spring Game.

Purpose

The purpose of this file is to define a Spring content package as a game or game content archive. It is read both by the multiplayer lobbies and the engine itself.

Source

The engine source code which parses the data from this file is viewable here:

Details

The following tags are read, all are strings unless otherwise specified:

  • {{#css:
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}name - The name displayed in the lobby or via Spring.exe, {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}version is automatically appended. Don't put the version into the name!

  • {{#css:
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}shortName - A short representation of the package name, usually an acronym of the above.

  • {{#css:
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}version - The version of this package. See #Further Reading for more information.

  • {{#css:
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}mutator - String. Is the package an official release or a mutator?

  • {{#css:
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}game - What game is this package based on? This is subtly different from the {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}name attribute. Consider that a main game archive and a mutator would have the same game, but different name values.

  • {{#css:
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}shortGame - Again an acronym representing the above.

  • {{#css:
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}description - A description of this content package.

  • {{#css:
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}modtype - What kind of content package is this? {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}1 for a game or mutator, {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}4 for a hidden base content file (prior to 104.0 this was {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}0), menu archives use {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}5. Maps use 3 in mapinfo.lua.

  • {{#css:
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}depend - A table of other content packages, referenced by {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}name + version, not their filename, which this package depends on. Spring will load them if they are present, or throw an error if they are missing. This is used by mutators to depend on main game file and by all games to depend on base content files. New games may particularly want to depend on {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}'Spring Cursors' (provided as {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}cursors.sdz in the Spring {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}base directory) if they do not yet have their own custom cursors.

  • {{#css:
 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}replace - A table of content packages, again referenced by {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}name + version, that this package is meant to replace. For example if you have a base content package with your game music, you may wish to replace it with an updated version later on without having to modify the modinfo.lua of all packages which {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}depend on it. This is not usually used to update main game archives, however, as players may wish to continue playing a previous version.

Examples

Main Game file

local modinfo = {
  name = "My Awesome Spring Game",
  shortName = "MASG",
  game = "My Awesome Spring Game",
  shortGame = "MASG",
  mutator = "Official",
  version = "v1.0",
  description =	"An awesome game I made with units",
  url =	"http://www.linktomyawesomegame.com/",
  modtype = 1,
}

return modinfo

Mutator

A mutator depends on the main game file, but does not replace it, it will usually have a different {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}name and {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}shortName but the same {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}game and {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}shortGame values as the main game file. It should still have a {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}modtype of {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}1.


local modinfo = {
  name = "My Awesome Spring Game Mutator",
  shortName = "MASGM",
  game = "My Awesome Spring Game",
  shortGame = "MASG",
  mutator = "Double Speed Mutator",
  version = "v1.0",
  description =	"An awesome mutator I made for MASG",
  url =	"http://www.linktomyawesomegame.com/",
  modtype = 1,
  depend = {
    "My Awesome Spring Game v1.0",
  }
}

return modinfo

Base Content

Base content is a hidden, unplayable content package which is depended on by your game. For example you might include music in a hidden content package so that it was not updated with the main game files. It must have a {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}modtype of {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}4 ({{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}0 prior to 104.0). The following example is from {{#css:

 span.value {
   color:#e65c00;
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.type {
   color:#0099cc; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }
 span.prefix {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
 }   
 span.name {
   color:#105289; 
   font-family: ‘Lucida Console’, Monaco, monospace;
   font-weight:bold;
 }
 span.var {
   font-family: ‘Lucida Console’, Monaco, monospace;
 }

}}springcontent.sdz, which is automatically loaded by Spring for all games.


local modinfo = {
  name = "Spring content",
  version = "v1",
  description = "Mods can depend on this archive to get all the spring content",
  modtype = 4,
  depend = {
    "Spring Bitmaps v1"
  },
}

return modinfo

Further Reading

Forum thread: Please fix:games contain version in "name" tag (modinfo.lua)