mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2025-12-31 09:49:22 +03:00
Sync Sphinx and Weblate templates with current docs (4.5)
This commit is contained in:
2
docs
2
docs
Submodule docs updated: 897f6ab7d9...2df068f087
@@ -1386,286 +1386,294 @@ msgstr ""
|
||||
msgid "Support for advertisements using third-party modules."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:656
|
||||
#: ../../docs/about/list_of_features.rst:658
|
||||
msgid "XR support (AR and VR)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:658
|
||||
#: ../../docs/about/list_of_features.rst:660
|
||||
msgid "Out of the box :ref:`support for OpenXR <doc_setting_up_xr>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:660
|
||||
#: ../../docs/about/list_of_features.rst:662
|
||||
msgid "Including support for popular desktop headsets like the Valve Index, WMR headsets, and Quest over Link."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:662
|
||||
#: ../../docs/about/list_of_features.rst:664
|
||||
msgid "Support for :ref:`Android-based headsets <doc_deploying_to_android>` using OpenXR through a plugin."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:664
|
||||
#: ../../docs/about/list_of_features.rst:666
|
||||
msgid "Including support for popular stand alone headsets like the Meta Quest 1/2/3 and Pro, Pico 4, Magic Leap 2, and Lynx R1."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:666
|
||||
msgid "Other devices supported through an XR plugin structure."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:667
|
||||
msgid "Various advanced toolkits are available that implement common features required by XR applications."
|
||||
#: ../../docs/about/list_of_features.rst:668
|
||||
msgid "Out of the box limited support for visionOS Apple headsets."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:670
|
||||
msgid "GUI system"
|
||||
msgid "Currently only exporting an application for use on a flat plane within the headset is supported. Immersive experiences are not supported."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:672
|
||||
msgid "Godot's GUI is built using the same Control nodes used to make games in Godot. The editor UI can easily be extended in many ways using add-ons."
|
||||
#: ../../docs/about/list_of_features.rst:673
|
||||
msgid "Other devices supported through an XR plugin structure."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:675
|
||||
msgid "**Nodes:**"
|
||||
#: ../../docs/about/list_of_features.rst:674
|
||||
msgid "Various advanced toolkits are available that implement common features required by XR applications."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:677
|
||||
msgid "Buttons."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:678
|
||||
msgid "Checkboxes, check buttons, radio buttons."
|
||||
msgid "GUI system"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:679
|
||||
msgid "Text entry using :ref:`class_LineEdit` (single line) and :ref:`class_TextEdit` (multiple lines). TextEdit also supports code editing features such as displaying line numbers and syntax highlighting."
|
||||
msgid "Godot's GUI is built using the same Control nodes used to make games in Godot. The editor UI can easily be extended in many ways using add-ons."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:682
|
||||
msgid "Dropdown menus using :ref:`class_PopupMenu` and :ref:`class_OptionButton`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:683
|
||||
msgid "Scrollbars."
|
||||
msgid "**Nodes:**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:684
|
||||
msgid "Labels."
|
||||
msgid "Buttons."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:685
|
||||
msgid "RichTextLabel for :ref:`text formatted using BBCode <doc_bbcode_in_richtextlabel>`, with support for animated custom effects."
|
||||
msgid "Checkboxes, check buttons, radio buttons."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:687
|
||||
msgid "Trees (can also be used to represent tables)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:688
|
||||
msgid "Color picker with RGB and HSV modes."
|
||||
#: ../../docs/about/list_of_features.rst:686
|
||||
msgid "Text entry using :ref:`class_LineEdit` (single line) and :ref:`class_TextEdit` (multiple lines). TextEdit also supports code editing features such as displaying line numbers and syntax highlighting."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:689
|
||||
msgid "Controls can be rotated and scaled."
|
||||
msgid "Dropdown menus using :ref:`class_PopupMenu` and :ref:`class_OptionButton`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:690
|
||||
msgid "Scrollbars."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:691
|
||||
msgid "**Sizing:**"
|
||||
msgid "Labels."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:693
|
||||
msgid "Anchors to keep GUI elements in a specific corner, edge or centered."
|
||||
#: ../../docs/about/list_of_features.rst:692
|
||||
msgid "RichTextLabel for :ref:`text formatted using BBCode <doc_bbcode_in_richtextlabel>`, with support for animated custom effects."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:694
|
||||
msgid "Containers to place GUI elements automatically following certain rules."
|
||||
msgid "Trees (can also be used to represent tables)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:695
|
||||
msgid "Color picker with RGB and HSV modes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:696
|
||||
msgid ":ref:`Stack <class_BoxContainer>` layouts."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:697
|
||||
msgid ":ref:`Grid <class_GridContainer>` layouts."
|
||||
msgid "Controls can be rotated and scaled."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:698
|
||||
msgid ":ref:`Flow <class_FlowContainer>` layouts (similar to autowrapping text)."
|
||||
msgid "**Sizing:**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:699
|
||||
msgid ":ref:`Margin <class_MarginContainer>`, :ref:`centered <class_CenterContainer>` and :ref:`aspect ratio <class_AspectRatioContainer>` layouts."
|
||||
#: ../../docs/about/list_of_features.rst:700
|
||||
msgid "Anchors to keep GUI elements in a specific corner, edge or centered."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:701
|
||||
msgid ":ref:`Draggable splitter <class_SplitContainer>` layouts."
|
||||
msgid "Containers to place GUI elements automatically following certain rules."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:703
|
||||
msgid "Scale to :ref:`multiple resolutions <doc_multiple_resolutions>` using the ``canvas_items`` or ``viewport`` stretch modes."
|
||||
msgid ":ref:`Stack <class_BoxContainer>` layouts."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:704
|
||||
msgid ":ref:`Grid <class_GridContainer>` layouts."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:705
|
||||
msgid ":ref:`Flow <class_FlowContainer>` layouts (similar to autowrapping text)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:706
|
||||
msgid ":ref:`Margin <class_MarginContainer>`, :ref:`centered <class_CenterContainer>` and :ref:`aspect ratio <class_AspectRatioContainer>` layouts."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:708
|
||||
msgid ":ref:`Draggable splitter <class_SplitContainer>` layouts."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:710
|
||||
msgid "Scale to :ref:`multiple resolutions <doc_multiple_resolutions>` using the ``canvas_items`` or ``viewport`` stretch modes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:712
|
||||
msgid "Support any aspect ratio using anchors and the ``expand`` stretch aspect."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:707
|
||||
#: ../../docs/about/list_of_features.rst:714
|
||||
msgid "**Theming:**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:709
|
||||
#: ../../docs/about/list_of_features.rst:716
|
||||
msgid "Built-in theme editor."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:711
|
||||
#: ../../docs/about/list_of_features.rst:718
|
||||
msgid "Generate a theme based on the current editor theme settings."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:713
|
||||
#: ../../docs/about/list_of_features.rst:720
|
||||
msgid "Procedural vector-based theming using :ref:`class_StyleBoxFlat`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:715
|
||||
#: ../../docs/about/list_of_features.rst:722
|
||||
msgid "Supports rounded/beveled corners, drop shadows, per-border widths and antialiasing."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:717
|
||||
#: ../../docs/about/list_of_features.rst:724
|
||||
msgid "Texture-based theming using :ref:`class_StyleBoxTexture`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:719
|
||||
#: ../../docs/about/list_of_features.rst:726
|
||||
msgid "Godot's small distribution size can make it a suitable alternative to frameworks like Electron or Qt."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:723
|
||||
#: ../../docs/about/list_of_features.rst:730
|
||||
msgid "Animation"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:725
|
||||
#: ../../docs/about/list_of_features.rst:732
|
||||
msgid "Direct kinematics and inverse kinematics."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:726
|
||||
#: ../../docs/about/list_of_features.rst:733
|
||||
msgid "Support for animating any property with customizable interpolation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:727
|
||||
#: ../../docs/about/list_of_features.rst:734
|
||||
msgid "Support for calling methods in animation tracks."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:728
|
||||
#: ../../docs/about/list_of_features.rst:735
|
||||
msgid "Support for playing sounds in animation tracks."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:729
|
||||
#: ../../docs/about/list_of_features.rst:736
|
||||
msgid "Support for Bézier curves in animation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:732
|
||||
#: ../../docs/about/list_of_features.rst:739
|
||||
msgid "File formats"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:734
|
||||
#: ../../docs/about/list_of_features.rst:741
|
||||
msgid "Scenes and resources can be saved in :ref:`text-based <doc_tscn_file_format>` or binary formats."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:736
|
||||
#: ../../docs/about/list_of_features.rst:743
|
||||
msgid "Text-based formats are human-readable and more friendly to version control."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:737
|
||||
#: ../../docs/about/list_of_features.rst:744
|
||||
msgid "Binary formats are faster to save/load for large scenes/resources."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:739
|
||||
#: ../../docs/about/list_of_features.rst:746
|
||||
msgid "Read and write text or binary files using :ref:`class_FileAccess`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:741
|
||||
#: ../../docs/about/list_of_features.rst:748
|
||||
msgid "Can optionally be compressed or encrypted."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:743
|
||||
#: ../../docs/about/list_of_features.rst:750
|
||||
msgid "Read and write :ref:`class_JSON` files."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:744
|
||||
#: ../../docs/about/list_of_features.rst:751
|
||||
msgid "Read and write INI-style configuration files using :ref:`class_ConfigFile`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:746
|
||||
#: ../../docs/about/list_of_features.rst:753
|
||||
msgid "Can (de)serialize any Godot datatype, including Vector2/3, Color, ..."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:748
|
||||
#: ../../docs/about/list_of_features.rst:755
|
||||
msgid "Read XML files using :ref:`class_XMLParser`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:749
|
||||
#: ../../docs/about/list_of_features.rst:756
|
||||
msgid ":ref:`Load and save images, audio/video, fonts and ZIP archives <doc_runtime_loading_and_saving>` in an exported project without having to go through Godot's import system."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:751
|
||||
#: ../../docs/about/list_of_features.rst:758
|
||||
msgid "Pack game data into a PCK file (custom format optimized for fast seeking), into a ZIP archive, or directly into the executable for single-file distribution."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:753
|
||||
#: ../../docs/about/list_of_features.rst:760
|
||||
msgid ":ref:`Export additional PCK files<doc_exporting_pcks>` that can be read by the engine to support mods and DLCs."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:757
|
||||
#: ../../docs/about/list_of_features.rst:764
|
||||
msgid "Miscellaneous"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:759
|
||||
#: ../../docs/about/list_of_features.rst:766
|
||||
msgid ":ref:`Video playback <doc_playing_videos>` with built-in support for Ogg Theora."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:760
|
||||
#: ../../docs/about/list_of_features.rst:767
|
||||
msgid ":ref:`Movie Maker mode <doc_creating_movies>` to record videos from a running project with synchronized audio and perfect frame pacing."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:762
|
||||
#: ../../docs/about/list_of_features.rst:769
|
||||
msgid ":ref:`Low-level access to servers <doc_using_servers>` which allows bypassing the scene tree's overhead when needed."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:764
|
||||
#: ../../docs/about/list_of_features.rst:771
|
||||
msgid ":ref:`Command line interface <doc_command_line_tutorial>` for automation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:766
|
||||
#: ../../docs/about/list_of_features.rst:773
|
||||
msgid "Export and deploy projects using continuous integration platforms."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:767
|
||||
#: ../../docs/about/list_of_features.rst:774
|
||||
msgid "`Shell completion scripts <https://github.com/godotengine/godot/tree/master/misc/dist/shell>`__ are available for Bash, zsh and fish."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:769
|
||||
#: ../../docs/about/list_of_features.rst:776
|
||||
msgid "Print colored text to standard output on all platforms using :ref:`print_rich <class_@GlobalScope_method_print_rich>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:772
|
||||
#: ../../docs/about/list_of_features.rst:779
|
||||
msgid "Support for :ref:`C++ modules <doc_custom_modules_in_cpp>` statically linked into the engine binary."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:774
|
||||
#: ../../docs/about/list_of_features.rst:781
|
||||
msgid "Engine and editor written in C++17."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:776
|
||||
#: ../../docs/about/list_of_features.rst:783
|
||||
msgid "Can be :ref:`compiled <doc_introduction_to_the_buildsystem>` using GCC, Clang and MSVC. MinGW is also supported."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:778
|
||||
#: ../../docs/about/list_of_features.rst:785
|
||||
msgid "Friendly towards packagers. In most cases, system libraries can be used instead of the ones provided by Godot. The build system doesn't download anything. Builds can be fully reproducible."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:782
|
||||
#: ../../docs/about/list_of_features.rst:789
|
||||
msgid "Licensed under the permissive MIT license."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:784
|
||||
#: ../../docs/about/list_of_features.rst:791
|
||||
msgid "Open development process with :ref:`contributions welcome <doc_ways_to_contribute>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/list_of_features.rst:788
|
||||
#: ../../docs/about/list_of_features.rst:795
|
||||
msgid "The `Godot proposals repository <https://github.com/godotengine/godot-proposals>`__ lists features that have been requested by the community and may be implemented in future Godot releases."
|
||||
msgstr ""
|
||||
|
||||
@@ -98,7 +98,7 @@ msgstr ""
|
||||
#: ../../docs/about/system_requirements.rst:45
|
||||
#: ../../docs/about/system_requirements.rst:228
|
||||
#: ../../docs/about/system_requirements.rst:233
|
||||
msgid "*Example: Intel HD Graphics 5500 (Broadwell), AMD Radeon R5 Graphics (Kaveri)*"
|
||||
msgid "*Example: Intel HD Graphics 510 (Skylake), AMD Radeon R5 Graphics (Kaveri)*"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/about/system_requirements.rst:43
|
||||
|
||||
@@ -253,7 +253,7 @@ msgid "You can apply ``ruff`` manually to one or more files with the following c
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/code_style_guidelines.rst:298
|
||||
msgid "``-l 120`` means that the allowed number of characters per line is 120. This number was agreed upon by the developers."
|
||||
msgid "``--line-length 120`` means that the allowed number of characters per line is 120. This number was agreed upon by the developers."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/code_style_guidelines.rst:300
|
||||
|
||||
@@ -206,7 +206,7 @@ msgid "Building export templates"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_linuxbsd.rst:332
|
||||
msgid "Linux binaries usually won't run on distributions that are older than the distribution they were built on. If you wish to distribute binaries that work on most distributions, you should build them on an old distribution such as Ubuntu 16.04. You can use a virtual machine or a container to set up a suitable build environment."
|
||||
msgid "Linux binaries usually won't run on distributions that are older than the distribution they were built on. If you wish to distribute binaries that work on most distributions, you should build them on an old distribution such as Ubuntu 20.04. You can use a virtual machine or a container to set up a suitable build environment."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_linuxbsd.rst:340
|
||||
@@ -250,7 +250,7 @@ msgid "To cross-compile Godot for RISC-V devices, we need to setup the following
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_linuxbsd.rst:396
|
||||
msgid "`riscv-gnu-toolchain <https://github.com/riscv-collab/riscv-gnu-toolchain/releases>`__. While we are not going to use this directly, it provides us with a sysroot, as well as header and libraries files that we will need. There are many versions to choose from, however, the older the toolchain, the more compatible our final binaries will be. If in doubt, `use this version <https://github.com/riscv-collab/riscv-gnu-toolchain/releases/tag/2021.12.22>`__, and download ``riscv64-glibc-ubuntu-18.04-nightly-2021.12.22-nightly.tar.gz``. Extract it somewhere and remember its path."
|
||||
msgid "`riscv-gnu-toolchain <https://github.com/riscv-collab/riscv-gnu-toolchain/releases>`__. While we are not going to use this directly, it provides us with a sysroot, as well as header and libraries files that we will need. There are many versions to choose from, however, the older the toolchain, the more compatible our final binaries will be. If in doubt, `use this version <https://github.com/riscv-collab/riscv-gnu-toolchain/releases/tag/2023.07.07>`__, and download ``riscv64-glibc-ubuntu-20.04-gcc-nightly-2023.07.07-nightly.tar.gz``. Extract it somewhere and remember its path."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_linuxbsd.rst:403
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0)
|
||||
# This file is distributed under the same license as the Godot Engine package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Godot Engine latest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_visionos.rst:4
|
||||
msgid "Compiling for visionOS"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_visionos.rst:8
|
||||
msgid "This page describes how to compile visionOS export template binaries from source. If you're looking to export your project to visionOS instead, see :ref:`doc_exporting_for_visionos`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_visionos.rst:11
|
||||
msgid "Compiling instructions for visionOS are currently identical to :ref:`doc_compiling_for_ios`, except you should replace instances of ``platform=ios`` with ``platform=visionos`` in the SCons options. See the linked page for details."
|
||||
msgstr ""
|
||||
@@ -67,338 +67,338 @@ msgstr ""
|
||||
msgid "If you have `MSYS2 <https://www.msys2.org/>`_ installed, you can easily install MinGW and other dependencies using the following command:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:56
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:55
|
||||
msgid "For each MSYS2 MinGW subsystem, you should then run `pip3 install scons` in its shell."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:59
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:58
|
||||
msgid "To get the Godot source code for compiling, see :ref:`doc_getting_source`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:62
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:61
|
||||
msgid "For a general overview of SCons usage for Godot, see :ref:`doc_introduction_to_the_buildsystem`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:66
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:65
|
||||
msgid "Setting up SCons"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:68
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:67
|
||||
msgid "To install SCons, open the command prompt and run the following command:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:74
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:73
|
||||
msgid "If you are prompted with the message ``Defaulting to user installation because normal site-packages is not writeable``, you may have to run that command again using elevated permissions. Open a new command prompt as an Administrator then run the command again to ensure that SCons is available from the ``PATH``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:80
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:79
|
||||
msgid "To check whether you have installed Python and SCons correctly, you can type ``python --version`` and ``scons --version`` into a command prompt (``cmd.exe``)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:84
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:83
|
||||
msgid "If the commands above don't work, make sure to add Python to your ``PATH`` environment variable after installing it, then check again. You can do so by running the Python installer again and enabling the option to add Python to the ``PATH``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:89
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:88
|
||||
msgid "If SCons cannot detect your Visual Studio installation, it might be that your SCons version is too old. Update it to the latest version with ``python -m pip install --upgrade scons``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:96
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:95
|
||||
msgid "Downloading Godot's source"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:98
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:97
|
||||
msgid "Refer to :ref:`doc_getting_source` for detailed instructions."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:100
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:99
|
||||
msgid "The tutorial will assume from now on that you placed the source code in ``C:\\godot``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:105
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:104
|
||||
msgid "To prevent slowdowns caused by continuous virus scanning during compilation, add the Godot source folder to the list of exceptions in your antivirus software."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:109
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:108
|
||||
msgid "For Windows Defender, hit the :kbd:`Windows` key, type \"Windows Security\" then hit :kbd:`Enter`. Click on **Virus & threat protection** on the left panel. Under **Virus & threat protection settings** click on **Manage Settings** and scroll down to **Exclusions**. Click **Add or remove exclusions** then add the Godot source folder."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:116
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:115
|
||||
msgid "Compiling"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:119
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:118
|
||||
msgid "Selecting a compiler"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:121
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:120
|
||||
msgid "SCons will automatically find and use an existing Visual Studio installation. If you do not have Visual Studio installed, it will attempt to use MinGW instead. If you already have Visual Studio installed and want to use MinGW-w64, pass ``use_mingw=yes`` to the SCons command line. Note that MSVC builds cannot be performed from the MSYS2 or MinGW shells. Use either ``cmd.exe`` or PowerShell instead. If you are using MinGW-LLVM, pass both ``use_mingw=yes`` and ``use_llvm=yes`` to the SCons command line."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:131
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:130
|
||||
msgid "During development, using the Visual Studio compiler is usually a better idea, as it links the Godot binary much faster than MinGW. However, MinGW can produce more optimized binaries using link-time optimization (see below), making it a better choice for production use. This is particularly the case for the GDScript VM which performs much better with MinGW compared to MSVC. Therefore, it's recommended to use MinGW to produce builds that you distribute to players."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:139
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:138
|
||||
msgid "All official Godot binaries are built in `custom containers <https://github.com/godotengine/build-containers>`__ using MinGW."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:144
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:143
|
||||
msgid "Running SCons"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:146
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:145
|
||||
msgid "After opening a command prompt, change to the root directory of the engine source code (using ``cd``) and type:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:153
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:152
|
||||
msgid "When compiling with multiple CPU threads, SCons may warn about pywin32 being missing. You can safely ignore this warning."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:157
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:156
|
||||
msgid "If you are compiling Godot to make changes or contribute to the engine, you may want to use the SCons options ``dev_build=yes`` or ``dev_mode=yes``. See :ref:`doc_introduction_to_the_buildsystem_development_and_production_aliases` for more info."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:162
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:161
|
||||
msgid "If all goes well, the resulting binary executable will be placed in ``C:\\godot\\bin\\`` with the name ``godot.windows.editor.x86_32.exe`` or ``godot.windows.editor.x86_64.exe``. By default, SCons will build a binary matching your CPU architecture, but this can be overridden using ``arch=x86_64``, ``arch=x86_32``, or ``arch=arm64``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:168
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:167
|
||||
msgid "This executable file contains the whole engine and runs without any dependencies. Running it will bring up the Project Manager."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:171
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:170
|
||||
msgid "If you are compiling Godot for production use, you can make the final executable smaller and faster by adding the SCons option ``production=yes``. This enables additional compiler optimizations and link-time optimization."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:176
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:175
|
||||
msgid "LTO takes some time to run and requires up to 30 GB of available RAM while compiling (depending on toolchain). If you're running out of memory with the above option, use ``production=yes lto=none`` or ``production=yes lto=thin`` (LLVM only) for a lightweight but less effective form of LTO."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:181
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:180
|
||||
msgid "If you want to use separate editor settings for your own Godot builds and official releases, you can enable :ref:`doc_data_paths_self_contained_mode` by creating a file called ``._sc_`` or ``_sc_`` in the ``bin/`` folder."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:187
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:186
|
||||
msgid "Compiling with support for Direct3D 12"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:189
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:188
|
||||
msgid "By default, builds of Godot do not contain support for the Direct3D 12 graphics API."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:192
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:191
|
||||
msgid "You can install the required dependencies by running ``python misc/scripts/install_d3d12_sdk_windows.py`` in the Godot source repository. After running this script, add the ``d3d12=yes`` SCons option to enable Direct3D 12 support. This will use the default paths for the various dependencies, which match the ones used in the script."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:198
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:197
|
||||
msgid "You can find the detailed steps below if you wish to set up dependencies manually, but the above script handles everything for you (including the optional PIX and Agility SDK components)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:202
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:201
|
||||
msgid "`godot-nir-static library <https://github.com/godotengine/godot-nir-static/releases/>`_. We compile the Mesa libraries you will need into a static library. Download it anywhere, unzip it and remember the path to the unzipped folder, you will need it below."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:207
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:206
|
||||
msgid "You can optionally build the godot-nir-static libraries yourself with the following steps:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:210
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:209
|
||||
msgid "Install the Python package `mako <https://www.makotemplates.org>`_ which is needed to generate some files."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:212
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:211
|
||||
msgid "Clone the `godot-nir-static <https://github.com/godotengine/godot-nir-static>`_ directory and navigate to it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:214
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:213
|
||||
msgid "Run the following:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:235
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:234
|
||||
msgid "Optionally, you can compile with the following for additional features:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:237
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:236
|
||||
msgid "`PIX <https://devblogs.microsoft.com/pix/download>`_ is a performance tuning and debugging application for Direct3D12 applications. If you compile-in support for it, you can get much more detailed information through PIX that will help you optimize your game and troubleshoot graphics bugs. To use it, download the WinPixEventRuntime package. You will be taken to a NuGet package page where you can click \"Download package\" to get it. Once downloaded, change the file extension to .zip and unzip the file to some path."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:244
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:243
|
||||
msgid "`Agility SDK <https://devblogs.microsoft.com/directx/directx12agility>`_ can be used to provide access to the latest Direct3D 12 features without relying on driver updates. To use it, download the latest Agility SDK package. You will be taken to a NuGet package page where you can click \"Download package\" to get it. Once downloaded, change the file extension to .zip and unzip the file to some path."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:251
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:250
|
||||
msgid "If you use a preview version of the Agility SDK, remember to enable developer mode in Windows; otherwise it won't be used."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:254
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:253
|
||||
msgid "If you want to use a PIX with MinGW build, navigate to PIX runtime directory and use the following commands to generate import library:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:267
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:266
|
||||
msgid "When building Godot, you will need to tell SCons to use Direct3D 12 and where to look for the additional libraries:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:274
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:273
|
||||
msgid "Or, with all options enabled:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:280
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:279
|
||||
msgid "For the Agility SDK's DLLs you have to explicitly choose the kind of workflow. Single-arch is the default (DLLs copied to ``bin/``). If you pass ``agility_sdk_multi_arch=yes`` to SCons, you'll opt-in for multi-arch. DLLs will be copied to the appropriate ``bin/<arch>/`` subdirectories and at runtime the right one will be loaded."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:287
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:286
|
||||
msgid "Compiling with ANGLE support"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:289
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:288
|
||||
msgid "ANGLE provides a translation layer from OpenGL ES 3.x to Direct3D 11 and can be used to improve support for the Compatibility renderer on some older GPUs with outdated OpenGL drivers and on Windows for ARM."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:293
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:292
|
||||
msgid "By default, Godot is built with dynamically linked ANGLE, you can use it by placing ``libEGL.dll`` and ``libGLESv2.dll`` alongside the executable."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:296
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:295
|
||||
msgid "You can use dynamically linked ANGLE with export templates as well, rename aforementioned DLLs to ``libEGL.{architecture}.dll`` and ``libGLESv2.{architecture}.dll`` and place them alongside export template executables, and libraries will be automatically copied during the export process."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:301
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:300
|
||||
msgid "To compile Godot with statically linked ANGLE:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:303
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:302
|
||||
msgid "Download pre-built static libraries from `godot-angle-static library <https://github.com/godotengine/godot-angle-static/releases>`_, and unzip them."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:304
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:303
|
||||
msgid "When building Godot, add ``angle_libs={path}`` to tell SCons where to look for the ANGLE libraries:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:310
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:309
|
||||
msgid "You can optionally build the godot-angle-static libraries yourself with the following steps:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:313
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:312
|
||||
msgid "Clone the `godot-angle-static <https://github.com/godotengine/godot-angle-static>`_ directory and navigate to it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:315
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:314
|
||||
msgid "Run the following command:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:337
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:336
|
||||
msgid "Development in Visual Studio"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:339
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:338
|
||||
msgid "Using an IDE is not required to compile Godot, as SCons takes care of everything. But if you intend to do engine development or debugging of the engine's C++ code, you may be interested in configuring a code editor or an IDE."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:343
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:342
|
||||
msgid "Folder-based editors don't require any particular setup to start working with Godot's codebase. To edit projects with Visual Studio they need to be set up as a solution."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:346
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:345
|
||||
msgid "You can create a Visual Studio solution via SCons by running SCons with the ``vsproj=yes`` parameter, like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:353
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:352
|
||||
msgid "You will be able to open Godot's source in a Visual Studio solution now, and able to build Godot using Visual Studio's **Build** button."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:356
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:355
|
||||
msgid "See :ref:`doc_configuring_an_ide_vs` for further details."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:359
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:358
|
||||
msgid "Cross-compiling for Windows from other operating systems"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:361
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:360
|
||||
msgid "If you are a Linux or macOS user, you need to install `MinGW-w64 <https://www.mingw-w64.org/>`__, which typically comes in 32-bit and 64-bit variants, or `MinGW-LLVM <https://github.com/mstorsjo/llvm-mingw/releases>`_, which comes as a single archive for all target architectures. The package names may differ based on your distribution, here are some known ones:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:368
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:367
|
||||
msgid "**Arch Linux**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:372
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:371
|
||||
msgid "**Debian** / **Ubuntu**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:376
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:375
|
||||
msgid "**Fedora**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:381
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:380
|
||||
msgid "**macOS**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:385
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:384
|
||||
msgid "**Mageia**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:391
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:390
|
||||
msgid "Before attempting the compilation, SCons will check for the following binaries in your ``PATH`` environment variable:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:405
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:404
|
||||
msgid "If the binaries are not located in the ``PATH`` (e.g. ``/usr/bin``), you can define the following environment variable to give a hint to the build system:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:413
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:412
|
||||
msgid "Where ``/path/to/mingw`` is the path containing the ``bin`` directory where ``i686-w64-mingw32-gcc`` and ``x86_64-w64-mingw32-gcc`` are located (e.g. ``/opt/mingw-w64`` if the binaries are located in ``/opt/mingw-w64/bin``)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:417
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:416
|
||||
msgid "To make sure you are doing things correctly, executing the following in the shell should result in a working compiler (the version output may differ based on your system):"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:426
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:425
|
||||
msgid "If you are building with MinGW-LLVM, add ``use_llvm=yes`` to the ``scons`` command."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:427
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:426
|
||||
msgid "When cross-compiling for Windows using MinGW-w64, keep in mind only ``x86_64`` and ``x86_32`` architectures are supported. MinGW-LLVM supports ``arm64`` as well. Be sure to specify the right ``arch=`` option when invoking SCons if building from a different architecture."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:433
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:432
|
||||
msgid "Troubleshooting"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:435
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:434
|
||||
msgid "Cross-compiling from some Ubuntu versions may lead to `this bug <https://github.com/godotengine/godot/issues/9258>`_, due to a default configuration lacking support for POSIX threading."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:439
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:438
|
||||
msgid "You can change that configuration following those instructions, for 64-bit:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:448
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:447
|
||||
msgid "And for 32-bit:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:458
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:457
|
||||
msgid "Creating Windows export templates"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:460
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:459
|
||||
msgid "Windows export templates are created by compiling Godot without the editor, with the following flags:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:472
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:471
|
||||
msgid "If you plan on replacing the standard export templates, copy these to the following location, replacing ``<version>`` with the version identifier (such as ``4.2.1.stable`` or ``4.3.dev``):"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:480
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:479
|
||||
msgid "With the following names:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:497
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:496
|
||||
msgid "However, if you are using custom modules or custom engine code, you may instead want to configure your binaries as custom export templates in the project export menu. You must have **Advanced Options** enabled to set this."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:504
|
||||
#: ../../docs/contributing/development/compiling/compiling_for_windows.rst:503
|
||||
msgid "You don't need to copy them in this case, just reference the resulting files in the ``bin\\`` directory of your Godot source folder, so the next time you build, you will automatically have the custom templates referenced."
|
||||
msgstr ""
|
||||
|
||||
@@ -51,10 +51,10 @@ msgstr ""
|
||||
msgid "Other compilation targets and options"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/index.rst:61
|
||||
#: ../../docs/contributing/development/compiling/index.rst:62
|
||||
msgid "Some additional universal compilation options require further setup. Namely, while Godot does have C#/.NET support as a part of its main codebase, it does not get compiled by default to reduce the executable size for users who don't need C# for their projects."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/compiling/index.rst:65
|
||||
#: ../../docs/contributing/development/compiling/index.rst:66
|
||||
msgid "Articles below explain how to configure the buildsystem for cases like this, and also cover some optimization techniques."
|
||||
msgstr ""
|
||||
|
||||
@@ -108,7 +108,7 @@ msgid "Click **Add** to create a new launch configuration."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/kdevelop.rst:78
|
||||
msgid "Select **Executable** option and specify the path to your executable located in the ``<Godot root directory>/bin`` folder. The name depends on your build configuration, e.g. ``godot.linuxbsd.editor.dev.x86_64`` for 64-bit LinuxBSD platform with ``platform=editor`` and ``dev_build=yes``."
|
||||
msgid "Select **Executable** option and specify the path to your executable located in the ``<Godot root directory>/bin`` folder. The name depends on your build configuration, e.g. ``godot.linuxbsd.editor.dev.x86_64`` for 64-bit LinuxBSD platform with ``platform=linuxbsd``, ``target=editor``, and ``dev_build=yes``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/kdevelop.rst:87
|
||||
|
||||
@@ -20,157 +20,157 @@ msgid "Visual Studio Code"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:8
|
||||
msgid "This documentation is for contributions to the game engine, and not using Visual Studio Code as a C# or GDScript editor. To code C# or GDScript in an external editor, see :ref:`the C# guide to configure an external editor <doc_c_sharp_setup_external_editor>`."
|
||||
msgid "This documentation is for contributions to the game engine, and not using Visual Studio Code as a C# or GDScript editor. To code C# or GDScript in an external editor, see :ref:`the C# guide to configure an external editor <doc_c_sharp_setup_external_editor>` or :ref:`the GDScript guide to using an external text editor <doc_external_editor>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:12
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:13
|
||||
msgid "`Visual Studio Code <https://code.visualstudio.com>`_ is a free cross-platform code editor by `Microsoft <https://microsoft.com>`_ (not to be confused with :ref:`doc_configuring_an_ide_vs`)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:16
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:17
|
||||
msgid "Importing the project"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:18
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:19
|
||||
msgid "Make sure the C/C++ extension is installed. You can find instructions in the `official documentation <https://code.visualstudio.com/docs/languages/cpp>`_. Alternatively, `clangd <https://open-vsx.org/extension/llvm-vs-code-extensions/vscode-clangd>`_ can be used instead."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:22
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:23
|
||||
msgid "When using the clangd extension, run ``scons compiledb=yes``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:23
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:24
|
||||
msgid "From the Visual Studio Code's main screen open the Godot root folder with **File > Open Folder...**."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:25
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:26
|
||||
msgid "Press :kbd:`Ctrl + Shift + P` to open the command prompt window and enter *Configure Task*."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:30
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:31
|
||||
msgid "Select the **Create tasks.json file from template** option."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:35
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:36
|
||||
msgid "Then select **Others**."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:40
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:41
|
||||
msgid "If there is no such option as **Create tasks.json file from template** available, either delete the file if it already exists in your folder or create a ``.vscode/tasks.json`` file manually. See `Tasks in Visual Studio Code <https://code.visualstudio.com/docs/editor/tasks#_custom-tasks>`_ for more details on tasks."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:42
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:43
|
||||
msgid "Within the ``tasks.json`` file find the ``\"tasks\"`` array and add a new section to it:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:44
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:45
|
||||
msgid ".vscode/tasks.json"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:63
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:64
|
||||
msgid "An example of a filled out ``tasks.json``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:65
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:66
|
||||
msgid "Arguments can be different based on your own setup and needs. See :ref:`doc_introduction_to_the_buildsystem` for a full list of arguments."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:69
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:70
|
||||
msgid "Debugging the project"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:71
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:72
|
||||
msgid "To run and debug the project you need to create a new configuration in the ``launch.json`` file."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:73
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:74
|
||||
msgid "Press :kbd:`Ctrl + Shift + D` to open the Run panel."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:74
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:75
|
||||
msgid "If ``launch.json`` file is missing you will be prompted to create a new one."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:79
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:80
|
||||
msgid "Select **C++ (GDB/LLDB)**. There may be another platform-specific option here. If selected, adjust the configuration example provided accordingly."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:81
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:82
|
||||
msgid "Within the ``launch.json`` file find the ``\"configurations\"`` array and add a new section to it:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:181
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:182
|
||||
msgid "An example of a filled out ``launch.json``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:186
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:187
|
||||
msgid "Due to sporadic performance issues, it is recommended to use LLDB over GDB on Unix-based systems. Make sure that the `CodeLLDB extension <https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb>`_ is installed for configurations using `lldb`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:190
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:191
|
||||
msgid "If you encounter issues with lldb, you may consider using gdb (see the LinuxBSD_gdb configuration)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:192
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:193
|
||||
msgid "Do note that lldb may work better with LLVM-based builds. See :ref:`doc_compiling_for_linuxbsd` for further information."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:194
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:195
|
||||
msgid "The name under ``program`` depends on your build configuration, e.g. ``godot.linuxbsd.editor.dev.x86_64`` for 64-bit LinuxBSD platform with ``target=editor`` and ``dev_build=yes``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:199
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:200
|
||||
msgid "Configuring Intellisense"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:201
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:202
|
||||
msgid "For the C/C++ extension:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:203
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:204
|
||||
msgid "To fix include errors you may be having, you need to configure some settings in the ``c_cpp_properties.json`` file."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:205
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:206
|
||||
msgid "First, make sure to build the project since some files need to be generated."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:207
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:208
|
||||
msgid "Edit the C/C++ Configuration file either with the UI or with text:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:212
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:213
|
||||
msgid "Add an include path for your platform, for example, ``${workspaceFolder}/platform/windows``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:214
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:215
|
||||
msgid "Add defines for the editor ``TOOLS_ENABLED``, debug builds ``DEBUG_ENABLED``, and tests ``TESTS_ENABLED``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:216
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:217
|
||||
msgid "Make sure the compiler path is configured correctly to the compiler you are using. See :ref:`doc_introduction_to_the_buildsystem` for further information on your platform."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:218
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:219
|
||||
msgid "The ``c_cpp_properties.json`` file should look similar to this for Windows:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:220
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:221
|
||||
msgid ".vscode/c_cpp_properties.json"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:249
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:250
|
||||
msgid "Alternatively, you can use the scons argument ``compiledb=yes`` and set the compile commands setting ``compileCommands`` to ``compile_commands.json``, found in the advanced section of the C/C++ Configuration UI."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:251
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:252
|
||||
msgid "This argument can be added to your build task in ``tasks.json`` since it will need to be run whenever files are added or moved."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:253
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:254
|
||||
msgid "If you run into any issues, ask for help in one of `Godot's community channels <https://godotengine.org/community>`__."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:258
|
||||
#: ../../docs/contributing/development/configuring_an_ide/visual_studio_code.rst:259
|
||||
msgid "To get linting on class reference XML files, install the `vscode-xml extension <https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml>`__."
|
||||
msgstr ""
|
||||
|
||||
@@ -60,53 +60,65 @@ msgid "If the user has configured their editor to use a light theme, Godot will
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:47
|
||||
msgid "Icon optimization"
|
||||
msgid "To enable color conversion for light editor themes:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:48
|
||||
msgid ":ui:`Import > Import As > Texture2D`"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:49
|
||||
msgid "Set ``editor/convert_colors_with_editor_theme`` to ``true``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:52
|
||||
msgid "Icon optimization"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:54
|
||||
msgid "Because the editor renders SVGs once at load time, they need to be small in size so they can be efficiently parsed. When the :ref:`pre-commit hook <doc_code_style_guidelines_pre_commit_hook>` runs, it automatically optimizes the SVG using `svgo <https://github.com/svg/svgo>`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:56
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:61
|
||||
msgid "While this optimization step won't impact the icon's quality noticeably, it will still remove editor-only information such as guides. Therefore, it's recommended to keep the source SVG around if you need to make further changes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:62
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:67
|
||||
msgid "Integrating and sharing the icons"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:64
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:69
|
||||
msgid "If you're contributing to the engine itself, you should make a pull request to add optimized icons to ``editor/icons`` in the main repository. Recompile the engine to make it pick up new icons for classes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:68
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:73
|
||||
msgid "It's also possible to create custom icons within a module. If you're creating your own module and don't plan to integrate it with Godot, you don't need to make a separate pull request for your icons to be available within the editor as they can be self-contained."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:73
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:78
|
||||
msgid "For specific instructions on how to create module icons, refer to :ref:`Creating custom module icons<doc_custom_module_icons>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:77
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:82
|
||||
msgid "Troubleshooting"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:79
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:84
|
||||
msgid "If icons don't appear in the editor, make sure that:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:81
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:86
|
||||
msgid "Each icon's filename matches the naming requirement as described previously."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:83
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:88
|
||||
msgid "``modules/svg`` is enabled (it should be enabled by default). Without it, icons won't appear in the editor at all."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:87
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:92
|
||||
msgid "References"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:89
|
||||
#: ../../docs/contributing/development/editor/creating_icons.rst:94
|
||||
msgid "`editor/icons <https://github.com/godotengine/godot/tree/master/editor/icons>`__"
|
||||
msgstr ""
|
||||
|
||||
@@ -40,7 +40,7 @@ msgid "Click *Import* to open the project in the editor."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/01.game_setup.rst:29
|
||||
msgid "A window notifying you that the project was generated by an older Godot version may appear. Click *Convert Full Project* to convert the project to your current Godot version."
|
||||
msgid "A window notifying you that the project was generated by an older Godot version may appear. Click *OK* to convert the project to your current Godot version."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/01.game_setup.rst:34
|
||||
@@ -140,7 +140,7 @@ msgid "We need to move and rotate the :ref:`DirectionalLight3D <class_Directiona
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/01.game_setup.rst:150
|
||||
msgid "In the *Inspector*, turn on *Shadow -> Enabled* by clicking the checkbox."
|
||||
msgid "In the *Inspector*, turn on *Shadow* by clicking the checkbox."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/01.game_setup.rst:154
|
||||
|
||||
@@ -27,7 +27,7 @@ msgstr ""
|
||||
msgid "|image0|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:348
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:346
|
||||
msgid "image0"
|
||||
msgstr ""
|
||||
|
||||
@@ -47,7 +47,7 @@ msgstr ""
|
||||
msgid "|image1|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:349
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:347
|
||||
msgid "image1"
|
||||
msgstr ""
|
||||
|
||||
@@ -56,14 +56,14 @@ msgid "If you still have *Input Map* open, switch to the *General* tab."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:23
|
||||
msgid "In the left menu, navigate down to *Display -> Window*. On the right, set the *Width* to ``720`` and the *Height* to ``540``."
|
||||
msgid "In the left menu, navigate down to *Display -> Window*. On the right, set the *Viewport Width* to ``720`` and the *Viewport Height* to ``540``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:26
|
||||
msgid "|image2|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:350
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:348
|
||||
msgid "image2"
|
||||
msgstr ""
|
||||
|
||||
@@ -87,7 +87,7 @@ msgstr ""
|
||||
msgid "|image3|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:351
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:349
|
||||
msgid "image3"
|
||||
msgstr ""
|
||||
|
||||
@@ -103,7 +103,7 @@ msgstr ""
|
||||
msgid "|image4|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:352
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:350
|
||||
msgid "image4"
|
||||
msgstr ""
|
||||
|
||||
@@ -115,7 +115,7 @@ msgstr ""
|
||||
msgid "|image5|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:353
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:351
|
||||
msgid "image5"
|
||||
msgstr ""
|
||||
|
||||
@@ -127,7 +127,7 @@ msgstr ""
|
||||
msgid "|image6|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:354
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:352
|
||||
msgid "image6"
|
||||
msgstr ""
|
||||
|
||||
@@ -139,7 +139,7 @@ msgstr ""
|
||||
msgid "|image7|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:355
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:353
|
||||
msgid "image7"
|
||||
msgstr ""
|
||||
|
||||
@@ -151,7 +151,7 @@ msgstr ""
|
||||
msgid "|image8|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:356
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:354
|
||||
msgid "image8"
|
||||
msgstr ""
|
||||
|
||||
@@ -163,7 +163,7 @@ msgstr ""
|
||||
msgid "|image9|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:357
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:355
|
||||
msgid "image9"
|
||||
msgstr ""
|
||||
|
||||
@@ -179,7 +179,7 @@ msgstr ""
|
||||
msgid "|image10|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:358
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:356
|
||||
msgid "image10"
|
||||
msgstr ""
|
||||
|
||||
@@ -191,7 +191,7 @@ msgstr ""
|
||||
msgid "|image11|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:359
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:357
|
||||
msgid "image11"
|
||||
msgstr ""
|
||||
|
||||
@@ -211,7 +211,7 @@ msgstr ""
|
||||
msgid "|image12|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:360
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:358
|
||||
msgid "image12"
|
||||
msgstr ""
|
||||
|
||||
@@ -223,234 +223,234 @@ msgstr ""
|
||||
msgid "|image13|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:361
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:359
|
||||
msgid "image13"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:111
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:109
|
||||
msgid "Click the sphere icon to open the material resource. You get a preview of the material and a long list of sections filled with properties. You can use these to create all sorts of surfaces, from metal to rock or water."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:115
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:113
|
||||
msgid "Expand the *Albedo* section."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:119
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:117
|
||||
msgid "Set the color to something that contrasts with the background, like a bright orange."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:122
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:120
|
||||
msgid "|image14|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:362
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:360
|
||||
msgid "image14"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:124
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:122
|
||||
msgid "We can now use the cylinders as guides. Fold them in the *Scene* dock by clicking the grey arrow next to them. Moving forward, you can also toggle their visibility by clicking the eye icon next to *Cylinders*."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:128
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:126
|
||||
msgid "|image15|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:363
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:361
|
||||
msgid "image15"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:130
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:128
|
||||
msgid "Add a child node :ref:`Path3D <class_Path3D>` to ``Main`` node. In the toolbar, four icons appear. Click the *Add Point* tool, the icon with the green \"+\" sign."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:133
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:131
|
||||
msgid "|image16|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:364
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:362
|
||||
msgid "image16"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:135
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:133
|
||||
msgid "You can hover any icon to see a tooltip describing the tool."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:137
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:135
|
||||
msgid "Click in the center of each cylinder to create a point. Then, click the *Close Curve* icon in the toolbar to close the path. If any point is a bit off, you can click and drag on it to reposition it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:141
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:139
|
||||
msgid "|image17|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:365
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:363
|
||||
msgid "image17"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:143
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:141
|
||||
msgid "Your path should look like this."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:145
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:143
|
||||
msgid "|image18|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:366
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:364
|
||||
msgid "image18"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:147
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:145
|
||||
msgid "To sample random positions on it, we need a :ref:`PathFollow3D <class_PathFollow3D>` node. Add a :ref:`PathFollow3D <class_PathFollow3D>` as a child of the ``Path3D``. Rename the two nodes to ``SpawnLocation`` and ``SpawnPath``, respectively. It's more descriptive of what we'll use them for."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:151
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:149
|
||||
msgid "|image19|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:367
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:365
|
||||
msgid "image19"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:153
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:151
|
||||
msgid "With that, we're ready to code the spawn mechanism."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:156
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:154
|
||||
msgid "Spawning monsters randomly"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:158
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:156
|
||||
msgid "Right-click on the ``Main`` node and attach a new script to it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:160
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:158
|
||||
msgid "We first export a variable to the *Inspector* so that we can assign ``mob.tscn`` or any other monster to it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:182
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:180
|
||||
msgid "We want to spawn mobs at regular time intervals. To do this, we need to go back to the scene and add a timer. Before that, though, we need to assign the ``mob.tscn`` file to the ``mob_scene`` property above (otherwise it's null!)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:186
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:184
|
||||
msgid "Head back to the 3D screen and select the ``Main`` node. Drag ``mob.tscn`` from the *FileSystem* dock to the *Mob Scene* slot in the *Inspector*."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:189
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:187
|
||||
msgid "|image20|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:368
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:366
|
||||
msgid "image20"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:191
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:189
|
||||
msgid "Add a new :ref:`Timer <class_Timer>` node as a child of ``Main``. Name it ``MobTimer``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:193
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:191
|
||||
msgid "|image21|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:369
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:367
|
||||
msgid "image21"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:195
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:193
|
||||
msgid "In the *Inspector*, set its *Wait Time* to ``0.5`` seconds and turn on *Autostart* so it automatically starts when we run the game."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:198
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:196
|
||||
msgid "|image22|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:370
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:368
|
||||
msgid "image22"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:200
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:198
|
||||
msgid "Timers emit a ``timeout`` signal every time they reach the end of their *Wait Time*. By default, they restart automatically, emitting the signal in a cycle. We can connect to this signal from the *Main* node to spawn monsters every ``0.5`` seconds."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:205
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:203
|
||||
msgid "With the *MobTimer* still selected, head to the *Node* dock on the right, and double-click the ``timeout`` signal."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:208
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:206
|
||||
msgid "|image23|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:371
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:369
|
||||
msgid "image23"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:210
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:208
|
||||
msgid "Connect it to the *Main* node."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:212
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:210
|
||||
msgid "|image24|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:372
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:370
|
||||
msgid "image24"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:214
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:212
|
||||
msgid "This will take you back to the script, with a new empty ``_on_mob_timer_timeout()`` function."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:217
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:215
|
||||
msgid "Let's code the mob spawning logic. We're going to:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:219
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:217
|
||||
msgid "Instantiate the mob scene."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:220
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:218
|
||||
msgid "Sample a random position on the spawn path."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:221
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:219
|
||||
msgid "Get the player's position."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:222
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:220
|
||||
msgid "Call the mob's ``initialize()`` method, passing it the random position and the player's position."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:224
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:222
|
||||
msgid "Add the mob as a child of the *Main* node."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:266
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:264
|
||||
msgid "Above, ``randf()`` produces a random value between ``0`` and ``1``, which is what the *PathFollow* node's ``progress_ratio`` expects: 0 is the start of the path, 1 is the end of the path. The path we have set is around the camera's viewport, so any random value between 0 and 1 is a random position alongside the edges of the viewport!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:272
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:270
|
||||
msgid "Note that if you remove the ``Player`` from the main scene, the following line"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:284
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:282
|
||||
msgid "gives an error because there is no $Player!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:286
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:284
|
||||
msgid "Here is the complete ``main.gd`` script so far, for reference."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:340
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:338
|
||||
msgid "You can test the scene by pressing :kbd:`F6`. You should see the monsters spawn and move in a straight line."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:343
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:341
|
||||
msgid "|image25|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:373
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:371
|
||||
msgid "image25"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:345
|
||||
#: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:343
|
||||
msgid "For now, they bump and slide against one another when their paths cross. We'll address this in the next part."
|
||||
msgstr ""
|
||||
|
||||
@@ -67,7 +67,7 @@ msgstr ""
|
||||
msgid "|image0|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:370
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:375
|
||||
msgid "image0"
|
||||
msgstr ""
|
||||
|
||||
@@ -79,7 +79,7 @@ msgstr ""
|
||||
msgid "|image1|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:371
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:376
|
||||
msgid "image1"
|
||||
msgstr ""
|
||||
|
||||
@@ -99,7 +99,7 @@ msgstr ""
|
||||
msgid "|image2|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:372
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:377
|
||||
msgid "image2"
|
||||
msgstr ""
|
||||
|
||||
@@ -111,7 +111,7 @@ msgstr ""
|
||||
msgid "|image3|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:373
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:378
|
||||
msgid "image3"
|
||||
msgstr ""
|
||||
|
||||
@@ -127,7 +127,7 @@ msgstr ""
|
||||
msgid "|image4|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:374
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:379
|
||||
msgid "image4"
|
||||
msgstr ""
|
||||
|
||||
@@ -143,7 +143,7 @@ msgstr ""
|
||||
msgid "|image5|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:375
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:380
|
||||
msgid "image5"
|
||||
msgstr ""
|
||||
|
||||
@@ -159,7 +159,7 @@ msgstr ""
|
||||
msgid "|image6|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:376
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:381
|
||||
msgid "image6"
|
||||
msgstr ""
|
||||
|
||||
@@ -216,109 +216,129 @@ msgid "We need to detect collisions with a monster and to differentiate them fro
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:181
|
||||
msgid "Open the scene ``mob.tscn`` again and select the *Mob* node. Go to the *Node* dock on the right to see a list of signals. The *Node* dock has two tabs: *Signals*, which you've already used, and *Groups*, which allows you to assign tags to nodes."
|
||||
msgid "Open the scene ``mob.tscn`` again and select the *Mob* node. Go to the *Node* dock on the right to see a list of signals. The *Node* dock has two tabs: *Signals*, which you've already used, and *Groups*, which allows you to assign tags to nodes. Click on the *+* button to open the *Create new Group* dialog."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:186
|
||||
msgid "Click on it to reveal a field where you can write a tag name. Enter \"mob\" in the field and click the *Add* button."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:189
|
||||
msgid "|image7|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:377
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:382
|
||||
msgid "image7"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:191
|
||||
msgid "An icon appears in the *Scene* dock to indicate the node is part of at least one group."
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:188
|
||||
msgid "Enter \"mob\" in the *Name* field and click the *Ok* button."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:194
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:190
|
||||
msgid "|image8|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:378
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:383
|
||||
msgid "image8"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:192
|
||||
msgid "The \"mob\" group is now shown under the *Scene Groups* section."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:194
|
||||
msgid "|image9|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:384
|
||||
msgid "image9"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:196
|
||||
msgid "An icon appears in the *Scene* dock to indicate the node is part of at least one group."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:199
|
||||
msgid "|image10|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:385
|
||||
msgid "image10"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:201
|
||||
msgid "We can now use the group from the code to distinguish collisions with monsters from collisions with the floor."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:200
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:205
|
||||
msgid "Coding the squash mechanic"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:202
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:207
|
||||
msgid "Head back to the *Player* script to code the squash and bounce."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:204
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:209
|
||||
msgid "At the top of the script, we need another property, ``bounce_impulse``. When squashing an enemy, we don't necessarily want the character to go as high up as when jumping."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:223
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:228
|
||||
msgid "Then, after the **Jumping** codeblock we added above in ``_physics_process()``, add the following loop. With ``move_and_slide()``, Godot makes the body move sometimes multiple times in a row to smooth out the character's motion. So we have to loop over all collisions that may have happened."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:228
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:233
|
||||
msgid "In every iteration of the loop, we check if we landed on a mob. If so, we kill it and bounce."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:231
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:236
|
||||
msgid "With this code, if no collisions occurred on a given frame, the loop won't run."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:293
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:298
|
||||
msgid "That's a lot of new functions. Here's some more information about them."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:295
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:300
|
||||
msgid "The functions ``get_slide_collision_count()`` and ``get_slide_collision()`` both come from the :ref:`CharacterBody3D <class_CharacterBody3D>` class and are related to ``move_and_slide()``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:299
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:304
|
||||
msgid "``get_slide_collision()`` returns a :ref:`KinematicCollision3D<class_KinematicCollision3D>` object that holds information about where and how the collision occurred. For example, we use its ``get_collider`` property to check if we collided with a \"mob\" by calling ``is_in_group()`` on it: ``collision.get_collider().is_in_group(\"mob\")``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:307
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:312
|
||||
msgid "The method ``is_in_group()`` is available on every :ref:`Node<class_Node>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:309
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:314
|
||||
msgid "To check that we are landing on the monster, we use the vector dot product: ``Vector3.UP.dot(collision.get_normal()) > 0.1``. The collision normal is a 3D vector that is perpendicular to the plane where the collision occurred. The dot product allows us to compare it to the up direction."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:314
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:319
|
||||
msgid "With dot products, when the result is greater than ``0``, the two vectors are at an angle of fewer than 90 degrees. A value higher than ``0.1`` tells us that we are roughly above the monster."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:318
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:323
|
||||
msgid "After handling the squash and bounce logic, we terminate the loop early via the ``break`` statement to prevent further duplicate calls to ``mob.squash()``, which may otherwise result in unintended bugs such as counting the score multiple times for one kill."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:322
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:327
|
||||
msgid "We are calling one undefined function, ``mob.squash()``, so we have to add it to the Mob class."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:325
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:330
|
||||
msgid "Open the script ``mob.gd`` by double-clicking on it in the *FileSystem* dock. At the top of the script, we want to define a new signal named ``squashed``. And at the bottom, you can add the squash function, where we emit the signal and destroy the mob."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:361
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:366
|
||||
msgid "When using C#, Godot will create the appropriate events automatically for all Signals ending with `EventHandler`, see :ref:`C# Signals <doc_c_sharp_signals>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:363
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:368
|
||||
msgid "We will use the signal to add points to the score in the next lesson."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:365
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:370
|
||||
msgid "With that, you should be able to kill monsters by jumping on them. You can press :kbd:`F5` to try the game and set ``main.tscn`` as your project's main scene."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:368
|
||||
#: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:373
|
||||
msgid "However, the player won't die yet. We'll work on that in the next part."
|
||||
msgstr ""
|
||||
|
||||
@@ -27,7 +27,7 @@ msgstr ""
|
||||
msgid "|image0|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:618
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:616
|
||||
msgid "image0"
|
||||
msgstr ""
|
||||
|
||||
@@ -55,7 +55,7 @@ msgstr ""
|
||||
msgid "|image1|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:619
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:617
|
||||
msgid "image1"
|
||||
msgstr ""
|
||||
|
||||
@@ -71,7 +71,7 @@ msgstr ""
|
||||
msgid "|image2|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:620
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:618
|
||||
msgid "image2"
|
||||
msgstr ""
|
||||
|
||||
@@ -83,7 +83,7 @@ msgstr ""
|
||||
msgid "|image3|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:621
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:619
|
||||
msgid "image3"
|
||||
msgstr ""
|
||||
|
||||
@@ -95,7 +95,7 @@ msgstr ""
|
||||
msgid "|image4|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:622
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:620
|
||||
msgid "image4"
|
||||
msgstr ""
|
||||
|
||||
@@ -107,7 +107,7 @@ msgstr ""
|
||||
msgid "To do so, you can click the autoplay button (|Autoplay|) in the animation toolbar and the looping arrows, respectively."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:644
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:641
|
||||
msgid "Autoplay"
|
||||
msgstr ""
|
||||
|
||||
@@ -115,7 +115,7 @@ msgstr ""
|
||||
msgid "|image5|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:623
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:621
|
||||
msgid "image5"
|
||||
msgstr ""
|
||||
|
||||
@@ -127,7 +127,7 @@ msgstr ""
|
||||
msgid "|image6|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:624
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:622
|
||||
msgid "image6"
|
||||
msgstr ""
|
||||
|
||||
@@ -136,341 +136,333 @@ msgid "Set the animation duration to ``1.2`` seconds in the top-right of the doc
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:59
|
||||
msgid "|image7|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:625
|
||||
msgid "image7"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:61
|
||||
msgid "You should see the gray ribbon widen a bit. It shows you the start and end of your animation and the vertical blue line is your time cursor."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:62
|
||||
msgid "|image7|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:623
|
||||
msgid "image7"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:64
|
||||
msgid "|image8|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:626
|
||||
msgid "image8"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:66
|
||||
msgid "You can click and drag the slider in the bottom-right to zoom in and out of the timeline."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:69
|
||||
msgid "|image9|"
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:67
|
||||
msgid "|image8|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:627
|
||||
msgid "image9"
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:624
|
||||
msgid "image8"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:72
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:70
|
||||
msgid "The float animation"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:74
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:72
|
||||
msgid "With the animation player node, you can animate most properties on as many nodes as you need. Notice the key icon next to properties in the *Inspector*. You can click any of them to create a keyframe, a time and value pair for the corresponding property. The keyframe gets inserted where your time cursor is in the timeline."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:80
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:78
|
||||
msgid "Let's insert our first keys. Here, we will animate both the position and the rotation of the ``Character`` node."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:83
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:81
|
||||
msgid "Select the ``Character`` and in the *Inspector* expand the *Transform* section. Click the key icon next to *Position*, and *Rotation*."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:85
|
||||
msgid "|image10|"
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:83
|
||||
msgid "|image9|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:628
|
||||
msgid "image10"
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:625
|
||||
msgid "image9"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:89
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:87
|
||||
msgid "For this tutorial, just create RESET Track(s) which is the default choice"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:91
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:89
|
||||
msgid "Two tracks appear in the editor with a diamond icon representing each keyframe."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:91
|
||||
msgid "|image10|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:626
|
||||
msgid "image10"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:93
|
||||
msgid "|image11|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:629
|
||||
msgid "image11"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:95
|
||||
msgid "You can click and drag on the diamonds to move them in time. Move the position key to ``0.3`` seconds and the rotation key to ``0.1`` seconds."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:96
|
||||
msgid "|image11|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:627
|
||||
msgid "image11"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:98
|
||||
msgid "|image12|"
|
||||
msgid "Move the time cursor to ``0.5`` seconds by clicking and dragging on the gray timeline, or by entering it into the input field."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:630
|
||||
msgid "image12"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:100
|
||||
msgid "Move the time cursor to ``0.5`` seconds by clicking and dragging on the gray timeline."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:103
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:101
|
||||
msgid "|timeline_05_click|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:643
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:640
|
||||
msgid "timeline_05_click"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:105
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:103
|
||||
msgid "In the *Inspector*, set the *Position*'s *Y* axis to ``0.65`` meters and the *Rotation*' *X* axis to ``8``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:108
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:106
|
||||
msgid "If you don't see the properties in the *Inspector* panel, first click on the ``Character`` node again in the *Scene* dock."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:109
|
||||
msgid "|image12|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:628
|
||||
msgid "image12"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:111
|
||||
msgid "|image13|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:631
|
||||
msgid "image13"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:113
|
||||
msgid "Create a keyframe for both properties"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:115
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:113
|
||||
msgid "|second_keys_both|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:642
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:639
|
||||
msgid "second_keys_both"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:117
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:115
|
||||
msgid "Now, move the position keyframe to ``0.7`` seconds by dragging it on the timeline."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:120
|
||||
msgid "|image14|"
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:118
|
||||
msgid "|image13|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:632
|
||||
msgid "image14"
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:629
|
||||
msgid "image13"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:124
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:122
|
||||
msgid "A lecture on the principles of animation is beyond the scope of this tutorial. Just note that you don't want to time and space everything evenly. Instead, animators play with timing and spacing, two core animation principles. You want to offset and contrast in your character's motion to make them feel alive."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:130
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:128
|
||||
msgid "Move the time cursor to the end of the animation, at ``1.2`` seconds. Set the Y position to about ``0.35`` and the X rotation to ``-9`` degrees. Once again, create a key for both properties."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:134
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:132
|
||||
msgid "|animation_final_keyframes|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:641
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:638
|
||||
msgid "animation_final_keyframes"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:136
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:134
|
||||
msgid "You can preview the result by clicking the play button or pressing :kbd:`Shift + D`. Click the stop button or press :kbd:`S` to stop playback."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:137
|
||||
msgid "|image14|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:630
|
||||
msgid "image14"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:139
|
||||
msgid "|image15|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:633
|
||||
msgid "image15"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:141
|
||||
msgid "You can see that the engine interpolates between your keyframes to produce a continuous animation. At the moment, though, the motion feels very robotic. This is because the default interpolation is linear, causing constant transitions, unlike how living things move in the real world."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:146
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:144
|
||||
msgid "We can control the transition between keyframes using easing curves."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:148
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:146
|
||||
msgid "Click and drag around the first two keys in the timeline to box select them."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:148
|
||||
msgid "|image15|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:631
|
||||
msgid "image15"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:150
|
||||
msgid "|image16|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:634
|
||||
msgid "image16"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:152
|
||||
msgid "You can edit the properties of both keys simultaneously in the *Inspector*, where you can see an *Easing* property."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:153
|
||||
msgid "|image16|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:632
|
||||
msgid "image16"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:155
|
||||
msgid "|image17|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:635
|
||||
msgid "image17"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:157
|
||||
msgid "Click and drag on the curve, pulling it towards the left. This will make it ease-out, that is to say, transition fast initially and slow down as the time cursor reaches the next keyframe."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:159
|
||||
msgid "|image17|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:633
|
||||
msgid "image17"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:161
|
||||
msgid "|image18|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:636
|
||||
msgid "image18"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:163
|
||||
msgid "Play the animation again to see the difference. The first half should already feel a bit bouncier."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:166
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:164
|
||||
msgid "Apply an ease-out to the second keyframe in the rotation track."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:166
|
||||
msgid "|image18|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:634
|
||||
msgid "image18"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:168
|
||||
msgid "|image19|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:637
|
||||
msgid "image19"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:170
|
||||
msgid "Do the opposite for the second position keyframe, dragging it to the right."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:170
|
||||
msgid "|image19|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:635
|
||||
msgid "image19"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:172
|
||||
msgid "|image20|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:638
|
||||
msgid "image20"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:174
|
||||
msgid "Your animation should look something like this."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:176
|
||||
msgid "|image21|"
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:174
|
||||
msgid "|image20|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:639
|
||||
msgid "image21"
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:636
|
||||
msgid "image20"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:180
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:178
|
||||
msgid "Animations update the properties of the animated nodes every frame, overriding initial values. If we directly animated the *Player* node, it would prevent us from moving it in code. This is where the *Pivot* node comes in handy: even though we animated the *Character*, we can still move and rotate the *Pivot* and layer changes on top of the animation in a script."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:187
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:185
|
||||
msgid "If you play the game, the player's creature will now float!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:189
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:187
|
||||
msgid "If the creature is a little too close to the floor, you can move the ``Pivot`` up to offset it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:193
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:191
|
||||
msgid "Controlling the animation in code"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:195
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:193
|
||||
msgid "We can use code to control the animation playback based on the player's input. Let's change the animation speed when the character is moving."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:198
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:196
|
||||
msgid "Open the ``Player``'s script by clicking the script icon next to it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:198
|
||||
msgid "|image21|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:637
|
||||
msgid "image21"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:200
|
||||
msgid "|image22|"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:640
|
||||
msgid "image22"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:202
|
||||
msgid "In ``_physics_process()``, after the line where we check the ``direction`` vector, add the following code."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:232
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:230
|
||||
msgid "This code makes it so when the player moves, we multiply the playback speed by ``4``. When they stop, we reset it to normal."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:235
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:233
|
||||
msgid "We mentioned that the ``Pivot`` could layer transforms on top of the animation. We can make the character arc when jumping using the following line of code. Add it at the end of ``_physics_process()``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:256
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:254
|
||||
msgid "Animating the mobs"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:258
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:256
|
||||
msgid "Here's another nice trick with animations in Godot: as long as you use a similar node structure, you can copy them to different scenes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:261
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:259
|
||||
msgid "For example, both the ``Mob`` and the ``Player`` scenes have a ``Pivot`` and a ``Character`` node, so we can reuse animations between them."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:264
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:262
|
||||
msgid "Open the *Player* scene, select the AnimationPlayer node and then click on **Animation > Manage Animations...**. Click the *Copy animation to clipboard* button (two small squares) alongside the *float* animation. Click OK to close the window."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:268
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:266
|
||||
msgid "Then open ``mob.tscn``, create an :ref:`AnimationPlayer <class_AnimationPlayer>` child node and select it. Click **Animation > Manage Animations**, then **New Library**. You should see the message \"Global library will be created.\" Leave the text field blank and click OK. Click the *Paste* icon (clipboard) and it should appear in the window. Click OK to close the window."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:274
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:272
|
||||
msgid "Next, make sure that the autoplay button (|Autoplay|) and the looping arrows (Animation looping) are also turned on in the animation editor in the bottom panel. That's it; all monsters will now play the float animation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:278
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:276
|
||||
msgid "We can change the playback speed based on the creature's ``random_speed``. Open the *Mob*'s script and at the end of the ``initialize()`` function, add the following line."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:296
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:294
|
||||
msgid "And with that, you finished coding your first complete 3D game."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:298
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:296
|
||||
msgid "**Congratulations**!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:300
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:298
|
||||
msgid "In the next part, we'll quickly recap what you learned and give you some links to keep learning more. But for now, here are the complete ``player.gd`` and ``mob.gd`` so you can check your code against them."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:304
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:302
|
||||
msgid "Here's the *Player* script."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:519
|
||||
#: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:517
|
||||
msgid "And the *Mob*'s script."
|
||||
msgstr ""
|
||||
|
||||
@@ -60,185 +60,185 @@ msgid "Let's use instancing in practice to see how it works in Godot. We invite
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:54
|
||||
msgid "Extract the archive on your computer. To import it, you need the Project Manager. The Project Manager is accessed by opening Godot, or if you already have Godot opened, click on *Project -> Quit to Project List* (:kbd:`Ctrl + Shift + Q`, :kbd:`Ctrl + Option + Cmd + Q` on macOS)"
|
||||
msgid "Extract the archive on your computer. To import it, you need the Project Manager. The Project Manager is accessed by opening Godot, or if you already have Godot opened, click on :menu:`Project > Quit to Project List` (:kbd:`Ctrl + Shift + Q`, :kbd:`Ctrl + Option + Cmd + Q` on macOS)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:57
|
||||
msgid "In the Project Manager, click the *Import* button to import the project."
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:58
|
||||
msgid "In the Project Manager, click the :button:`Import` button to import the project."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:61
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:62
|
||||
msgid "In the pop-up that appears navigate to the folder you extracted. Double-click the ``project.godot`` file to open it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:66
|
||||
msgid "Finally, click the Import & Edit button."
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:67
|
||||
msgid "Finally, click the :button:`Import` button."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:70
|
||||
msgid "A window notifying you that the project was last opened in an older Godot version may appear, that's not an issue. Click *Ok* to open the project."
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:71
|
||||
msgid "A window notifying you that the project was last opened in an older Godot version may appear, that's not an issue. Click :button:`Ok` to open the project."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:73
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:74
|
||||
msgid "The project contains two packed scenes: ``main.tscn``, containing walls against which the ball collides, and ``ball.tscn``. The Main scene should open automatically. If you're seeing an empty 3D scene instead of the main scene, click the 2D button at the top of the screen."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:81
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:82
|
||||
msgid "Let's add a ball as a child of the Main node. In the Scene dock, select the Main node. Then, click the link icon at the top of the scene dock. This button allows you to add an instance of a scene as a child of the currently selected node."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:87
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:88
|
||||
msgid "Double-click the ball scene to instance it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:91
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:92
|
||||
msgid "The ball appears in the top-left corner of the viewport."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:95
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:96
|
||||
msgid "Click on it and drag it towards the center of the view."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:99
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:100
|
||||
msgid "Play the game by pressing :kbd:`F5` (:kbd:`Cmd + B` on macOS). You should see it fall."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:101
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:102
|
||||
msgid "Now, we want to create more instances of the Ball node. With the ball still selected, press :kbd:`Ctrl + D` (:kbd:`Cmd + D` on macOS) to call the duplicate command. Click and drag to move the new ball to a different location."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:107
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:108
|
||||
msgid "You can repeat this process until you have several in the scene."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:111
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:112
|
||||
msgid "Play the game again. You should now see every ball fall independently from one another. This is what instances do. Each is an independent reproduction of a template scene."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:116
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:117
|
||||
msgid "Editing scenes and instances"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:118
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:119
|
||||
msgid "There is more to instances. With this feature, you can:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:120
|
||||
msgid "Change the properties of one ball without affecting the others using the Inspector."
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:121
|
||||
msgid "Change the properties of one ball without affecting the others using the :ui:`Inspector`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:122
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:123
|
||||
msgid "Change the default properties of every Ball by opening the ``ball.tscn`` scene and making a change to the Ball node there. Upon saving, all instances of the Ball in the project will see their values update."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:126
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:127
|
||||
msgid "Changing a property on an instance always overrides values from the corresponding packed scene."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:129
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:130
|
||||
msgid "Let's try this. Double-click ``ball.tscn`` in the FileSystem to open it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:133
|
||||
msgid "In the Scene dock on the left, select the Ball node. Then, in the Inspector on the right, click on the PhysicsMaterial property to expand it."
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:134
|
||||
msgid "In the Scene dock on the left, select the Ball node. Then, in the :ui:`Inspector` on the right, click on the :inspector:`PhysicsMaterial` property to expand it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:138
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:139
|
||||
msgid "Set its Bounce property to ``0.5`` by clicking on the number field, typing ``0.5``, and pressing :kbd:`Enter`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:143
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:144
|
||||
msgid "Play the game by pressing :kbd:`F5` (:kbd:`Cmd + B` on macOS) and notice how all balls now bounce a lot more. As the Ball scene is a template for all instances, modifying it and saving causes all instances to update accordingly."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:147
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:148
|
||||
msgid "Let's now adjust an individual instance. Head back to the Main scene by clicking on the corresponding tab above the viewport."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:152
|
||||
msgid "Select one of the instanced Ball nodes and, in the Inspector, set its Gravity Scale value to ``10``."
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:153
|
||||
msgid "Select one of the instanced Ball nodes and, in the :ui:`Inspector`, set its :inspector:`Gravity Scale` value to ``10``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:157
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:158
|
||||
msgid "A grey \"revert\" button appears next to the adjusted property."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:161
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:162
|
||||
msgid "This icon indicates you are overriding a value from the source packed scene. Even if you modify the property in the original scene, the value override will be preserved in the instance. Clicking the revert icon will restore the property to the value in the saved scene."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:166
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:167
|
||||
msgid "Rerun the game and notice how this ball now falls much faster than the others."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:170
|
||||
msgid "You may notice you are unable to change the values of the PhysicsMaterial of the ball. This is because PhysicsMaterial is a *resource*, and needs to be made unique before you can edit it in a scene that is linking to its original scene. To make a resource unique for one instance, right-click on the **Physics Material** property in the Inspector and click **Make Unique** in the context menu."
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:171
|
||||
msgid "You may notice you are unable to change the values of the :inspector:`PhysicsMaterial` of the ball. This is because :inspector:`PhysicsMaterial` is a *resource*, and needs to be made unique before you can edit it in a scene that is linking to its original scene. To make a resource unique for one instance, right-click on the :inspector:`Physics Material` property in the :ui:`Inspector` and click :button:`Make Unique` in the context menu."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:177
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:178
|
||||
msgid "Resources are another essential building block of Godot games we will cover in a later lesson."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:181
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:182
|
||||
msgid "Scene instances as a design language"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:183
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:184
|
||||
msgid "Instances and scenes in Godot offer an excellent design language, setting the engine apart from others out there. We designed Godot around this concept from the ground up."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:187
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:188
|
||||
msgid "We recommend dismissing architectural code patterns when making games with Godot, such as Model-View-Controller (MVC) or Entity-Relationship diagrams. Instead, you can start by imagining the elements players will see in your game and structure your code around them."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:192
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:193
|
||||
msgid "For example, you could break down a shooter game like so:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:196
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:197
|
||||
msgid "You can come up with a diagram like this for almost any type of game. Each rectangle represents an entity that's visible in the game from the player's perspective. The arrows point towards the instantiator of each scene."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:200
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:201
|
||||
msgid "Once you have a diagram, we recommend creating a scene for each element listed in it to develop your game. You'll use instancing, either by code or directly in the editor, to build your tree of scenes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:204
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:205
|
||||
msgid "Programmers tend to spend a lot of time designing abstract architectures and trying to fit components into it. Designing based on scenes makes development faster and more straightforward, allowing you to focus on the game logic itself. Because most game components map directly to a scene, using a design based on scene instantiation means you need little other architectural code."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:210
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:211
|
||||
msgid "Here's the example of a scene diagram for an open-world game with tons of assets and nested elements:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:215
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:216
|
||||
msgid "Imagine we started by creating the room. We could make a couple of different room scenes, with unique arrangements of furniture in them. Later, we could make a house scene that uses multiple room instances for the interior. We would create a citadel out of many instanced houses and a large terrain on which we would place the citadel. Each of these would be a scene instancing one or more sub-scenes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:221
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:222
|
||||
msgid "Later, we could create scenes representing guards and add them to the citadel. They would be indirectly added to the overall game world."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:224
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:225
|
||||
msgid "With Godot, it's easy to iterate on your game like this, as all you need to do is create and instantiate more scenes. We designed the editor to be accessible to programmers, designers, and artists alike. A typical team development process can involve 2D or 3D artists, level designers, game designers, and animators, all working with the Godot editor."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:231
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:232
|
||||
msgid "Summary"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:233
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:234
|
||||
msgid "Instancing, the process of producing an object from a blueprint, has many handy uses. With scenes, it gives you:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:236
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:237
|
||||
msgid "The ability to divide your game into reusable components."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:237
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:238
|
||||
msgid "A tool to structure and encapsulate complex systems."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:238
|
||||
#: ../../docs/getting_started/step_by_step/instancing.rst:239
|
||||
msgid "A language to think about your game project's structure in a natural way."
|
||||
msgstr ""
|
||||
|
||||
@@ -100,7 +100,7 @@ msgid "Let's create our first scene with a single node. To do so, you will need
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:75
|
||||
msgid "In an empty scene, the Scene dock on the left shows several options to add a root node quickly. :button:`2D Scene` adds a :ref:`Node2D <class_Node2D>` node, :button:`3D Scene` adds a :ref:`Node3D <class_Node3D>` node, and :button:`User Interface` adds a :ref:`Control <class_Control>` node. These presets are here for convenience; they are not mandatory. :button:`Other Node` lets you select any node to be the root node. In an empty scene, :button:`Other Node` is equivalent to pressing the :button:`Add Child Node` button at the top-left of the Scene dock, which usually adds a new node as a child of the currently selected node."
|
||||
msgid "In an empty scene, the :ui:`Scene` dock on the left shows several options to add a root node quickly. :button:`2D Scene` adds a :ref:`Node2D <class_Node2D>` node, :button:`3D Scene` adds a :ref:`Node3D <class_Node3D>` node, and :button:`User Interface` adds a :ref:`Control <class_Control>` node. These presets are here for convenience; they are not mandatory. :button:`Other Node` lets you select any node to be the root node. In an empty scene, :button:`Other Node` is equivalent to pressing the :button:`Add Child Node` button at the top-left of the Scene dock, which usually adds a new node as a child of the currently selected node."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:85
|
||||
|
||||
@@ -40,7 +40,7 @@ msgid "Please :ref:`create a new project <doc_creating_and_importing_projects>`
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:44
|
||||
msgid "We need to create a Sprite2D node to display it in the game. In the Scene dock, click the **Other Node** button."
|
||||
msgid "We need to create a Sprite2D node to display it in the game. In the :ui:`Scene` dock, click the :button:`Other Node` button."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:49
|
||||
@@ -48,11 +48,11 @@ msgid "Type \"Sprite2D\" in the search bar to filter nodes and double-click on S
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:54
|
||||
msgid "Your Scene tab should now only have a Sprite2D node."
|
||||
msgid "Your :ui:`Scene` tab should now only have a Sprite2D node."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:58
|
||||
msgid "A Sprite2D node needs a texture to display. In the Inspector on the right, you can see that the **Texture** property says ``<empty>``. To display the Godot icon, click and drag the file ``icon.svg`` from the FileSystem dock onto the Texture slot."
|
||||
msgid "A Sprite2D node needs a texture to display. In the :ui:`Inspector` on the right, you can see that the :inspector:`Texture` property says ``<empty>``. To display the Godot icon, click and drag the file ``icon.svg`` from the FileSystem dock onto the Texture slot."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:67
|
||||
@@ -68,15 +68,15 @@ msgid "Creating a new script"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:77
|
||||
msgid "To create and attach a new script to our node, right-click on Sprite2D in the Scene dock and select **Attach Script**."
|
||||
msgid "To create and attach a new script to our node, right-click on Sprite2D in the Scene dock and select :button:`Attach Script`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:82
|
||||
msgid "The **Attach Node Script** window appears. It allows you to select the script's language and file path, among other options."
|
||||
msgid "The :ui:`Attach Node Script` window appears. It allows you to select the script's language and file path, among other options."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:85
|
||||
msgid "Change the **Template** field from ``Node: Default`` to ``Object: Empty`` to start with a clean file. Leave the other options set to their default values and click the **Create** button to create the script."
|
||||
msgid "Change the :ui:`Template` field from ``Node: Default`` to ``Object: Empty`` to start with a clean file. Leave the other options set to their default values and click the :button:`Create` button to create the script."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:93
|
||||
@@ -84,7 +84,7 @@ msgid "C# script names need to match their class name. In this case, you should
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:96
|
||||
msgid "The Script workspace should appear with your new ``sprite_2d.gd`` file open and the following line of code:"
|
||||
msgid "The :ui:`Script` workspace should appear with your new ``sprite_2d.gd`` file open and the following line of code:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:113
|
||||
@@ -96,15 +96,15 @@ msgid "In GDScript, if you omit the line with the ``extends`` keyword, your clas
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:123
|
||||
msgid "Inherited properties include the ones you can see in the Inspector dock, like our node's ``texture``."
|
||||
msgid "Inherited properties include the ones you can see in the :ui:`Inspector` dock, like our node's ``texture``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:128
|
||||
msgid "By default, the Inspector displays a node's properties in \"Title Case\", with capitalized words separated by a space. In GDScript code, these properties are in \"snake_case\", which is lowercase with words separated by an underscore."
|
||||
msgid "By default, the :ui:`Inspector` displays a node's properties in \"Title Case\", with capitalized words separated by a space. In GDScript code, these properties are in \"snake_case\", which is lowercase with words separated by an underscore."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:132
|
||||
msgid "You can hover over any property's name in the Inspector to see a description and its identifier in code."
|
||||
msgid "You can hover over any property's name in the :ui:`Inspector` to see a description and its identifier in code."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:136
|
||||
@@ -128,7 +128,7 @@ msgid "GDScript is an indent-based language. The tab at the start of the line th
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:167
|
||||
msgid "Save the scene as ``sprite_2d.tscn`` if you haven't already, then press :kbd:`F6` (:kbd:`Cmd + R` on macOS) to run it. Look at the **Output** bottom panel that expands. It should display \"Hello, world!\"."
|
||||
msgid "Save the scene as ``sprite_2d.tscn`` if you haven't already, then press :kbd:`F6` (:kbd:`Cmd + R` on macOS) to run it. Look at the :ui:`Output` bottom panel that expands. It should display \"Hello, world!\"."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:173
|
||||
@@ -140,7 +140,7 @@ msgid "Turning around"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:179
|
||||
msgid "It's time to make our node move and rotate. To do so, we're going to add two member variables to our script: the movement speed in pixels per second and the angular speed in radians per second. Add the following after the ``extends Sprite2D`` line."
|
||||
msgid "It's time to make our node move and rotate. To do so, we're going to add two member variables to our script: the movement speed in pixels per second and the angular speed in radians per second. Add the following after the ``extends Sprite2D`` line."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_first_script.rst:194
|
||||
|
||||
@@ -60,7 +60,7 @@ msgid "The two actions we use above, \"ui_left\" and \"ui_right\", are predefine
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_player_input.rst:77
|
||||
msgid "You can see and edit input actions in your project by going to Project -> Project Settings and clicking on the Input Map tab."
|
||||
msgid "You can see and edit input actions in your project by going to :menu:`Project > Project Settings` and clicking on the :ui:`Input Map` tab."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/scripting_player_input.rst:80
|
||||
|
||||
@@ -68,11 +68,11 @@ msgid "To add a button to our game, we will create a new scene which will includ
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:61
|
||||
msgid "Create a new scene by going to the menu Scene -> New Scene."
|
||||
msgid "Create a new scene by going to the menu :menu:`Scene > New Scene`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:65
|
||||
msgid "In the Scene dock, click the 2D Scene button. This will add a :ref:`Node2D <class_Node2D>` as our root."
|
||||
msgid "In the Scene dock, click the :button:`2D Scene` button. This will add a :ref:`Node2D <class_Node2D>` as our root."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:70
|
||||
@@ -80,7 +80,7 @@ msgid "In the FileSystem dock, click and drag the ``sprite_2d.tscn`` file you sa
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:75
|
||||
msgid "We want to add another node as a sibling of the Sprite2D. To do so, right-click on Node2D and select Add Child Node."
|
||||
msgid "We want to add another node as a sibling of the Sprite2D. To do so, right-click on Node2D and select :button:`Add Child Node`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:80
|
||||
@@ -100,7 +100,7 @@ msgid "Click and drag on the button itself to move it closer to the sprite."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:95
|
||||
msgid "You can also write a label on the Button by editing its Text property in the Inspector. Enter ``Toggle motion``."
|
||||
msgid "You can also write a label on the Button by editing its :inspector:`Text` property in the :ui:`Inspector`. Enter ``Toggle motion``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:100
|
||||
@@ -120,201 +120,201 @@ msgid "Here, we want to connect the Button's \"pressed\" signal to our Sprite2D,
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:117
|
||||
msgid "You can connect signals in the Node dock. Select the Button node and, on the right side of the editor, click on the tab named \"Node\" next to the Inspector."
|
||||
msgid "You can connect signals in the :ui:`Node` dock. Select the Button node and, on the right side of the editor, click on the tab named :ui:`Node` next to the :ui:`Inspector`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:122
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:123
|
||||
msgid "The dock displays a list of signals available on the selected node."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:126
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:127
|
||||
msgid "Double-click the \"pressed\" signal to open the node connection window."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:130
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:131
|
||||
msgid "There, you can connect the signal to the Sprite2D node. The node needs a receiver method, a function that Godot will call when the Button emits the signal. The editor generates one for you. By convention, we name these callback methods \"_on_node_name_signal_name\". Here, it'll be \"_on_button_pressed\"."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:137
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:138
|
||||
msgid "When connecting signals via the editor's Node dock, you can use two modes. The simple one only allows you to connect to nodes that have a script attached to them and creates a new callback function on them."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:143
|
||||
msgid "The advanced view lets you connect to any node and any built-in function, add arguments to the callback, and set options. You can toggle the mode in the window's bottom-right by clicking the Advanced button."
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:144
|
||||
msgid "The advanced view lets you connect to any node and any built-in function, add arguments to the callback, and set options. You can toggle the mode in the window's bottom-right by clicking the :button:`Advanced` button."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:150
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:151
|
||||
msgid "If you are using an external editor (such as VS Code), this automatic code generation might not work. In this case, you need to connect the signal via code as explained in the next section."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:154
|
||||
msgid "Click the Connect button to complete the signal connection and jump to the Script workspace. You should see the new method with a connection icon in the left margin."
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:155
|
||||
msgid "Click the :button:`Connect` button to complete the signal connection and jump to the :ui:`Script` workspace. You should see the new method with a connection icon in the left margin."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:160
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:161
|
||||
msgid "If you click the icon, a window pops up and displays information about the connection. This feature is only available when connecting nodes in the editor."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:165
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:166
|
||||
msgid "Let's replace the line with the ``pass`` keyword with code that'll toggle the node's motion."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:168
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:169
|
||||
msgid "Our Sprite2D moves thanks to code in the ``_process()`` function. Godot provides a method to toggle processing on and off: :ref:`Node.set_process() <class_Node_method_set_process>`. Another method of the Node class, ``is_processing()``, returns ``true`` if idle processing is active. We can use the ``not`` keyword to invert the value."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:188
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:189
|
||||
msgid "This function will toggle processing and, in turn, the icon's motion on and off upon pressing the button."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:191
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:192
|
||||
msgid "Before trying the game, we need to simplify our ``_process()`` function to move the node automatically and not wait for user input. Replace it with the following code, which we saw two lessons ago:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:212
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:213
|
||||
msgid "Your complete ``sprite_2d.gd`` code should look like the following."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:255
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:256
|
||||
msgid "Run the current scene by pressing :kbd:`F6` (:kbd:`Cmd + R` on macOS), and click the button to see the sprite start and stop."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:259
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:260
|
||||
msgid "Connecting a signal via code"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:261
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:262
|
||||
msgid "You can connect signals via code instead of using the editor. This is necessary when you create nodes or instantiate scenes inside of a script."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:264
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:265
|
||||
msgid "Let's use a different node here. Godot has a :ref:`Timer <class_Timer>` node that's useful to implement skill cooldown times, weapon reloading, and more."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:267
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:268
|
||||
msgid "Head back to the 2D workspace. You can either click the \"2D\" text at the top of the window or press :kbd:`Ctrl + F1` (:kbd:`Ctrl + Cmd + 1` on macOS)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:270
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:271
|
||||
msgid "In the Scene dock, right-click on the Sprite2D node and add a new child node. Search for Timer and add the corresponding node. Your scene should now look like this."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:276
|
||||
msgid "With the Timer node selected, go to the Inspector and enable the **Autostart** property."
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:277
|
||||
msgid "With the Timer node selected, go to the :ui:`Inspector` and enable the :inspector:`Autostart` property."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:281
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:282
|
||||
msgid "Click the script icon next to Sprite2D to jump back to the scripting workspace."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:285
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:286
|
||||
msgid "We need to do two operations to connect the nodes via code:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:287
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:288
|
||||
msgid "Get a reference to the Timer from the Sprite2D."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:288
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:289
|
||||
msgid "Call the ``connect()`` method on the Timer's \"timeout\" signal."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:290
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:291
|
||||
msgid "To connect to a signal via code, you need to call the ``connect()`` method of the signal you want to listen to. In this case, we want to listen to the Timer's \"timeout\" signal."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:294
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:295
|
||||
msgid "We want to connect the signal when the scene is instantiated, and we can do that using the :ref:`Node._ready() <class_Node_private_method__ready>` built-in function, which is called automatically by the engine when a node is fully instantiated."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:298
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:299
|
||||
msgid "To get a reference to a node relative to the current one, we use the method :ref:`Node.get_node() <class_Node_method_get_node>`. We can store the reference in a variable."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:315
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:316
|
||||
msgid "The function ``get_node()`` looks at the Sprite2D's children and gets nodes by their name. For example, if you renamed the Timer node to \"BlinkingTimer\" in the editor, you would have to change the call to ``get_node(\"BlinkingTimer\")``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:321
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:322
|
||||
msgid "We can now connect the Timer to the Sprite2D in the ``_ready()`` function."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:338
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:339
|
||||
msgid "The line reads like so: we connect the Timer's \"timeout\" signal to the node to which the script is attached. When the Timer emits ``timeout``, we want to call the function ``_on_timer_timeout()``, that we need to define. Let's add it at the bottom of our script and use it to toggle our sprite's visibility."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:343
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:344
|
||||
msgid "By convention, we name these callback methods in GDScript as \"_on_node_name_signal_name\" and in C# as \"OnNodeNameSignalName\". Here, it'll be \"_on_timer_timeout\" for GDScript and OnTimerTimeout() for C#."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:360
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:361
|
||||
msgid "The ``visible`` property is a boolean that controls the visibility of our node. The line ``visible = not visible`` toggles the value. If ``visible`` is ``true``, it becomes ``false``, and vice-versa."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:364
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:365
|
||||
msgid "If you run the Node2D scene now, you will see that the sprite blinks on and off, at one second intervals."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:368
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:369
|
||||
msgid "Complete script"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:370
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:371
|
||||
msgid "That's it for our little moving and blinking Godot icon demo! Here is the complete ``sprite_2d.gd`` file for reference."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:435
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:436
|
||||
msgid "Custom signals"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:437
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:438
|
||||
msgid "This section is a reference on how to define and use your own signals, and does not build upon the project created in previous lessons."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:440
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:441
|
||||
msgid "You can define custom signals in a script. Say, for example, that you want to show a game over screen when the player's health reaches zero. To do so, you could define a signal named \"died\" or \"health_depleted\" when their health reaches 0."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:466
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:467
|
||||
msgid "As signals represent events that just occurred, we generally use an action verb in the past tense in their names."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:469
|
||||
msgid "Your signals work the same way as built-in ones: they appear in the Node tab and you can connect to them like any other."
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:470
|
||||
msgid "Your signals work the same way as built-in ones: they appear in the :ui:`Node` tab and you can connect to them like any other."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:474
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:475
|
||||
msgid "To emit a signal in your scripts, call ``emit()`` on the signal."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:496
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:497
|
||||
msgid "A signal can optionally declare one or more arguments. Specify the argument names between parentheses:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:522
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:523
|
||||
msgid "The signal arguments show up in the editor's node dock, and Godot can use them to generate callback functions for you. However, you can still emit any number of arguments when you emit signals. So it's up to you to emit the correct values."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:527
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:528
|
||||
msgid "To emit values along with the signal, add them as extra arguments to the ``emit()`` function:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:548
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:549
|
||||
msgid "Summary"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:550
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:551
|
||||
msgid "Any node in Godot emits signals when something specific happens to them, like a button being pressed. Other nodes can connect to individual signals and react to selected events."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:554
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:555
|
||||
msgid "Signals have many uses. With them, you can react to a node entering or exiting the game world, to a collision, to a character entering or leaving an area, to an element of the interface changing size, and much more."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:558
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:559
|
||||
msgid "For example, an :ref:`Area2D <class_Area2D>` representing a coin emits a ``body_entered`` signal whenever the player's physics body enters its collision shape, allowing you to know when the player collected it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:562
|
||||
#: ../../docs/getting_started/step_by_step/signals.rst:563
|
||||
msgid "In the next section, :ref:`doc_your_first_2d_game`, you'll create a complete 2D game and put everything you learned so far into practice."
|
||||
msgstr ""
|
||||
|
||||
@@ -76,5 +76,5 @@ msgid "The default values are good enough for many cases, but you can change gro
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/2d/2d_meshes.rst:52
|
||||
msgid "Finally, push the ``Convert 2D Mesh`` button and your Sprite2D will be replaced:"
|
||||
msgid "Finally, push the :button:`Convert 2D Mesh` button and your Sprite2D will be replaced:"
|
||||
msgstr ""
|
||||
|
||||
@@ -172,7 +172,7 @@ msgid "SDF collision nodes create a `signed distance field <https://www.reddit.c
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/particles/collision.rst:144
|
||||
msgid "To create an SDF collision node, add a new child node to your scene and select ``GPUParticlesCollisionSDF3D`` from the list of available nodes. SDF collision nodes have to be baked in order to have any effect on particles in the level. To do that, click the ``Bake SDF`` button in the viewport toolbar while the SDF collision node is selected and choose a directory to store the baked data. Since SDF collision needs to be baked in the editor, it's static and cannot change at runtime."
|
||||
msgid "To create an SDF collision node, add a new child node to your scene and select ``GPUParticlesCollisionSDF3D`` from the list of available nodes. SDF collision nodes have to be baked in order to have any effect on particles in the level. To do that, click the :button:`Bake SDF` button in the viewport toolbar while the SDF collision node is selected and choose a directory to store the baked data. Since SDF collision needs to be baked in the editor, it's static and cannot change at runtime."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/particles/collision.rst:150
|
||||
|
||||
@@ -104,165 +104,177 @@ msgid "The baked cell size of the NavigationMesh must match the NavigationServer
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:93
|
||||
msgid "MeshLibrary format"
|
||||
msgid "Lightmaps"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:95
|
||||
msgid "To summarize the specific constraints of the MeshLibrary format, a MeshLibrary scene has a Node3D as the root node, and several child nodes which will become MeshLibrary items. Each child of the root node should:"
|
||||
msgid "It is possible to bake lightmaps onto a GridMap. Lightmap UV2 data will be reused from meshes if already present. If UV2 data is not present, then it will be automatically generated on bake with a lightmap texel size of 0.1 units. To generate UV2 data with a different lightmap texel size, you can set the global illumination mode in the Import dock to **Static Lightmaps** and specify the texel size there. This option must be changed *before* the scene is converted to a MeshLibrary, as changing it later on will not affect the existing MeshLibrary data."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:99
|
||||
msgid "Be a :ref:`class_MeshInstance3D`, which will become the MeshLibrary item. Only this visual mesh will be exported."
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:104
|
||||
msgid "Aside from this peculiarity, the lightmap baking process is the same as for any other 3D scene. See :ref:`doc_using_lightmap_gi` for more information about lightmap baking."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:101
|
||||
msgid "Have a material, in the mesh's material slot, *not* the MeshInstance3D's material slots."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:103
|
||||
msgid "Have up to one :ref:`class_StaticBody3D` child, for collision. The StaticBody3D should have one or more :ref:`class_CollisionShape3D` children."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:105
|
||||
msgid "Have up to one :ref:`class_NavigationRegion3D` child, for navigation. The NavigationRegion3D can have one or more additional :ref:`class_MeshInstance3D` children, which can be baked for navigation, but won't be exported as a visual mesh."
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:108
|
||||
msgid "MeshLibrary format"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:110
|
||||
msgid "Only this specific format is recognized. Other node types placed as children will not be recognized and exported. GridMap is not a general-purpose system for placing *nodes* on a grid, but rather a specific, optimized system, designed to place *meshes* with collisions and navigation."
|
||||
msgid "To summarize the specific constraints of the MeshLibrary format, a MeshLibrary scene has a Node3D as the root node, and several child nodes which will become MeshLibrary items. Each child of the root node should:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:114
|
||||
msgid "Be a :ref:`class_MeshInstance3D`, which will become the MeshLibrary item. Only this visual mesh will be exported."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:116
|
||||
msgid "Exporting the MeshLibrary"
|
||||
msgid "Have a material, in the mesh's material slot, *not* the MeshInstance3D's material slots."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:118
|
||||
msgid "Have up to one :ref:`class_StaticBody3D` child, for collision. The StaticBody3D should have one or more :ref:`class_CollisionShape3D` children."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:120
|
||||
msgid "Have up to one :ref:`class_NavigationRegion3D` child, for navigation. The NavigationRegion3D can have one or more additional :ref:`class_MeshInstance3D` children, which can be baked for navigation, but won't be exported as a visual mesh."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:125
|
||||
msgid "Only this specific format is recognized. Other node types placed as children will not be recognized and exported. GridMap is not a general-purpose system for placing *nodes* on a grid, but rather a specific, optimized system, designed to place *meshes* with collisions and navigation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:131
|
||||
msgid "Exporting the MeshLibrary"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:133
|
||||
msgid "To export the library, click on **Scene > Export As... > MeshLibrary...**, and save it as a resource."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:123
|
||||
msgid "You can find an already exported MeshLibrary in the project named \"MeshLibrary.tres\"."
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:138
|
||||
msgid "You can find an already exported MeshLibrary in the project named ``MeshLibrary.tres``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:126
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:141
|
||||
msgid "Using GridMap"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:128
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:143
|
||||
msgid "Create a new scene and add a GridMap node. Add the mesh library by dragging the resource file from the FileSystem dock and dropping it in the **Mesh Library** property in the Inspector."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:135
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:150
|
||||
msgid "Inspector properties"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:137
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:152
|
||||
msgid "The **Physics Material** setting allows you to override the physics material for every mesh in the NavigationMesh."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:140
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:155
|
||||
msgid "Under **Cells**, the **Size** property should be set to the size of your meshes. You can leave it at the default value for the demo. Uncheck the **Center Y** property."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:143
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:158
|
||||
msgid "The **Collision** options allow you to set the collision layer, collision mask, and priority for the entire grid. For more information on how those work see the :ref:`doc_physics_index` section."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:147
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:162
|
||||
msgid "Under **Navigation** is the \"Bake Navigation\" option. If enabled it creates a navigation region for each cell that uses a mesh library item with a navigation mesh."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:151
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:166
|
||||
msgid "If you click on the MeshLibrary itself in the inspector you can adjust settings for individual meshes, such as their navigation mesh, navigation layers, or if the mesh casts shadows."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:158
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:173
|
||||
msgid "GridMap panel"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:160
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:175
|
||||
msgid "At the bottom of the editor is the GridMap panel, which should have opened automatically when you added the GridMap node."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:165
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:180
|
||||
msgid "From left to right in the toolbar:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:167
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:182
|
||||
msgid "**Transform**: Adds a gizmo to the scene that allows you to change the relative position and rotation of the gridmap in the scene."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:169
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:184
|
||||
msgid "**Selection**: While active you can select an area in the viewport, click and drag to select more than one space on the grid."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:171
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:186
|
||||
msgid "**Erase**: While active, click in the viewport and delete meshes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:172
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:187
|
||||
msgid "**Paint**: While active, click in the viewport and add whatever mesh is currently selected in the GridMap panel to the scene."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:174
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:189
|
||||
msgid "**Pick**: While active, clicking on a gridmap mesh in the viewport will cause it to be selected in the GridMap panel."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:176
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:191
|
||||
msgid "**Fill**: Fill the area that has been selected in the viewport with whatever mesh is selected in the GridMap bottom panel."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:178
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:193
|
||||
msgid "**Move**: Move whatever mesh or meshes are currently selected in the viewport."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:179
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:194
|
||||
msgid "**Duplicate**: Create a copy of whatever the selected mesh or meshes in the GridMap are."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:181
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:196
|
||||
msgid "**Delete**: Similar to erase, but for the entire selected area."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:182
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:197
|
||||
msgid "**Cursor Rotate X**: While the paint tool is selected, this will rotate the mesh that will be painted on the X-axis. This will also rotate selected areas if they are being moved."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:185
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:200
|
||||
msgid "**Cursor Rotate Y**: While the paint tool is selected, this will rotate the mesh that will be painted on the Y-axis. This will also rotate selected areas if they are being moved."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:188
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:203
|
||||
msgid "**Cursor Rotate Z**: While the paint tool is selected, this will rotate the mesh that will be painted on the Z-axis. This will also rotate selected areas if they are being moved."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:191
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:206
|
||||
msgid "**Change Grid Floor**: Adjusts what floor is currently being worked on, can be changed with the arrows or typing"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:193
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:208
|
||||
msgid "**Filter Meshes**: Used to search for a specific mesh in the bottom panel."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:194
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:209
|
||||
msgid "**Zoom**: Controls the zoom level on meshes in the bottom panel."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:195
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:210
|
||||
msgid "**Layout toggles**: These two buttons toggle between different layouts for meshes in the bottom panel."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:197
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:212
|
||||
msgid "**Tools dropdown**: This button opens a dropdown menu with a few more options."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:201
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:216
|
||||
msgid "Clicking on **Settings** in that dropdown brings up a window that allows you to change the **Pick Distance**, which is the maximum distance at which tiles can be placed on a GridMap, relative to the camera position (in meters)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:206
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:221
|
||||
msgid "Using GridMap in code"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:208
|
||||
#: ../../docs/tutorials/3d/using_gridmaps.rst:223
|
||||
msgid "See :ref:`class_GridMap` for details on the node's methods and member variables."
|
||||
msgstr ""
|
||||
|
||||
@@ -152,7 +152,7 @@ msgid "Keep going and build the whole skeleton:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/2d_skeletons.rst:144
|
||||
msgid "You will notice that all bones raise a warning about a missing rest pose. A rest pose is the default pose for a skeleton, you can come back to it anytime you want (which is very handy for animating). To set one click on the *skeleton* node in the scene tree, then click on the ``Skeleton2D`` button in the toolbar, and select ``Overwrite Rest Pose`` from the dropdown menu."
|
||||
msgid "You will notice that all bones raise a warning about a missing rest pose. A rest pose is the default pose for a skeleton, you can come back to it anytime you want (which is very handy for animating). To set one click on the *skeleton* node in the scene tree, then click on the :button:`Skeleton2D` button in the toolbar, and select ``Overwrite Rest Pose`` from the dropdown menu."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/2d_skeletons.rst:152
|
||||
|
||||
@@ -108,7 +108,7 @@ msgid "When you make an ``AnimationNodeBlendTree``, you get an empty 2d graph in
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/animation_tree.rst:66
|
||||
msgid "In order for animations to play, a node has to be connected to to the output. You can add nodes from the **Add Node..** menu or by right clicking an empty space:"
|
||||
msgid "In order for animations to play, a node has to be connected to the output. You can add nodes from the **Add Node..** menu or by right clicking an empty space:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/animation_tree.rst:70
|
||||
|
||||
@@ -89,328 +89,364 @@ msgid "Movie Maker mode is disabled, click the \"movie reel\" icon to enable"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:69
|
||||
msgid "The icon gets a background matching the accent color when Movie Maker mode is enabled:"
|
||||
msgid "A menu will be displayed with options to enable Movie Maker mode and to go to the settings. The icon gets a background matching the accent color when Movie Maker mode is enabled:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:72
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:76
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:73
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:77
|
||||
msgid "Movie Maker mode is enabled, click the \"movie reel\" icon again to disable"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:78
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:79
|
||||
msgid "Movie Maker status is **not** persisted when the editor quits, so you must re-enable Movie Maker mode again after restarting the editor if needed."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:83
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:84
|
||||
msgid "Toggling Movie Maker mode while running the project will not have any effect until the project is restarted."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:86
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:87
|
||||
msgid "Before you can record video by running the project, you still need to configure the output file path. This path can be set for all scenes in the Project Settings:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:89
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:93
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:90
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:94
|
||||
msgid "Movie Maker project settings (with Advanced toggle enabled)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:95
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:96
|
||||
msgid "Alternatively, you can set the output file path on a per-scene basis by adding a String metadata with the name ``movie_file`` to the scene's **root node**. This is only used when the main scene is set to the scene in question, or when running the scene directly by pressing :kbd:`F6` (:kbd:`Cmd + R` on macOS)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:100
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:104
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:101
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:105
|
||||
msgid "Inspector view after creating a ``movie_file`` metadata of type String"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:106
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:107
|
||||
msgid "The path specified in the project settings or metadata can be either absolute, or relative to the project root."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:109
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:110
|
||||
msgid "Once you've configured and enabled Movie Maker mode, it will be automatically used when running the project from the editor."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:113
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:114
|
||||
msgid "Command line usage"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:115
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:116
|
||||
msgid "Movie Maker can also be enabled from the :ref:`command line <doc_command_line_tutorial>`:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:121
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:122
|
||||
msgid "If the output path is relative, then it is **relative to the project folder**, not the current working directory. In the above example, the file will be written to ``/path/to/your_project/output.avi``. This behavior is similar to the ``--export-release`` command line argument."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:126
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:127
|
||||
msgid "Since Movie Maker's output resolution is set by the viewport size, you can adjust the window size on startup to override it if the project uses the ``disabled`` or ``canvas_items`` :ref:`stretch mode <doc_multiple_resolutions>`:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:134
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:135
|
||||
msgid "Note that the window size is clamped by your display's resolution. See :ref:`doc_creating_movies_recording_at_higher_resolution` if you need to record a video at a higher resolution than the screen resolution."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:138
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:139
|
||||
msgid "The recording FPS can also be overridden on the command line, without having to edit the Project Settings:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:147
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:148
|
||||
msgid "The ``--write-movie`` and ``--fixed-fps`` command line arguments are both available in exported projects. Movie Maker mode cannot be toggled while the project is running, but you can use the :ref:`OS.execute() <class_OS_method_execute>` method to run a second instance of the exported project that will record a video file."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:153
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:154
|
||||
msgid "Choosing an output format"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:155
|
||||
msgid "Output formats are provided by the :ref:`MovieWriter <class_MovieWriter>` class. Godot has 2 built-in :ref:`MovieWriters <class_MovieWriter>`, and more can be implemented by extensions:"
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:156
|
||||
msgid "Output formats are provided by the :ref:`MovieWriter <class_MovieWriter>` class. Godot has 3 built-in :ref:`MovieWriters <class_MovieWriter>`, and more can be implemented by extensions:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:160
|
||||
msgid "AVI (recommended)"
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:161
|
||||
msgid "OGV (recommended)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:162
|
||||
msgid "AVI container with MJPEG for video and uncompressed audio. Features lossy video compression, resulting in medium file sizes and fast encoding. The lossy compression quality can be adjusted by changing **Editor > Movie Writer > MJPEG Quality**."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:167
|
||||
msgid "The resulting file can be viewed in most video players, but it must be converted to another format for viewing on the web or by Godot with the VideoStreamPlayer node. MJPEG does not support transparency. AVI output is currently limited to a file of 4 GB in size at most."
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:163
|
||||
msgid "OGV container with Theora for video and Vorbis for audio. Features lossy video and audio compression with a good balance of file size and encoding speed, with a better image quality than MJPEG. It has 4 speed levels that can be adjusted by changing **Editor > Movie Writer > Encoding Speed** with the fastest one being around as fast as AVI with better compression. At slower speed levels, it can compress even better while keeping the same image quality. The lossy compression quality can be adjusted by changing **Editor > Movie Writer > Video Quality** for video and **Editor > Movie Writer > Audio Quality** for audio."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:172
|
||||
msgid "To use AVI, specify a path to a ``.avi`` file to be created in the **Editor > Movie Writer > Movie File** project setting."
|
||||
msgid "The Keyframe Interval can be adjusted by changing **Editor > Movie Writer > Keyframe Interval**. In some cases, increasing this setting can improve compression efficiency without downsides."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:176
|
||||
msgid "PNG"
|
||||
msgid "The resulting file can be viewed in Godot with :ref:`VideoStreamPlayer <class_VideoStreamPlayer>` and most video players but not web browsers. OGV does not support transparency."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:178
|
||||
msgid "PNG image sequence for video and WAV for audio. Features lossless video compression, at the cost of large file sizes and slow encoding. This is designed to be :ref:`encoded to a video file with an external tool after recording <doc_creating_movies_converting_avi>`."
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:180
|
||||
msgid "To use OGV, specify a path to a ``.ogv`` file to be created in the **Editor > Movie Writer > Movie File** project setting."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:183
|
||||
msgid "Transparency is supported, but the root viewport **must** have its ``transparent_bg`` property set to ``true`` for transparency to be visible on the output image. This can be achieved by enabling the **Rendering > Transparent Background** advanced project setting. **Display > Window > Size > Transparent** and **Display > Window > Per Pixel Transparency > Enabled** can optionally be enabled to allow transparency to be previewed while recording the video, but they do not have to be enabled for the output image to contain transparency."
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:185
|
||||
msgid "OGV can only be recorded in editor builds. On the other hand, :ref:`OGV playback <doc_playing_videos>` is possible in both editor and export template builds."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:191
|
||||
msgid "To use PNG, specify a ``.png`` file to be created in the **Editor > Movie Writer > Movie File** project setting. The generated ``.wav`` file will have the same name as the ``.png`` file (minus the extension)."
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:190
|
||||
msgid "AVI"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:196
|
||||
msgid "Custom"
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:192
|
||||
msgid "AVI container with MJPEG for video and uncompressed audio. Features lossy video compression, resulting in medium file sizes and fast encoding. The lossy compression quality can be adjusted by changing **Editor > Movie Writer > Video Quality**."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:198
|
||||
msgid "If you need to encode directly to a different format or pipe a stream through third-party software, you can extend the MovieWriter class to create your own movie writers. This should typically be done using GDExtension for performance reasons."
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:197
|
||||
msgid "The resulting file can be viewed in most video players, but it must be converted to another format for viewing on the web or by Godot with the VideoStreamPlayer node. MJPEG does not support transparency. AVI output is currently limited to a file of 4 GB in size at most."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:204
|
||||
msgid "Configuration"
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:202
|
||||
msgid "To use AVI, specify a path to a ``.avi`` file to be created in the **Editor > Movie Writer > Movie File** project setting."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:206
|
||||
msgid "PNG"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:208
|
||||
msgid "PNG image sequence for video and WAV for audio. Features lossless video compression, at the cost of large file sizes and slow encoding. This is designed to be :ref:`encoded to a video file with an external tool after recording <doc_creating_movies_converting_avi>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:213
|
||||
msgid "Transparency is supported, but the root viewport **must** have its ``transparent_bg`` property set to ``true`` for transparency to be visible on the output image. This can be achieved by enabling the **Rendering > Transparent Background** advanced project setting. **Display > Window > Size > Transparent** and **Display > Window > Per Pixel Transparency > Enabled** can optionally be enabled to allow transparency to be previewed while recording the video, but they do not have to be enabled for the output image to contain transparency."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:221
|
||||
msgid "To use PNG, specify a ``.png`` file to be created in the **Editor > Movie Writer > Movie File** project setting. The generated ``.wav`` file will have the same name as the ``.png`` file (minus the extension)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:226
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:228
|
||||
msgid "If you need to encode directly to a different format or pipe a stream through third-party software, you can extend the MovieWriter class to create your own movie writers. This should typically be done using GDExtension for performance reasons."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:234
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:236
|
||||
msgid "In the **Editor > Movie Writer** section of the Project Settings, there are several options you can configure. Some of them are only visible after enabling the **Advanced** toggle in the top-right corner of the Project Settings dialog."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:210
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:240
|
||||
msgid "**Mix Rate Hz:** The audio mix rate to use in the recorded audio when writing a movie. This can be different from the project's mix rate, but this value must be divisible by the recorded FPS to prevent audio from desynchronizing over time."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:214
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:244
|
||||
msgid "**Speaker Mode:** The speaker mode to use in the recorded audio when writing a movie (stereo, 5.1 surround or 7.1 surround)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:216
|
||||
msgid "**MJPEG Quality:** The JPEG quality to use when writing a video to an AVI file, between ``0.01`` and ``1.0`` (inclusive). Higher quality values result in better-looking output at the cost of larger file sizes. Recommended quality values are between ``0.75`` and ``0.9``. Even at quality ``1.0``, JPEG compression remains lossy. This setting does not affect audio quality and is ignored when writing to a PNG image sequence."
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:246
|
||||
msgid "**Video Quality:** The image quality to use when writing a video to an OGV or AVI file, between ``0.01`` and ``1.0`` (inclusive). Higher quality values result in better-looking output at the cost of larger file sizes. Recommended quality values are between ``0.75`` and ``0.9``. Even at quality ``1.0``, compression remains lossy. This setting does not affect audio quality and is ignored when writing to a PNG image sequence."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:222
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:252
|
||||
msgid "**Movie File:** The output path for the movie. This can be absolute or relative to the project root."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:224
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:254
|
||||
msgid "**Disable V-Sync:** If enabled, requests V-Sync to be disabled when writing a movie. This can speed up video writing if the hardware is fast enough to render, encode and save the video at a framerate higher than the monitor's refresh rate. This setting has no effect if the operating system or graphics driver forces V-Sync with no way for applications to disable it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:229
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:259
|
||||
msgid "**FPS:** The rendered frames per second in the output movie. Higher values result in smoother animation, at the cost of longer rendering times and larger output file sizes. Most video hosting platforms do not support FPS values higher than 60, but you can use a higher value and use that to generate motion blur."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:237
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:264
|
||||
msgid "**Audio Quality:** The audio quality to use when writing a video to an OGV file, between ``-0.1`` and ``1.0`` (inclusive). Higher quality values result in better audio quality at the cost of very slightly larger file sizes. Recommended quality values are between ``0.3`` and ``0.5``. Even at quality ``1.0``, compression remains lossy."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:269
|
||||
msgid "**Encoding Speed:** The speed level to use when writing a video to an OGV file. Faster speed levels have less compression efficiency. The image quality stays barely the same."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:272
|
||||
msgid "**Keyframe Interval:** Also known as GOP (Group Of Pictures), the maximum number of inter-frames to use when writing to an OGV file. Higher values can improve compression efficiency without quality loss but at the cost of slower video seeks."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:279
|
||||
msgid "When using the ``disabled`` or ``2d`` :ref:`stretch modes <doc_multiple_resolutions>`, the output file's resolution is set by the window size. Make sure to resize the window *before* the splash screen has ended. For this purpose, it's recommended to adjust the **Display > Window > Size > Window Width Override** and **Window Height Override** advanced project settings."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:244
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:286
|
||||
msgid "See also :ref:`doc_creating_movies_recording_at_higher_resolution`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:247
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:289
|
||||
msgid "Quitting Movie Maker mode"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:249
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:291
|
||||
msgid "To safely quit a project that is using Movie Maker mode, use the X button at the top of the window, or call ``get_tree().quit()`` in a script. You can also use the ``--quit-after N`` command line argument where ``N`` is the number of frames to render before quitting."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:254
|
||||
msgid "Pressing :kbd:`F8` (:kbd:`Cmd + .` on macOS) or pressing :kbd:`Ctrl + C` on the terminal running Godot is **not recommended**, as it will result in an improperly formatted AVI file with no duration information. For PNG image sequences, PNG images will not be negatively altered, but the associated WAV file will still lack duration information."
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:296
|
||||
msgid "Pressing :kbd:`F8` (:kbd:`Cmd + .` on macOS) or pressing :kbd:`Ctrl + C` on the terminal running Godot is **not recommended**, as it will result in an improperly formatted AVI file with no duration information. For PNG image sequences, PNG images will not be negatively altered, but the associated WAV file will still lack duration information. OGV files might end up with slightly different duration video and audio tracks but still valid."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:260
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:303
|
||||
msgid "Some video players may still be able to play the AVI or WAV file with working video and audio. However, software that makes use of the AVI or WAV file such as video editors may not be able to open the file. :ref:`Using a video converter program <doc_creating_movies_converting_avi>` can help in those cases."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:266
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:309
|
||||
msgid "If you're using an AnimationPlayer to control a \"main action\" in the scene (such as camera movement), you can enable the **Movie Quit On Finish** property on the AnimationPlayer node in question. When enabled, this property will make Godot quit on its own when an animation is done playing *and* the engine is running in Movie Maker mode. Note that *this property has no effect on looping animations*. Therefore, you need to make sure that the animation is set as non-looping."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:274
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:317
|
||||
msgid "Using high-quality graphics settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:276
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:319
|
||||
msgid "The ``movie`` :ref:`feature tag <doc_feature_tags>` can be used to override specific project settings. This is useful to enable high-quality graphics settings that wouldn't be fast enough to run in real-time speeds on your hardware. Remember that putting every setting to its maximum value can still slow down movie saving speed, especially when recording at higher resolutions. Therefore, it's still recommended to only increase graphics settings if they make a meaningful difference in the output image."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:284
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:327
|
||||
msgid "This feature tag can also be queried in a script to increase quality settings that are set in the Environment resource. For example, to further improve SDFGI detail and reduce light leaking:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:321
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:364
|
||||
msgid "Rendering at a higher resolution than the screen resolution"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:323
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:366
|
||||
msgid "The overall rendering quality can be improved significantly by rendering at high resolutions such as 4K or 8K."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:328
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:371
|
||||
msgid "For 3D rendering, Godot provides a **Rendering > Scaling 3D > Scale** advanced project setting, which can be set above ``1.0`` to obtain *supersample antialiasing*. The 3D rendering is then *downsampled* when it's drawn on the viewport. This provides an expensive but high-quality form of antialiasing, without increasing the final output resolution."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:334
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:377
|
||||
msgid "Consider using this project setting first, as it avoids slowing down movie writing speeds and increasing output file size compared to actually increasing the output resolution."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:338
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:381
|
||||
msgid "If you wish to render 2D at a higher resolution, or if you actually need the higher raw pixel output for 3D rendering, you can increase the resolution above what the screen allows."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:342
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:385
|
||||
msgid "By default, Godot uses the ``disabled`` :ref:`stretch modes <doc_multiple_resolutions>` in projects. If using ``disabled`` or ``canvas_items`` stretch mode, the window size dictates the output video resolution."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:346
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:389
|
||||
msgid "On the other hand, if the project is configured to use the ``viewport`` stretch mode, the viewport resolution dictates the output video resolution. The viewport resolution is set using the **Display > Window > Size > Viewport Width** and **Viewport Height** project settings. This can be used to render a video at a higher resolution than the screen resolution."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:352
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:395
|
||||
msgid "To make the window smaller during recording without affecting the output video resolution, you can set the **Display > Window > Size > Window Width Override** and **Window Height Override** advanced project settings to values greater than ``0``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:357
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:400
|
||||
msgid "To apply a resolution override only when recording a movie, you can override those settings with the ``movie`` :ref:`feature tag <doc_feature_tags>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:361
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:404
|
||||
msgid "Post-processing steps"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:363
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:406
|
||||
msgid "Some common post-processing steps are listed below."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:367
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:410
|
||||
msgid "When using several post-processing steps, try to perform all of them in a single FFmpeg command. This will save encoding time and improve quality by avoiding multiple lossy encoding steps."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:374
|
||||
msgid "Converting AVI video to MP4"
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:417
|
||||
msgid "Converting OGV/AVI video to MP4"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:376
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:419
|
||||
msgid "While some platforms such as YouTube support uploading the AVI file directly, many others will require a conversion step beforehand. `HandBrake <https://handbrake.fr/>`__ (GUI) and `FFmpeg <https://ffmpeg.org/>`__ (CLI) are popular open source tools for this purpose. FFmpeg has a steeper learning curve, but it's more powerful."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:381
|
||||
msgid "The command below converts an AVI video to an MP4 (H.264) video with a Constant Rate Factor (CRF) of 15. This results in a relatively large file, but is well-suited for platforms that will re-encode your videos to reduce their size (such as most video sharing websites):"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:390
|
||||
msgid "To get a smaller file at the cost of quality, *increase* the CRF value in the above command."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:393
|
||||
msgid "To get a file with a better size/quality ratio (at the cost of slower encoding times), add ``-preset veryslow`` before ``-crf 15`` in the above command. On the contrary, ``-preset veryfast`` can be used to achieve faster encoding at the cost of a worse size/quality ratio."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:401
|
||||
msgid "Converting PNG image sequence + WAV audio to a video"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:403
|
||||
msgid "If you chose to record a PNG image sequence with a WAV file beside it, you need to convert it to a video before you can use it elsewhere."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:406
|
||||
msgid "The filename for the PNG image sequence generated by Godot always contains 8 digits, starting at 0 with zero-padded numbers. If you specify an output path ``folder/example.png``, Godot will write ``folder/example00000000.png``, ``folder/example00000001.png``, and so on in that folder. The audio will be saved at ``folder/example.wav``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:412
|
||||
msgid "The FPS is specified using the ``-r`` argument. It should match the FPS specified during recording. Otherwise, the video will appear to be slowed down or sped up, and audio will be out of sync with the video."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:420
|
||||
msgid "If you recorded a PNG image sequence with transparency enabled, you need to use a video format that supports storing transparency. MP4/H.264 doesn't support storing transparency, so you can use WebM/VP9 as an alternative:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:431
|
||||
msgid "Cutting video"
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:424
|
||||
msgid "The command below converts an OGV/AVI video to an MP4 (H.264) video with a Constant Rate Factor (CRF) of 15. This results in a relatively large file, but is well-suited for platforms that will re-encode your videos to reduce their size (such as most video sharing websites):"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:433
|
||||
msgid "To get a smaller file at the cost of quality, *increase* the CRF value in the above command."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:436
|
||||
msgid "To get a file with a better size/quality ratio (at the cost of slower encoding times), add ``-preset veryslow`` before ``-crf 15`` in the above command. On the contrary, ``-preset veryfast`` can be used to achieve faster encoding at the cost of a worse size/quality ratio."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:444
|
||||
msgid "Converting PNG image sequence + WAV audio to a video"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:446
|
||||
msgid "If you chose to record a PNG image sequence with a WAV file beside it, you need to convert it to a video before you can use it elsewhere."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:449
|
||||
msgid "The filename for the PNG image sequence generated by Godot always contains 8 digits, starting at 0 with zero-padded numbers. If you specify an output path ``folder/example.png``, Godot will write ``folder/example00000000.png``, ``folder/example00000001.png``, and so on in that folder. The audio will be saved at ``folder/example.wav``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:455
|
||||
msgid "The FPS is specified using the ``-r`` argument. It should match the FPS specified during recording. Otherwise, the video will appear to be slowed down or sped up, and audio will be out of sync with the video."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:463
|
||||
msgid "If you recorded a PNG image sequence with transparency enabled, you need to use a video format that supports storing transparency. MP4/H.264 doesn't support storing transparency, so you can use WebM/VP9 as an alternative:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:474
|
||||
msgid "Cutting video"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:476
|
||||
msgid "You can trim parts of the video you don't want to keep after the video is recorded. For example, to discard everything before 12.1 seconds and keep only 5.2 seconds of video after that point:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:441
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:484
|
||||
msgid "Cutting videos can also be done with the GUI tool `LosslessCut <https://mifi.github.io/lossless-cut/>`__."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:445
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:488
|
||||
msgid "Resizing video"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:447
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:490
|
||||
msgid "The following command resizes a video to be 1080 pixels tall (1080p), while preserving its existing aspect ratio:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:458
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:501
|
||||
msgid "Reducing framerate"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:460
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:503
|
||||
msgid "The following command changes a video's framerate to 30 FPS, dropping some of the original frames if there are more in the input video:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:468
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:511
|
||||
msgid "Generating accumulation motion blur with FFmpeg"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:470
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:513
|
||||
msgid "Godot does not have built-in support for motion blur, but it can still be created in recorded videos."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:473
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:516
|
||||
msgid "If you record the video at a multiple of the original framerate, you can blend the frames together then reduce the frameate to produce a video with *accumulation motion blur*. This motion blur can look very good, but it can take a long time to generate since you have to render many more frames per second (on top of the time spent on post-processing)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:479
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:522
|
||||
msgid "Example with a 240 FPS source video, generating 4× motion blur and decreasing its output framerate to 60 FPS:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:486
|
||||
#: ../../docs/tutorials/animation/creating_movies.rst:529
|
||||
msgid "This also makes effects that converge over several frames (such as temporal antialiasing, SDFGI and volumetric fog) converge faster and therefore look better, since they'll be able to work with more data at a given time. See :ref:`doc_creating_movies_reducing_framerate` if you want to get this benefit without adding motion blur."
|
||||
msgstr ""
|
||||
|
||||
@@ -85,6 +85,7 @@ msgid "**Apply Root Scale:** If enabled, **Root Scale** will be *applied* on the
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:75
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:201
|
||||
msgid "**Meshes**"
|
||||
msgstr ""
|
||||
|
||||
@@ -133,6 +134,7 @@ msgid "Together, this information is enough to tell Godot how to use the bone po
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:129
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:232
|
||||
msgid "**Animation**"
|
||||
msgstr ""
|
||||
|
||||
@@ -184,120 +186,208 @@ msgstr ""
|
||||
msgid "**Embedded Texture Handling:** Controls how textures embedded within fbx scenes should be handled. **Discard All Textures** will not import any textures, which is useful if you wish to manually set up materials in Godot instead. **Extract Textures** extracts textures to external images, resulting in smaller file sizes and more control over import options. **Embed as Basis Universal** and **Embed as Uncompressed** keeps the textures embedded in the imported scene, with and without VRAM compression respectively."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:180
|
||||
msgid "Using import scripts for automation"
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:177
|
||||
msgid "**Blender-specific options**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:182
|
||||
msgid "A special script to process the whole scene after import can be provided. This is great for post-processing, changing materials, doing funny stuff with the geometry, and more."
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:179
|
||||
msgid "Only visible for ``.blend`` files."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:186
|
||||
msgid "Create a script that is not attached to any node by right-clicking in the FileSystem dock and choosing **New > Script…**. In the script editor, write the following:"
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:181
|
||||
msgid "**Nodes**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:212
|
||||
msgid "The ``_post_import(scene: Node)`` function takes the imported scene as argument (the parameter is actually the root node of the scene). The scene that will finally be used **must** be returned (even if the scene can be entirely different)."
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:183
|
||||
msgid "**Visible:** **All** imports everything, even invisible objects. **Visible Only** only imports visible objects. **Renderable** only imports objects that are marked as renderable in Blender, regardless of whether they are actually visible. In Blender, renderability is toggled by clicking the camera icon next to each object in the Outliner, while visibility is toggled by the eye icon."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:216
|
||||
msgid "To use your script, locate the script in the import tab's \"Path\" option under the \"Import Script\" category."
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:188
|
||||
msgid "**Active Collection Only:** If checked, only imports nodes that are in the active collection in Blender."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:190
|
||||
msgid "**Punctual Lights:** If checked, imports lights (directional, omni, and spot) from Blender. \"Punctual\" is not to be confused with \"positional\", which is why directional lights are also included."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:193
|
||||
msgid "**Cameras:** If checked, imports cameras from Blender."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:194
|
||||
msgid "**Custom Properties:** If checked, imports custom properties from Blender as glTF extras. This data can then be used from an editor plugin that uses :ref:`GLTFDocument.register_gltf_document_extension() <class_GLTFDocument_method_register_gltf_document_extension>`, which can set node metadata on import (among other use cases)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:198
|
||||
msgid "**Modifiers:** If set to **No Modifiers**, object modifiers are ignored on import. If set to **All Modifiers**, applies modifiers to objects on import."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:203
|
||||
msgid "**Colors:** If checked, imports vertex colors from Blender."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:204
|
||||
msgid "**UVs:** If checked, imports vertex UV1 and UV2 from Blender."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:205
|
||||
msgid "**Normals:** If checked, imports vertex normals from Blender."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:206
|
||||
msgid "**Export Geometry Nodes Instances:** If checked, imports `geometry node <https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/introduction.html>`__ instances from Blender."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:209
|
||||
msgid "**Tangents:** If checked, imports vertex tangents from Blender."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:210
|
||||
msgid "**Skins:** **None** skips skeleton skin data import from Blender. **4 Influences (Compatible)** imports skin data to be compatible with all renderers, at the cost of lower precision for certain rigs. **All Influences** imports skin data with all influences (up to 8 in Godot), which is more precise but may not be compatible with all renderers."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:214
|
||||
msgid "**Export Bones Deforming Mesh Only:** If checked, only imports bones that deform the mesh from Blender."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:217
|
||||
msgid "**Materials**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:219
|
||||
msgid "Using animation libraries"
|
||||
msgid "**Unpack Enabled:** If checked, unpacks the original images to the Godot filesystem and uses them. This allows changing image import settings like VRAM compression. If unchecked, allows Blender to convert the original images, such as repacking roughness and metallic into one roughness + metallic texture. In most cases, this option should be left checked, but if the ``.blend`` file's images aren't in the correct format, this must be disabled for correct behavior."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:221
|
||||
msgid "As of Godot 4.0, you can choose to import **only** animations from a glTF file and nothing else. This is used in some asset pipelines to distribute animations separately from models. For example, this allows you to use one set of animations for several characters, without having to duplicate animation data in every character."
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:225
|
||||
msgid "**Export Materials:** If set to **Placeholder**, does not import materials, but keeps surface slots so that separate materials can be assigned to different surfaces. If set to **Export**, imports materials as-is (note that procedural Blender materials may not work correctly). If set to **Named Placeholder**, imports materials, but doesn't import images that are packed into the ``.blend`` file. Textures will have to be reassigned manually in the imported materials."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:227
|
||||
msgid "To do so, select the glTF file in the FileSystem dock, then change the import mode to Animation Library in the Import dock:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:230
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:234
|
||||
msgid "Changing the import type to Animation Library in the Import dock"
|
||||
msgid "**Limit Playback:** If checked, limits animation import to the playback range defined in Blender (the **Start** and **End** options at the right of the animation timeline in Blender). This can avoid including unused animation data, making the imported scene smaller and faster to load. However, this can also result in missing animation data if the playback range is not set correctly in Blender."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:236
|
||||
msgid "Click **Reimport** and restart the editor when prompted. After restarting, the glTF file will be imported as an :ref:`class_AnimationLibrary` instead of a :ref:`class_PackedScene`. This animation library can then be referenced in an :ref:`class_AnimationPlayer` node."
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:239
|
||||
msgid "**Always Sample:** If checked, forces animation sampling on import to ensure consistency between how Blender and glTF perform animation interpolation, at the cost of larger file sizes. If unchecked, there may be differences in how animations are interpolated between what you see in Blender and the imported scene in Godot, due to different interpolation semantics between both."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:241
|
||||
msgid "The import options that are visible after changing the import mode to Animation Library act the same as when using the Scene import mode. See :ref:`doc_importing_3d_scenes_using_the_import_dock` for more information."
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:244
|
||||
msgid "**Group Tracks:** If checked, imports animations (actives and on NLA tracks) as separate tracks. If unchecked, all the currently assigned actions become one glTF animation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:246
|
||||
msgid "Filter script"
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:250
|
||||
msgid "Using import scripts for automation"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:248
|
||||
msgid "It is possible to specify a filter script in a special syntax to decide which tracks from which animations should be kept."
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:252
|
||||
msgid "A special script to process the whole scene after import can be provided. This is great for post-processing, changing materials, doing funny stuff with the geometry, and more."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:251
|
||||
msgid "The filter script is executed against each imported animation. The syntax consists of two types of statements, the first for choosing which animations to filter, and the second for filtering individual tracks within the matched animation. All name patterns are performed using a case-insensitive expression match, with support for ``?`` and ``*`` wildcards (using :ref:`String.matchn() <class_String_method_matchn>` under the hood)."
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:256
|
||||
msgid "Create a script that is not attached to any node by right-clicking in the FileSystem dock and choosing **New > Script…**. In the script editor, write the following:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:258
|
||||
msgid "The script must start with an animation filter statement (as denoted by the line beginning with an ``@``). For example, if we would like to apply filters to all imported animations which have a name ending in ``\"_Loop\"``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:266
|
||||
msgid "Similarly, additional patterns can be added to the same line, separated by commas. Here is a modified example to additionally *include* all animations with names that begin with ``\"Arm_Left\"``, but also *exclude* all animations which have names ending in ``\"Attack\"``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:275
|
||||
msgid "Following the animation selection filter statement, we add track filtering patterns to indicate which animation tracks should be kept or discarded. If no track filter patterns are specified, then all tracks within the matched animations will be discarded!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:280
|
||||
msgid "It's important to note that track filter statements are applied in order for each track within the animation, this means that one line may include a track, a later rule can still discard it. Similarly, a track excluded by an early rule may then be re-included once again by a filter rule further down in the filter script."
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:282
|
||||
msgid "The ``_post_import(scene: Node)`` function takes the imported scene as argument (the parameter is actually the root node of the scene). The scene that will finally be used **must** be returned (even if the scene can be entirely different)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:286
|
||||
msgid "For example: include all tracks in animations with names ending in ``\"_Loop\"``, but discard any tracks affecting a ``\"Skeleton\"`` which end in ``\"Control\"``, unless they have ``\"Arm\"`` in their name:"
|
||||
msgid "To use your script, locate the script in the import tab's \"Path\" option under the \"Import Script\" category."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:289
|
||||
msgid "Using animation libraries"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:291
|
||||
msgid "As of Godot 4.0, you can choose to import **only** animations from a glTF file and nothing else. This is used in some asset pipelines to distribute animations separately from models. For example, this allows you to use one set of animations for several characters, without having to duplicate animation data in every character."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:297
|
||||
msgid "In the above example, tracks like ``\"Skeleton:Leg_Control\"`` would be discarded, while tracks such as ``\"Skeleton:Head\"`` or ``\"Skeleton:Arm_Left_Control\"`` would be retained."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:301
|
||||
msgid "Any track filter lines that do not begin with a ``+`` or ``-`` are ignored."
|
||||
msgid "To do so, select the glTF file in the FileSystem dock, then change the import mode to Animation Library in the Import dock:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:300
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:304
|
||||
msgid "Scene inheritance"
|
||||
msgid "Changing the import type to Animation Library in the Import dock"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:306
|
||||
msgid "Click **Reimport** and restart the editor when prompted. After restarting, the glTF file will be imported as an :ref:`class_AnimationLibrary` instead of a :ref:`class_PackedScene`. This animation library can then be referenced in an :ref:`class_AnimationPlayer` node."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:311
|
||||
msgid "The import options that are visible after changing the import mode to Animation Library act the same as when using the Scene import mode. See :ref:`doc_importing_3d_scenes_using_the_import_dock` for more information."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:316
|
||||
msgid "Filter script"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:318
|
||||
msgid "It is possible to specify a filter script in a special syntax to decide which tracks from which animations should be kept."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:321
|
||||
msgid "The filter script is executed against each imported animation. The syntax consists of two types of statements, the first for choosing which animations to filter, and the second for filtering individual tracks within the matched animation. All name patterns are performed using a case-insensitive expression match, with support for ``?`` and ``*`` wildcards (using :ref:`String.matchn() <class_String_method_matchn>` under the hood)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:328
|
||||
msgid "The script must start with an animation filter statement (as denoted by the line beginning with an ``@``). For example, if we would like to apply filters to all imported animations which have a name ending in ``\"_Loop\"``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:336
|
||||
msgid "Similarly, additional patterns can be added to the same line, separated by commas. Here is a modified example to additionally *include* all animations with names that begin with ``\"Arm_Left\"``, but also *exclude* all animations which have names ending in ``\"Attack\"``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:345
|
||||
msgid "Following the animation selection filter statement, we add track filtering patterns to indicate which animation tracks should be kept or discarded. If no track filter patterns are specified, then all tracks within the matched animations will be discarded!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:350
|
||||
msgid "It's important to note that track filter statements are applied in order for each track within the animation, this means that one line may include a track, a later rule can still discard it. Similarly, a track excluded by an early rule may then be re-included once again by a filter rule further down in the filter script."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:356
|
||||
msgid "For example: include all tracks in animations with names ending in ``\"_Loop\"``, but discard any tracks affecting a ``\"Skeleton\"`` which end in ``\"Control\"``, unless they have ``\"Arm\"`` in their name:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:367
|
||||
msgid "In the above example, tracks like ``\"Skeleton:Leg_Control\"`` would be discarded, while tracks such as ``\"Skeleton:Head\"`` or ``\"Skeleton:Arm_Left_Control\"`` would be retained."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:371
|
||||
msgid "Any track filter lines that do not begin with a ``+`` or ``-`` are ignored."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:374
|
||||
msgid "Scene inheritance"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:376
|
||||
msgid "In many cases, it may be desired to make manual modifications to the imported scene. By default, this is not possible because if the source 3D asset changes, Godot will re-import the *whole* scene."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:310
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:380
|
||||
msgid "However, it is possible to make local modifications by using *scene inheritance*. If you try to open the imported scene using **Scene > Open Scene…** or **Scene > Quick Open Scene…**, the following dialog will appear:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:314
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:318
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:384
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:388
|
||||
msgid "Dialog when opening an imported 3D scene in the editor"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:320
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:390
|
||||
msgid "In inherited scenes, the only limitations for modification are:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:322
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:392
|
||||
msgid "Nodes from the base scene can't be removed, but additional nodes can be added anywhere."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:324
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:394
|
||||
msgid "Subresources can't be edited. Instead, you need to save them externally as described above."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:327
|
||||
#: ../../docs/tutorials/assets_pipeline/importing_3d_scenes/import_configuration.rst:397
|
||||
msgid "Other than that, everything is allowed."
|
||||
msgstr ""
|
||||
|
||||
32
sphinx/templates/tutorials/export/exporting_for_visionos.pot
Normal file
32
sphinx/templates/tutorials/export/exporting_for_visionos.pot
Normal file
@@ -0,0 +1,32 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0)
|
||||
# This file is distributed under the same license as the Godot Engine package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Godot Engine latest\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../docs/tutorials/export/exporting_for_visionos.rst:4
|
||||
msgid "Exporting for visionOS"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/export/exporting_for_visionos.rst:8
|
||||
msgid "This page describes how to export a Godot project to visionOS. If you're looking to compile export template binaries from source instead, see :ref:`doc_compiling_for_visionos`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/export/exporting_for_visionos.rst:12
|
||||
msgid "Exporting instructions for visionOS are currently identical to :ref:`doc_compiling_for_ios`, except you should add a **visionOS** export preset instead of **iOS**. See the linked page for details."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/export/exporting_for_visionos.rst:18
|
||||
msgid "Note that currently, only exporting an application for use on a flat plane within the headset is supported. Immersive experiences are not supported."
|
||||
msgstr ""
|
||||
@@ -452,7 +452,7 @@ msgid "**shader_baker**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/export/feature_tags.rst:135
|
||||
msgid "Project was exported with shader baking enabled (only applies to the exported project, not when running in the editor)"
|
||||
msgid "Project was exported with :ref:`shader baking <doc_pipeline_compilations_shader_baker>` enabled (only applies to the exported project, not when running in the editor)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/export/feature_tags.rst:138
|
||||
|
||||
@@ -196,181 +196,181 @@ msgid "The same text in different languages can vary greatly in length. For this
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:243
|
||||
msgid "To check whether your UI can accommodate translations with longer strings than the original, you can enable *pseudolocalization* in the advanced Project Settings. This will replace all your localizable strings with longer versions of themselves, while also replacing some characters in the original strings with accented versions (while still being readable). Placeholders are kept as-is, so that they keep working when pseudolocalization is enabled."
|
||||
msgid "To check whether your UI can accommodate translations with longer strings than the original, you can enable :ref:`pseudolocalization <doc_pseudolocalization>` in the advanced Project Settings. This will replace all your localizable strings with longer versions of themselves, while also replacing some characters in the original strings with accented versions (while still being readable). Placeholders are kept as-is, so that they keep working when pseudolocalization is enabled."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:250
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:251
|
||||
msgid "For example, the string ``Hello world, this is %s!`` becomes ``[Ĥéłłô ŵôŕłd́, ŧh̀íš íš %s!]`` when pseudolocalization is enabled."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:253
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:254
|
||||
msgid "While looking strange at first, pseudolocalization has several benefits:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:255
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:256
|
||||
msgid "It lets you spot non-localizable strings quickly, so you can go over them and make them localizable (if it makes sense to do so)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:257
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:258
|
||||
msgid "It lets you check UI elements that can't fit long strings. Many languages will feature much longer translations than the source text, so it's important to ensure your UI can accommodate longer-than-usual strings."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:260
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:261
|
||||
msgid "It lets you check whether your font contains all the characters required to support various languages. However, since the goal of pseudolocalization is to keep the original strings readable, it's not an effective test for checking whether a font can support :abbr:`CJK (Chinese, Japanese, Korean)` or right-to-left languages."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:266
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:267
|
||||
msgid "The project settings allow you to tune pseudolocalization behavior, so that you can disable parts of it if desired."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:270
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:271
|
||||
msgid "TranslationServer"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:272
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:273
|
||||
msgid "Godot has a server handling low-level translation management called the :ref:`TranslationServer <class_TranslationServer>`. Translations can be added or removed during runtime; the current language can also be changed at runtime."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:280
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:281
|
||||
msgid "Bidirectional text and UI Mirroring"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:282
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:283
|
||||
msgid "Arabic and Hebrew are written from right to left (except for the numbers and Latin words mixed in), and the user interface for these languages should be mirrored as well. In some languages the shape of a glyph changes depending on the surrounding characters."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:286
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:287
|
||||
msgid "Support for bidirectional writing systems and UI mirroring is transparent, you don't usually need to change anything or have any knowledge of the specific writing system."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:289
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:290
|
||||
msgid "For RTL languages, Godot will automatically do the following changes to the UI:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:291
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:292
|
||||
msgid "Mirrors left/right anchors and margins."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:292
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:293
|
||||
msgid "Swaps left and right text alignment."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:293
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:294
|
||||
msgid "Mirrors horizontal order of the child controls in the containers, and items in Tree/ItemList controls."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:294
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:295
|
||||
msgid "Uses mirrored order of the internal control elements (e.g. OptionButton dropdown button, checkbox alignment, List column order, Tree item icons and connecting line alignment, e.t.c.), in some cases mirrored controls use separate theme styles."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:295
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:296
|
||||
msgid "Coordinate system is not mirrored, and non-UI nodes (sprites, e.t.c) are not affected."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:297
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:298
|
||||
msgid "It is possible to override text and control layout direction by using the following control properties:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:299
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:300
|
||||
msgid "``text_direction``, sets the base text direction. When set to \"auto\", direction depends on the first strong directional character in the text according to the Unicode Bidirectional Algorithm,"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:300
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:301
|
||||
msgid "``language``, overrides current project locale."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:301
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:302
|
||||
msgid "``structured_text_bidi_override`` property and ``_structured_text_parser`` callback, enables special handling for structured text."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:302
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:303
|
||||
msgid "``layout_direction``, overrides control mirroring."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:308
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:309
|
||||
msgid "You can see how right-to-left typesetting works in action using the `BiDI and Font Features demo project <https://github.com/godotengine/godot-demo-projects/tree/master/gui/bidi_and_font_features>`__."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:312
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:313
|
||||
msgid "Adding break iterator data to exported project"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:314
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:315
|
||||
msgid "Some languages are written without spaces. In those languages, word and line breaking require more than rules over character sequences. Godot includes ICU rule and dictionary-based break iterator data, but this data is not included in exported projects by default."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:319
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:320
|
||||
msgid "To include it, go to **Project → Project Settings**, enable **Internationalization → Locale → Include Text Server Data**, then export the project. Break iterator data is about 4 MB in size."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:323
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:324
|
||||
msgid "Structured text BiDi override"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:325
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:326
|
||||
msgid "Unicode BiDi algorithm is designed to work with natural text and it's incapable of handling text with the higher level order, like file names, URIs, email addresses, regular expressions or source code."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:331
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:332
|
||||
msgid "For example, the path for this shown directory structure will be displayed incorrectly (top \"LineEdit\" control). \"File\" type structured text override splits text into segments, then BiDi algorithm is applied to each of them individually to correctly display directory names in any language and preserve correct order of the folders (bottom \"LineEdit\" control)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:336
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:337
|
||||
msgid "Custom callbacks provide a way to override BiDi for the other types of structured text."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:339
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:340
|
||||
msgid "Localizing numbers"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:341
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:342
|
||||
msgid "Controls specifically designed for number input or output (e.g. ProgressBar, SpinBox) will use localized numbering system automatically, for the other control :ref:`TextServer.format_number(string, language) <class_TextServer_method_format_number>` can be used to convert Western Arabic numbers (0..9) to the localized numbering system and :ref:`TextServer.parse_number(string, language) <class_TextServer_method_parse_number>` to convert it back."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:349
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:350
|
||||
msgid "Localizing icons and images"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:351
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:352
|
||||
msgid "Icons with left and right pointing arrows which may need to be reversed for Arabic and Hebrew locales, in case they indicate movement or direction (e.g. back/forward buttons). Otherwise, they can remain the same."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:356
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:357
|
||||
msgid "Testing translations"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:358
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:359
|
||||
msgid "You may want to test a project's translation before releasing it. Godot provides three ways to do this."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:361
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:362
|
||||
msgid "First, in the Project Settings, under :menu:`Internationalization > Locale` (with advanced settings enabled), there is a **Test** property. Set this property to the locale code of the language you want to test. Godot will run the project with that locale when the project is run (either from the editor or when exported)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:368
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:369
|
||||
msgid "Keep in mind that since this is a project setting, it will show up in version control when it is set to a non-empty value. Therefore, it should be set back to an empty value before committing changes to version control."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:372
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:373
|
||||
msgid "Second, from within the editor go to the top bar and click on :button:`View` on the top bar, then go down to :ui:`Preview Translation` and select the language you want to preview."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:377
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:378
|
||||
msgid "All text in scenes in the editor should now be displayed using the selected language."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:379
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:380
|
||||
msgid "Translations can also be tested when :ref:`running Godot from the command line <doc_command_line_tutorial>`. For example, to test a game in French, the following argument can be supplied:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:388
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:389
|
||||
msgid "Translating the project name"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:390
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:391
|
||||
msgid "The project name becomes the app name when exporting to different operating systems and platforms. To specify the project name in more than one language go to **Project > Project Settings> Application > Config**. From here click on the button that says ``Localizable String (Size 0)``. Now there should be a button below that which says ``Add Translation``. Click on that and it will take you to a page where you can choose the language (and country if needed) for your project name translation. After doing that you can now type in the localized name."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:401
|
||||
#: ../../docs/tutorials/i18n/internationalizing_games.rst:402
|
||||
msgid "If you are unsure about the language code to use, refer to the :ref:`list of locale codes <doc_locales>`."
|
||||
msgstr ""
|
||||
|
||||
@@ -44,52 +44,52 @@ msgid "**Source compatible** - Source code will compile successfully without cha
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:25
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:157
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:176
|
||||
msgid "Core"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:28
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:64
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:78
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:88
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:124
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:136
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:83
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:97
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:107
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:143
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:155
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:28
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:64
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:78
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:88
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:124
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:136
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:83
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:97
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:107
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:143
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:155
|
||||
msgid "GDScript Compatible"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:28
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:64
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:78
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:88
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:124
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:136
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:83
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:97
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:107
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:143
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:155
|
||||
msgid "C# Binary Compatible"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:28
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:64
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:78
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:88
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:124
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:136
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:83
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:97
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:107
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:143
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:155
|
||||
msgid "C# Source Compatible"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:28
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:64
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:78
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:88
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:124
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:136
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:83
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:97
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:107
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:143
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:155
|
||||
msgid "Introduced"
|
||||
msgstr ""
|
||||
|
||||
@@ -121,28 +121,28 @@ msgstr ""
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:51
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:53
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:55
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:67
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:68
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:70
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:81
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:91
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:93
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:95
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:97
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:99
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:101
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:102
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:103
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:105
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:107
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:108
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:86
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:87
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:89
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:100
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:110
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:112
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:114
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:116
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:118
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:120
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:121
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:122
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:124
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:126
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:127
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:129
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:139
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:140
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:141
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:131
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:146
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:148
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:158
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:159
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:160
|
||||
msgid "|✔️|"
|
||||
msgstr ""
|
||||
|
||||
@@ -153,25 +153,25 @@ msgstr ""
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:51
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:53
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:55
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:67
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:68
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:70
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:81
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:91
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:93
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:95
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:97
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:99
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:86
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:87
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:89
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:100
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:101
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:102
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:103
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:105
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:127
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:129
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:139
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:140
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:141
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:110
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:112
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:114
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:116
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:118
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:119
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:120
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:121
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:122
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:124
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:146
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:148
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:158
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:159
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:160
|
||||
msgid "|✔️ with compat|"
|
||||
msgstr ""
|
||||
|
||||
@@ -198,14 +198,14 @@ msgstr ""
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:44
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:45
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:48
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:71
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:100
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:107
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:108
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:110
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:112
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:143
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:145
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:90
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:119
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:126
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:127
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:129
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:131
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:162
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:164
|
||||
msgid "|❌|"
|
||||
msgstr ""
|
||||
|
||||
@@ -340,296 +340,312 @@ msgid "`GH-98972`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:58
|
||||
msgid "**Export annotations**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:62
|
||||
msgid "The behavior of ``@export_file`` changed in Godot 4.4. When assigning a new value from the Inspector, the path is now stored and returned as a ``uid://`` reference instead of the traditional ``res://`` path(`GH-97912`_). This is a **breaking change** and may cause issues if you're expecting ``res://``-based paths in scripts or serialized files."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:68
|
||||
msgid "For example, exported arrays of files may now contain a mix of ``uid://`` and ``res://`` paths, especially if they were partially edited in the Inspector."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:71
|
||||
msgid "In 4.4, the only way to retain the ``res://`` format is to **manually edit** the `.tscn` or `.tres` files in a text editor. Starting in Godot 4.5, a new annotation ``@export_file_path`` can be used to explicitly retain the old behavior and export raw ``res://`` paths."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:76
|
||||
msgid "Default buffer size in 4.3 is ``1024``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:61
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:80
|
||||
msgid "GUI nodes"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:66
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:85
|
||||
msgid "**RichTextLabel**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:67
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:86
|
||||
msgid "Method ``push_meta`` adds a new ``tooltip`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:67
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:86
|
||||
msgid "`GH-99481`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:68
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:87
|
||||
msgid "Method ``set_table_column_expand`` adds a new ``shrink`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:68
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:87
|
||||
msgid "`GH-101482`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:69
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:88
|
||||
msgid "**GraphEdit**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:70
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:89
|
||||
msgid "Method ``connect_node`` adds a new ``keep_alive`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:70
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:89
|
||||
msgid "`GH-97449`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:71
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:90
|
||||
msgid "Signal ``frame_rect_changed`` changes ``new_rect`` parameter type from ``Vector2`` to ``Rect2``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:71
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:90
|
||||
msgid "`GH-102796`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:75
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:94
|
||||
msgid "Physics"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:80
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:99
|
||||
msgid "**SoftBody3D**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:81
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:100
|
||||
msgid "Method ``set_point_pinned`` adds a new ``insert_at`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:81
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:100
|
||||
msgid "`GH-94684`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:85
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:165
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:104
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:184
|
||||
msgid "Rendering"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:90
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:109
|
||||
msgid "**CPUParticles2D**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:91
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:93
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:95
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:97
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:110
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:112
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:114
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:116
|
||||
msgid "Method ``restart`` adds a new ``keep_seed`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:91
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:93
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:95
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:97
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:110
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:112
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:114
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:116
|
||||
msgid "`GH-92089`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:92
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:111
|
||||
msgid "**CPUParticles3D**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:94
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:113
|
||||
msgid "**GPUParticles2D**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:96
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:115
|
||||
msgid "**GPUParticles3D**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:98
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:117
|
||||
msgid "**RenderingDevice**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:99
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:118
|
||||
msgid "Method ``draw_list_begin`` adds a new ``breadcrumb`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:99
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:118
|
||||
msgid "`GH-90993`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:100
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:119
|
||||
msgid "Method ``draw_list_begin`` removes many parameters"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:100
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:119
|
||||
msgid "`GH-98670`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:101
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:120
|
||||
msgid "Method ``index_buffer_create`` adds a new ``enable_device_address`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:101
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:102
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:103
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:120
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:121
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:122
|
||||
msgid "`GH-100062`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:102
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:121
|
||||
msgid "Method ``uniform_buffer_create`` adds a new ``enable_device_address`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:103
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:122
|
||||
msgid "Method ``vertex_buffer_create`` adds a new ``enable_device_address`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:104
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:123
|
||||
msgid "**RenderingServer**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:105
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:124
|
||||
msgid "Method ``multimesh_allocate_data`` adds a new ``use_indirect`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:105
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:124
|
||||
msgid "`GH-99455`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:106
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:125
|
||||
msgid "**Shader**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:107
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:126
|
||||
msgid "Method ``get_default_texture_parameter`` changes return type from ``Texture2D`` to ``Texture``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:107
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:108
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:110
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:112
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:126
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:127
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:129
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:131
|
||||
msgid "`GH-95126`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:108
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:127
|
||||
msgid "Method ``set_default_texture_parameter`` changes ``texture`` parameter type from ``Texture2D`` to ``Texture``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:109
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:128
|
||||
msgid "**VisualShaderNodeCubemap**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:110
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:129
|
||||
msgid "Property ``cube_map`` changes type from ``Cubemap`` to ``TextureLayered``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:111
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:130
|
||||
msgid "**VisualShaderNodeTexture2DArray**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:112
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:131
|
||||
msgid "Property ``texture_array`` changes type from ``Texture2DArray`` to ``TextureLayered``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:117
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:136
|
||||
msgid "In C#, the enum ``RenderingDevice.StorageBufferUsage`` breaks compatibility because of the way the bindings generator detects the enum prefix. New members where added in `GH-100062`_ to the enum that caused the enum members to be renamed."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:121
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:140
|
||||
msgid "Navigation"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:126
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:145
|
||||
msgid "**NavigationServer2D**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:127
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:129
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:146
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:148
|
||||
msgid "Method ``query_path`` adds a new ``callback`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:127
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:129
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:146
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:148
|
||||
msgid "`GH-100129`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:128
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:147
|
||||
msgid "**NavigationServer3D**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:133
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:152
|
||||
msgid "Editor plugins"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:138
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:157
|
||||
msgid "**EditorInterface**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:139
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:158
|
||||
msgid "Method ``open_scene_from_path`` adds a new ``set_inherited`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:139
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:158
|
||||
msgid "`GH-90057`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:140
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:159
|
||||
msgid "Method ``popup_node_selector`` adds a new ``current_value`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:140
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:141
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:159
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:160
|
||||
msgid "`GH-94323`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:141
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:160
|
||||
msgid "Method ``popup_property_selector`` adds a new ``current_value`` optional parameter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:142
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:161
|
||||
msgid "**EditorSceneFormatImporter**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:143
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:162
|
||||
msgid "Method ``_get_import_flags`` removed"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:143
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:162
|
||||
msgid "`GH-101531`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:144
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:163
|
||||
msgid "**EditorTranslationParserPlugin**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:145
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:164
|
||||
msgid "Method ``_parse_file`` changes return type to ``Array`` and removes ``msgids`` and ``msgids_context_plural`` parameters"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:145
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:164
|
||||
msgid "`GH-99297`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:150
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:169
|
||||
msgid "The method ``_get_import_flags`` was never used by the engine. It was removed despite the compatibility breakage as there's no way for users to rely on this affecting engine behavior."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:154
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:173
|
||||
msgid "Behavior changes"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:161
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:180
|
||||
msgid "The ``Curve`` resource now enforces its value range, so ``min_value`` and ``max_value`` need to be changed if any of the points fall outside of the default ``[0, 1]`` range."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:169
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:188
|
||||
msgid "The ``VisualShaderNodeVec4Constant`` shader node had its input type changed to ``Vector4``. Users need to recreate the values in their constants."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:173
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:192
|
||||
msgid "CSG"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:177
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:196
|
||||
msgid "The CSG implementation now uses Emmett Lalish's `Manifold <https://github.com/elalish/manifold>`_ library (`GH-94321`_). The new implementation is more consistent with manifold definitions and fixes a number of bugs and stability issues. As a result, non-manifold meshes are no longer supported. You can use ``MeshInstance3D`` for rendering non-manifold geometry, such as quads or planes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:183
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:202
|
||||
msgid "Android"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:187
|
||||
#: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:206
|
||||
msgid "Android sensor events are no longer enabled by default (`GH-94799`_). Projects that use sensor events can enable them as needed in Project Settings under **Input Devices > Sensors**."
|
||||
msgstr ""
|
||||
|
||||
@@ -217,7 +217,7 @@ msgid "Click on the region node and add a new NavigationPolygon Resource to the
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/navigation/navigation_introduction_2d.rst:102
|
||||
msgid "Define the movable navigation area with the NavigationPolygon draw tool. Then click the `Bake NavigationPolygon`` button on the toolbar."
|
||||
msgid "Define the movable navigation area with the NavigationPolygon draw tool. Then click the :button:`Bake NavigationPolygon` button on the toolbar."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/navigation/navigation_introduction_2d.rst:109
|
||||
|
||||
@@ -92,7 +92,7 @@ msgid "Baking navigation meshes at runtime should always be done in a background
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/navigation/navigation_optimizing_performance.rst:53
|
||||
msgid "Complexity of source geometry data parsed from scene tree nodes has big impact on baking performance as everything needs to be mapped to a grid / voxels. For runtime baking performance the NavigationMesh cell size and cell height should be set as high as possible without causing navigation mesh quality problems for a game. If cell size or cell height is set too low the baking is forced to create an excessive amount of voxels to process the source geometry. If the source geometry spans over a very large game world it is even possible that the baking process runs out off memory in the middle and crashes the game. The partition type can also be lowered depending on how complex the games source geometry is to gain some performance. E.g. games with mostly flat surfaces with blocky geometry can get away with the monotone or layers mode that are a lot faster to bake (e.g. because they require no distance field pass)."
|
||||
msgid "Complexity of source geometry data parsed from scene tree nodes has big impact on baking performance as everything needs to be mapped to a grid / voxels. For runtime baking performance the NavigationMesh cell size and cell height should be set as high as possible without causing navigation mesh quality problems for a game. If cell size or cell height is set too low the baking is forced to create an excessive amount of voxels to process the source geometry. If the source geometry spans over a very large game world it is even possible that the baking process runs out of memory in the middle and crashes the game. The partition type can also be lowered depending on how complex the games source geometry is to gain some performance. E.g. games with mostly flat surfaces with blocky geometry can get away with the monotone or layers mode that are a lot faster to bake (e.g. because they require no distance field pass)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/navigation/navigation_optimizing_performance.rst:60
|
||||
|
||||
@@ -198,3 +198,59 @@ msgstr ""
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:206
|
||||
msgid "For example, if the player character is able to cause some sort of explosion, you can attach the effect as a child of the player as an invisible node. Make sure to disable the script attached to the hidden node or to hide any other nodes that could cause issues, which can be done by enabling **Editable Children** on the node."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:215
|
||||
msgid "Shader baker"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:217
|
||||
msgid "Since Godot 4.5, you can choose to bake shaders on export to improve initial startup time. This will generally not resolve existing stutters, but it will reduce the time it takes to load the game for the first time. This is especially the case when using Direct3D 12 or Metal, which have significantly slower initial shader compilation times than Vulkan due to the conversion step required. Godot's own shaders use GLSL and SPIR-V, but Direct3D 12 and Metal use different formats."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:227
|
||||
msgid "The shader baker can only bake the source into the intermediate format (SPIR-V for Vulkan, DXIL for Direct3D 12, MIL for Metal). It cannot bake the intermediate format into the final pipeline, as this is dependent on the GPU driver and the hardware."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:232
|
||||
msgid "The shader baker is not a replacement for pipeline precompilation, but it aims to complement it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:235
|
||||
msgid "When enabled, the shader baker will bundle compiled shader code into the PCK, which results in the shader compilation step being skipped entirely. The downside is that exporting will take slightly longer. The PCK file will be larger by a few megabytes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:240
|
||||
msgid "The shader baker is disabled by default, but you can enable it in each export preset in the Export dialog by ticking the :ui:`Shader Baker > Enabled` export option."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:244
|
||||
msgid "Note that shader baking will only be able to export shaders for drivers supported by the platform the editor is currently running on:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:247
|
||||
msgid "The editor running on Windows can export shaders for Vulkan and Direct3D 12."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:248
|
||||
msgid "The editor running on macOS can export shaders for Vulkan and Metal."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:249
|
||||
msgid "The editor running on Linux can export shaders for Vulkan only."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:250
|
||||
msgid "The editor running on Android can export shaders for Vulkan only."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:252
|
||||
msgid "The shader baker will only export shaders that match the ``rendering/rendering_device/driver`` project setting for the target platform."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:257
|
||||
msgid "The shader baker is only supported for the Forward+ and Mobile renderers. It will have no effect if the project uses the Compatibility renderer, or for users who make use of the Compatibility fallback due to their hardware not supporting the Forward+ or Mobile renderer."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/performance/pipeline_compilations.rst:262
|
||||
msgid "This also means the shader baker is not supported on the web platform, as the web platform only supports the Compatibility renderer."
|
||||
msgstr ""
|
||||
|
||||
@@ -48,317 +48,309 @@ msgid "There are many differences between the existing Godot Physics engine and
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:36
|
||||
msgid "Area3D and static bodies"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:37
|
||||
msgid "When using Jolt, :ref:`class_Area3D` will not detect overlaps with :ref:`class_StaticBody3D` (nor a :ref:`class_RigidBody3D` frozen with ``FREEZE_MODE_STATIC``) by default, for performance reasons. If you have many/large :ref:`class_Area3D` overlapping with complex static geometry, such as :ref:`class_ConcavePolygonShape3D` or :ref:`class_HeightMapShape3D`, you can end up wasting a significant amount of CPU performance and memory without realizing it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:45
|
||||
msgid "Joint properties"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:47
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:38
|
||||
msgid "The current interfaces for the 3D joint nodes don't quite line up with the interface of Jolt's own joints. As such, there are a number of joint properties that are not supported, mainly ones related to configuring the joint's soft limits."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:51
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:42
|
||||
msgid "The unsupported properties are:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:53
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:44
|
||||
msgid "PinJoint3D: ``bias``, ``damping``, ``impulse_clamp``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:54
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:45
|
||||
msgid "HingeJoint3D: ``bias``, ``softness``, ``relaxation``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:55
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:46
|
||||
msgid "SliderJoint3D: ``angular_\\*``, ``\\*_limit/softness``, ``\\*_limit/restitution``, ``\\*_limit/damping``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:56
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:47
|
||||
msgid "ConeTwistJoint3D: ``bias``, ``relaxation``, ``softness``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:57
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:48
|
||||
msgid "Generic6DOFJoint3D: ``*_limit_*/softness``, ``*_limit_*/restitution``, ``*_limit_*/damping``, ``*_limit_*/erp``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:59
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:50
|
||||
msgid "Currently a warning is emitted if you set these properties to anything but their default values."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:63
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:54
|
||||
msgid "Single-body joints"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:65
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:56
|
||||
msgid "You can, in Godot, omit one of the joint bodies for a two-body joint and effectively have \"the world\" be the other body. However, the node path that you assign your body to (:ref:`node_a<class_Joint3D_property_node_a>` vs :ref:`node_b<class_Joint3D_property_node_b>`) is ignored. Godot Physics will always behave as if you assigned it to ``node_a``, and since ``node_a`` is also what defines the frame of reference for the joint limits, you end up with inverted limits and a potentially strange limit shape, especially if your limits allow both linear and angular degrees of freedom."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:74
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:65
|
||||
msgid "Jolt will behave as if you assigned the body to ``node_b`` instead, with ``node_a`` representing \"the world\". There is a project setting called :ref:`Physics > Jolt Physics 3D > Joints > World Node<class_ProjectSettings_property_physics/jolt_physics_3d/joints/world_node>` that lets you toggle this behavior, if you need compatibility for an existing project."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:79
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:70
|
||||
msgid "Collision margins"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:81
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:72
|
||||
msgid "Jolt (and other similar physics engines) uses something that Jolt refers to as \"convex radius\" to help improve the performance and behavior of the types of collision detection that Jolt relies on for convex shapes. Other physics engines (Godot included) might refer to these as \"collision margins\" instead. Godot exposes these as the ``margin`` property on every Shape3D-derived class, but Godot Physics itself does not use them for anything."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:88
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:79
|
||||
msgid "What these collision margins sometimes do in other engines (as described in Godot's documentation) is effectively add a \"shell\" around the shape, slightly increasing its size while also rounding off any edges/corners. In Jolt however, these margins are first used to shrink the shape, and then the \"shell\" is applied, resulting in edges/corners being similarly rounded off, but without increasing the size of the shape."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:95
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:86
|
||||
msgid "To prevent having to tweak this margin property manually, since its default value can be problematic for smaller shapes, the Jolt module exposes a project setting called :ref:`Physics > Jolt Physics 3D > Collisions > Collision Margin Fraction<class_ProjectSettings_property_physics/jolt_physics_3d/collisions/collision_margin_fraction>` which is multiplied with the smallest axis of the shape's AABB to calculate the actual margin. The margin property of the shape is then instead used as an upper bound."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:102
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:93
|
||||
msgid "These margins should, for most use-cases, be more or less transparent, but can sometimes result in odd collision normals when performing shape queries. You can lower the above mentioned project setting to mitigate some of this, including setting it to ``0.0``, but too small of a margin can also cause odd collision results, so is generally not recommended."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:109
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:100
|
||||
msgid "Baumgarte stabilization"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:111
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:102
|
||||
msgid "Baumgarte stabilization is a method to resolve penetrating bodies and push them to a state where they are just touching. In Godot Physics this works like a spring. This means that bodies can accelerate and may cause the bodies to overshoot and separate completely. With Jolt, the stabilization is only applied to the position and not to the velocity of the body. This means it cannot overshoot but it may take longer to resolve the penetration."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:118
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:109
|
||||
msgid "The strength of this stabilization can be tweaked using the project setting :ref:`Physics > Jolt Physics 3D > Simulation > Baumgarte Stabilization Factor<class_ProjectSettings_property_physics/jolt_physics_3d/simulation/baumgarte_stabilization_factor>`. Setting this project setting to ``0.0`` will turn Baumgarte stabilization off. Setting it to ``1.0`` will resolve penetration in 1 simulation step. This is fast but often also unstable."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:125
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:116
|
||||
msgid "Ghost collisions"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:127
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:118
|
||||
msgid "Jolt employs two techniques to mitigate ghost collisions, meaning collisions with internal edges of shapes/bodies that result in collision normals that oppose the direction of movement."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:131
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:122
|
||||
msgid "The first technique, called \"active edge detection\", marks edges of triangles in :ref:`class_ConcavePolygonShape3D` or :ref:`class_HeightMapShape3D` as either \"active\" or \"inactive\", based on the angle to the neighboring triangle. When a collision happens with an inactive edge the collision normal will be replaced with the triangle's normal instead, to lessen the effect of ghost collisions."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:137
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:128
|
||||
msgid "The angle threshold for this active edge detection is configurable through the project setting :ref:`Physics >Jolt Physics 3D > Collisions > Active Edge Threshold<class_ProjectSettings_property_physics/jolt_physics_3d/collisions/active_edge_threshold>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:140
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:131
|
||||
msgid "The second technique, called \"enhanced internal edge removal\", instead adds runtime checks to detect whether an edge is active or inactive, based on the contact points of the two bodies. This has the benefit of applying not only to collisions with :ref:`class_ConcavePolygonShape3D` and :ref:`class_HeightMapShape3D`, but also edges between any shapes within the same body."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:146
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:137
|
||||
msgid "Enhanced internal edge removal can be toggled on and off for the various contexts to which it's applied, using the :ref:`Physics >Jolt Physics 3D > Simulation > Use Enhanced Internal Edge Removal<class_ProjectSettings_property_physics/jolt_physics_3d/simulation/use_enhanced_internal_edge_removal>`, project setting, and the similar settings for :ref:`queries<class_ProjectSettings_property_physics/jolt_physics_3d/queries/use_enhanced_internal_edge_removal>` and :ref:`motion queries<class_ProjectSettings_property_physics/jolt_physics_3d/motion_queries/use_enhanced_internal_edge_removal>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:151
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:142
|
||||
msgid "Note that neither the active edge detection nor enhanced internal edge removal apply when dealing with ghost collisions between two different bodies."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:155
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:146
|
||||
msgid "Memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:157
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:148
|
||||
msgid "Jolt uses a stack allocator for temporary allocations within its simulation step. This stack allocator requires allocating a set amount of memory up front, which can be configured using the :ref:`Physics > Jolt Physics 3D > Limits > Temporary Memory Buffer Size<class_ProjectSettings_property_physics/jolt_physics_3d/limits/temporary_memory_buffer_size>` project setting."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:163
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:154
|
||||
msgid "Ray-cast face index"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:165
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:156
|
||||
msgid "The ``face_index`` property returned in the results of :ref:`intersect_ray()<class_PhysicsDirectSpaceState3D_method_intersect_ray>` and RayCast3D will by default always be ``-1`` with Jolt. The project setting :ref:`Physics > Jolt Physics 3D > Queries > Enable Ray Cast Face Index<class_ProjectSettings_property_physics/jolt_physics_3d/queries/enable_ray_cast_face_index>` will enable them."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:169
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:160
|
||||
msgid "Note that enabling this setting will increase the memory requirement of :ref:`class_ConcavePolygonShape3D` with about 25%."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:173
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:164
|
||||
msgid "Kinematic RigidBody3D contacts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:175
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:166
|
||||
msgid "When using Jolt, a :ref:`class_RigidBody3D` frozen with :ref:`FREEZE_MODE_KINEMATIC<class_RigidBody3D_constant_FREEZE_MODE_KINEMATIC>` will by default not report contacts from collisions with other static/kinematic bodies, for performance reasons, even when setting a non-zero :ref:`max_contacts_reported<class_RigidBody3D_property_max_contacts_reported>`. If you have many/large kinematic bodies overlapping with complex static geometry, such as :ref:`class_ConcavePolygonShape3D` or :ref:`class_HeightMapShape3D`, you can end up wasting a significant amount of CPU performance and memory without realizing it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:183
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:174
|
||||
msgid "For this reason this behavior is opt-in through the project setting :ref:`Physics > Jolt Physics 3D > Simulation > Generate All Kinematic Contacts<class_ProjectSettings_property_physics/jolt_physics_3d/simulation/generate_all_kinematic_contacts>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:187
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:178
|
||||
msgid "Contact impulses"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:189
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:180
|
||||
msgid "Due to limitations internal to Jolt, the contact impulses provided by :ref:`PhysicsDirectBodyState3D.get_contact_impulse()<class_physicsdirectbodystate3d_method_get_contact_impulse>` are estimated ahead of time based on things like the contact manifold and velocities of the colliding bodies. This means that the reported impulses will only be accurate in cases where the two bodies in question are not colliding with any other bodies."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:195
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:186
|
||||
msgid "Area3D and SoftBody3D"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:197
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:188
|
||||
msgid "Jolt does not currently support any interactions between :ref:`class_SoftBody3D` and :ref:`class_Area3D`, such as overlap events, or the wind properties found on :ref:`class_Area3D`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:202
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:193
|
||||
msgid "WorldBoundaryShape3D"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:204
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:195
|
||||
msgid ":ref:`class_WorldBoundaryShape3D`, which is meant to represent an infinite plane, is implemented a bit differently in Jolt compared to Godot Physics. Both engines have an upper limit for how big the effective size of this plane can be, but this size is much smaller when using Jolt, in order to avoid precision issues."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:209
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:200
|
||||
msgid "You can configure this size using the :ref:`Physics > Jolt Physics 3D > Limits > World Boundary Shape Size<class_ProjectSettings_Property_physics/jolt_physics_3d/limits/world_boundary_shape_size>` project setting."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:213
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:204
|
||||
msgid "Notable differences to the Godot Jolt extension"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:215
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:206
|
||||
msgid "While the built-in Jolt module is largely a straight port of the Godot Jolt extension, there are a few things that are different."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:219
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:210
|
||||
msgid "Project settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:221
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:212
|
||||
msgid "All project settings have been moved from the ``physics/jolt_3d`` category to ``physics/jolt_physics_3d``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:224
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:215
|
||||
msgid "On top of that, there's been some renaming and refactoring of the individual project settings as well. These include:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:227
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:218
|
||||
msgid "``sleep/enabled`` is now ``simulation/allow_sleep.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:228
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:219
|
||||
msgid "``sleep/velocity_threshold`` is now ``simulation/sleep_velocity_threshold.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:229
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:220
|
||||
msgid "``sleep/time_threshold`` is now ``simulation/sleep_time_threshold.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:230
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:221
|
||||
msgid "``collisions/use_shape_margins`` is now ``collisions/collision_margin_fraction``, where a value of 0 is equivalent to disabling it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:232
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:223
|
||||
msgid "``collisions/use_enhanced_internal_edge_removal`` is now ``simulation/use_enhanced_internal_edge_removal.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:233
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:224
|
||||
msgid "``collisions/areas_detect_static_bodies`` is now ``simulation/areas_detect_static_bodies.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:234
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:225
|
||||
msgid "``collisions/report_all_kinematic_contacts`` is now ``simulation/generate_all_kinematic_contacts.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:235
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:226
|
||||
msgid "``collisions/soft_body_point_margin`` is now ``simulation/soft_body_point_radius.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:236
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:227
|
||||
msgid "``collisions/body_pair_cache_enabled is now simulation/body_pair_contact_cache_enabled.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:237
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:228
|
||||
msgid "``collisions/body_pair_cache_distance_threshold`` is ``now simulation/body_pair_contact_cache_distance_threshold.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:238
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:229
|
||||
msgid "``collisions/body_pair_cache_angle_threshold is now simulation/body_pair_contact_cache_angle_threshold.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:239
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:230
|
||||
msgid "``continuous_cd/movement_threshold`` is now ``simulation/continuous_cd_movement_threshold``, but expressed as a fraction instead of a percentage."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:241
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:232
|
||||
msgid "``continuous_cd/max_penetration`` is now ``simulation/continuous_cd_max_penetration``, but expressed as a fraction instead of a percentage."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:243
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:234
|
||||
msgid "``kinematics/use_enhanced_internal_edge_removal`` is now ``motion_queries/use_enhanced_internal_edge_removal.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:244
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:235
|
||||
msgid "``kinematics/recovery_iterations`` is now ``motion_queries/recovery_iterations``, but expressed as a fraction instead of a percentage."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:246
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:237
|
||||
msgid "``kinematics/recovery_amount`` is now ``motion_queries/recovery_amount.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:247
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:238
|
||||
msgid "``queries/use_legacy_ray_casting`` has been removed."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:248
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:239
|
||||
msgid "``solver/position_iterations`` is now ``simulation/position_steps.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:249
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:240
|
||||
msgid "``solver/velocity_iterations`` is now ``simulation/velocity_steps.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:250
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:241
|
||||
msgid "``solver/position_correction`` is now ``simulation/baumgarte_stabilization_factor``, but expressed as a fraction instead of a percentage."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:252
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:243
|
||||
msgid "``solver/active_edge_threshold`` is now ``collisions/active_edge_threshold.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:253
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:244
|
||||
msgid "``solver/bounce_velocity_threshold`` is now ``simulation/bounce_velocity_threshold.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:254
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:245
|
||||
msgid "``solver/contact_speculative_distance`` is now ``simulation/speculative_contact_distance.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:255
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:246
|
||||
msgid "``solver/contact_allowed_penetration`` is now ``simulation/penetration_slop.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:256
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:247
|
||||
msgid "``limits/max_angular_velocity`` is now stored as radians instead."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:257
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:248
|
||||
msgid "``limits/max_temporary_memory`` is now ``limits/temporary_memory_buffer_size.``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:260
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:251
|
||||
msgid "Joint nodes"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:262
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:253
|
||||
msgid "The joint nodes that are exposed in the Godot Jolt extension (JoltPinJoint3D, JoltHingeJoint3D, JoltSliderJoint3D, JoltConeTwistJoint3D, and JoltGeneric6DOFJoint) have not been included in the Jolt module."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:267
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:258
|
||||
msgid "Thread safety"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:269
|
||||
#: ../../docs/tutorials/physics/using_jolt_physics.rst:260
|
||||
msgid "Unlike the Godot Jolt extension, the Jolt module does have thread-safety, including support for the :ref:`Physics > 3D > Run On Separate Thread<class_ProjectSettings_Property_physics/3d/run_on_separate_thread>` project setting. However this has not been tested very thoroughly, so it should be considered experimental."
|
||||
msgstr ""
|
||||
|
||||
@@ -20,7 +20,7 @@ msgid "Android in-app purchases"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:6
|
||||
msgid "Godot offers a first-party ``GodotGooglePlayBilling`` Android plugin compatible with Godot 4 which uses the `Google Play Billing library <https://developer.android.com/google/play/billing>`_."
|
||||
msgid "Godot offers a first-party ``GodotGooglePlayBilling`` Android plugin compatible with Godot 4.2+ which uses the `Google Play Billing library <https://developer.android.com/google/play/billing>`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:10
|
||||
@@ -59,166 +59,166 @@ msgstr ""
|
||||
msgid "Initialization example:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:46
|
||||
msgid "The API must be in a connected state prior to use. The ``connected`` signal is sent when the connection process succeeds. You can also use ``isReady()`` to determine if the plugin is ready for use. The ``get_connection_state()`` function returns the current connection state of the plugin."
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:44
|
||||
msgid "The API must be in a connected state prior to use. The ``connected`` signal is sent when the connection process succeeds. You can also use ``is_ready()`` to determine if the plugin is ready for use. The ``get_connection_state()`` function returns the current connection state of the plugin."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:51
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:49
|
||||
msgid "Return values for ``get_connection_state()``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:66
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:64
|
||||
msgid "Query available items"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:68
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:66
|
||||
msgid "Once the API has connected, query product IDs using `query_product_details()`. You must successfully complete a product details query before calling the ``purchase()``, ``purchase_subscription()``, or ``update_subscription()`` functions, or they will return an error. ``query_product_details()`` takes two parameters: an array of product ID strings and the type of product being queried. The product type should be ``BillingClient.ProductType.INAPP`` for normal in-app purchases or ``BillingClient.ProductType.SUBS`` for subscriptions. The ID strings in the array should match the product IDs defined in the Google Play Console entry for your app."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:76
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:74
|
||||
msgid "Example use of ``query_product_details()``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:94
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:92
|
||||
msgid "Query user purchases"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:96
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:94
|
||||
msgid "To retrieve a user's purchases, call the ``query_purchases()`` function passing a product type to query. The product type should be ``BillingClient.ProductType.INAPP`` for normal in-app purchases or ``BillingClient.ProductType.SUBS`` for subscriptions. The ``query_purchases_response`` signal is sent with the result. The signal has a single parameter: a :ref:`Dictionary <class_Dictionary>` with a response code and either an array of purchases or a debug message. Only active subscriptions and non-consumed one-time purchases are included in the purchase array."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:105
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:103
|
||||
msgid "Example use of ``query_purchases()``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:123
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:121
|
||||
msgid "Purchase an item"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:125
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:123
|
||||
msgid "To launch the billing flow for an item: - Use ``purchase()`` for in-app products, passing the product ID string. - Use ``purchase_subscription()`` for subscriptions, passing the product ID and base plan ID. You may also optionally provide an offer ID."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:129
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:127
|
||||
msgid "For both ``purchase()`` and ``purchase_subscription()``, you can optionally pass a boolean to indicate whether offers are `personallised <https://developer.android.com/google/play/billing/integrate#personalized-price>`_"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:132
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:130
|
||||
msgid "Reminder: you **must** query the product details for an item before you can pass it to ``purchase()``. This method returns a dictionary indicating whether the billing flow was successfully launched. It includes a response code and either an array of purchases or a debug message."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:137
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:135
|
||||
msgid "Example use of ``purchase()``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:149
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:147
|
||||
msgid "The result of the purchase will be sent through the ``on_purchases_updated`` signal."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:164
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:162
|
||||
msgid "Processing a purchase item"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:166
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:164
|
||||
msgid "The ``query_purchases_response`` and ``on_purchases_updated`` signals provide an array of purchases in :ref:`Dictionary <class_Dictionary>` format. The purchase Dictionary includes keys that map to values of the Google Play Billing `Purchase <https://developer.android.com/reference/com/android/billingclient/api/Purchase>`_ class."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:171
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:169
|
||||
msgid "Purchase fields:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:189
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:187
|
||||
msgid "Check purchase state"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:191
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:189
|
||||
msgid "Check the ``purchase_state`` value of a purchase to determine if a purchase was completed or is still pending."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:194
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:192
|
||||
msgid "PurchaseState values:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:207
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:205
|
||||
msgid "If a purchase is in a ``PENDING`` state, you should not award the contents of the purchase or do any further processing of the purchase until it reaches the ``PURCHASED`` state. If you have a store interface, you may wish to display information about pending purchases needing to be completed in the Google Play Store. For more details on pending purchases, see `Handling pending transactions <https://developer.android.com/google/play/billing/integrate#pending>`_ in the Google Play Billing Library documentation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:217
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:215
|
||||
msgid "Consumables"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:219
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:217
|
||||
msgid "If your in-app item is not a one-time purchase but a consumable item (e.g. coins) which can be purchased multiple times, you can consume an item by calling ``consume_purchase()`` passing the ``purchase_token`` value from the purchase dictionary. Calling ``consume_purchase()`` automatically acknowledges a purchase. Consuming a product allows the user to purchase it again, it will no longer appear in subsequent ``query_purchases()`` calls unless it is repurchased."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:226
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:224
|
||||
msgid "Example use of ``consume_purchase()``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:251
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:249
|
||||
msgid "Acknowledging purchases"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:253
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:251
|
||||
msgid "If your in-app item is a one-time purchase, you must acknowledge the purchase by calling the ``acknowledge_purchase()`` function, passing the ``purchase_token`` value from the purchase dictionary. If you do not acknowledge a purchase within three days, the user automatically receives a refund, and Google Play revokes the purchase. If you are calling ``comsume_purchase()`` it automatically acknowledges the purchase and you do not need to call ``acknowledge_purchase()``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:260
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:258
|
||||
msgid "Example use of ``acknowledge_purchase()``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:287
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:285
|
||||
msgid "Subscriptions"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:289
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:287
|
||||
msgid "Subscriptions work mostly like regular in-app items. Use ``BillingClient.ProductType.SUBS`` as the second argument to ``query_product_details()`` to get subscription details. Pass ``BillingClient.ProductType.SUBS`` to ``query_purchases()`` to get subscription purchase details."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:293
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:291
|
||||
msgid "You can check ``is_auto_renewing`` in the a subscription purchase returned from ``query_purchases()`` to see if a user has cancelled an auto-renewing subscription."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:297
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:295
|
||||
msgid "You need to acknowledge new subscription purchases, but not automatic subscription renewals."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:300
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:298
|
||||
msgid "If you support upgrading or downgrading between different subscription levels, you should use ``update_subscription()`` to use the subscription update flow to change an active subscription. Like ``purchase()``, results are returned by the ``on_purchases_updated`` signal. These are the parameters of ``update_subscription()``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:306
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:304
|
||||
msgid "old_purchase_token: The purchase token of the currently active subscription"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:307
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:305
|
||||
msgid "replacement_mode: The replacement mode to apply to the subscription"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:308
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:306
|
||||
msgid "product_id: The product ID of the new subscription to switch to"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:309
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:307
|
||||
msgid "base_plan_id: The base plan ID of the target subscription"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:310
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:308
|
||||
msgid "offer_id: The offer ID under the base plan (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:311
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:309
|
||||
msgid "is_offer_personalized: Whether to enable personalized pricing (optional)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:313
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:311
|
||||
msgid "The replacement modes values are defined as:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:341
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:339
|
||||
msgid "Default behavior is ``WITH_TIME_PRORATION``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:343
|
||||
#: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:341
|
||||
msgid "Example use of ``update_subscription``:"
|
||||
msgstr ""
|
||||
|
||||
@@ -90,3 +90,15 @@ msgstr ""
|
||||
#: ../../docs/tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.rst:105
|
||||
msgid "Java inner classes can be accessed using the ``$`` sign:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.rst:118
|
||||
msgid "Example: Calling a constructor"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.rst:120
|
||||
msgid "A constructor is invoked by calling a method with the same name as the class."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/platform/android/javaclasswrapper_and_androidruntimeplugin.rst:122
|
||||
msgid "This example creates an intent to send a text:"
|
||||
msgstr ""
|
||||
|
||||
@@ -44,7 +44,7 @@ msgid "The first thing you need for the editor to identify a new plugin is to cr
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/editor/making_plugins.rst:33
|
||||
msgid "In the main toolbar, click the ``Project`` dropdown. Then click ``Project Settings...``. Go to the ``Plugins`` tab and then click on the ``Create New Plugin`` button in the top-right."
|
||||
msgid "In the main toolbar, click the ``Project`` dropdown. Then click ``Project Settings...``. Go to the ``Plugins`` tab and then click on the :button:`Create New Plugin` button in the top-right."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/editor/making_plugins.rst:37
|
||||
|
||||
@@ -151,99 +151,99 @@ msgstr ""
|
||||
msgid "You then want to connect the signal when a new resource is set:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:405
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:409
|
||||
msgid "Lastly, remember to disconnect the signal as the old resource being used and changed somewhere else would cause unneeded updates."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:438
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:446
|
||||
msgid "Reporting node configuration warnings"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:440
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:448
|
||||
msgid "Godot uses a *node configuration warning* system to warn users about incorrectly configured nodes. When a node isn't configured correctly, a yellow warning sign appears next to the node's name in the Scene dock. When you hover or click on the icon, a warning message pops up. You can use this feature in your scripts to help you and your team avoid mistakes when setting up scenes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:446
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:454
|
||||
msgid "When using node configuration warnings, when any value that should affect or remove the warning changes, you need to call :ref:`update_configuration_warnings<class_Node_method_update_configuration_warnings>` . By default, the warning only updates when closing and reopening the scene."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:483
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:491
|
||||
msgid "Running one-off scripts using EditorScript"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:485
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:493
|
||||
msgid "Sometimes, you need to run code just one time to automate a certain task that is not available in the editor out of the box. Some examples might be:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:488
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:496
|
||||
msgid "Use as a playground for GDScript or C# scripting without having to run a project. ``print()`` output is displayed in the editor Output panel."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:490
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:498
|
||||
msgid "Scale all light nodes in the currently edited scene, as you noticed your level ends up looking too dark or too bright after placing lights where desired."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:492
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:500
|
||||
msgid "Replace nodes that were copy-pasted with scene instances to make them easier to modify later."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:495
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:503
|
||||
msgid "This is available in Godot by extending :ref:`class_EditorScript` in a script. This provides a way to run individual scripts in the editor without having to create an editor plugin."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:499
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:507
|
||||
msgid "To create an EditorScript, right-click a folder or empty space in the FileSystem dock then choose **New > Script...**. In the script creation dialog, click the tree icon to choose an object to extend from (or enter ``EditorScript`` directly in the field on the left, though note this is case-sensitive):"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:504
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:508
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:512
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:516
|
||||
msgid "Creating an editor script in the script editor creation dialog"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:510
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:518
|
||||
msgid "This will automatically select a script template that is suited for EditorScripts, with a ``_run()`` method already inserted:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:522
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:530
|
||||
msgid "This ``_run()`` method is executed when you use **File > Run** or the keyboard shortcut :kbd:`Ctrl + Shift + X` while the EditorScript is the currently open script in the script editor. This keyboard shortcut is only effective when currently focused on the script editor."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:527
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:535
|
||||
msgid "Scripts that extend EditorScript must be ``@tool`` scripts to function."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:531
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:539
|
||||
msgid "EditorScripts can only be run from the Godot script editor. If you are using an external editor, open the script inside the Godot script editor to run it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:536
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:544
|
||||
msgid "EditorScripts have no undo/redo functionality, so **make sure to save your scene before running one** if the script is designed to modify any data."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:539
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:547
|
||||
msgid "To access nodes in the currently edited scene, use the :ref:`EditorScript.get_scene <class_EditorScript_method_get_scene>` method which returns the root Node of the currently edited scene. Here's an example that recursively gets all nodes in the currently edited scene and doubles the range of all OmniLight3D nodes:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:572
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:580
|
||||
msgid "You can change the currently edited scene at the top of the editor even while the Script view is open. This will affect the return value of :ref:`EditorScript.get_scene <class_EditorScript_method_get_scene>`, so make sure you've selected the scene you intend to iterate upon before running the script."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:579
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:587
|
||||
msgid "Instancing scenes"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:581
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:589
|
||||
msgid "You can instantiate packed scenes normally and add them to the scene currently opened in the editor. By default, nodes or scenes added with :ref:`Node.add_child(node) <class_Node_method_add_child>` are **not** visible in the Scene tree dock and are **not** persisted to disk. If you wish the node or scene to be visible in the scene tree dock and persisted to disk when saving the scene, you need to set the child node's :ref:`owner <class_Node_property_owner>` property to the currently edited scene root."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:589
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:597
|
||||
msgid "If you are using ``@tool``:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:614
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:622
|
||||
msgid "If you are using :ref:`EditorScript<class_EditorScript>`:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:645
|
||||
#: ../../docs/tutorials/plugins/running_code_in_the_editor.rst:653
|
||||
msgid "Using ``@tool`` improperly can yield many errors. It is advised to first write the code how you want it, and only then add the ``@tool`` annotation to the top. Also, make sure to separate code that runs in-editor from code that runs in-game. This way, you can find bugs more easily."
|
||||
msgstr ""
|
||||
|
||||
@@ -490,17 +490,9 @@ msgid "However, if your 3D game is intended to be played in portrait mode, it ma
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/rendering/multiple_resolutions.rst:560
|
||||
msgid "Scaling 2D and 3D elements differently using Viewports"
|
||||
msgid "Scaling 2D and 3D elements differently"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/rendering/multiple_resolutions.rst:562
|
||||
msgid "Using multiple Viewport nodes, you can have different scales for various elements. For instance, you can use this to render the 3D world at a low resolution while keeping 2D elements at the native resolution. This can improve performance significantly while keeping the HUD and other 2D elements crisp."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/rendering/multiple_resolutions.rst:567
|
||||
msgid "This is done by using the root Viewport node only for 2D elements, then creating a Viewport node to display the 3D world and displaying it using a SubViewportContainer or TextureRect node. There will effectively be two viewports in the final project. One upside of using TextureRect over SubViewportContainer is that it allows enable linear filtering. This makes scaled 3D viewports look better in many cases."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/rendering/multiple_resolutions.rst:574
|
||||
msgid "See the `3D viewport scaling demo <https://github.com/godotengine/godot-demo-projects/tree/master/viewport/3d_scaling>`__ for examples."
|
||||
msgid "To render 3D at a different resolution from 2D elements (such as the UI), use Godot's :ref:`resolution scaling <doc_resolution_scaling>` functionality. This allows you to control the resolution scale factor used for 3D without needing to use a separate Viewport node. This can either be used to improve performance by rendering 3D at a lower resolution, or improve quality via supersampling."
|
||||
msgstr ""
|
||||
|
||||
@@ -16,7 +16,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../docs/tutorials/rendering/renderers.rst:4
|
||||
msgid "Renderers"
|
||||
msgid "Overview of renderers"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/rendering/renderers.rst:8
|
||||
@@ -308,11 +308,7 @@ msgid "✔️ Yes. Recommended for standalone headsets."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/rendering/renderers.rst:154
|
||||
msgid "✔️ Yes. Recommended for"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/rendering/renderers.rst:155
|
||||
msgid "desktop headsets."
|
||||
msgid "✔️ Yes. Recommended for desktop headsets."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/rendering/renderers.rst:158
|
||||
|
||||
@@ -336,50 +336,46 @@ msgstr ""
|
||||
msgid "Using the generic ``Godot.Collections.Dictionary<TKey, TValue>`` allows specifying the types of the key and value elements of the dictionary."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:585
|
||||
msgid "Typed dictionaries are currently unsupported in the Godot editor, so the Inspector will not restrict the types that can be assigned, potentially resulting in runtime exceptions."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:594
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:588
|
||||
msgid "The default value of Godot dictionaries is null. A different default can be specified:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:607
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:601
|
||||
msgid "Exporting C# arrays"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:609
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:603
|
||||
msgid "C# arrays can exported as long as the element type is a :ref:`Variant-compatible type <c_sharp_variant_compatible_types>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:619
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:613
|
||||
msgid "The default value of C# arrays is null. A different default can be specified:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:631
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:625
|
||||
msgid "Setting exported variables from a tool script"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:633
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:627
|
||||
msgid "When changing an exported variable's value from a script in :ref:`doc_gdscript_tool_mode`, the value in the inspector won't be updated automatically. To update it, call :ref:`NotifyPropertyListChanged() <class_Object_method_notify_property_list_changed>` after setting the exported variable's value."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:640
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:634
|
||||
msgid "Advanced exports"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:642
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:636
|
||||
msgid "Not every type of export can be provided on the level of the language itself to avoid unnecessary design complexity. The following describes some more or less common exporting features which can be implemented with a low-level API."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:646
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:640
|
||||
msgid "Before reading further, you should get familiar with the way properties are handled and how they can be customized with :ref:`_Set() <class_Object_private_method__set>`, :ref:`_Get() <class_Object_private_method__get>`, and :ref:`_GetPropertyList() <class_Object_private_method__get_property_list>` methods as described in :ref:`doc_accessing_data_or_logic_from_object`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:653
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:647
|
||||
msgid "For binding properties using the above methods in C++, see :ref:`doc_binding_properties_using_set_get_property_list`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:656
|
||||
#: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:650
|
||||
msgid "The script must operate in the ``tool`` mode so the above methods can work from within the editor."
|
||||
msgstr ""
|
||||
|
||||
@@ -108,11 +108,11 @@ msgid "For example:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/creating_script_templates.rst:75
|
||||
msgid "``template_scripts/Node/smooth_camera.gd``"
|
||||
msgid "``script_templates/Node/smooth_camera.gd``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/creating_script_templates.rst:76
|
||||
msgid "``template_scripts/CharacterBody3D/platformer_movement.gd``"
|
||||
msgid "``script_templates/CharacterBody3D/platformer_movement.gd``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/creating_script_templates.rst:79
|
||||
|
||||
@@ -204,217 +204,217 @@ msgid "To define the type of an ``Array``, enclose the type name in ``[]``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:220
|
||||
msgid "An array's type applies to ``for`` loop variables, as well as some operators like ``[]``, ``[]=``, and ``+``. Array methods (such as ``push_back``) and other operators (such as ``==``) are still untyped. Built-in types, native and custom classes, and enums may be used as element types. Nested array types (like ``Array[Array[int]]``) are not supported."
|
||||
msgid "An array's type applies to ``for`` loop variables, as well as some operators like ``[]``, ``[...] =`` (assignment), and ``+``. Array methods (such as ``push_back``) and other operators (such as ``==``) are still untyped. Built-in types, native and custom classes, and enums may be used as element types. Nested array types (like ``Array[Array[int]]``) are not supported."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:243
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:244
|
||||
msgid "Since Godot 4.2, you can also specify a type for the loop variable in a ``for`` loop. For instance, you can write:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:252
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:253
|
||||
msgid "The array will remain untyped, but the ``name`` variable within the ``for`` loop will always be of ``String`` type."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:256
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:257
|
||||
msgid "Specify the element type of a ``Dictionary``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:258
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:259
|
||||
msgid "To define the type of a ``Dictionary``'s keys and values, enclose the type name in ``[]`` and separate the key and value type with a comma."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:261
|
||||
msgid "A dictionary's value type applies to ``for`` loop variables, as well as some operators like ``[]`` and ``[]=``. Dictionary methods that return values and other operators (such as ``==``) are still untyped. Built-in types, native and custom classes, and enums may be used as element types. Nested typed collections (like ``Dictionary[String, Dictionary[String, int]]``) are not supported."
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:262
|
||||
msgid "A dictionary's value type applies to ``for`` loop variables, as well as some operators like ``[]`` and ``[...] =`` (assignment). Dictionary methods that return values and other operators (such as ``==``) are still untyped. Built-in types, native and custom classes, and enums may be used as element types. Nested typed collections (like ``Dictionary[String, Dictionary[String, int]]``) are not supported."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:285
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:286
|
||||
msgid "Type casting"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:287
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:288
|
||||
msgid "Type casting is an important concept in typed languages. Casting is the conversion of a value from one type to another."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:290
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:291
|
||||
msgid "Imagine an ``Enemy`` in your game, that ``extends Area2D``. You want it to collide with the ``Player``, a ``CharacterBody2D`` with a script called ``PlayerController`` attached to it. You use the ``body_entered`` signal to detect the collision. With typed code, the body you detect is going to be a generic ``PhysicsBody2D``, and not your ``PlayerController`` on the ``_on_body_entered`` callback."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:296
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:297
|
||||
msgid "You can check if this ``PhysicsBody2D`` is your ``Player`` with the ``as`` keyword, and using the colon ``:`` again to force the variable to use this type. This forces the variable to stick to the ``PlayerController`` type:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:309
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:310
|
||||
msgid "As we're dealing with a custom type, if the ``body`` doesn't extend ``PlayerController``, the ``player`` variable will be set to ``null``. We can use this to check if the body is the player or not. We will also get full autocompletion on the player variable thanks to that cast."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:316
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:317
|
||||
msgid "The ``as`` keyword silently casts the variable to ``null`` in case of a type mismatch at runtime, without an error/warning. While this may be convenient in some cases, it can also lead to bugs. Use the ``as`` keyword only if this behavior is intended. A safer alternative is to use the ``is`` keyword:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:332
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:333
|
||||
msgid "You can also simplify the code by using the ``is not`` operator:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:339
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:340
|
||||
msgid "Alternatively, you can use the ``assert()`` statement:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:354
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:355
|
||||
msgid "If you try to cast with a built-in type and it fails, Godot will throw an error."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:359
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:360
|
||||
msgid "Safe lines"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:361
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:362
|
||||
msgid "You can also use casting to ensure safe lines. Safe lines are a tool to tell you when ambiguous lines of code are type-safe. As you can mix and match typed and dynamic code, at times, Godot doesn't have enough information to know if an instruction will trigger an error or not at runtime."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:366
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:367
|
||||
msgid "This happens when you get a child node. Let's take a timer for example: with dynamic code, you can get the node with ``$Timer``. GDScript supports `duck-typing <https://stackoverflow.com/a/4205163/8125343>`__, so even if your timer is of type ``Timer``, it is also a ``Node`` and an ``Object``, two classes it extends. With dynamic GDScript, you also don't care about the node's type as long as it has the methods you need to call."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:373
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:374
|
||||
msgid "You can use casting to tell Godot the type you expect when you get a node: ``($Timer as Timer)``, ``($Player as CharacterBody2D)``, etc. Godot will ensure the type works and if so, the line number will turn green at the left of the script editor."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:378
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:379
|
||||
msgid "Unsafe vs Safe Line"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:381
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:382
|
||||
msgid "Unsafe line (line 7) vs Safe Lines (line 6 and 8)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:385
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:386
|
||||
msgid "Safe lines do not always mean better or more reliable code. See the note above about the ``as`` keyword. For example:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:393
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:394
|
||||
msgid "Even though ``node_2`` declaration is marked as an unsafe line, it is more reliable than ``node_1`` declaration. Because if you change the node type in the scene and accidentally forget to change it in the script, the error will be detected immediately when the scene is loaded. Unlike ``node_1``, which will be silently cast to ``null`` and the error will be detected later."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:401
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:402
|
||||
msgid "You can turn off safe lines or change their color in the editor settings."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:404
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:405
|
||||
msgid "Typed or dynamic: stick to one style"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:406
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:407
|
||||
msgid "Typed GDScript and dynamic GDScript can coexist in the same project. But it's recommended to stick to either style for consistency in your codebase, and for your peers. It's easier for everyone to work together if you follow the same guidelines, and faster to read and understand other people's code."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:411
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:412
|
||||
msgid "Typed code takes a little more writing, but you get the benefits we discussed above. Here's an example of the same, empty script, in a dynamic style:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:426
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:427
|
||||
msgid "And with static typing:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:440
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:441
|
||||
msgid "As you can see, you can also use types with the engine's virtual methods. Signal callbacks, like any methods, can also use types. Here's a ``body_entered`` signal in a dynamic style:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:449
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:450
|
||||
msgid "And the same callback, with type hints:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:451
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:452
|
||||
msgid "::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:452
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:453
|
||||
msgid "func _on_area_2d_body_entered(body: PhysicsBody2D) -> void:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:453
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:454
|
||||
msgid "pass"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:456
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:457
|
||||
msgid "Warning system"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:460
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:461
|
||||
msgid "Detailed documentation about the GDScript warning system has been moved to :ref:`doc_gdscript_warning_system`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:463
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:464
|
||||
msgid "Godot gives you warnings about your code as you write it. The engine identifies sections of your code that may lead to issues at runtime, but lets you decide whether or not you want to leave the code as it is."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:467
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:468
|
||||
msgid "We have a number of warnings aimed specifically at users of typed GDScript. By default, these warnings are disabled, you can enable them in Project Settings (**Debug > GDScript**, make sure **Advanced Settings** is enabled)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:471
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:472
|
||||
msgid "You can enable the ``UNTYPED_DECLARATION`` warning if you want to always use static types. Additionally, you can enable the ``INFERRED_DECLARATION`` warning if you prefer a more readable and reliable, but more verbose syntax."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:475
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:476
|
||||
msgid "``UNSAFE_*`` warnings make unsafe operations more noticeable, than unsafe lines. Currently, ``UNSAFE_*`` warnings do not cover all cases that unsafe lines cover."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:479
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:480
|
||||
msgid "Common unsafe operations and their safe counterparts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:482
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:483
|
||||
msgid "``UNSAFE_PROPERTY_ACCESS`` and ``UNSAFE_METHOD_ACCESS`` warnings"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:484
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:485
|
||||
msgid "In this example, we aim to set a property and call a method on an object that has a script attached with ``class_name MyScript`` and that ``extends Node2D``. If we have a reference to the object as a ``Node2D`` (for instance, as it was passed to us by the physics system), we can first check if the property and method exist and then set and call them if they do:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:498
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:499
|
||||
msgid "However, this code will produce ``UNSAFE_PROPERTY_ACCESS`` and ``UNSAFE_METHOD_ACCESS`` warnings as the property and method are not present in the referenced type - in this case a ``Node2D``. To make these operations safe, you can first check if the object is of type ``MyScript`` using the ``is`` keyword and then declare a variable with the type ``MyScript`` on which you can set its properties and call its methods:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:512
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:513
|
||||
msgid "Alternatively, you can declare a variable and use the ``as`` operator to try to cast the object. You'll then want to check whether the cast was successful by confirming that the variable was assigned:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:524
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:525
|
||||
msgid "``UNSAFE_CAST`` warning"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:526
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:527
|
||||
msgid "In this example, we would like the label connected to an object entering our collision area to show the area's name. Once the object enters the collision area, the physics system sends a signal with a ``Node2D`` object, and the most straightforward (but not statically typed) solution to do what we want could be achieved like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:537
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:538
|
||||
msgid "This piece of code produces an ``UNSAFE_PROPERTY_ACCESS`` warning because ``label`` is not defined in ``Node2D``. To solve this, we could first check if the ``label`` property exist and cast it to type ``Label`` before settings its text property like so:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:548
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:549
|
||||
msgid "However, this produces an ``UNSAFE_CAST`` warning because ``body.label`` is of a ``Variant`` type. To safely get the property in the type you want, you can use the ``Object.get()`` method which returns the object as a ``Variant`` value or returns ``null`` if the property doesn't exist. You can then determine whether the property contains an object of the right type using the ``is`` keyword, and finally declare a statically typed variable with the object:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:564
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:565
|
||||
msgid "Cases where you can't specify types"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:568
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:569
|
||||
msgid "To wrap up this introduction, let's mention cases where you can't use type hints. This will trigger a **syntax error**."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:571
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:572
|
||||
msgid "You can't specify the type of individual elements in an array or a dictionary:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:582
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:583
|
||||
msgid "Nested types are not currently supported:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:589
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:590
|
||||
msgid "Summary"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:594
|
||||
#: ../../docs/tutorials/scripting/gdscript/static_typing.rst:595
|
||||
msgid "Typed GDScript is a powerful tool. It helps you write more structured code, avoid common errors, and create scalable and reliable systems. Static types improve GDScript performance and more optimizations are planned for the future."
|
||||
msgstr ""
|
||||
|
||||
@@ -228,5 +228,5 @@ msgid "With that, you have everything you need to get started working with compu
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/compute_shaders.rst:384
|
||||
msgid "The demo projects repository contains a `Compute Shader Heightmap demo <https://github.com/godotengine/godot-demo-projects/tree/master/misc/compute_shader_heightmap>`__ This project performs heightmap image generation on the CPU and GPU separately, which lets you compare how a similar algorithm can be implemented in two different ways (with the GPU implementation being faster in most cases)."
|
||||
msgid "The demo projects repository contains a `Compute Shader Heightmap demo <https://github.com/godotengine/godot-demo-projects/tree/master/compute/heightmap>`__ This project performs heightmap image generation on the CPU and GPU separately, which lets you compare how a similar algorithm can be implemented in two different ways (with the GPU implementation being faster in most cases)."
|
||||
msgstr ""
|
||||
|
||||
@@ -39,8 +39,8 @@ msgstr ""
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:58
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:108
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:218
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:292
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:352
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:299
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:359
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
@@ -147,7 +147,7 @@ msgstr ""
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:58
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:108
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:218
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:292
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:299
|
||||
msgid "Built-in"
|
||||
msgstr ""
|
||||
|
||||
@@ -256,18 +256,18 @@ msgid "Instance custom data."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:126
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:234
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:238
|
||||
msgid "in bool **AT_LIGHT_PASS**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:126
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:234
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:238
|
||||
msgid "Always ``false``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:128
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:230
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:307
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:234
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:314
|
||||
msgid "in vec2 **TEXTURE_PIXEL_SIZE**"
|
||||
msgstr ""
|
||||
|
||||
@@ -276,7 +276,7 @@ msgid "Normalized pixel size of default 2D texture. For a Sprite2D with a textur
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:132
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:256
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:263
|
||||
msgid "inout vec2 **VERTEX**"
|
||||
msgstr ""
|
||||
|
||||
@@ -301,7 +301,7 @@ msgid "Normalized texture coordinates. Range from ``0.0`` to ``1.0``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:140
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:263
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:270
|
||||
msgid "inout vec4 **COLOR**"
|
||||
msgstr ""
|
||||
|
||||
@@ -379,12 +379,12 @@ msgid "Similarly, if a normal map is used in the :ref:`CanvasTexture <class_Canv
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:220
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:294
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:301
|
||||
msgid "in vec4 **FRAGCOORD**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:220
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:294
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:301
|
||||
msgid "Coordinate of pixel center. In screen space. ``xy`` specifies position in viewport. Upper-left of the viewport is the origin, ``(0.0, 0.0)``."
|
||||
msgstr ""
|
||||
|
||||
@@ -397,291 +397,299 @@ msgid "Size of individual pixels. Equal to inverse of resolution."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:226
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:313
|
||||
msgid "in vec2 **POINT_COORD**"
|
||||
msgid "in vec4 **REGION_RECT**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:226
|
||||
msgid "Coordinate for drawing points."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:228
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:305
|
||||
msgid "sampler2D **TEXTURE**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:228
|
||||
msgid "Default 2D texture."
|
||||
msgid "Visible area of the sprite region in format ``(x, y, width, height)``. Varies according to Sprite2D's ``region_enabled`` property."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:230
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:320
|
||||
msgid "in vec2 **POINT_COORD**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:230
|
||||
msgid "Coordinate for drawing points."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:232
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:312
|
||||
msgid "sampler2D **TEXTURE**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:232
|
||||
msgid "Default 2D texture."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:234
|
||||
msgid "Normalized pixel size of default 2D texture. For a Sprite2D with a texture of size 64x32px, ``TEXTURE_PIXEL_SIZE`` = ``vec2(1/64, 1/32)``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:236
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:240
|
||||
msgid "sampler2D **SPECULAR_SHININESS_TEXTURE**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:236
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:240
|
||||
msgid "Specular shininess texture of this object."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:238
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:333
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:242
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:340
|
||||
msgid "in vec4 **SPECULAR_SHININESS**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:238
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:242
|
||||
msgid "Specular shininess color, as sampled from the texture."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:240
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:302
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:244
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:309
|
||||
msgid "in vec2 **UV**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:240
|
||||
msgid "UV from the ``vertex()`` function."
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:244
|
||||
msgid "UV from the ``vertex()`` function. For Sprite2D with region enabled, this will sample the entire texture. Use ``REGION_RECT`` instead to sample only the region defined in the Sprite2D's properties."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:242
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:311
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:249
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:318
|
||||
msgid "in vec2 **SCREEN_UV**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:242
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:311
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:249
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:318
|
||||
msgid "Screen UV coordinate for current pixel."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:244
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:251
|
||||
msgid "sampler2D **SCREEN_TEXTURE**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:244
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:251
|
||||
msgid "Removed in Godot 4. Use a ``sampler2D`` with ``hint_screen_texture`` instead."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:247
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:254
|
||||
msgid "inout vec3 **NORMAL**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:247
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:254
|
||||
msgid "Normal read from ``NORMAL_TEXTURE``. Writable."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:249
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:256
|
||||
msgid "sampler2D **NORMAL_TEXTURE**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:249
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:256
|
||||
msgid "Default 2D normal texture."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:251
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:258
|
||||
msgid "out vec3 **NORMAL_MAP**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:251
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:258
|
||||
msgid "Configures normal maps meant for 3D for use in 2D. If used, overrides ``NORMAL``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:254
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:261
|
||||
msgid "out float **NORMAL_MAP_DEPTH**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:254
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:261
|
||||
msgid "Normal map depth for scaling."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:256
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:263
|
||||
msgid "Pixel position in screen space."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:258
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:265
|
||||
msgid "inout vec2 **SHADOW_VERTEX**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:258
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:265
|
||||
msgid "Same as ``VERTEX`` but can be written to alter shadows."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:260
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:267
|
||||
msgid "inout vec3 **LIGHT_VERTEX**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:260
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:267
|
||||
msgid "Same as ``VERTEX`` but can be written to alter lighting. Z component represents height."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:263
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:270
|
||||
msgid "``COLOR`` from the ``vertex()`` function multiplied by the ``TEXTURE`` color. Also output color value."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:268
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:275
|
||||
msgid "Light built-ins"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:270
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:277
|
||||
msgid "Light processor functions work differently in Godot 4.x than they did in Godot 3.x. In Godot 4.x all lighting is done during the regular draw pass. In other words, Godot no longer draws the object again for each light."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:274
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:281
|
||||
msgid "Use the ``unshaded`` render mode if you do not want the ``light()`` function to run. Use the ``light_only`` render mode if you only want to see the impact of lighting on an object; this can be useful when you only want the object visible where it is covered by light."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:279
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:286
|
||||
msgid "If you define a ``light()`` function it will replace the built-in light function, even if your light function is empty."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:282
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:289
|
||||
msgid "Below is an example of a light shader that takes a CanvasItem's normal map into account:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:298
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:305
|
||||
msgid "in vec3 **NORMAL**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:298
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:305
|
||||
msgid "Input normal."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:300
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:307
|
||||
msgid "in vec4 **COLOR**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:300
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:307
|
||||
msgid "Input color. This is the output of the ``fragment()`` function."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:302
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:309
|
||||
msgid "UV from the ``vertex()`` function, equivalent to the UV in the ``fragment()`` function."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:305
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:312
|
||||
msgid "Current texture in use for CanvasItem."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:307
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:314
|
||||
msgid "Normalized pixel size of ``TEXTURE``. For a Sprite2D with a ``TEXTURE`` of size ``64x32`` pixels, **TEXTURE_PIXEL_SIZE** = ``vec2(1/64, 1/32)``"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:313
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:320
|
||||
msgid "UV for Point Sprite."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:315
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:322
|
||||
msgid "in vec4 **LIGHT_COLOR**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:315
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:322
|
||||
msgid ":ref:`Color<class_Light2D_property_color>` of the :ref:`class_Light2D`. If the light is a :ref:`class_PointLight2D`, multiplied by the light's :ref:`texture<class_PointLight2D_property_texture>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:319
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:326
|
||||
msgid "in float **LIGHT_ENERGY**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:319
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:326
|
||||
msgid ":ref:`Energy multiplier<class_Light2D_property_energy>` of the :ref:`class_Light2D`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:322
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:329
|
||||
msgid "in vec3 **LIGHT_POSITION**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:322
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:329
|
||||
msgid "Position of the :ref:`class_Light2D` in screen space. If using a :ref:`class_DirectionalLight2D` this is always ``(0.0, 0.0, 0.0)``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:325
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:332
|
||||
msgid "in vec3 **LIGHT_DIRECTION**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:325
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:332
|
||||
msgid "Direction of the :ref:`class_Light2D` in screen space."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:327
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:334
|
||||
msgid "in bool **LIGHT_IS_DIRECTIONAL**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:327
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:334
|
||||
msgid "``true`` if this pass is a :ref:`class_DirectionalLight2D`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:329
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:336
|
||||
msgid "in vec3 **LIGHT_VERTEX**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:329
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:336
|
||||
msgid "Pixel position, in screen space as modified in the ``fragment()`` function."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:331
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:338
|
||||
msgid "inout vec4 **LIGHT**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:331
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:338
|
||||
msgid "Output color for this :ref:`class_Light2D`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:333
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:340
|
||||
msgid "Specular shininess, as set in the object's texture."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:335
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:342
|
||||
msgid "out vec4 **SHADOW_MODULATE**"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:335
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:342
|
||||
msgid "Multiply shadows cast at this point by this color."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:339
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:346
|
||||
msgid "SDF functions"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:341
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:348
|
||||
msgid "There are a few additional functions implemented to sample an automatically generated Signed Distance Field texture. These functions available for the ``fragment()`` and ``light()`` functions of CanvasItem shaders. Custom functions may also use them as long as they called from supported functions."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:346
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:353
|
||||
msgid "The signed distance field is generated from :ref:`class_LightOccluder2D` nodes present in the scene with the **SDF Collision** property enabled (which is the default). See the :ref:`2D lights and shadows <doc_2d_lights_and_shadows_setting_up_shadows>` documentation for more information."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:352
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:359
|
||||
msgid "Function"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:354
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:361
|
||||
msgid "float **texture_sdf** (vec2 sdf_pos)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:354
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:361
|
||||
msgid "Performs an SDF texture lookup."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:356
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:363
|
||||
msgid "vec2 **texture_sdf_normal** (vec2 sdf_pos)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:356
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:363
|
||||
msgid "Calculates a normal from the SDF texture."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:358
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:365
|
||||
msgid "vec2 **sdf_to_screen_uv** (vec2 sdf_pos)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:358
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:365
|
||||
msgid "Converts an SDF to screen UV."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:360
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:367
|
||||
msgid "vec2 **screen_uv_to_sdf** (vec2 uv)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:360
|
||||
#: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:367
|
||||
msgid "Converts screen UV to an SDF."
|
||||
msgstr ""
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -32,7 +32,7 @@ msgid "The first step we need to do is to add a helper node to our :ref:`XROrigi
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/basic_xr_locomotion.rst:16
|
||||
msgid "Select your :ref:`XROrigin3D <class_xrorigin3d>` node and click on the ``instantiate Child Scene`` button to add a child scene. Select ``addons/godot-xr-tools/player/player_body.tscn`` and add this node."
|
||||
msgid "Select your :ref:`XROrigin3D <class_xrorigin3d>` node and click on the :button:`Instantiate Child Scene` button to add a child scene. Select ``addons/godot-xr-tools/player/player_body.tscn`` and add this node."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/basic_xr_locomotion.rst:20
|
||||
|
||||
@@ -380,25 +380,33 @@ msgid "Now you can add things to this controller node such as a raycast, and con
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/openxr_settings.rst:303
|
||||
msgid "Binding Modifiers"
|
||||
msgid "Render Models"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/openxr_settings.rst:305
|
||||
msgid "These control whether or not binding modifiers can be used. Binding modifiers are used to apply thresholds or offset values. You can find information on how to use and set them up on the XR action map page :ref:`here <doc_binding_modifiers>`."
|
||||
msgid "This extension is used to query the XR runtime for 3D assets of the hardware being used, usually a controller, as well as the position of that hardware. You can find a detailed guide on how to use it :ref:`here <doc_openxr_render_models>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/openxr_settings.rst:310
|
||||
msgid "Analog Threshold"
|
||||
msgid "Binding Modifiers"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/openxr_settings.rst:312
|
||||
msgid "Allow analog threshold binding modifiers."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/openxr_settings.rst:315
|
||||
msgid "Dpad Binding"
|
||||
msgid "These control whether or not binding modifiers can be used. Binding modifiers are used to apply thresholds or offset values. You can find information on how to use and set them up on the XR action map page :ref:`here <doc_binding_modifiers>`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/openxr_settings.rst:317
|
||||
msgid "Analog Threshold"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/openxr_settings.rst:319
|
||||
msgid "Allow analog threshold binding modifiers."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/openxr_settings.rst:322
|
||||
msgid "Dpad Binding"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/openxr_settings.rst:324
|
||||
msgid "Allow D-pad binding modifiers."
|
||||
msgstr ""
|
||||
|
||||
@@ -28,129 +28,129 @@ msgid "Godot provides a modular XR system that abstracts many of the different X
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:12
|
||||
msgid "Each supported XR platform is implemented as an :ref:`XRInterface <class_xrinterface>`. Supported interfaces register themselves with the :ref:`XRServer <class_xrserver>` and can be queried with the ``find_interface`` method on the :ref:`XRServer <class_xrserver>`. When the desired interface is found it can be initialized by calling ``initialize`` on the interface."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:15
|
||||
msgid "A registered interface means nothing more than that the interface is available, if the interface is not supported by the host system, initialization may fail and return ``false``. This can have many reasons and sadly the reasons differ from platform to platform. It can be because the user hasn't installed the required software, or that the user simply hasn't plugged in their headset. You as a developer must thus react properly on an interface failing to initialize."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:17
|
||||
msgid "Due to the special requirements for output in XR, especially for head mounted devices that supply different images to each eye, the :ref:`XRServer <class_xrserver>` in Godot will override various features in the rendering system. For stand-alone devices this means the final output is handled by the :ref:`XRInterface <class_xrinterface>` and Godot's usual output system is disabled. For desktop XR devices that work as a second screen it is possible to dedicate a separate :ref:`Viewport <class_viewport>` to handle the XR output, leaving the main Godot window available for displaying alternative content."
|
||||
msgid "Each supported XR platform is implemented as an :ref:`XRInterface <class_xrinterface>`. A list of supported platforms can be found on the list of features page :ref:`here <doc_xr_support>`. Supported interfaces register themselves with the :ref:`XRServer <class_xrserver>` and can be queried with the ``find_interface`` method on the :ref:`XRServer <class_xrserver>`. When the desired interface is found it can be initialized by calling ``initialize`` on the interface."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:20
|
||||
msgid "Note that only one interface can be responsible for handling the output to an XR device, this is known as the primary interface and by default will be the first interface that is initialized. Godot currently thus only supports implementations with a single headset. It is possible, but increasingly uncommon, to have a secondary interface, for example to add tracking to an otherwise 3DOF only device."
|
||||
msgid "A registered interface means nothing more than that the interface is available, if the interface is not supported by the host system, initialization may fail and return ``false``. This can have many reasons and sadly the reasons differ from platform to platform. It can be because the user hasn't installed the required software, or that the user simply hasn't plugged in their headset. You as a developer must thus react properly on an interface failing to initialize."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:23
|
||||
msgid "There are three XR specific node types that you will find in nearly all XR applications:"
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:22
|
||||
msgid "Due to the special requirements for output in XR, especially for head mounted devices that supply different images to each eye, the :ref:`XRServer <class_xrserver>` in Godot will override various features in the rendering system. For stand-alone devices this means the final output is handled by the :ref:`XRInterface <class_xrinterface>` and Godot's usual output system is disabled. For desktop XR devices that work as a second screen it is possible to dedicate a separate :ref:`Viewport <class_viewport>` to handle the XR output, leaving the main Godot window available for displaying alternative content."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:25
|
||||
msgid "Note that only one interface can be responsible for handling the output to an XR device, this is known as the primary interface and by default will be the first interface that is initialized. Godot currently thus only supports implementations with a single headset. It is possible, but increasingly uncommon, to have a secondary interface, for example to add tracking to an otherwise 3DOF only device."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:28
|
||||
msgid "There are three XR specific node types that you will find in nearly all XR applications:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:30
|
||||
msgid ":ref:`XROrigin3D <class_xrorigin3d>` represents, for all intents and purposes, the center point of your play space. That is an oversimplified statement but we'll go into more detail later. All objects tracked in physical space by the XR platform are positioned in relation to this point."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:26
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:31
|
||||
msgid ":ref:`XRCamera3D <class_xrcamera3d>` represents the (stereo) camera that is used when rendering output for the XR device. The positioning of this node is controlled by the XR system and updated automatically using the tracking information provided by the XR platform."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:27
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:32
|
||||
msgid ":ref:`XRController3D <class_xrcontroller3d>` represents a controller used by the player, commonly there are two, one held in each hand. These nodes give access to various states on these controllers and send out signals when the player presses buttons on them. The positioning of this node is controlled by the XR system and updated automatically using the tracking information provided by the XR platform."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:29
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:34
|
||||
msgid "There are other XR related nodes and there is much more to say about these three nodes, but we'll get into that later on."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:32
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:37
|
||||
msgid "Which Renderer to use"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:34
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:39
|
||||
msgid "Godot has 3 renderer options for projects: Compatibility, Mobile, and Forward+. The current recommendation is to use the Mobile renderer for any desktop VR project, and use the Compatibility renderer for any project running on a standalone headset like the Meta Quest 3. XR projects will run with the Forward+ renderer, but it isn't well optimized for XR right now compared to the other two."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:41
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:46
|
||||
msgid "OpenXR"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:43
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:48
|
||||
msgid "OpenXR is a new industry standard that allows different XR platforms to present themselves through a standardised API to XR applications. This standard is an open standard maintained by the Khronos Group and thus aligns very well with Godot's interests."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:45
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:50
|
||||
msgid "The Vulkan implementation of OpenXR is closely integrated with Vulkan, taking over part of the Vulkan system. This requires tight integration of certain core graphics features in the Vulkan renderer which are needed before the XR system is setup. This was one of the main deciding factors to include OpenXR as a core interface."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:47
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:52
|
||||
msgid "This also means OpenXR needs to be enabled when Godot starts in order to set things up correctly. Check the :ref:`Enabled<class_ProjectSettings_property_xr/openxr/enabled>` setting in your project settings under **XR > OpenXR**."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:53
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:58
|
||||
msgid "You can find several other settings related to OpenXR here as well. These can't be changed while your application is running. The default settings will get us started, but for more information on what's here see :ref:`doc_openxr_settings`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:57
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:62
|
||||
msgid "You'll also need to go to **XR > Shaders** in the project settings and check the :ref:`Enabled<class_ProjectSettings_property_xr/shaders/enabled>` box to enable them. Once you've done that click the **Save & Restart** button."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:64
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:69
|
||||
msgid "Many post process effects have not yet been updated to support stereoscopic rendering. Using these will have adverse effects."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:68
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:73
|
||||
msgid "Setting up the XR scene"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:70
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:75
|
||||
msgid "Every XR application needs at least an :ref:`XROrigin3D <class_xrorigin3d>` and an :ref:`XRCamera3D <class_xrcamera3d>` node. Most will have two :ref:`XRController3D <class_xrcontroller3d>`, one for the left hand and one for the right. Keep in mind that the camera and controller nodes should be children of the origin node. Add these nodes to a new scene and rename the controller nodes to ``LeftHand`` and ``RightHand``, your scene should look something like this:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:74
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:79
|
||||
msgid "The warning icons are expected and should go away after you configure the controllers. Select the left hand and set it up as follows:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:79
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:84
|
||||
msgid "And the right hand:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:83
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:88
|
||||
msgid "Right now all these nodes are on the floor, they will be positioned correctly in runtime. To help during development, it can be helpful to move the camera upwards so its ``y`` is set to ``1.7``, and move the controller nodes to ``-0.5, 1.0, -0.5`` and ``0.5, 1.0, -0.5`` for respectively the left and right hand."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:85
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:90
|
||||
msgid "Next we need to add a script to our root node. Add the following code into this script:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:135
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:140
|
||||
msgid "This code fragment assumes we are using OpenXR, if you wish to use any of the other interfaces you can change the ``find_interface`` call."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:139
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:144
|
||||
msgid "As you can see in the code snippet above, we turn off v-sync. When using OpenXR you are outputting the rendering results to an HMD that often requires us to run at 90Hz or higher. If your monitor is a 60hz monitor and v-sync is turned on, you will limit the output to 60 frames per second."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:143
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:148
|
||||
msgid "XR interfaces like OpenXR perform their own sync."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:145
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:150
|
||||
msgid "Also note that by default the physics engine runs at 60Hz as well and this can result in choppy physics. You should set ``Engine.physics_ticks_per_second`` to a higher value."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:148
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:153
|
||||
msgid "If you run your project at this point in time, everything will work but you will be in a dark world. So to finish off our starting point add a :ref:`DirectionalLight3D <class_directionallight3d>` and a :ref:`WorldEnvironment <class_worldenvironment>` node to your scene. You may wish to also add a mesh instance as a child to each controller node just to temporarily visualise them. Make sure you configure a sky in your world environment."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:152
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:157
|
||||
msgid "Now run your project, you should be floating somewhere in space and be able to look around."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:156
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:161
|
||||
msgid "While traditional level switching can definitely be used with XR applications, where this scene setup is repeated in each level, most find it easier to set this up once and loading levels as a subscene. If you do switch scenes and replicate the XR setup in each one, do make sure you do not run ``initialize`` multiple times. The effect can be unpredictable depending on the XR interface used."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:158
|
||||
#: ../../docs/tutorials/xr/setting_up_xr.rst:163
|
||||
msgid "For the rest of this basic tutorial series we will create a game that uses a single scene."
|
||||
msgstr ""
|
||||
|
||||
@@ -152,7 +152,7 @@ msgid "For your first XR game/application we highly recommend starting with just
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/xr_action_map.rst:123
|
||||
msgid "For our walkthrough in this document we will thus create a single action set called ``my_first_action_set``. We do this by pressing the ``Add action set`` button:"
|
||||
msgid "For our walkthrough in this document we will thus create a single action set called ``my_first_action_set``. We do this by pressing the :button:`Add action set` button:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/xr_action_map.rst:129
|
||||
@@ -580,7 +580,7 @@ msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/xr_action_map.rst:519
|
||||
#: ../../docs/tutorials/xr/xr_action_map.rst:586
|
||||
msgid "You can add a new modifier by pressing the ``Add binding modifier`` button."
|
||||
msgid "You can add a new modifier by pressing the :button:`Add binding modifier` button."
|
||||
msgstr ""
|
||||
|
||||
#: ../../docs/tutorials/xr/xr_action_map.rst:522
|
||||
|
||||
@@ -166,17 +166,18 @@ tutorials/export/index.pot
|
||||
tutorials/export/exporting_projects.pot
|
||||
tutorials/export/exporting_pcks.pot
|
||||
tutorials/export/feature_tags.pot
|
||||
tutorials/export/exporting_for_windows.pot
|
||||
tutorials/export/exporting_for_linux.pot
|
||||
tutorials/export/exporting_for_macos.pot
|
||||
tutorials/export/running_on_macos.pot
|
||||
tutorials/export/exporting_for_windows.pot
|
||||
tutorials/export/changing_application_icon_for_windows.pot
|
||||
tutorials/export/exporting_for_ios.pot
|
||||
tutorials/export/exporting_for_android.pot
|
||||
tutorials/export/android_gradle_build.pot
|
||||
tutorials/export/exporting_for_ios.pot
|
||||
tutorials/export/exporting_for_visionos.pot
|
||||
tutorials/export/exporting_for_web.pot
|
||||
tutorials/export/exporting_for_dedicated_servers.pot
|
||||
tutorials/export/changing_application_icon_for_windows.pot
|
||||
tutorials/export/running_on_macos.pot
|
||||
tutorials/export/android_gradle_build.pot
|
||||
tutorials/export/one-click_deploy.pot
|
||||
tutorials/export/exporting_for_dedicated_servers.pot
|
||||
tutorials/io/index.pot
|
||||
tutorials/io/background_loading.pot
|
||||
tutorials/io/data_paths.pot
|
||||
@@ -287,11 +288,11 @@ tutorials/plugins/editor/inspector_plugins.pot
|
||||
tutorials/plugins/editor/visual_shader_plugins.pot
|
||||
tutorials/plugins/running_code_in_the_editor.pot
|
||||
tutorials/rendering/index.pot
|
||||
tutorials/rendering/renderers.pot
|
||||
tutorials/rendering/viewports.pot
|
||||
tutorials/rendering/multiple_resolutions.pot
|
||||
tutorials/rendering/jitter_stutter.pot
|
||||
tutorials/rendering/compositor.pot
|
||||
tutorials/rendering/renderers.pot
|
||||
tutorials/scripting/index.pot
|
||||
tutorials/scripting/gdscript/index.pot
|
||||
tutorials/scripting/gdscript/gdscript_basics.pot
|
||||
@@ -448,8 +449,9 @@ contributing/development/compiling/compiling_for_linuxbsd.pot
|
||||
contributing/development/compiling/compiling_for_macos.pot
|
||||
contributing/development/compiling/compiling_for_android.pot
|
||||
contributing/development/compiling/compiling_for_ios.pot
|
||||
contributing/development/compiling/cross-compiling_for_ios_on_linux.pot
|
||||
contributing/development/compiling/compiling_for_visionos.pot
|
||||
contributing/development/compiling/compiling_for_web.pot
|
||||
contributing/development/compiling/cross-compiling_for_ios_on_linux.pot
|
||||
contributing/development/compiling/compiling_with_dotnet.pot
|
||||
contributing/development/compiling/compiling_with_script_encryption_key.pot
|
||||
contributing/development/compiling/optimizing_for_size.pot
|
||||
|
||||
7599
weblate/docs.pot
7599
weblate/docs.pot
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user