class_engine.rst 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. :github_url: hide
  2. .. Generated automatically by doc/tools/makerst.py in Godot's source tree.
  3. .. DO NOT EDIT THIS FILE, but the Engine.xml source instead.
  4. .. The source is found in doc/classes or modules/<name>/doc_classes.
  5. .. _class_Engine:
  6. Engine
  7. ======
  8. **Inherits:** :ref:`Object<class_Object>`
  9. Access to engine properties.
  10. Description
  11. -----------
  12. The ``Engine`` singleton allows you to query and modify the project's run-time parameters, such as frames per second, time scale, and others.
  13. Properties
  14. ----------
  15. +---------------------------+---------------------------------------------------------------------------+----------+
  16. | :ref:`bool<class_bool>` | :ref:`editor_hint<class_Engine_property_editor_hint>` | ``true`` |
  17. +---------------------------+---------------------------------------------------------------------------+----------+
  18. | :ref:`int<class_int>` | :ref:`iterations_per_second<class_Engine_property_iterations_per_second>` | ``60`` |
  19. +---------------------------+---------------------------------------------------------------------------+----------+
  20. | :ref:`float<class_float>` | :ref:`physics_jitter_fix<class_Engine_property_physics_jitter_fix>` | ``0.5`` |
  21. +---------------------------+---------------------------------------------------------------------------+----------+
  22. | :ref:`int<class_int>` | :ref:`target_fps<class_Engine_property_target_fps>` | ``0`` |
  23. +---------------------------+---------------------------------------------------------------------------+----------+
  24. | :ref:`float<class_float>` | :ref:`time_scale<class_Engine_property_time_scale>` | ``1.0`` |
  25. +---------------------------+---------------------------------------------------------------------------+----------+
  26. Methods
  27. -------
  28. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  29. | :ref:`Dictionary<class_Dictionary>` | :ref:`get_author_info<class_Engine_method_get_author_info>` **(** **)** |const| |
  30. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  31. | :ref:`Array<class_Array>` | :ref:`get_copyright_info<class_Engine_method_get_copyright_info>` **(** **)** |const| |
  32. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  33. | :ref:`Dictionary<class_Dictionary>` | :ref:`get_donor_info<class_Engine_method_get_donor_info>` **(** **)** |const| |
  34. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  35. | :ref:`int<class_int>` | :ref:`get_frames_drawn<class_Engine_method_get_frames_drawn>` **(** **)** |
  36. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  37. | :ref:`float<class_float>` | :ref:`get_frames_per_second<class_Engine_method_get_frames_per_second>` **(** **)** |const| |
  38. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  39. | :ref:`int<class_int>` | :ref:`get_idle_frames<class_Engine_method_get_idle_frames>` **(** **)** |const| |
  40. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  41. | :ref:`Dictionary<class_Dictionary>` | :ref:`get_license_info<class_Engine_method_get_license_info>` **(** **)** |const| |
  42. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  43. | :ref:`String<class_String>` | :ref:`get_license_text<class_Engine_method_get_license_text>` **(** **)** |const| |
  44. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  45. | :ref:`MainLoop<class_MainLoop>` | :ref:`get_main_loop<class_Engine_method_get_main_loop>` **(** **)** |const| |
  46. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  47. | :ref:`int<class_int>` | :ref:`get_physics_frames<class_Engine_method_get_physics_frames>` **(** **)** |const| |
  48. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  49. | :ref:`float<class_float>` | :ref:`get_physics_interpolation_fraction<class_Engine_method_get_physics_interpolation_fraction>` **(** **)** |const| |
  50. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  51. | :ref:`Object<class_Object>` | :ref:`get_singleton<class_Engine_method_get_singleton>` **(** :ref:`String<class_String>` name **)** |const| |
  52. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  53. | :ref:`Dictionary<class_Dictionary>` | :ref:`get_version_info<class_Engine_method_get_version_info>` **(** **)** |const| |
  54. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  55. | :ref:`bool<class_bool>` | :ref:`has_singleton<class_Engine_method_has_singleton>` **(** :ref:`String<class_String>` name **)** |const| |
  56. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  57. | :ref:`bool<class_bool>` | :ref:`is_in_physics_frame<class_Engine_method_is_in_physics_frame>` **(** **)** |const| |
  58. +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
  59. Property Descriptions
  60. ---------------------
  61. .. _class_Engine_property_editor_hint:
  62. - :ref:`bool<class_bool>` **editor_hint**
  63. +-----------+------------------------+
  64. | *Default* | ``true`` |
  65. +-----------+------------------------+
  66. | *Setter* | set_editor_hint(value) |
  67. +-----------+------------------------+
  68. | *Getter* | is_editor_hint() |
  69. +-----------+------------------------+
  70. If ``true``, it is running inside the editor. Useful for tool scripts.
  71. ----
  72. .. _class_Engine_property_iterations_per_second:
  73. - :ref:`int<class_int>` **iterations_per_second**
  74. +-----------+----------------------------------+
  75. | *Default* | ``60`` |
  76. +-----------+----------------------------------+
  77. | *Setter* | set_iterations_per_second(value) |
  78. +-----------+----------------------------------+
  79. | *Getter* | get_iterations_per_second() |
  80. +-----------+----------------------------------+
  81. The number of fixed iterations per second. This controls how often physics simulation and :ref:`Node._physics_process<class_Node_method__physics_process>` methods are run. This value should generally always be set to ``60`` or above, as Godot doesn't interpolate the physics step. As a result, values lower than ``60`` will look stuttery. This value can be increased to make input more reactive or work around tunneling issues, but keep in mind doing so will increase CPU usage.
  82. ----
  83. .. _class_Engine_property_physics_jitter_fix:
  84. - :ref:`float<class_float>` **physics_jitter_fix**
  85. +-----------+-------------------------------+
  86. | *Default* | ``0.5`` |
  87. +-----------+-------------------------------+
  88. | *Setter* | set_physics_jitter_fix(value) |
  89. +-----------+-------------------------------+
  90. | *Getter* | get_physics_jitter_fix() |
  91. +-----------+-------------------------------+
  92. Controls how much physics ticks are synchronized with real time. For 0 or less, the ticks are synchronized. Such values are recommended for network games, where clock synchronization matters. Higher values cause higher deviation of in-game clock and real clock, but allows to smooth out framerate jitters. The default value of 0.5 should be fine for most; values above 2 could cause the game to react to dropped frames with a noticeable delay and are not recommended.
  93. ----
  94. .. _class_Engine_property_target_fps:
  95. - :ref:`int<class_int>` **target_fps**
  96. +-----------+-----------------------+
  97. | *Default* | ``0`` |
  98. +-----------+-----------------------+
  99. | *Setter* | set_target_fps(value) |
  100. +-----------+-----------------------+
  101. | *Getter* | get_target_fps() |
  102. +-----------+-----------------------+
  103. The desired frames per second. If the hardware cannot keep up, this setting may not be respected. A value of 0 means no limit.
  104. ----
  105. .. _class_Engine_property_time_scale:
  106. - :ref:`float<class_float>` **time_scale**
  107. +-----------+-----------------------+
  108. | *Default* | ``1.0`` |
  109. +-----------+-----------------------+
  110. | *Setter* | set_time_scale(value) |
  111. +-----------+-----------------------+
  112. | *Getter* | get_time_scale() |
  113. +-----------+-----------------------+
  114. Controls how fast or slow the in-game clock ticks versus the real life one. It defaults to 1.0. A value of 2.0 means the game moves twice as fast as real life, whilst a value of 0.5 means the game moves at half the regular speed.
  115. Method Descriptions
  116. -------------------
  117. .. _class_Engine_method_get_author_info:
  118. - :ref:`Dictionary<class_Dictionary>` **get_author_info** **(** **)** |const|
  119. Returns engine author information in a Dictionary.
  120. ``lead_developers`` - Array of Strings, lead developer names
  121. ``founders`` - Array of Strings, founder names
  122. ``project_managers`` - Array of Strings, project manager names
  123. ``developers`` - Array of Strings, developer names
  124. ----
  125. .. _class_Engine_method_get_copyright_info:
  126. - :ref:`Array<class_Array>` **get_copyright_info** **(** **)** |const|
  127. Returns an Array of copyright information Dictionaries.
  128. ``name`` - String, component name
  129. ``parts`` - Array of Dictionaries {``files``, ``copyright``, ``license``} describing subsections of the component
  130. ----
  131. .. _class_Engine_method_get_donor_info:
  132. - :ref:`Dictionary<class_Dictionary>` **get_donor_info** **(** **)** |const|
  133. Returns a Dictionary of Arrays of donor names.
  134. {``platinum_sponsors``, ``gold_sponsors``, ``silver_sponsors``, ``bronze_sponsors``, ``mini_sponsors``, ``gold_donors``, ``silver_donors``, ``bronze_donors``}
  135. ----
  136. .. _class_Engine_method_get_frames_drawn:
  137. - :ref:`int<class_int>` **get_frames_drawn** **(** **)**
  138. Returns the total number of frames drawn. If the render loop is disabled with ``--disable-render-loop`` via command line, this returns ``0``. See also :ref:`get_idle_frames<class_Engine_method_get_idle_frames>`.
  139. ----
  140. .. _class_Engine_method_get_frames_per_second:
  141. - :ref:`float<class_float>` **get_frames_per_second** **(** **)** |const|
  142. Returns the frames per second of the running game.
  143. ----
  144. .. _class_Engine_method_get_idle_frames:
  145. - :ref:`int<class_int>` **get_idle_frames** **(** **)** |const|
  146. Returns the total number of frames passed since engine initialization which is advanced on each **idle frame**, regardless of whether the render loop is enabled. See also :ref:`get_frames_drawn<class_Engine_method_get_frames_drawn>`.
  147. ----
  148. .. _class_Engine_method_get_license_info:
  149. - :ref:`Dictionary<class_Dictionary>` **get_license_info** **(** **)** |const|
  150. Returns Dictionary of licenses used by Godot and included third party components.
  151. ----
  152. .. _class_Engine_method_get_license_text:
  153. - :ref:`String<class_String>` **get_license_text** **(** **)** |const|
  154. Returns Godot license text.
  155. ----
  156. .. _class_Engine_method_get_main_loop:
  157. - :ref:`MainLoop<class_MainLoop>` **get_main_loop** **(** **)** |const|
  158. Returns the main loop object (see :ref:`MainLoop<class_MainLoop>` and :ref:`SceneTree<class_SceneTree>`).
  159. ----
  160. .. _class_Engine_method_get_physics_frames:
  161. - :ref:`int<class_int>` **get_physics_frames** **(** **)** |const|
  162. Returns the total number of frames passed since engine initialization which is advanced on each **physics frame**.
  163. ----
  164. .. _class_Engine_method_get_physics_interpolation_fraction:
  165. - :ref:`float<class_float>` **get_physics_interpolation_fraction** **(** **)** |const|
  166. Returns the fraction through the current physics tick we are at the time of rendering the frame. This can be used to implement fixed timestep interpolation.
  167. ----
  168. .. _class_Engine_method_get_singleton:
  169. - :ref:`Object<class_Object>` **get_singleton** **(** :ref:`String<class_String>` name **)** |const|
  170. Returns a global singleton with given ``name``. Often used for plugins, e.g. ``GodotPayment`` on Android.
  171. ----
  172. .. _class_Engine_method_get_version_info:
  173. - :ref:`Dictionary<class_Dictionary>` **get_version_info** **(** **)** |const|
  174. Returns the current engine version information in a Dictionary.
  175. ``major`` - Holds the major version number as an int
  176. ``minor`` - Holds the minor version number as an int
  177. ``patch`` - Holds the patch version number as an int
  178. ``hex`` - Holds the full version number encoded as a hexadecimal int with one byte (2 places) per number (see example below)
  179. ``status`` - Holds the status (e.g. "beta", "rc1", "rc2", ... "stable") as a String
  180. ``build`` - Holds the build name (e.g. "custom_build") as a String
  181. ``hash`` - Holds the full Git commit hash as a String
  182. ``year`` - Holds the year the version was released in as an int
  183. ``string`` - ``major`` + ``minor`` + ``patch`` + ``status`` + ``build`` in a single String
  184. The ``hex`` value is encoded as follows, from left to right: one byte for the major, one byte for the minor, one byte for the patch version. For example, "3.1.12" would be ``0x03010C``. **Note:** It's still an int internally, and printing it will give you its decimal representation, which is not particularly meaningful. Use hexadecimal literals for easy version comparisons from code:
  185. ::
  186. if Engine.get_version_info().hex >= 0x030200:
  187. # Do things specific to version 3.2 or later
  188. else:
  189. # Do things specific to versions before 3.2
  190. ----
  191. .. _class_Engine_method_has_singleton:
  192. - :ref:`bool<class_bool>` **has_singleton** **(** :ref:`String<class_String>` name **)** |const|
  193. Returns ``true`` if a singleton with given ``name`` exists in global scope.
  194. ----
  195. .. _class_Engine_method_is_in_physics_frame:
  196. - :ref:`bool<class_bool>` **is_in_physics_frame** **(** **)** |const|
  197. Returns ``true`` if the game is inside the fixed process and physics phase of the game loop.
  198. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  199. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  200. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`