submitting_to_assetlib.rst 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. .. _doc_submitting_to_assetlib:
  2. Submitting to the Asset Library
  3. ===============================
  4. Introduction
  5. ------------
  6. This tutorial aims to serve as a guide on how you can submit your own assets
  7. to the `Godot Asset Library <https://godotengine.org/asset-library/asset>`_
  8. and share them with the Godot community.
  9. As mentioned in the :ref:`doc_using_assetlib` document, in order to be able to
  10. submit assets to the AssetLib, you need to have a registered account, and be
  11. logged in.
  12. Submission guidelines
  13. ---------------------
  14. Before submitting your asset, please ensure it follows all of the
  15. requirements, and also consider following the recommendations.
  16. Requirements
  17. ~~~~~~~~~~~~
  18. Generally speaking, most assets people submit to the asset library
  19. are accepted. However, in order for your asset to be accepted, there
  20. are a few requirements your asset needs to meet to be approved.
  21. * The asset must **work**. If the asset doesn't run or otherwise doesn't
  22. work in the specified Godot version, then it will be rejected.
  23. * The asset must have a proper **.gitignore** file. It's important to
  24. keep redundant data out of the repository.
  25. `Here's a template. <https://raw.githubusercontent.com/aaronfranke/gitignore/godot/Godot.gitignore>`_
  26. * No **submodules**, or any submodules must be non-essential. GitHub
  27. does not include submodules in the downloaded ZIP file, so if the
  28. asset needs the contents of the submodule, your asset won't work.
  29. * The **license** needs to be correct. The license listed on the asset
  30. library must match the license in the repository. The repo MUST
  31. have a license file, called either "LICENSE" or "LICENSE.md".
  32. This file must contain the license text itself and a copyright
  33. statement that includes the year(s) and copyright holder.
  34. * Use proper **English** for the name and description of your asset.
  35. This includes using correct capitalization, and using full
  36. sentences in the description. You can also include other languages,
  37. but there should at least be an English version.
  38. * The icon link must be a **direct link**. For icons hosted on GitHub, the
  39. link must start with "raw.githubusercontent.com", not "github.com".
  40. Recommendations
  41. ~~~~~~~~~~~~~~~
  42. These things are not required for your asset to be approved, but
  43. if you follow these recommendations, you can help make the asset
  44. library a better place for all users.
  45. * When creating non-project assets, it is common practice to place your files
  46. inside of an **addons/asset_name/** folder. Do this to avoid having your files
  47. clash with other assets, or with the files of users installing your asset.
  48. This folder will **not** be automatically generated when a user installs your asset.
  49. * Fix or suppress all script **warnings**. The warning system is there to
  50. help identify issues with your code, but people using your asset
  51. don't need to see them.
  52. * Make your code conform to the official **style guides**. Having a
  53. consistent style helps other people read your code, and it also helps
  54. if other people wish to contribute to your asset. See: the
  55. :ref:`doc_gdscript_styleguide` or the :ref:`doc_c_sharp_styleguide`.
  56. * If you have screenshots in your repo, place them in their own subfolder
  57. and add an empty **.gdignore** file in the same folder (note: **gd**, not **git**).
  58. This prevents Godot from importing your screenshots.
  59. On Windows, open a command prompt in the project folder and run
  60. ``type nul > .gdignore`` to create a file whose name starts with a period.
  61. * If your asset is a library for working with other files,
  62. consider including **example files** in the asset.
  63. * Consider adding a **.gitattributes** file to your repo. This file allows
  64. giving extra instructions to Git, such as specifying line endings and listing
  65. files not required for your asset to function with the ``export-ignore``
  66. directive. This directive removes such files from the resulting ZIP file,
  67. preventing them from being downloaded by the asset library users.
  68. These are common examples of **.gitattributes**:
  69. .. tabs::
  70. .. tab:: Projects / Templates
  71. .. code-block:: shell
  72. # Normalize line endings for all files that Git considers text files.
  73. * text=auto eol=lf
  74. .. tab:: Addons / Asset Packs
  75. .. code-block:: shell
  76. # Normalize line endings for all files that Git considers text files.
  77. * text=auto eol=lf
  78. # Only include the addons folder when downloading from the Asset Library.
  79. /** export-ignore
  80. /addons !export-ignore
  81. /addons/** !export-ignore
  82. * If you are submitting a plugin, add a **copy** of your license and readme
  83. to the plugin folder itself. This is the folder that users are guaranteed to
  84. keep with their project, so a copy ensures they always have those files handy
  85. (and helps them fulfill your licensing terms).
  86. * While the asset library allows more than just GitHub, consider
  87. hosting your asset's source code on **GitHub**. Other services may not
  88. work reliably, and a lack of familiarity can be a barrier to contributors.
  89. Submitting
  90. ----------
  91. Once you are logged in, you will be able to head over to the "Submit Assets" page
  92. of the AssetLib, which will look like this:
  93. |image0|
  94. While it may look like a lot (and there is more as you scroll down), each field is
  95. described in terms of what you should put in. We will nonetheless go over what
  96. is required in the submission form here as well.
  97. * **Asset Name**:
  98. The name of your asset. Should be a unique, descriptive title of
  99. what your asset is.
  100. * **Category**:
  101. The category that your asset belongs to, and will be shown in
  102. search results. The category is split into **Addons** and **Projects**.
  103. In-editor, assets of the Project type (Templates, Demos, Projects) only show
  104. up when viewing the AssetLib from the Project Manager, while assets of the
  105. Addon type will only be visible from inside a project.
  106. * **Godot version**:
  107. The version of the engine that the asset works with.
  108. Currently, it's not possible to have a single asset entry contain downloads for
  109. multiple engine versions, so you may need to re-submit the asset multiple times,
  110. with an entry for each Godot version it supports. This is particularly important
  111. when dealing with major versions of the engine, such as Godot 2.x and Godot 3.x.
  112. * **Version**:
  113. The version number of the asset. While you are free to choose
  114. and use any versioning scheme that you like, you may want to look into
  115. something such as `SemVer <https://semver.org>`_ if you want your asset's
  116. versioning scheme to be clear and consistent. Note that there is also an
  117. internal version number, incremented every time the asset download URL is
  118. changed or updated.
  119. * **Repository host**:
  120. Assets uploaded to the AssetLib are not hosted on it
  121. directly. Instead, they point to repositories hosted on third-party Git providers,
  122. such as GitHub, GitLab or Bitbucket. This is where you choose which provider
  123. your asset uses, so the site can compute the final download link.
  124. * **Repository URL**:
  125. The URL to your asset's files/webpage. This will vary
  126. based on your choice of provider, but it should look similar to `https://github.com/<user>/<project>`.
  127. * **Issues URL**:
  128. The URL to your asset's issue tracker. Again, this will differ
  129. from repository host to repository host, but will likely look similar to
  130. `https://github.com/<user>/<project>/issues`. You may leave this field empty
  131. if you use your provider's issue tracker, and it's part of the same repository.
  132. * **Download Commit**:
  133. The commit of the asset. For example,
  134. `b1d3172f89b86e52465a74f63a74ac84c491d3e1`. The site computes
  135. the actual download URL from this.
  136. * **Icon URL**:
  137. The URL to your asset's icon (which will be used as a thumbnail
  138. in the AssetLib search results and on the asset's page). Should be an image
  139. in either the PNG or JPG format.
  140. The **icon** must be square (1:1 aspect ratio). It should have a minimum
  141. resolution of 128×128 pixels.
  142. .. note::
  143. For icons hosted on GitHub, URLs must be provided in the form of `https://raw.githubusercontent.com/<user>/<project>/<branch>/Icon.png`.
  144. * **License**:
  145. The license under which you are distributing the asset. The list
  146. includes a variety of free and open source software licenses, such as GPL
  147. (v2 and v3), MIT, BSD and Boost Software License. You can visit `OpenSource.org <https://opensource.org>`_
  148. for a detailed description of each of the listed licenses.
  149. * **Description**:
  150. Finally, you can use the Description field for a textual
  151. overview of your asset, its features and behavior, a changelog, et cetera. In the
  152. future, formatting with Markdown will be supported, but currently, your only
  153. option is plain text.
  154. You may also include up to three video and/or image previews, which will be shown
  155. at the bottom of the asset page. Use the "Enable" checkbox on each of the preview
  156. submission boxes to enable them.
  157. * **Type**:
  158. Either an image, or a video.
  159. * **Image/YouTube URL**:
  160. Either a link to the image, or to a video, hosted on YouTube.
  161. * **Thumbnail URL**:
  162. A URL to an image that will be used as a thumbnail for the
  163. preview. This option will be removed eventually, and thumbnails will be automatically
  164. computed instead.
  165. Once you are done, press "Submit". Your asset will be entered into the review queue.
  166. You can check all assets currently pending a review `here <https://godotengine.org/asset-library/asset/edit?&asset=-1>`_ .
  167. The approval process is manual and may take up to a few days for your asset to be accepted (or rejected), so please
  168. be patient!
  169. You will be informed when your asset is reviewed. If it was rejected,
  170. you will be told why that may have been, and you will be able to submit it again
  171. with the appropriate changes.
  172. .. |image0| image:: img/assetlib_submit.png