faq.rst 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. .. meta::
  2. :keywords: FAQ
  3. .. _doc_faq:
  4. Frequently asked questions
  5. ==========================
  6. What can I do with Godot? How much does it cost? What are the license terms?
  7. ----------------------------------------------------------------------------
  8. 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."
  9. In short:
  10. * You are free to download and use Godot for any purpose: personal, non-profit, commercial, or otherwise.
  11. * You are free to modify, distribute, redistribute, and remix Godot to your heart's content, for any reason, both non-commercially and commercially.
  12. All the contents of this accompanying documentation are published under
  13. the permissive Creative Commons Attribution 3.0 (`CC BY 3.0 <https://creativecommons.org/licenses/by/3.0/>`_) license, with attribution
  14. to "Juan Linietsky, Ariel Manzur and the Godot Engine community."
  15. Logos and icons are generally under the same Creative Commons license. Note
  16. that some third-party libraries included with Godot's source code may have
  17. different licenses.
  18. For full details, look at the `COPYRIGHT.txt <https://github.com/godotengine/godot/blob/master/COPYRIGHT.txt>`_ as well
  19. 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
  20. in the Godot repository.
  21. Also, see `the license page on the Godot website <https://godotengine.org/license>`_.
  22. Which platforms are supported by Godot?
  23. ---------------------------------------
  24. **For the editor:**
  25. * Windows
  26. * macOS
  27. * X11 (Linux, \*BSD)
  28. * :ref:`Web <doc_using_the_web_editor>`
  29. * Android (experimental)
  30. **For exporting your games:**
  31. * Windows (and UWP)
  32. * macOS
  33. * X11 (Linux, \*BSD)
  34. * Android
  35. * iOS
  36. * Web
  37. Both 32- and 64-bit binaries are supported where it makes sense, with 64
  38. being the default.
  39. Some users also report building and using Godot successfully on ARM-based
  40. systems with Linux, like the Raspberry Pi.
  41. Additionally, there is some unofficial third-party work being done on building
  42. for some consoles. However, none of this is included in the default build
  43. scripts or export templates at this time.
  44. For more on this, see the sections on :ref:`exporting <toc-learn-workflow-export>`
  45. and :ref:`compiling Godot yourself <toc-devel-compiling>`.
  46. Which programming languages are supported in Godot?
  47. ---------------------------------------------------
  48. The officially supported languages for Godot are GDScript, Visual Scripting,
  49. C#, and C++. See the subcategories for each language in the
  50. :ref:`scripting <toc-learn-scripting>` section.
  51. If you are just starting out with either Godot or game development in general,
  52. GDScript is the recommended language to learn and use since it is native to Godot.
  53. While scripting languages tend to be less performant than lower-level languages in
  54. the long run, for prototyping, developing Minimum Viable Products (MVPs), and
  55. focusing on Time-To-Market (TTM), GDScript will provide a fast, friendly, and capable
  56. way of developing your games.
  57. Note that C# support is still relatively new, and as such, you may encounter some
  58. issues along the way. Our friendly and hard-working development community is always
  59. ready to tackle new problems as they arise, but since this is an open-source project,
  60. we recommend that you first do some due diligence yourself. Searching through
  61. discussions on `open issues <https://github.com/godotengine/godot/issues>`_ is a
  62. great way to start your troubleshooting.
  63. As for new languages, support is possible via third parties using the GDNative /
  64. NativeScript / PluginScript facilities. (See the question about plugins below.)
  65. Work is currently underway, for example, on unofficial bindings for Godot
  66. to `Python <https://github.com/touilleMan/godot-python>`_ and `Nim <https://github.com/pragmagic/godot-nim>`_.
  67. .. _doc_faq_what_is_gdscript:
  68. What is GDScript and why should I use it?
  69. -----------------------------------------
  70. GDScript is Godot's integrated scripting language. It was built from the ground
  71. up to maximize Godot's potential in the least amount of code, affording both novice
  72. and expert developers alike to capitalize on Godot's strengths as fast as possible.
  73. If you've ever written anything in a language like Python before then you'll feel
  74. right at home. For examples, history, and a complete overview of the power GDScript
  75. offers you, check out the :ref:`GDScript scripting guide <doc_gdscript>`.
  76. There are several reasons to use GDScript--especially when you are prototyping, in
  77. alpha/beta stages of your project, or are not creating the next AAA title--but the
  78. most salient reason is the overall **reduction of complexity**.
  79. The original intent of creating a tightly integrated, custom scripting language for
  80. Godot was two-fold: first, it reduces the amount of time necessary to get up and running
  81. with Godot, giving developers a rapid way of exposing themselves to the engine with a
  82. focus on productivity; second, it reduces the overall burden of maintenance, attenuates
  83. the dimensionality of issues, and allows the developers of the engine to focus on squashing
  84. bugs and improving features related to the engine core--rather than spending a lot of time
  85. trying to get a small set of incremental features working across a large set of languages.
  86. Since Godot is an open-source project, it was imperative from the start to prioritize a
  87. more integrated and seamless experience over attracting additional users by supporting
  88. more familiar programming languages--especially when supporting those more familiar
  89. languages would result in a worse experience. We understand if you would rather use
  90. another language in Godot (see the list of supported options above). That being said, if
  91. you haven't given GDScript a try, try it for **three days**. Just like Godot,
  92. once you see how powerful it is and rapid your development becomes, we think GDScript
  93. will grow on you.
  94. More information about getting comfortable with GDScript or dynamically typed
  95. languages can be found in the :ref:`doc_gdscript_more_efficiently` tutorial.
  96. What were the motivations behind creating GDScript?
  97. ---------------------------------------------------
  98. In the early days, the engine used the `Lua <https://www.lua.org>`__
  99. scripting language. Lua is fast, but creating bindings to an object
  100. oriented system (by using fallbacks) was complex and slow and took an
  101. enormous amount of code. After some experiments with
  102. `Python <https://www.python.org>`__, it also proved difficult to embed.
  103. The main reasons for creating a custom scripting language for Godot were:
  104. 1. Poor threading support in most script VMs, and Godot uses threads
  105. (Lua, Python, Squirrel, JavaScript, ActionScript, etc.).
  106. 2. Poor class-extending support in most script VMs, and adapting to
  107. the way Godot works is highly inefficient (Lua, Python, JavaScript).
  108. 3. Many existing languages have horrible interfaces for binding to C++, resulting in large amount of
  109. code, bugs, bottlenecks, and general inefficiency (Lua, Python,
  110. Squirrel, JavaScript, etc.) We wanted to focus on a great engine, not a great amount of integrations.
  111. 4. No native vector types (vector3, matrix4, etc.), resulting in highly
  112. reduced performance when using custom types (Lua, Python, Squirrel,
  113. JavaScript, ActionScript, etc.).
  114. 5. Garbage collector results in stalls or unnecessarily large memory
  115. usage (Lua, Python, JavaScript, ActionScript, etc.).
  116. 6. Difficulty to integrate with the code editor for providing code
  117. completion, live editing, etc. (all of them). This is well-supported
  118. by GDScript.
  119. GDScript was designed to curtail the issues above, and more.
  120. What type of 3D model formats does Godot support?
  121. -------------------------------------------------
  122. Godot supports Collada via the `OpenCollada <https://github.com/KhronosGroup/OpenCOLLADA/wiki/OpenCOLLADA-Tools>`_ exporter (Maya, 3DSMax).
  123. If you are using Blender, take a look at our own `Better Collada Exporter <https://godotengine.org/download>`_.
  124. As of Godot 3.0, glTF is supported.
  125. FBX is supported via the Open Asset Import library. However, FBX is proprietary
  126. so we recommend using other formats listed above, if suitable for your workflow.
  127. Will [insert closed SDK such as FMOD, GameWorks, etc.] be supported in Godot?
  128. -----------------------------------------------------------------------------
  129. The aim of Godot is to create a free and open-source MIT-licensed engine that
  130. is modular and extendable. There are no plans for the core engine development
  131. community to support any third-party, closed-source/proprietary SDKs, as integrating
  132. with these would go against Godot's ethos.
  133. That said, because Godot is open-source and modular, nothing prevents you or
  134. anyone else interested in adding those libraries as a module and shipping your
  135. game with them--as either open- or closed-source.
  136. To see how support for your SDK of choice could still be provided, look at the
  137. Plugins question below.
  138. If you know of a third-party SDK that is not supported by Godot but that offers
  139. free and open-source integration, consider starting the integration work yourself.
  140. Godot is not owned by one person; it belongs to the community, and it grows along
  141. with ambitious community contributors like you.
  142. How do I install the Godot editor on my system (for desktop integration)?
  143. -------------------------------------------------------------------------
  144. Since you don't need to actually install Godot on your system to run it,
  145. this means desktop integration is not performed automatically.
  146. There are two ways to overcome this. You can install Godot from
  147. `Steam <https://store.steampowered.com/app/404790/Godot_Engine/>`__ (all platforms),
  148. `Scoop <https://scoop.sh/>`__ (Windows), `Homebrew <https://brew.sh/>`__ (macOS)
  149. or `Flathub <https://flathub.org/apps/details/org.godotengine.Godot>`__ (Linux).
  150. This will automatically perform the required steps for desktop integration.
  151. Alternatively, you can manually perform the steps that an installer would do for you:
  152. Windows
  153. ^^^^^^^
  154. - Move the Godot executable to a stable location (i.e. outside of your Downloads folder),
  155. so you don't accidentally move it and break the shortcut in the future.
  156. - Right-click the Godot executable and choose **Create Shortcut**.
  157. - Move the created shortcut to ``%APPDATA%\Microsoft\Windows\Start Menu\Programs``.
  158. This is the user-wide location for shortcuts that will appear in the Start menu.
  159. You can also pin Godot in the task bar by right-clicking the executable and choosing
  160. **Pin to Task Bar**.
  161. macOS
  162. ^^^^^
  163. Drag the extracted Godot application to ``/Applications/Godot.app``, then drag it
  164. to the Dock if desired. Spotlight will be able to find Godot as long as it's in
  165. ``/Applications`` or ``~/Applications``.
  166. Linux
  167. ^^^^^
  168. - Move the Godot binary to a stable location (i.e. outside of your Downloads folder),
  169. so you don't accidentally move it and break the shortcut in the future.
  170. - Rename and move the Godot binary to a location present in your ``PATH`` environment variable.
  171. This is typically ``/usr/local/bin/godot`` or ``/usr/bin/godot``.
  172. Doing this requires administrator privileges,
  173. but this also allows you to
  174. :ref:`run the Godot editor from a terminal <doc_command_line_tutorial>` by entering ``godot``.
  175. - If you cannot move the Godot editor binary to a protected location, you can
  176. keep the binary somewhere in your home directory, and modify the ``Path=``
  177. line in the ``.desktop`` file linked below to contain the full *absolute* path
  178. to the Godot binary.
  179. - Save `this .desktop file <https://raw.githubusercontent.com/godotengine/godot/3.x/misc/dist/linux/org.godotengine.Godot.desktop>`__
  180. to ``$HOME/.local/share/applications/``. If you have administrator privileges,
  181. you can also save the ``.desktop`` file to ``/usr/local/share/applications``
  182. to make the shortcut available for all users.
  183. Is the Godot editor a portable application?
  184. -------------------------------------------
  185. In its default configuration, Godot is *semi-portable*. Its executable can run
  186. from any location (including non-writable locations) and never requires
  187. administrator privileges.
  188. However, configuration files will be written to the user-wide configuration or
  189. data directory. This is usually a good approach, but this means configuration files
  190. will not carry across machines if you copy the folder containing the Godot executable.
  191. See :ref:`doc_data_paths` for more information.
  192. If *true* portable operation is desired (e.g. for use on an USB stick),
  193. follow the steps in :ref:`doc_data_paths_self_contained_mode`.
  194. Why does Godot use Vulkan or OpenGL instead of Direct3D?
  195. --------------------------------------------------------
  196. Godot aims for cross-platform compatibility and open standards first and
  197. foremost. OpenGL and Vulkan are the technologies that are both open and
  198. available (nearly) on all platforms. Thanks to this design decision, a project
  199. developed with Godot on Windows will run out of the box on Linux, macOS, and
  200. more.
  201. Since Godot only has a few people working on its renderer, we would prefer
  202. having fewer rendering backends to maintain. On top of that, using a single API
  203. on all platforms allows for greater consistency with fewer platform-specific
  204. issues.
  205. In the long term, we may develop a Direct3D 12 renderer for Godot (mainly for
  206. the Xbox's purposes), but Vulkan and OpenGL will remain the default rendering
  207. backends on all platforms, including Windows.
  208. Why does Godot aim to keep its core feature set small?
  209. ------------------------------------------------------
  210. Godot intentionally does not include features that can be implemented by add-ons
  211. unless they are used very often. One example of this would be advanced
  212. artificial intelligence functionality.
  213. There are several reasons for this:
  214. - **Code maintenance and surface for bugs.** Every time we accept new code in
  215. the Godot repository, existing contributors often take the reponsibility of
  216. maintaining it. Some contributors don't always stick around after getting
  217. their code merged, which can make it difficult for us to maintain the code in
  218. question. This can lead to poorly maintained features with bugs that are never
  219. fixed. On top of that, the "API surface" that needs to be tested and checked
  220. for regressions keeps increasing over time.
  221. - **Ease of contribution.** By keeping the codebase small and tidy, it can remain
  222. fast and easy to compile from source. This makes it easier for new
  223. contributors to get started with Godot, without requiring them to purchase
  224. high-end hardware.
  225. - **Keeping the binary size small for the editor.** Not everyone has a fast Internet
  226. connection. Ensuring that everyone can download the Godot editor, extract it
  227. and run it in less than 5 minutes makes Godot more accessible to developers in
  228. all countries.
  229. - **Keeping the binary size small for export templates.** This directly impacts the
  230. size of projects exported with Godot. On mobile and web platforms, keeping
  231. file sizes low is primordial to ensure fast installation and loading on
  232. underpowered devices. Again, there are many countries where high-speed
  233. Internet is not readily available. To add to this, strict data usage caps are
  234. often in effect in those countries.
  235. For all the reasons above, we have to be selective of what we can accept as core
  236. functionality in Godot. This is why we are aiming to move some core
  237. functionality to officially supported add-ons in future versions of Godot. In
  238. terms of binary size, this also has the advantage of making you pay only for what
  239. you actually use in your project. (In the meantime, you can
  240. :ref:`compile custom export templates with unused features disabled <doc_optimizing_for_size>`
  241. to optimize the distribution size of your project.)
  242. How should assets be created to handle multiple resolutions and aspect ratios?
  243. ------------------------------------------------------------------------------
  244. This question pops up often and it's probably thanks to the misunderstanding
  245. created by Apple when they originally doubled the resolution of their devices.
  246. It made people think that having the same assets in different resolutions was a
  247. good idea, so many continued towards that path. That originally worked to a
  248. point and only for Apple devices, but then several Android and Apple devices
  249. with different resolutions and aspect ratios were created, with a very wide
  250. range of sizes and DPIs.
  251. The most common and proper way to achieve this is to, instead, use a single
  252. base resolution for the game and only handle different screen aspect ratios.
  253. This is mostly needed for 2D, as in 3D it's just a matter of Camera XFov or YFov.
  254. 1. Choose a single base resolution for your game. Even if there are
  255. devices that go up to 2K and devices that go down to 400p, regular
  256. hardware scaling in your device will take care of this at little or
  257. no performance cost. Most common choices are either near 1080p
  258. (1920x1080) or 720p (1280x720). Keep in mind the higher the
  259. resolution, the larger your assets, the more memory they will take
  260. and the longer the time it will take for loading.
  261. 2. Use the stretch options in Godot; 2D stretching while keeping aspect
  262. ratios works best. Check the :ref:`doc_multiple_resolutions` tutorial
  263. on how to achieve this.
  264. 3. Determine a minimum resolution and then decide if you want your game
  265. to stretch vertically or horizontally for different aspect ratios, or
  266. if there is one aspect ratio and you want black bars to appear
  267. instead. This is also explained in :ref:`doc_multiple_resolutions`.
  268. 4. For user interfaces, use the :ref:`anchoring <doc_size_and_anchors>`
  269. to determine where controls should stay and move. If UIs are more
  270. complex, consider learning about Containers.
  271. And that's it! Your game should work in multiple resolutions.
  272. If there is a desire to make your game also work on ancient
  273. devices with tiny screens (fewer than 300 pixels in width), you can use
  274. the export option to shrink images, and set that build to be used for
  275. certain screen sizes in the App Store or Google Play.
  276. How can I extend Godot?
  277. -----------------------
  278. For extending Godot, like creating Godot Editor plugins or adding support
  279. for additional languages, take a look at :ref:`EditorPlugins <doc_making_plugins>`
  280. and tool scripts.
  281. Also, see the official blog posts on these topics:
  282. * `A look at the GDNative architecture <https://godotengine.org/article/look-gdnative-architecture>`_
  283. * `GDNative is here! <https://godotengine.org/article/dlscript-here>`_
  284. You can also take a look at the GDScript implementation, the Godot modules,
  285. as well as the `unofficial Python support <https://github.com/touilleMan/godot-python>`_ for Godot.
  286. This would be a good starting point to see how another third-party library
  287. integrates with Godot.
  288. When is the next release of Godot out?
  289. --------------------------------------
  290. When it's ready! See :ref:`doc_release_policy_when_is_next_release_out` for more
  291. information.
  292. I would like to contribute! How can I get started?
  293. --------------------------------------------------
  294. Awesome! As an open-source project, Godot thrives off of the innovation and
  295. ambition of developers like you.
  296. The first place to get started is in the `issues <https://github.com/godotengine/godot/issues>`_.
  297. 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>`_
  298. guide to learn how to fork, modify, and submit a Pull Request (PR) with your changes.
  299. I have a great idea for Godot. How can I share it?
  300. --------------------------------------------------
  301. It might be tempting to want to bring ideas to Godot, like ones that
  302. result in massive core changes, some sort of mimicry of what another
  303. game engine does, or alternative workflows that you'd like built into
  304. the editor. These are great, and we are thankful to have such motivated
  305. people want to contribute, but Godot's focus is and always will be the
  306. core functionality as outlined in the `Roadmap <https://github.com/godotengine/godot-roadmap/blob/master/ROADMAP.md>`_,
  307. `squashing bugs and addressing issues <https://github.com/godotengine/godot/issues>`_,
  308. and conversations between Godot community members.
  309. Most developers in the Godot community will be more interested to learn
  310. about things like:
  311. - Your experience using the software and the problems you have (we
  312. care about this much more than ideas on how to improve it).
  313. - The features you would like to see implemented because you need them
  314. for your project.
  315. - The concepts that were difficult to understand while learning the software.
  316. - The parts of your workflow you would like to see optimized.
  317. - Parts where you missed clear tutorials or where the documentation wasn't clear.
  318. Please don't feel like your ideas for Godot are unwelcome. Instead,
  319. try to reformulate them as a problem first, so developers and the community
  320. have a functional foundation to ground your ideas on.
  321. A good way to approach sharing your ideas and problems with the community
  322. is as a set of user stories. Explain what you are trying to do, what behavior
  323. you expect to happen, and then what behavior actually happened. Framing problems
  324. and ideas this way will help the whole community stay focused on improving
  325. developer experiences as a whole.
  326. Bonus points for bringing screenshots, concrete numbers, test cases, or example
  327. projects (if applicable).
  328. .. _doc_faq_non_game_applications:
  329. Is it possible to use Godot to create non-game applications?
  330. ------------------------------------------------------------
  331. Yes! Godot features an extensive built-in UI system, and its small distribution
  332. size can make it a suitable alternative to frameworks like Electron or Qt.
  333. When creating a non-game application, make sure to enable
  334. :ref:`low-processor mode <class_ProjectSettings_property_application/run/low_processor_mode>`
  335. in the Project Settings to decrease CPU and GPU usage.
  336. Check out `Material Maker <https://github.com/RodZill4/material-maker>`__ and
  337. `Pixelorama <https://github.com/Orama-Interactive/Pixelorama>`__ for examples of
  338. open source applications made with Godot.
  339. .. _doc_faq_use_godot_as_library:
  340. Is it possible to use Godot as a library?
  341. -----------------------------------------
  342. Godot is meant to be used with its editor. We recommend you give it a try, as it
  343. will most likely save you time in the long term. There are no plans to make
  344. Godot usable as a library, as it would make the rest of the engine more
  345. convoluted and difficult to use for casual users.
  346. If you want to use a rendering library, look into using an established rendering
  347. engine instead. Keep in mind rendering engines usually have smaller communities
  348. compared to Godot. This will make it more difficult to find answers to your
  349. questions.
  350. What user interface toolkit does Godot use?
  351. -------------------------------------------
  352. Godot does not use a standard :abbr:`GUI (Graphical User Interface)` toolkit
  353. like GTK, Qt or wxWidgets. Instead, Godot uses its own user interface toolkit,
  354. rendered using OpenGL ES or Vulkan. This toolkit is exposed in the form of
  355. Control nodes, which are used to render the editor (which is written in C++).
  356. These Control nodes can also be used in projects from any scripting language
  357. supported by Godot.
  358. This custom toolkit makes it possible to benefit from hardware acceleration and
  359. have a consistent appearance across all platforms. On top of that, it doesn't
  360. have to deal with the LGPL licensing caveats that come with GTK or Qt. Lastly,
  361. this means Godot is "eating its own dog food" since the editor itself is one of
  362. the most complex users of Godot's UI system.
  363. This custom UI toolkit :ref:`can't be used as a library <doc_faq_use_godot_as_library>`,
  364. but you can still
  365. :ref:`use Godot to create non-game applications by using the editor <doc_faq_non_game_applications>`.
  366. .. _doc_faq_why_not_stl:
  367. Why does Godot not use STL (Standard Template Library)?
  368. -------------------------------------------------------
  369. Like many other libraries (Qt as an example), Godot does not make use of
  370. STL. We believe STL is a great general purpose library, but we had special
  371. requirements for Godot.
  372. * STL templates create very large symbols, which results in huge debug binaries. We use few templates with very short names instead.
  373. * Most of our containers cater to special needs, like Vector, which uses copy on write and we use to pass data around, or the RID system, which requires O(1) access time for performance. Likewise, our hash map implementations are designed to integrate seamlessly with internal engine types.
  374. * Our containers have memory tracking built-in, which helps better track memory usage.
  375. * For large arrays, we use pooled memory, which can be mapped to either a preallocated buffer or virtual memory.
  376. * We use our custom String type, as the one provided by STL is too basic and lacks proper internationalization support.
  377. Why does Godot not use exceptions?
  378. ----------------------------------
  379. We believe games should not crash, no matter what. If an unexpected
  380. situation happens, Godot will print an error (which can be traced even to
  381. script), but then it will try to recover as gracefully as possible and keep
  382. going.
  383. Additionally, exceptions significantly increase binary size for the
  384. executable.
  385. Why does Godot not enforce RTTI?
  386. --------------------------------
  387. Godot provides its own type-casting system, which can optionally use RTTI
  388. internally. Disabling RTTI in Godot means considerably smaller binary sizes can
  389. be achieved, at a little performance cost.
  390. Why does Godot not force users to implement DoD (Data oriented Design)?
  391. -----------------------------------------------------------------------
  392. While Godot internally for a lot of the heavy performance tasks attempts
  393. to use cache coherency as well as possible, we believe most users don't
  394. really need to be forced to use DoD practices.
  395. DoD is mostly a cache coherency optimization that can only gain you
  396. significant performance improvements when dealing with dozens of
  397. thousands of objects (which are processed every frame with little
  398. modification). As in, if you are moving a few hundred sprites or enemies
  399. per frame, DoD won't help you, and you should consider a different approach
  400. to optimization.
  401. The vast majority of games do not need this and Godot provides handy helpers
  402. to do the job for most cases when you do.
  403. If a game that really needs to process such large amount of objects is
  404. needed, our recommendation is to use C++ and GDNative for the high
  405. performance parts and GDScript (or C#) for the rest of the game.
  406. How can I support Godot development or contribute?
  407. --------------------------------------------------
  408. See :ref:`doc_ways_to_contribute`.
  409. Who is working on Godot? How can I contact you?
  410. -----------------------------------------------
  411. See the corresponding page on the `Godot website <https://godotengine.org/contact>`_.