faq.rst 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. .. _doc_faq:
  2. Frequently asked questions
  3. ==========================
  4. What can I do with Godot? How much does it cost? What are the license terms?
  5. ----------------------------------------------------------------------------
  6. Godot is `Free and Open-Source Software <https://en.wikipedia.org/wiki/Free_and_open-source_software>`_ available under the `OSI-approved <https://opensource.org/licenses/MIT>`_ MIT license. This means it is free as in "free speech" as well as in "free beer."
  7. In short:
  8. * You are free to download and use Godot for any purpose, personal, non-profit, commercial, or otherwise.
  9. * You are free to modify, distribute, redistribute, and remix Godot to your heart's content, for any reason, both non-commercially and commercially.
  10. All the contents of this accompanying documentation are published under
  11. the permissive Creative Commons Attribution 3.0 (`CC-BY 3.0 <https://creativecommons.org/licenses/by/3.0/>`_) license, with attribution
  12. to "Juan Linietsky, Ariel Manzur and the Godot Engine community."
  13. Logos and icons are generally under the same Creative Commons license. Note
  14. that some third-party libraries included with Godot's source code may have
  15. different licenses.
  16. For full details, look at the `COPYRIGHT.txt <https://github.com/godotengine/godot/blob/master/COPYRIGHT.txt>`_ as well
  17. as the `LICENSE.txt <https://github.com/godotengine/godot/blob/master/LICENSE.txt>`_ and `LOGO_LICENSE.txt <https://github.com/godotengine/godot/blob/master/LOGO_LICENSE.md>`_ files
  18. in the Godot repository.
  19. Also, see `the license page on the Godot website <https://godotengine.org/license>`_.
  20. Which platforms are supported by Godot?
  21. ---------------------------------------
  22. **For the editor:**
  23. * Windows
  24. * macOS
  25. * X11 (Linux, \*BSD)
  26. **For exporting your games:**
  27. * Windows (and UWP)
  28. * macOS
  29. * X11 (Linux, \*BSD)
  30. * Android
  31. * iOS
  32. * Web
  33. Both 32- and 64-bit binaries are supported where it makes sense, with 64
  34. being the default.
  35. Some users also report building and using Godot successfully on ARM-based
  36. systems with Linux, like the Raspberry Pi.
  37. Additionally, there is some unofficial third-party work being done on building
  38. for some consoles. However, none of this is included in the default build
  39. scripts or export templates at this time.
  40. For more on this, see the sections on :ref:`exporting <toc-learn-workflow-export>`
  41. and :ref:`compiling Godot yourself <toc-devel-compiling>`.
  42. Which programming languages are supported in Godot?
  43. ---------------------------------------------------
  44. The officially supported languages for Godot are GDScript, Visual Scripting,
  45. C#, and C++. See the subcategories for each language in the
  46. :ref:`scripting <toc-learn-scripting>` section.
  47. If you are just starting out with either Godot or game development in general,
  48. GDScript is the recommended language to learn and use since it is native to Godot.
  49. While scripting languages tend to be less performant than lower-level languages in
  50. the long run, for prototyping, developing Minimum Viable Products (MVPs), and
  51. focusing on Time-To-Market (TTM), GDScript will provide a fast, friendly, and capable
  52. way of developing your games.
  53. Note that C# support is still relatively new, and as such, you may encounter some
  54. issues along the way. Our friendly and hard-working development community is always
  55. ready to tackle new problems as they arise, but since this is an open-source project,
  56. we recommend that you first do some due diligence yourself. Searching through
  57. discussions on `open issues <https://github.com/godotengine/godot/issues>`_ is a
  58. great way to start your troubleshooting.
  59. As for new languages, support is possible via third parties using the GDNative /
  60. NativeScript / PluginScript facilities. (See the question about plugins below.)
  61. Work is currently underway, for example, on unofficial bindings for Godot
  62. to `Python <https://github.com/touilleMan/godot-python>`_ and `Nim <https://github.com/pragmagic/godot-nim>`_.
  63. What is GDScript and why should I use it?
  64. -----------------------------------------
  65. GDScript is Godot's integrated scripting language. It was built from the ground
  66. up to maximize Godot's potential in the least amount of code, affording both novice
  67. and expert developers alike to capitalize on Godot's strengths as fast as possible.
  68. If you've ever written anything in a language like Python before then you'll feel
  69. right at home. For examples, history, and a complete overview of the power GDScript
  70. offers you, check out the :ref:`GDScript scripting guide <doc_gdscript>`.
  71. There are several reasons to use GDScript--especially when you are prototyping, in
  72. alpha/beta stages of your project, or are not creating the next AAA title--but the
  73. most salient reason is the overall **reduction of complexity.**
  74. The original intent of creating a tightly integrated, custom scripting language for
  75. Godot was two-fold: first, it reduces the amount of time necessary to get up and running
  76. with Godot, giving developers a rapid way of exposing themselves to the engine with a
  77. focus on productivity; second, it reduces the overall burden of maintenance, attenuates
  78. the dimensionality of issues, and allows the developers of the engine to focus on squashing
  79. bugs and improving features related to the engine core--rather than spending a lot of time
  80. trying to get a small set of incremental features working across a large set of languages.
  81. Since Godot is an open-source project, it was imperative from the start to prioritize a
  82. more integrated and seamless experience over attracting additional users by supporting
  83. more familiar programming languages--especially when supporting those more familiar
  84. languages would result in a worse experience. We understand if you would rather use
  85. another language in Godot (see the list of supported options above). That being said, if
  86. you haven't given GDScript a try, try it for **three days**. Just like Godot,
  87. once you see how powerful it is and rapid your development becomes, we think GDScript
  88. will grow on you.
  89. More information about getting comfortable with GDScript or dynamically typed
  90. languages can be found in the :ref:`doc_gdscript_more_efficiently` tutorial.
  91. What were the motivations behind creating GDScript?
  92. ---------------------------------------------------
  93. The main reasons for creating a custom scripting language for Godot were:
  94. 1. Poor thread support in most script VMs, and Godot uses threads
  95. (Lua, Python, Squirrel, JS, AS, etc.).
  96. 2. Poor class-extending support in most script VMs, and adapting to
  97. the way Godot works is highly inefficient (Lua, Python, JS).
  98. 3. Many existing languages have horrible interfaces for binding to C++, resulting in large amount of
  99. code, bugs, bottlenecks, and general inefficiency (Lua, Python,
  100. Squirrel, JS, etc.) We wanted to focus on a great engine, not a great amount of integrations.
  101. 4. No native vector types (vector3, matrix4, etc.), resulting in highly
  102. reduced performance when using custom types (Lua, Python, Squirrel,
  103. JS, AS, etc.).
  104. 5. Garbage collector results in stalls or unnecessarily large memory
  105. usage (Lua, Python, JS, AS, etc.).
  106. 6. Difficulty to integrate with the code editor for providing code
  107. completion, live editing, etc. (all of them). This is well
  108. supported by GDScript.
  109. GDScript was designed to curtail the issues above and more.
  110. What type of 3D model formats does Godot support?
  111. -------------------------------------------------
  112. Godot supports Collada via the `OpenCollada <https://github.com/KhronosGroup/OpenCOLLADA/wiki/OpenCOLLADA-Tools>`_ exporter (Maya, 3DSMax).
  113. If you are using Blender, take a look at our own `Better Collada Exporter <https://godotengine.org/download>`_.
  114. As of Godot 3.0, glTF is supported.
  115. FBX SDK has a `restrictive license <https://www.blender.org/bf/Autodesk_FBX_License.rtf>`_,
  116. that is incompatible with the `open license <https://opensource.org/licenses/MIT>`_
  117. provided by Godot. That being said, FBX support could still be provided by third parties
  118. as a plugin. (See Plugins question below.)
  119. Will [insert closed SDK such as FMOD, GameWorks, etc.] be supported in Godot?
  120. -----------------------------------------------------------------------------
  121. The aim of Godot is to create a free and open-source MIT-licensed engine that
  122. is modular and extendable. There are no plans for the core engine development
  123. community to support any third-party, closed-source/proprietary SDKs, as integrating
  124. with these would go against Godot's ethos.
  125. That said, because Godot is open-source and modular, nothing prevents you or
  126. anyone else interested in adding those libraries as a module and shipping your
  127. game with them--as either open- or closed-source.
  128. To see how support for your SDK of choice could still be provided, look at the
  129. Plugins question below.
  130. If you know of a third-party SDK that is not supported by Godot but that offers
  131. free and open-source integration, consider starting the integration work yourself.
  132. Godot is not owned by one person; it belongs to the community, and it grows along
  133. with ambitious community contributors like you.
  134. How should assets be created to handle multiple resolutions and aspect ratios?
  135. ------------------------------------------------------------------------------
  136. This question pops up often and it's probably thanks to the misunderstanding
  137. created by Apple when they originally doubled the resolution of their devices.
  138. It made people think that having the same assets in different resolutions was a
  139. good idea, so many continued towards that path. That originally worked to a
  140. point and only for Apple devices, but then several Android and Apple devices
  141. with different resolutions and aspect ratios were created, with a very wide
  142. range of sizes and DPIs.
  143. The most common and proper way to achieve this is to, instead, use a single
  144. base resolution for the game and only handle different screen aspect ratios.
  145. This is mostly needed for 2D, as in 3D it's just a matter of Camera XFov or YFov.
  146. 1. Choose a single base resolution for your game. Even if there are
  147. devices that go up to 2K and devices that go down to 400p, regular
  148. hardware scaling in your device will take care of this at little or
  149. no performance cost. Most common choices are either near 1080p
  150. (1920x1080) or 720p (1280x720). Keep in mind the higher the
  151. resolution, the larger your assets, the more memory they will take
  152. and the longer the time it will take for loading.
  153. 2. Use the stretch options in Godot; 2D stretching while keeping aspect
  154. ratios works best. Check the :ref:`doc_multiple_resolutions` tutorial
  155. on how to achieve this.
  156. 3. Determine a minimum resolution and then decide if you want your game
  157. to stretch vertically or horizontally for different aspect ratios, or
  158. if there is one aspect ratio and you want black bars to appear
  159. instead. This is also explained in :ref:`doc_multiple_resolutions`.
  160. 4. For user interfaces, use the :ref:`anchoring <doc_size_and_anchors>`
  161. to determine where controls should stay and move. If UIs are more
  162. complex, consider learning about Containers.
  163. And that's it! Your game should work in multiple resolutions.
  164. If there is a desire to make your game also work on ancient
  165. devices with tiny screens (fewer than 300 pixels in width), you can use
  166. the export option to shrink images, and set that build to be used for
  167. certain screen sizes in the App Store or Google Play.
  168. How can I extend Godot?
  169. -----------------------
  170. For extending Godot, like creating Godot Editor plugins or adding support
  171. for additional languages, take a look at :ref:`EditorPlugins <doc_making_plugins>`
  172. and tool scripts.
  173. Also, see the official blog posts on these topics:
  174. * `A look at the GDNative architecture <https://godotengine.org/article/look-gdnative-architecture>`_
  175. * `GDNative is here! <https://godotengine.org/article/dlscript-here>`_
  176. You can also take a look at the GDScript implementation, the Godot modules,
  177. as well as the `unofficial Python support <https://github.com/touilleMan/godot-python>`_ for Godot.
  178. This would be a good starting point to see how another third-party library
  179. integrates with Godot.
  180. I would like to contribute! How can I get started?
  181. --------------------------------------------------
  182. Awesome! As an open-source project, Godot thrives off of the innovation and
  183. ambition of developers like you.
  184. The first place to get started is in the `issues <https://github.com/godotengine/godot/issues>`_.
  185. Find an issue that resonates with you, then proceed to the `How to Contribute <https://github.com/godotengine/godot/blob/master/CONTRIBUTING.md#contributing-pull-requests>`_
  186. guide to learn how to fork, modify, and submit a Pull Request (PR) with your changes.
  187. I have a great idea for Godot. How can I share it?
  188. --------------------------------------------------
  189. It might be tempting to want to bring ideas to Godot, like ones that
  190. result in massive core changes, some sort of mimicry of what another
  191. game engine does, or alternative workflows that you'd like built into
  192. the editor. These are great and we are thankful to have such motivated
  193. people want to contribute, but Godot's focus is and always will be the
  194. core functionality as outlined in the `Roadmap <https://github.com/godotengine/godot-roadmap/blob/master/ROADMAP.md>`_,
  195. `squashing bugs and addressing issues <https://github.com/godotengine/godot/issues>`_,
  196. and conversations between Godot community members.
  197. Most developers in the Godot community will be more interested to learn
  198. about things like:
  199. - Your experience using the software and the problems you have (we
  200. care about this much more than ideas on how to improve it).
  201. - The features you would like to see implemented because you need them
  202. for your project.
  203. - The concepts that were difficult to understand while learning the software.
  204. - The parts of your workflow you would like to see optimized.
  205. - Parts where you missed clear tutorials or where the documentation wasn't clear.
  206. Please don't feel like your ideas for Godot are unwelcome. Instead,
  207. try to reformulate them as a problem first, so developers and the community
  208. have a functional foundation to ground your ideas on.
  209. A good way to approach sharing your ideas and problems with the community
  210. is as a set of user stories. Explain what you are trying to do, what behavior
  211. you expect to happen, and then what behavior actually happened. Framing problems
  212. and ideas this way will help the whole community stay focused on improving
  213. developer experiences as a whole.
  214. Bonus points for bringing screenshots, concrete numbers, test cases, or example
  215. projects (if applicable).
  216. How can I support Godot development or contribute?
  217. --------------------------------------------------
  218. See :ref:`doc_ways_to_contribute`.
  219. Who is working on Godot? How can I contact you?
  220. -----------------------------------------------
  221. See the corresponding page on the `Godot website <https://godotengine.org/contact>`_.