Difference between revisions of "OXP Distribution"

From Elite Wiki
(General: linked explanation how conflicts can occur if no unique names are used)
(Updating BB links)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
Making sure that users can easily find, download, understand, and install your OXP helps making it more popular and keeps requests for help to a minimum. The following best practices help you achieve that.
 
Making sure that users can easily find, download, understand, and install your OXP helps making it more popular and keeps requests for help to a minimum. The following best practices help you achieve that.
 
==General==
 
==General==
* Make sure that the file names in your plists precisely match the actual file names, including the capitalization. File names on non-Windows systems are case-sensitive.
+
* Make sure that the file names in your plists precisely match the actual file names, including the capitalization. File names on non-Windows systems (and even on Windows when using OXZ format) are case-sensitive.
* Include requires.plist in your OXP.
+
* Include [[requires.plist]] and [[manifest.plist]] in your OXP (if using OXZ format, requires.plist can be omitted)
 
* Avoid file names with spaces. They make it harder for people who use the command line.
 
* Avoid file names with spaces. They make it harder for people who use the command line.
 
* Avoid the use of generic names for textures, models, scripts, and keys in .plist files as they may [[OXP howto#Unique names|lead to conflicts with other OXPs]]. Prefixing the names with the OXP name is recommended (e.g. "MyOXP_MetalTexture.png" not "MetalTexture.png")
 
* Avoid the use of generic names for textures, models, scripts, and keys in .plist files as they may [[OXP howto#Unique names|lead to conflicts with other OXPs]]. Prefixing the names with the OXP name is recommended (e.g. "MyOXP_MetalTexture.png" not "MetalTexture.png")
  
==Packaging==
+
==Distribution in OXP format==
 +
The OXZ format has very specific rules, but OXPs distributed as a .oxp folder inside a compressed file do not. These recommendations will help with distributing in that format
 +
===Packaging===
 
{|
 
{|
 
| style="padding-top: 3px; vertical-align: top" |
 
| style="padding-top: 3px; vertical-align: top" |
Line 16: Line 18:
 
#* If you instead put the readme etc. files into the .oxp directory then Mac users will have a harder time finding them as .oxp directories are presented as packages.
 
#* If you instead put the readme etc. files into the .oxp directory then Mac users will have a harder time finding them as .oxp directories are presented as packages.
 
#* Several OXP authors put a copy of the readme and manuals in both the main folder and the OXP folder. This covers most situations/OSes.
 
#* Several OXP authors put a copy of the readme and manuals in both the main folder and the OXP folder. This covers most situations/OSes.
#* See the [http://aegidian.org/bb/viewtopic.php?f=4&t=7047 Licensing OXPs] thread on the Oolite Bulleting Board for information about licensing.
+
#* See the [https://bb.oolite.space/viewtopic.php?f=4&t=7047 Licensing OXPs] thread on the Oolite Bulleting Board for information about licensing.
 
# Inside the MyNewOXP_x.y.z_yyyy-mm-dd.oxp directory add the Config, Models, etc. directories that make up your OXP.
 
# Inside the MyNewOXP_x.y.z_yyyy-mm-dd.oxp directory add the Config, Models, etc. directories that make up your OXP.
 
| style="vertical-align: top" |
 
| style="vertical-align: top" |
Line 33: Line 35:
 
|}
 
|}
  
==Distribution==
+
===Distribution===
 
# Create a zip file based on the "MyNewOXP_x.y.z_yyyy-mm-dd" directory and name it "MyNewOXP_x.y.z_yyyy-mm-dd.zip"
 
# Create a zip file based on the "MyNewOXP_x.y.z_yyyy-mm-dd" directory and name it "MyNewOXP_x.y.z_yyyy-mm-dd.zip"
 
#* While there are other, more efficient compression tools (such as rar, 7z), zip is available out-of-the-box on all operating systems that are officially supported by Oolite.
 
#* While there are other, more efficient compression tools (such as rar, 7z), zip is available out-of-the-box on all operating systems that are officially supported by Oolite.
Line 40: Line 42:
  
 
==Announcement==
 
==Announcement==
When you start work on an OXP and wish to make this known start a new thread in the Expansion Packs forum of the [http://aegidian.org/bb Oolite Bulletin Board (BB)]. The title of the thread should be the name of the OXP preceded by [WIP] as long as the OXP is under development. When you decide your OXP is finished, it is recommended that you change [WIP] to [Release].
+
When you start work on an OXP and wish to make this known start a new thread in the Expansion Packs forum of the [https://bb.oolite.space Oolite Bulletin Board (BB)]. The title of the thread should be the name of the OXP preceded by [WIP] as long as the OXP is under development. When you decide your OXP is finished, it is recommended that you change [WIP] to [Release].
 
* Screenshots in the BB post are much appreciated.
 
* Screenshots in the BB post are much appreciated.
 
* Create a wiki page for your OXP if you can, or ask around the BB for help with setting one up.
 
* Create a wiki page for your OXP if you can, or ask around the BB for help with setting one up.
 
* At the very least, provide enough information for creating a one-liner in the [[OXP List]].
 
* At the very least, provide enough information for creating a one-liner in the [[OXP List]].
 +
 +
From Oolite v1.80 you should use the new OXZ format, which is required to appear in the in-game oxz manager. Please read [https://bb.oolite.space/viewtopic.php?f=4&t=16688 The All-in-One Guide to OXZ Packaging and Distribution].
 +
 
==Updating==
 
==Updating==
 
# '''Always''' update the version number, no matter how small the change is.
 
# '''Always''' update the version number, no matter how small the change is.
Line 58: Line 63:
 
*Secondly create two separate OXPs named ''ShipSetName''_Replace.oxp and ''ShipSetName''_Addition.oxp or similar. These should contain the Config folder for your ships. End users can install one or the other depending on whether they want your ships to replace the core Oolite ships entirely, or if they want your ships to appear in addition to the core Oolite ships, or in addition to another retexture OXP which has replaced the core Oolite ships.
 
*Secondly create two separate OXPs named ''ShipSetName''_Replace.oxp and ''ShipSetName''_Addition.oxp or similar. These should contain the Config folder for your ships. End users can install one or the other depending on whether they want your ships to replace the core Oolite ships entirely, or if they want your ships to appear in addition to the core Oolite ships, or in addition to another retexture OXP which has replaced the core Oolite ships.
  
*The shipdata.plist in ''ShipSetName''_Addition.oxp should reference each ship with a unique identifier. For example your version of the adder may be referenced as  "''ShipSetName''_adder". You will also need to include a demoships.plist so that your ships will appear on the demoships parade and a shipyard.plist referencing the ships that are player purchasable.
+
*The shipdata.plist in ''ShipSetName''_Addition.oxp should reference each ship with a unique identifier. For example your version of the adder may be referenced as  "''ShipSetName''_adder". You will also need to include a shipyard.plist referencing the ships that are player purchasable. You should use <code>like_ship</code> to copy the template entries from the main ship data, for example
 +
"ShipSetName_adder" = {
 +
  like_ship = "oolite_template_adder";
 +
  /* Your modifications for any parameters you want to change like
 +
    * model, shaders, textures, weapon and view positions go here */
 +
};
 +
 
 +
*The shipdata.plist in ''ShipSetName''_Replace.oxp should reference ships that are the direct equivalent of an core Oolite ship with the same name as is used in the core game's shipdata.plist (this file is found in Oolite\Oolite.app\Resources\Config). For example your version of the adder would be referenced as "adder". This will result in your ships replacing the equivalent core Oolite ships entirely. If your package includes a version of the "cobra3-player", new Jamesons will start the game flying your version. Any ships which do not have a direct equivalent in the core game's shipdata.plist should retain their unique name. You will only need to include a shipyard.plist if you are including ships which do not have a direct equivalent in the core game's shipdata.plist.  
 +
"adder" = {
 +
  like_ship = "oolite_template_adder";
 +
  /* Your modifications for any parameters you want to change like
 +
    * model, shaders, textures, weapon and view positions go here */
 +
};
 +
 
  
*The shipdata.plist in ''ShipSetName''_Replace.oxp should reference ships that are the direct equivalent of an core Oolite ship with the same name as is used in the core game's shipdata.plist (this file is found in Oolite\Oolite.app\Resources\Config). For example your version of the adder would be referenced as "adder". This will result in your ships replacing the equivalent core Oolite ships entirely. If your package includes a version of the "cobra3-player", new Jamesons will start the game flying your version. Any ships which do not have a direct equivalent in the core game's shipdata.plist should retain their unique name. You will only need to include a demoships.plist or shipyard.plist if you are including ships which do not have a direct equivalent in the core game's shipdata.plist.
 
  
 
*End users will need to download the ''ShipSetName''_Resources.oxp and either the ''ShipSetName''_Addition.oxp or the ''ShipSetName''_Replace.oxp depending on their preference. In general end users cannot install multiple 'replacement' type retexture OXPs without them conflicting. However they can install one 'replacement' type retexture OXP, and as many 'addition' type retexture OXPs as they wish to achieve more variety of ships in game. Providing your retexture/remodel OXP in this format facilitates this end user choice.
 
*End users will need to download the ''ShipSetName''_Resources.oxp and either the ''ShipSetName''_Addition.oxp or the ''ShipSetName''_Replace.oxp depending on their preference. In general end users cannot install multiple 'replacement' type retexture OXPs without them conflicting. However they can install one 'replacement' type retexture OXP, and as many 'addition' type retexture OXPs as they wish to achieve more variety of ships in game. Providing your retexture/remodel OXP in this format facilitates this end user choice.

Latest revision as of 02:15, 29 February 2024

Making sure that users can easily find, download, understand, and install your OXP helps making it more popular and keeps requests for help to a minimum. The following best practices help you achieve that.

General

  • Make sure that the file names in your plists precisely match the actual file names, including the capitalization. File names on non-Windows systems (and even on Windows when using OXZ format) are case-sensitive.
  • Include requires.plist and manifest.plist in your OXP (if using OXZ format, requires.plist can be omitted)
  • Avoid file names with spaces. They make it harder for people who use the command line.
  • Avoid the use of generic names for textures, models, scripts, and keys in .plist files as they may lead to conflicts with other OXPs. Prefixing the names with the OXP name is recommended (e.g. "MyOXP_MetalTexture.png" not "MetalTexture.png")

Distribution in OXP format

The OXZ format has very specific rules, but OXPs distributed as a .oxp folder inside a compressed file do not. These recommendations will help with distributing in that format

Packaging

  1. Create a directory named after your OXP, e.g. "MyNewOXP_x.y.z_yyyy-mm-dd". Make sure this directory does not end with the .oxp suffix.
    • Replace x.y.z with the version number, e.g. 1.0.0 for the initial release, or 1.0.1 for a small follow-up bug fix release.
    • Replace yyyy-mm-dd with your OXP's new release date (yyyy: year, mm: month, dd:day), e.g. 2011-03-05 for March 5th, 2011.
  2. Inside "MyNewOXP_x.y.z_yyyy-mm-dd", add the readme, the license, and additional files, and the actual OXP directory, named MyNewOXP_x.y.z_yyyy-mm-dd.oxp. Make sure this directory does end with the .oxp suffix.
    • If you prefix the names of the readme and license files with MyNewOXP you are making it easier for users to keep all files that belong to OXPs in one place.
    • If you instead put the readme etc. files into the .oxp directory then Mac users will have a harder time finding them as .oxp directories are presented as packages.
    • Several OXP authors put a copy of the readme and manuals in both the main folder and the OXP folder. This covers most situations/OSes.
    • See the Licensing OXPs thread on the Oolite Bulleting Board for information about licensing.
  3. Inside the MyNewOXP_x.y.z_yyyy-mm-dd.oxp directory add the Config, Models, etc. directories that make up your OXP.

Example:

MyNewOXP_1.0.1_2011-11-17
+- MyNewOXP readme.txt
+- MyNewOXP license.txt
+- MyNewOXP_1.0.1_2011-11-17.oxp
   +- Config
   +- Models
   +- Shaders
   +- Textures

Distribution

  1. Create a zip file based on the "MyNewOXP_x.y.z_yyyy-mm-dd" directory and name it "MyNewOXP_x.y.z_yyyy-mm-dd.zip"
    • While there are other, more efficient compression tools (such as rar, 7z), zip is available out-of-the-box on all operating systems that are officially supported by Oolite.
    • If you are working on a Mac, please use either a compression tool like YemuZip, or the "compress" command from the context menu in Finder followed by a run through ZipCleaner. Otherwise, OS X specific files that are not relevant for other platforms will be included and lead to confusion.
  2. Upload the zip file to an easily accessible online storage. Most OXP authors use box.com for distribution nowadays. It is free up to 5GB and does not annoy your users with advertisements.

Announcement

When you start work on an OXP and wish to make this known start a new thread in the Expansion Packs forum of the Oolite Bulletin Board (BB). The title of the thread should be the name of the OXP preceded by [WIP] as long as the OXP is under development. When you decide your OXP is finished, it is recommended that you change [WIP] to [Release].

  • Screenshots in the BB post are much appreciated.
  • Create a wiki page for your OXP if you can, or ask around the BB for help with setting one up.
  • At the very least, provide enough information for creating a one-liner in the OXP List.

From Oolite v1.80 you should use the new OXZ format, which is required to appear in the in-game oxz manager. Please read The All-in-One Guide to OXZ Packaging and Distribution.

Updating

  1. Always update the version number, no matter how small the change is.
  2. Update your readme file with a new entry to the version history.
  3. Rename the directories based on the release date of your new version, create a new zip file, and upload it.
  4. Both modify the first post in the OXP thread that you created, and post a new message in the same thread. In the first post, update the download location and provide up-to-date version information. In the new message, mention that there is a new version and give whatever other information is necessary.
    • If you only modify the first post, then the BB will not show that the thread changed. If you only add a new post, users will miss the new version if they only look at the first post.

Packaging Retexture/Remodel OXPs

If you are making an OXP which adds alternative versions of the core Oolite ships or replaces the core Oolite ships entirely we suggest you follow these guidelines to ensure compatibility with similar OXPs. This modular format also allows end-users to easily customise their 'mix' of ships.

  • Firstly create an OXP named ShipSetName_Resources.oxp or similar. This should include the Models, Shaders, and Textures folders required for your ships. As is generally advised the names of the individual models, shaders and textures should be unique.
  • Secondly create two separate OXPs named ShipSetName_Replace.oxp and ShipSetName_Addition.oxp or similar. These should contain the Config folder for your ships. End users can install one or the other depending on whether they want your ships to replace the core Oolite ships entirely, or if they want your ships to appear in addition to the core Oolite ships, or in addition to another retexture OXP which has replaced the core Oolite ships.
  • The shipdata.plist in ShipSetName_Addition.oxp should reference each ship with a unique identifier. For example your version of the adder may be referenced as "ShipSetName_adder". You will also need to include a shipyard.plist referencing the ships that are player purchasable. You should use like_ship to copy the template entries from the main ship data, for example
"ShipSetName_adder" = {
  like_ship = "oolite_template_adder";
  /* Your modifications for any parameters you want to change like
   * model, shaders, textures, weapon and view positions go here */
};
  • The shipdata.plist in ShipSetName_Replace.oxp should reference ships that are the direct equivalent of an core Oolite ship with the same name as is used in the core game's shipdata.plist (this file is found in Oolite\Oolite.app\Resources\Config). For example your version of the adder would be referenced as "adder". This will result in your ships replacing the equivalent core Oolite ships entirely. If your package includes a version of the "cobra3-player", new Jamesons will start the game flying your version. Any ships which do not have a direct equivalent in the core game's shipdata.plist should retain their unique name. You will only need to include a shipyard.plist if you are including ships which do not have a direct equivalent in the core game's shipdata.plist.
"adder" = {
  like_ship = "oolite_template_adder";
  /* Your modifications for any parameters you want to change like
   * model, shaders, textures, weapon and view positions go here */
};


  • End users will need to download the ShipSetName_Resources.oxp and either the ShipSetName_Addition.oxp or the ShipSetName_Replace.oxp depending on their preference. In general end users cannot install multiple 'replacement' type retexture OXPs without them conflicting. However they can install one 'replacement' type retexture OXP, and as many 'addition' type retexture OXPs as they wish to achieve more variety of ships in game. Providing your retexture/remodel OXP in this format facilitates this end user choice.