# Godot Engine Documentation in Croatian # 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. # # Amra Hozić , 2022. # Filip , 2022. # LeoClose , 2020-2022. # Matea , 2023. # Milo Ivir , 2022, 2025. # Petar Ivancevic , 2023. # Eva Pelko , 2024. # Filip Radanovic , 2024. # Myeongjin Lee , 2025. # Dominik Rogić , 2025. msgid "" msgstr "" "Project-Id-Version: Godot Engine 3.2\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot-docs-l10n\n" "POT-Creation-Date: 2025-12-19 15:00+0100\n" "PO-Revision-Date: 2025-10-06 07:02+0000\n" "Last-Translator: Dominik Rogić \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Weblate 5.14-dev\n" #: ../../docs/_templates/layout.html:58 msgid "Previous" msgstr "Prošlo" #: ../../docs/_templates/layout.html:61 msgid "Next" msgstr "Sljedeće" #: ../../docs/_templates/versions.html:26 #: ../../docs/tutorials/performance/cpu_optimization.rst:160 msgid "Languages" msgstr "Jezici" #: ../../docs/_templates/versions.html:32 msgid "Versions" msgstr "Verzije" #: ../../docs/_templates/versions.html:39 msgid "On Read the Docs" msgstr "Na Read the Docs" #: ../../docs/_templates/versions.html:41 msgid "Project Home" msgstr "Projekti početna" #: ../../docs/_templates/versions.html:44 msgid "Builds" msgstr "" #: ../../docs/_templates/versions.html:47 msgid "Downloads" msgstr "Preuzimanja" #: ../../docs/index.rst:65 ../../docs/about/docs_changelog.rst:99 #: ../../docs/about/docs_changelog.rst:295 #: ../../docs/tutorials/inputs/mouse_and_input_coordinates.rst:7 #: ../../docs/tutorials/scripting/gdscript/gdscript_advanced.rst:7 #: ../../docs/engine_details/architecture/variant_class.rst:7 msgid "About" msgstr "U vezi s" #: ../../docs/index.rst:79 ../../docs/tutorials/2d/2d_parallax.rst:20 #: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:13 #: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:4 #: ../../docs/tutorials/scripting/cpp/build_system/scons.rst:14 msgid "Getting started" msgstr "Započinjanje" #: ../../docs/index.rst:94 msgid "Manual" msgstr "Uputstvo" #: ../../docs/index.rst:128 msgid "Engine details" msgstr "Detalji" #: ../../docs/index.rst:141 msgid "Community" msgstr "Zajednica" #: ../../docs/index.rst:152 msgid "Class reference" msgstr "Referenca klase" #: ../../docs/index.rst:4 #, fuzzy msgid "Godot Docs – *master* branch" msgstr "Godot Dokumenti – *4.5* verzija" #: ../../docs/index.rst:8 msgid "" "Godot's documentation is available in various languages and versions. Expand " "the \"Read the Docs\" panel at the bottom of the sidebar to see the list." msgstr "" "Godot-ova dokumentacija je dostupna u raznim jezicima i verzijama. Proširi " "panel \"Pročitaj Dokumentaciju\" koji se nalazi na dnu bočne trake kako bi " "vidjeli listu." #: ../../docs/index.rst:14 #, fuzzy msgid "" "This documentation is translated from the `original English one `_ by community members on `Weblate `_." msgstr "" "Ova dokumentacija je prevedena s `izvornog engleskog jezika `_ od strane članova zajednice na `Weblate " "`_." #: ../../docs/index.rst:18 msgid "" "Depending on the translation effort's completion level, you may find " "paragraphs or whole pages which are still in English. You can help the " "community by providing new translations or reviewing existing ones on " "Weblate." msgstr "" "Ovisno o razini dovršenog prevedenog teksta, možete pronaći odlomke ili " "cijele stranice koje su još uvijek na engleskom jeziku. Možete pomoći " "zajednici pružanjem novih prijevoda ili pregledom postojećih na weblateu." #: ../../docs/index.rst:23 #, fuzzy msgid "" "For the time being, localized translations are only available for the " "\"stable\" branch. You can still view the English documentation for other " "engine versions using the \"Read the Docs\" panel at the bottom of the " "sidebar." msgstr "" "Za sada su lokalizirani prijevodi dostupni samo za \"najnoviju\" (razvojnu) " "verziju, ali bi ipak trebali biti prikladni za učenje korištenja stabilnih " "Godot izdanja." #: ../../docs/index.rst:28 msgid "" "Welcome to the official documentation of `Godot Engine `__, the free and open source community-driven 2D and 3D " "game engine! If you are new to this documentation, we recommend that you " "read the :ref:`introduction page ` to get an overview of " "what this documentation has to offer." msgstr "" "Dobro došli u službenu dokumentaciju `Godot Engine-a `__, besplatnog i open source 2D i 3D game engine-a! Ukoliko " "ste novi u ovoj dokumentacijim, predlažemo vam da pročitate :ref:`uvodnu " "stranicu ` kako bi dobili primijer što ova dokumentacija " "ima za ponuditi." #: ../../docs/index.rst:34 msgid "" "The table of contents in the sidebar should let you easily access the " "documentation for your topic of interest. You can also use the search " "function in the top-left corner." msgstr "" "Tablica sadržaja ispod i na bočnoj traci trebala bi vam olakšati pristup " "dokumentaciji za vašu temu od interesa. Možete koristiti i funkciju " "pretraživanja u gornjem lijevom kutu." #: ../../docs/index.rst:38 msgid "Get involved" msgstr "Sudjelujte" #: ../../docs/index.rst:40 msgid "" "Godot Engine is an open source project developed by a community of " "volunteers. The documentation team can always use your feedback and help to " "improve the tutorials and class reference. If you don't understand " "something, or cannot find what you are looking for in the docs, help us make " "the documentation better by letting us know!" msgstr "" "Godot Engine je open source projekt razvijen od strane zajednice volontera. " "Dokumentacijskom timu uvijek su dobro došle vaše povratne informacije i " "pomoć kako bi poboljšali vodiče i reference klase. Ukoliko nešto ne " "razumijete, ili ne možete naći nešto što tražite u dokumentaciji, pomozite " "nam poboljšati dokumentaciju tako što ćete nam dati povratne informacije!" #: ../../docs/index.rst:46 msgid "" "Submit an issue or pull request on the `GitHub repository `_, help us `translate the " "documentation `_ into your " "language, or talk to us on the ``#documentation`` channel on the `Godot " "Contributors Chat `_!" msgstr "" "Priložite žalbu ili pull request na `GitHub repozitoriju `_, pomozite nam`prevesti dokumentaciju " "`_ na svoj jezik, ili " "pričajte sa nama na ``#documentation`` kanalu dostupnom na `Discord serveru " "`_, ili ``#documentation`` kanalu dostupnom na " "`Godot Contributors Chatu `_!" #: ../../docs/index.rst:52 msgid "weblate_widget" msgstr "weblate_widget" #: ../../docs/:2 msgid "Translation status" msgstr "Stanje prevođenja" #: ../../docs/index.rst:54 msgid "Offline documentation" msgstr "Izvanmrežna Dokumentacija" #: ../../docs/index.rst:56 #, fuzzy msgid "" "To browse the documentation offline, you can download an HTML copy (updated " "every Monday): `stable `__, `latest " "`__, `3.6 `__. Extract the ZIP archive then open the top-level " "``index.html`` in a web browser." msgstr "" "Također, možete i `preuzeti HTML kopiju `__ za izvanmrežno čitanje (ažurirano svakog ponedjeljka). " "Raspakirajte ZIP arhivu te otvorite top-level ``index.html`` u web " "pretraživaču." #: ../../docs/index.rst:59 #, fuzzy msgid "" "For mobile devices or e-readers, you can also download an ePub copy (updated " "every Monday): `stable `__, `latest " "`__, `3.6 `__. Extract the ZIP archive then open the ``GodotEngine.epub`` " "file in an e-book reader application." msgstr "" "Također, možete i `preuzeti HTML kopiju `__ za izvanmrežno čitanje (ažurirano svakog ponedjeljka). " "Raspakirajte ZIP arhivu te otvorite top-level ``index.html`` u web " "pretraživaču." #: ../../docs/404.rst:5 msgid "Page not found" msgstr "Stranica nije pronađena" #: ../../docs/about/introduction.rst:6 #: ../../docs/getting_started/introduction/index.rst:10 #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:4 #: ../../docs/tutorials/best_practices/project_organization.rst:7 #: ../../docs/tutorials/best_practices/version_control_systems.rst:7 #: ../../docs/tutorials/editor/script_editor.rst:9 #: ../../docs/tutorials/editor/managing_editor_features.rst:9 #: ../../docs/tutorials/2d/2d_transforms.rst:7 #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:7 #: ../../docs/tutorials/2d/2d_meshes.rst:9 #: ../../docs/tutorials/2d/2d_sprite_animation.rst:7 #: ../../docs/tutorials/2d/2d_antialiasing.rst:16 #: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:7 #: ../../docs/tutorials/2d/2d_parallax.rst:7 #: ../../docs/tutorials/2d/2d_movement.rst:7 #: ../../docs/tutorials/2d/using_tilesets.rst:7 #: ../../docs/tutorials/2d/using_tilemaps.rst:13 #: ../../docs/tutorials/3d/using_transforms.rst:7 #: ../../docs/tutorials/3d/3d_text.rst:7 #: ../../docs/tutorials/3d/3d_rendering_limitations.rst:7 #: ../../docs/tutorials/3d/standard_material_3d.rst:7 #: ../../docs/tutorials/3d/lights_and_shadows.rst:7 #: ../../docs/tutorials/3d/particles/index.rst:-1 #: ../../docs/tutorials/3d/high_dynamic_range.rst:9 #: ../../docs/tutorials/3d/3d_antialiasing.rst:16 #: ../../docs/tutorials/3d/using_multi_mesh_instance.rst:9 #: ../../docs/tutorials/3d/mesh_lod.rst:22 #: ../../docs/tutorials/3d/using_gridmaps.rst:7 #: ../../docs/tutorials/3d/spring_arm.rst:7 #: ../../docs/tutorials/animation/2d_skeletons.rst:9 #: ../../docs/tutorials/animation/animation_tree.rst:7 #: ../../docs/tutorials/audio/audio_buses.rst:9 #: ../../docs/tutorials/audio/audio_streams.rst:9 #: ../../docs/tutorials/audio/sync_with_audio.rst:9 #: ../../docs/tutorials/export/feature_tags.rst:7 #: ../../docs/tutorials/io/saving_games.rst:7 #: ../../docs/tutorials/io/binary_serialization_api.rst:9 #: ../../docs/tutorials/i18n/internationalizing_games.rst:7 #: ../../docs/tutorials/i18n/pseudolocalization.rst:7 #: ../../docs/tutorials/inputs/input_examples.rst:7 #: ../../docs/tutorials/math/vector_math.rst:7 #: ../../docs/tutorials/math/matrices_and_transforms.rst:7 #: ../../docs/tutorials/networking/ssl_certificates.rst:7 #: ../../docs/tutorials/performance/index.rst:9 #: ../../docs/tutorials/performance/general_optimization.rst:7 #: ../../docs/tutorials/performance/gpu_optimization.rst:7 #: ../../docs/tutorials/physics/using_jolt_physics.rst:7 #: ../../docs/tutorials/physics/using_area_2d.rst:7 #: ../../docs/tutorials/physics/using_character_body_2d.rst:7 #: ../../docs/tutorials/physics/ray-casting.rst:7 #: ../../docs/tutorials/physics/ragdoll_system.rst:7 #: ../../docs/tutorials/physics/kinematic_character_2d.rst:7 #: ../../docs/tutorials/physics/interpolation/physics_interpolation_introduction.rst:4 #: ../../docs/tutorials/platform/android/android_plugin.rst:7 #: ../../docs/tutorials/plugins/editor/import_plugins.rst:13 #: ../../docs/tutorials/plugins/editor/3d_gizmos.rst:9 #: ../../docs/tutorials/rendering/renderers.rst:13 #: ../../docs/tutorials/rendering/viewports.rst:7 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:5 #: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:24 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:7 #: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:7 #: ../../docs/tutorials/scripting/debug/custom_performance_monitors.rst:7 #: ../../docs/tutorials/scripting/pausing_games.rst:7 #: ../../docs/tutorials/scripting/filesystem.rst:7 #: ../../docs/tutorials/scripting/singletons_autoload.rst:7 #: ../../docs/tutorials/scripting/scene_tree.rst:7 #: ../../docs/tutorials/scripting/scene_unique_nodes.rst:7 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:7 #: ../../docs/tutorials/shaders/your_first_shader/your_first_2d_shader.rst:7 #: ../../docs/tutorials/shaders/screen-reading_shaders.rst:7 #: ../../docs/tutorials/shaders/using_viewport_as_texture.rst:7 #: ../../docs/tutorials/shaders/custom_postprocessing.rst:7 #: ../../docs/tutorials/shaders/advanced_postprocessing.rst:7 #: ../../docs/tutorials/ui/bbcode_in_richtextlabel.rst:7 #: ../../docs/tutorials/xr/openxr_composition_layers.rst:7 #: ../../docs/tutorials/xr/openxr_hand_tracking.rst:7 #: ../../docs/engine_details/architecture/2d_coordinate_systems.rst:7 #: ../../docs/engine_details/architecture/custom_godot_servers.rst:7 #: ../../docs/engine_details/architecture/custom_resource_format_loaders.rst:7 #: ../../docs/engine_details/architecture/custom_audiostreams.rst:7 #: ../../docs/community/asset_library/submitting_to_assetlib.rst:7 msgid "Introduction" msgstr "Uvod" #: ../../docs/about/introduction.rst:21 msgid "" "Welcome to the official documentation of **Godot Engine**, the free and open " "source community-driven 2D and 3D game engine! Behind this mouthful, you " "will find a powerful yet user-friendly tool that you can use to develop any " "kind of game, for any platform and with no usage restriction whatsoever." msgstr "" "Dobrodošli do službene dokumentacije Godot Engine-a, besplatan i otvorenog-" "koda, vođen zajednicom, 2D i 3D engine za stvaranje igara! Iza ovog " "jezikopletke, naći će te snažan ali susretljiv alat koji možete koristiti za " "razvoj bilo kakve igre, za bilo koju platformu, bez ikakvog uporabnog " "ograničenja." #: ../../docs/about/introduction.rst:26 #, fuzzy msgid "" "This page gives a broad overview of the engine and of this documentation, so " "that you know where to start if you are a beginner or where to look if you " "need information on a specific feature." msgstr "" "Ova stranica daje ukratku prezentaciju engine-a i sadržaja dokumentacije, " "kako bi ste snašli ako ste početnik ili gdje tražiti ako vas zanima " "specifično svojstvo." #: ../../docs/about/introduction.rst:31 msgid "Before you start" msgstr "Prije nego što započnete" #: ../../docs/about/introduction.rst:33 msgid "" "The :ref:`Tutorials and resources ` page lists " "video tutorials contributed by the community. If you prefer video to text, " "consider checking them out. Otherwise, :ref:`Getting Started " "` is a great starting point." msgstr "" #: ../../docs/about/introduction.rst:38 msgid "" "In case you have trouble with one of the tutorials or your project, you can " "find help on the various `Community channels `_, especially the Godot `Discord `_ community and `Forum `_." msgstr "" "U slučaju da imate problem sa nekim tutorijalom ili vašem projektu,možete " "pronaći pomoć na raznim `Kanali zajednice `_, pogotovo u Godot `Discord `_ zajednici " "i `Forum `_." #: ../../docs/about/introduction.rst:44 msgid "About Godot Engine" msgstr "O Godot Engine-u" #: ../../docs/about/introduction.rst:46 msgid "" "A game engine is a complex tool and difficult to present in a few words. " "Here's a quick synopsis, which you are free to reuse if you need a quick " "write-up about Godot Engine:" msgstr "" "Engine za igrice je kompliciran alat i težak prezentirati u par riječi.Evo " "kratkog sinopsisa, koji možete ponovno upotrijebiti ako trebate brzo pisanje " "o Godot Engineu:" #: ../../docs/about/introduction.rst:50 msgid "" "Godot Engine is a feature-packed, cross-platform game engine to create 2D " "and 3D games from a unified interface. It provides a comprehensive set of " "common tools, so that users can focus on making games without having to " "reinvent the wheel. Games can be exported with one click to a number of " "platforms, including the major desktop platforms (Linux, macOS, Windows), " "mobile platforms (Android, iOS), as well as Web-based platforms and consoles." msgstr "" "Godot Engine je višeplatformski engine za igre prepun značajki za stvaranje " "2D i 3D igara iz objedinjenog sučelja. Pruža sveobuhvatan skup uobičajenih " "alata, tako da se korisnici mogu usredotočiti na izradu igara bez potrebe za " "ponovnim izmišljanjem kotača. Igre se mogu izvesti jednim klikom na brojne " "platforme, uključujući glavne desktop platforme (Linux, macOS, Windows), " "mobilne platforme (Android, iOS), kao i web platforme i konzole." #: ../../docs/about/introduction.rst:57 msgid "" "Godot is completely free and open source under the :ref:`permissive MIT " "license `. No strings attached, no royalties, " "nothing. Users' games are theirs, down to the last line of engine code. " "Godot's development is fully independent and community-driven, empowering " "users to help shape their engine to match their expectations. It is " "supported by the `Godot Foundation `_ not-for-" "profit." msgstr "" #: ../../docs/about/introduction.rst:67 msgid "Organization of the documentation" msgstr "Organizacija dokumentacije" #: ../../docs/about/introduction.rst:69 msgid "This documentation is organized into several sections:" msgstr "" #: ../../docs/about/introduction.rst:71 msgid "" "**About** contains this introduction as well as information about the " "engine, its history, its licensing, authors, etc. It also contains " "the :ref:`doc_faq`." msgstr "" #: ../../docs/about/introduction.rst:74 msgid "" "**Getting Started** contains all necessary information on using the engine " "to make games. It starts with the :ref:`doc_getting_started_intro` section " "which should be the entry point for all new users. **This is the best place " "to start if you're new!**" msgstr "" #: ../../docs/about/introduction.rst:78 msgid "" "The **Manual** can be read or referenced as needed, in any order. It " "contains feature-specific tutorials and documentation." msgstr "" #: ../../docs/about/introduction.rst:80 msgid "" "**Engine details** contains sections intended for advanced users and " "contributors, with information on compiling the engine, working on the " "editor, or developing C++ modules." msgstr "" #: ../../docs/about/introduction.rst:83 msgid "" "**Community** is dedicated to the life of Godot's community and contains a " "list of recommended third-party tutorials and materials outside of this " "documentation. It also provides details on the Asset Library. It also used " "to list Godot communities, which are now listed on the `Godot website " "`_." msgstr "" #: ../../docs/about/introduction.rst:87 msgid "" "Finally, the **Class reference** documents the full Godot API, also " "available directly within the engine's script editor. You can find " "information on all classes, functions, signals and so on here." msgstr "" #: ../../docs/about/introduction.rst:91 msgid "" "In addition to this documentation, you may also want to take a look at the " "various `Godot demo projects `_." msgstr "" #: ../../docs/about/introduction.rst:95 msgid "About this documentation" msgstr "" #: ../../docs/about/introduction.rst:97 msgid "" "Members of the Godot Engine community continuously write, correct, edit, and " "improve this documentation. We are always looking for more help. You can " "also contribute by opening Github issues or translating the documentation " "into your language. If you are interested in helping, see `How to contribute " "`__ and `Writing documentation `__, " "or get in touch with the `Documentation team `_ on `Godot Contributors Chat `_." msgstr "" #: ../../docs/about/introduction.rst:105 msgid "" "All documentation content is licensed under the permissive Creative Commons " "Attribution 3.0 (`CC BY 3.0 `_) license, with attribution to \"*Juan Linietsky, Ariel Manzur, and the " "Godot Engine community*\" unless otherwise noted." msgstr "" #: ../../docs/about/introduction.rst:110 msgid "*Have fun reading and making games with Godot Engine!*" msgstr "" #: ../../docs/about/list_of_features.rst:6 msgid "List of features" msgstr "" #: ../../docs/about/list_of_features.rst:8 msgid "This page aims to list **all** features currently supported by Godot." msgstr "" #: ../../docs/about/list_of_features.rst:12 msgid "" "This page lists features supported by the current stable version of Godot. " "Some of these features are not available in the `3.x release series `__." msgstr "" #: ../../docs/about/list_of_features.rst:17 msgid "Platforms" msgstr "" #: ../../docs/about/list_of_features.rst:21 msgid "" "See :ref:`doc_system_requirements` for hardware and software version " "requirements." msgstr "" #: ../../docs/about/list_of_features.rst:23 msgid "**Can run both the editor and exported projects:**" msgstr "" #: ../../docs/about/list_of_features.rst:25 msgid "Windows (x86 and ARM, 64-bit and 32-bit)." msgstr "" #: ../../docs/about/list_of_features.rst:26 msgid "macOS (x86 and ARM, 64-bit only)." msgstr "" #: ../../docs/about/list_of_features.rst:27 msgid "Linux (x86 and ARM, 64-bit and 32-bit)." msgstr "" #: ../../docs/about/list_of_features.rst:29 msgid "" "Binaries are statically linked and can run on any distribution if compiled " "on an old enough base distribution." msgstr "" #: ../../docs/about/list_of_features.rst:31 msgid "" "Official binaries are compiled using the `Godot Engine buildroot `__, allowing for binaries that work across " "common Linux distributions." msgstr "" #: ../../docs/about/list_of_features.rst:35 msgid "Android (editor support is experimental)." msgstr "" #: ../../docs/about/list_of_features.rst:36 msgid "" ":ref:`Web browsers `. Experimental in 4.0, using " "Godot 3.x is recommended instead when targeting HTML5." msgstr "" #: ../../docs/about/list_of_features.rst:41 msgid "" "Linux supports rv64 (RISC-V), ppc64 & ppc32 (PowerPC), and loongarch64. " "However you must compile the editor for that platform (as well as export " "templates) yourself, no official downloads are currently provided. RISC-V " "compiling instructions can be found on the :ref:`doc_compiling_for_linuxbsd` " "page." msgstr "" #: ../../docs/about/list_of_features.rst:46 msgid "**Runs exported projects:**" msgstr "" #: ../../docs/about/list_of_features.rst:48 msgid "iOS." msgstr "" #: ../../docs/about/list_of_features.rst:49 msgid ":ref:`Consoles `." msgstr "" #: ../../docs/about/list_of_features.rst:51 msgid "" "Godot aims to be as platform-independent as possible and can be :ref:`ported " "to new platforms ` with relative ease." msgstr "" #: ../../docs/about/list_of_features.rst:56 #: ../../docs/getting_started/step_by_step/scripting_languages.rst:131 msgid "" "Projects written in C# using Godot 4 currently cannot be exported to the web " "platform. To use C# on that platform, consider Godot 3 instead. Android and " "iOS platform support is available as of Godot 4.2, but is experimental " "and :ref:`some limitations apply `." msgstr "" #: ../../docs/about/list_of_features.rst:62 #: ../../docs/about/docs_changelog.rst:22 #: ../../docs/about/docs_changelog.rst:61 #: ../../docs/about/docs_changelog.rst:274 #: ../../docs/about/docs_changelog.rst:315 #: ../../docs/tutorials/editor/external_editor.rst:43 #: ../../docs/engine_details/development/compiling/compiling_with_dotnet.rst:204 msgid "Editor" msgstr "" #: ../../docs/about/list_of_features.rst:64 #: ../../docs/about/list_of_features.rst:504 msgid "**Features:**" msgstr "" #: ../../docs/about/list_of_features.rst:66 msgid "Scene tree editor." msgstr "" #: ../../docs/about/list_of_features.rst:67 msgid "Built-in script editor." msgstr "" #: ../../docs/about/list_of_features.rst:68 msgid "" "Support for :ref:`external script editors ` such as " "Visual Studio Code or Vim." msgstr "" #: ../../docs/about/list_of_features.rst:70 msgid "GDScript :ref:`debugger `." msgstr "" #: ../../docs/about/list_of_features.rst:72 msgid "Support for debugging in threads is available since 4.2." msgstr "" #: ../../docs/about/list_of_features.rst:73 msgid "" "Visual profiler with CPU and GPU time indications for each step of the " "rendering pipeline." msgstr "" #: ../../docs/about/list_of_features.rst:75 msgid "" "Performance monitoring tools, including :ref:`custom performance monitors " "`." msgstr "" #: ../../docs/about/list_of_features.rst:77 msgid "Live script reloading." msgstr "" #: ../../docs/about/list_of_features.rst:78 msgid "Live scene editing." msgstr "" #: ../../docs/about/list_of_features.rst:80 msgid "" "Changes will reflect in the editor and will be kept after closing the " "running project." msgstr "" #: ../../docs/about/list_of_features.rst:82 msgid "Remote inspector." msgstr "" #: ../../docs/about/list_of_features.rst:84 msgid "" "Changes won't reflect in the editor and won't be kept after closing the " "running project." msgstr "" #: ../../docs/about/list_of_features.rst:86 msgid "Live camera replication." msgstr "" #: ../../docs/about/list_of_features.rst:88 msgid "Move the in-editor camera and see the result in the running project." msgstr "" #: ../../docs/about/list_of_features.rst:90 msgid "Built-in offline class reference documentation." msgstr "" #: ../../docs/about/list_of_features.rst:91 msgid "Use the editor in dozens of languages contributed by the community." msgstr "" #: ../../docs/about/list_of_features.rst:93 msgid "**Plugins:**" msgstr "" #: ../../docs/about/list_of_features.rst:95 msgid "" "Editor plugins can be downloaded from the :ref:`asset library " "` to extend editor functionality." msgstr "" #: ../../docs/about/list_of_features.rst:97 msgid "" ":ref:`Create your own plugins ` using GDScript to add " "new features or speed up your workflow." msgstr "" #: ../../docs/about/list_of_features.rst:99 msgid "" ":ref:`Download projects from the asset library ` " "in the Project Manager and import them directly." msgstr "" #: ../../docs/about/list_of_features.rst:103 #: ../../docs/about/docs_changelog.rst:86 #: ../../docs/about/docs_changelog.rst:125 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:120 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.2.rst:128 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:88 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:306 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:104 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:184 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.5.rst:49 #: ../../docs/tutorials/2d/index.rst:26 #: ../../docs/tutorials/2d/using_tilemaps.rst:58 #: ../../docs/tutorials/3d/index.rst:18 #: ../../docs/tutorials/performance/thread_safe_apis.rst:82 #: ../../docs/tutorials/rendering/index.rst:4 #: ../../docs/tutorials/rendering/viewports.rst:202 msgid "Rendering" msgstr "" #: ../../docs/about/list_of_features.rst:105 #: ../../docs/tutorials/rendering/renderers.rst:15 msgid "Godot 4 includes three renderers:" msgstr "" #: ../../docs/about/list_of_features.rst:107 #: ../../docs/tutorials/rendering/renderers.rst:17 msgid "" "**Forward+**. The most advanced renderer, suited for desktop platforms only. " "Used by default on desktop platforms. This renderer uses **Vulkan**, " "**Direct3D 12**, or **Metal** as the rendering driver, and it uses the " "**RenderingDevice** backend." msgstr "" #: ../../docs/about/list_of_features.rst:110 #: ../../docs/tutorials/rendering/renderers.rst:20 msgid "" "**Mobile**. Fewer features, but renders simple scenes faster. Suited for " "mobile and desktop platforms. Used by default on mobile platforms. This " "renderer uses **Vulkan**, **Direct3D 12**, or **Metal** as the rendering " "driver, and it uses the **RenderingDevice** backend." msgstr "" #: ../../docs/about/list_of_features.rst:114 #: ../../docs/tutorials/rendering/renderers.rst:24 msgid "" "**Compatibility**, sometimes called **GL Compatibility**. The least advanced " "renderer, suited for low-end desktop and mobile platforms. Used by default " "on the web platform. This renderer uses **OpenGL** as the rendering driver." msgstr "" #: ../../docs/about/list_of_features.rst:118 msgid "" "See :ref:`doc_renderers` for a detailed comparison of the rendering methods." msgstr "" #: ../../docs/about/list_of_features.rst:121 msgid "2D graphics" msgstr "" #: ../../docs/about/list_of_features.rst:123 msgid "Sprite, polygon and line rendering." msgstr "" #: ../../docs/about/list_of_features.rst:125 msgid "" "High-level tools to draw lines and polygons such as :ref:`class_Polygon2D` " "and :ref:`class_Line2D`, with support for texturing." msgstr "" #: ../../docs/about/list_of_features.rst:128 msgid "AnimatedSprite2D as a helper for creating animated sprites." msgstr "" #: ../../docs/about/list_of_features.rst:129 msgid "Parallax layers." msgstr "" #: ../../docs/about/list_of_features.rst:131 msgid "Pseudo-3D support including preview in the editor." msgstr "" #: ../../docs/about/list_of_features.rst:133 msgid "" ":ref:`2D lighting ` with normal maps and specular " "maps." msgstr "" #: ../../docs/about/list_of_features.rst:135 msgid "Point (omni/spot) and directional 2D lights." msgstr "" #: ../../docs/about/list_of_features.rst:136 msgid "Hard or soft shadows (adjustable on a per-light basis)." msgstr "" #: ../../docs/about/list_of_features.rst:137 msgid "" "Custom shaders can access a real-time :abbr:`SDF (Signed Distance Field)` " "representation of the 2D scene based on :ref:`class_LightOccluder2D` nodes, " "which can be used for improved 2D lighting effects including 2D global " "illumination." msgstr "" #: ../../docs/about/list_of_features.rst:141 msgid "" ":ref:`Font rendering ` using bitmaps, rasterization " "using FreeType or multi-channel signed distance fields (MSDF)." msgstr "" #: ../../docs/about/list_of_features.rst:144 msgid "" "Bitmap fonts can be exported using tools like BMFont, or imported from " "images (for fixed-width fonts only)." msgstr "" #: ../../docs/about/list_of_features.rst:146 msgid "" "Dynamic fonts support monochrome fonts as well as colored fonts (e.g. for " "emoji). Supported formats are TTF, OTF, WOFF1 and WOFF2." msgstr "" #: ../../docs/about/list_of_features.rst:148 msgid "" "Dynamic fonts support optional font outlines with adjustable width and color." msgstr "" #: ../../docs/about/list_of_features.rst:149 msgid "" "Dynamic fonts support variable fonts and OpenType features including " "ligatures." msgstr "" #: ../../docs/about/list_of_features.rst:150 msgid "" "Dynamic fonts support simulated bold and italic when the font file lacks " "those styles." msgstr "" #: ../../docs/about/list_of_features.rst:152 msgid "" "Dynamic fonts support oversampling to keep fonts sharp at higher resolutions." msgstr "" #: ../../docs/about/list_of_features.rst:153 msgid "" "Dynamic fonts support subpixel positioning to make fonts crisper at low " "sizes." msgstr "" #: ../../docs/about/list_of_features.rst:154 msgid "" "Dynamic fonts support LCD subpixel optimizations to make fonts even crisper " "at low sizes." msgstr "" #: ../../docs/about/list_of_features.rst:155 msgid "" "Signed distance field fonts can be scaled at any resolution without " "requiring re-rasterization. Multi-channel usage makes SDF fonts scale down " "to lower sizes better compared to monochrome SDF fonts." msgstr "" #: ../../docs/about/list_of_features.rst:159 msgid "" "GPU-based :ref:`particles ` with support " "for :ref:`custom particle shaders `." msgstr "" #: ../../docs/about/list_of_features.rst:161 #: ../../docs/about/list_of_features.rst:352 msgid "CPU-based particles." msgstr "" #: ../../docs/about/list_of_features.rst:162 msgid "" "Optional :ref:`2D HDR rendering " "` for better glow " "capabilities." msgstr "" #: ../../docs/about/list_of_features.rst:166 msgid "2D tools" msgstr "" #: ../../docs/about/list_of_features.rst:168 msgid ":ref:`TileMaps ` for 2D tile-based level design." msgstr "" #: ../../docs/about/list_of_features.rst:169 msgid "2D camera with built-in smoothing and drag margins." msgstr "" #: ../../docs/about/list_of_features.rst:170 msgid "Path2D node to represent a path in 2D space." msgstr "" #: ../../docs/about/list_of_features.rst:172 #: ../../docs/about/list_of_features.rst:413 msgid "Can be drawn in the editor or generated procedurally." msgstr "" #: ../../docs/about/list_of_features.rst:173 msgid "PathFollow2D node to make nodes follow a Path2D." msgstr "" #: ../../docs/about/list_of_features.rst:175 msgid ":ref:`2D geometry helper class `." msgstr "" #: ../../docs/about/list_of_features.rst:178 msgid "2D physics" msgstr "" #: ../../docs/about/list_of_features.rst:180 #: ../../docs/about/list_of_features.rst:423 msgid "**Physics bodies:**" msgstr "" #: ../../docs/about/list_of_features.rst:182 #: ../../docs/about/list_of_features.rst:425 msgid "Static bodies." msgstr "" #: ../../docs/about/list_of_features.rst:183 #: ../../docs/about/list_of_features.rst:426 msgid "" "Animatable bodies (for objects moving only by script or animation, such as " "doors and platforms)." msgstr "" #: ../../docs/about/list_of_features.rst:184 #: ../../docs/about/list_of_features.rst:427 msgid "Rigid bodies." msgstr "" #: ../../docs/about/list_of_features.rst:185 #: ../../docs/about/list_of_features.rst:428 msgid "Character bodies." msgstr "" #: ../../docs/about/list_of_features.rst:186 #: ../../docs/about/list_of_features.rst:430 msgid "Joints." msgstr "" #: ../../docs/about/list_of_features.rst:187 #: ../../docs/about/list_of_features.rst:433 msgid "Areas to detect bodies entering or leaving it." msgstr "" #: ../../docs/about/list_of_features.rst:189 #: ../../docs/about/list_of_features.rst:435 msgid "**Collision detection:**" msgstr "" #: ../../docs/about/list_of_features.rst:191 msgid "" "Built-in shapes: line, box, circle, capsule, world boundary (infinite plane)." msgstr "" #: ../../docs/about/list_of_features.rst:192 msgid "" "Collision polygons (can be drawn manually or generated from a sprite in the " "editor)." msgstr "" #: ../../docs/about/list_of_features.rst:195 msgid "3D graphics" msgstr "" #: ../../docs/about/list_of_features.rst:197 msgid "HDR rendering with sRGB." msgstr "" #: ../../docs/about/list_of_features.rst:198 msgid "Perspective, orthographic and frustum-offset cameras." msgstr "" #: ../../docs/about/list_of_features.rst:199 msgid "" "When using the Forward+ renderer, a depth prepass is used to improve " "performance in complex scenes by reducing the cost of overdraw." msgstr "" #: ../../docs/about/list_of_features.rst:201 msgid "" ":ref:`doc_variable_rate_shading` on supported GPUs in Forward+ and Mobile." msgstr "" #: ../../docs/about/list_of_features.rst:203 msgid "**Physically-based rendering (built-in material features):**" msgstr "" #: ../../docs/about/list_of_features.rst:205 msgid "Follows the Disney PBR model." msgstr "" #: ../../docs/about/list_of_features.rst:206 msgid "" "Supports Burley, Lambert, Lambert Wrap (half-Lambert) and Toon diffuse " "shading modes." msgstr "" #: ../../docs/about/list_of_features.rst:207 msgid "Supports Schlick-GGX, Toon and Disabled specular shading modes." msgstr "" #: ../../docs/about/list_of_features.rst:208 msgid "Uses a roughness-metallic workflow with support for ORM textures." msgstr "" #: ../../docs/about/list_of_features.rst:209 msgid "" "Uses horizon specular occlusion (Filament model) to improve material " "appearance." msgstr "" #: ../../docs/about/list_of_features.rst:210 msgid "Normal mapping." msgstr "" #: ../../docs/about/list_of_features.rst:211 msgid "" "Parallax/relief mapping with automatic level of detail based on distance." msgstr "" #: ../../docs/about/list_of_features.rst:212 msgid "Detail mapping for the albedo and normal maps." msgstr "" #: ../../docs/about/list_of_features.rst:213 msgid "Sub-surface scattering and transmittance." msgstr "" #: ../../docs/about/list_of_features.rst:214 msgid "" "Screen-space refraction with support for material roughness (resulting in " "blurry refraction)." msgstr "" #: ../../docs/about/list_of_features.rst:215 msgid "Proximity fade (soft particles) and distance fade." msgstr "" #: ../../docs/about/list_of_features.rst:216 msgid "" "Distance fade can use alpha blending or dithering to avoid going through the " "transparent pipeline." msgstr "" #: ../../docs/about/list_of_features.rst:218 msgid "Dithering can be determined on a per-pixel or per-object basis." msgstr "" #: ../../docs/about/list_of_features.rst:220 msgid "**Real-time lighting:**" msgstr "" #: ../../docs/about/list_of_features.rst:222 msgid "Directional lights (sun/moon). Up to 4 per scene." msgstr "" #: ../../docs/about/list_of_features.rst:223 msgid "Omnidirectional lights." msgstr "" #: ../../docs/about/list_of_features.rst:224 msgid "Spot lights with adjustable cone angle and attenuation." msgstr "" #: ../../docs/about/list_of_features.rst:225 msgid "" "Specular, indirect light, and volumetric fog energy can be adjusted on a per-" "light basis." msgstr "" #: ../../docs/about/list_of_features.rst:226 msgid "" "Adjustable light \"size\" for fake area lights (will also make shadows " "blurrier)." msgstr "" #: ../../docs/about/list_of_features.rst:227 msgid "" "Optional distance fade system to fade distant lights and their shadows, " "improving performance." msgstr "" #: ../../docs/about/list_of_features.rst:228 msgid "" "When using the Forward+ renderer (default on desktop), lights are rendered " "with clustered forward optimizations to decrease their individual cost. " "Clustered rendering also lifts any limits on the number of lights that can " "be used on a mesh." msgstr "" #: ../../docs/about/list_of_features.rst:231 msgid "" "When using the Mobile renderer, up to 8 omni lights and 8 spot lights can be " "displayed per mesh resource. Baked lighting can be used to overcome this " "limit if needed." msgstr "" #: ../../docs/about/list_of_features.rst:235 msgid "**Shadow mapping:**" msgstr "" #: ../../docs/about/list_of_features.rst:237 msgid "" "*DirectionalLight:* Orthogonal (fastest), PSSM 2-split and 4-split. Supports " "blending between splits." msgstr "" #: ../../docs/about/list_of_features.rst:239 msgid "" "*OmniLight:* Dual paraboloid (fast) or cubemap (slower but more accurate). " "Supports colored projector textures in the form of panoramas." msgstr "" #: ../../docs/about/list_of_features.rst:241 msgid "*SpotLight:* Single texture. Supports colored projector textures." msgstr "" #: ../../docs/about/list_of_features.rst:242 msgid "" "Shadow normal offset bias and shadow pancaking to decrease the amount of " "visible shadow acne and peter-panning." msgstr "" #: ../../docs/about/list_of_features.rst:244 msgid "" ":abbr:`PCSS (Percentage Closer Soft Shadows)`-like shadow blur based on the " "light size and distance from the surface the shadow is cast on." msgstr "" #: ../../docs/about/list_of_features.rst:246 msgid "Adjustable shadow blur on a per-light basis." msgstr "" #: ../../docs/about/list_of_features.rst:248 msgid "**Global illumination with indirect lighting:**" msgstr "" #: ../../docs/about/list_of_features.rst:250 msgid "" ":ref:`Baked lightmaps ` (fast, but can't be updated " "at runtime)." msgstr "" #: ../../docs/about/list_of_features.rst:252 msgid "" "Supports baking indirect light only or baking both direct and indirect " "lighting. The bake mode can be adjusted on a per-light basis to allow for " "hybrid light baking setups." msgstr "" #: ../../docs/about/list_of_features.rst:255 msgid "" "Supports lighting dynamic objects using automatic and manually placed probes." msgstr "" #: ../../docs/about/list_of_features.rst:256 msgid "" "Optionally supports directional lighting and rough reflections based on " "spherical harmonics." msgstr "" #: ../../docs/about/list_of_features.rst:258 msgid "" "Lightmaps are baked on the GPU using compute shaders (much faster compared " "to CPU lightmapping). Baking can only be performed from the editor, not in " "exported projects." msgstr "" #: ../../docs/about/list_of_features.rst:261 msgid "" "Supports GPU-based :ref:`denoising ` with " "JNLM, or CPU/GPU-based denoising with OIDN." msgstr "" #: ../../docs/about/list_of_features.rst:264 msgid "" ":ref:`Voxel-based GI probes `. Supports dynamic lights " "*and* dynamic occluders, while also supporting reflections. Requires a fast " "baking step which can be performed in the editor or at runtime (including " "from an exported project)." msgstr "" #: ../../docs/about/list_of_features.rst:268 msgid "" ":ref:`Signed-distance field GI ` designed for large open " "worlds. Supports dynamic lights, but not dynamic occluders. Supports " "reflections. No baking required." msgstr "" #: ../../docs/about/list_of_features.rst:271 msgid "" ":ref:`Screen-space indirect lighting (SSIL) " "` at half or full resolution. " "Fully real-time and supports any kind of emissive light source (including " "decals)." msgstr "" #: ../../docs/about/list_of_features.rst:274 msgid "" "VoxelGI and SDFGI use a deferred pass to allow for rendering GI at half " "resolution to improve performance (while still having functional MSAA " "support)." msgstr "" #: ../../docs/about/list_of_features.rst:277 msgid "**Reflections:**" msgstr "" #: ../../docs/about/list_of_features.rst:279 msgid "" "Voxel-based reflections (when using GI probes) and SDF-based reflections " "(when using signed distance field GI). Voxel-based reflections are visible " "on transparent surfaces, while rough SDF-based reflections are visible on " "transparent surfaces." msgstr "" #: ../../docs/about/list_of_features.rst:283 msgid "" "Fast baked reflections or slow real-time reflections using ReflectionProbe. " "Parallax box correction can optionally be enabled." msgstr "" #: ../../docs/about/list_of_features.rst:285 msgid "Screen-space reflections with support for material roughness." msgstr "" #: ../../docs/about/list_of_features.rst:286 msgid "" "Reflection techniques can be mixed together for greater accuracy or " "scalability." msgstr "" #: ../../docs/about/list_of_features.rst:287 msgid "" "When using the Forward+ renderer (default on desktop), reflection probes are " "rendered with clustered forward optimizations to decrease their individual " "cost. Clustered rendering also lifts any limits on the number of reflection " "probes that can be used on a mesh." msgstr "" #: ../../docs/about/list_of_features.rst:290 msgid "" "When using the Mobile renderer, up to 8 reflection probes can be displayed " "per mesh resource. When using the Compatibility renderer, up to 2 reflection " "probes can be displayed per mesh resource." msgstr "" #: ../../docs/about/list_of_features.rst:294 msgid "**Decals:**" msgstr "" #: ../../docs/about/list_of_features.rst:296 msgid "" ":ref:`Supports albedo `, emissive, :abbr:`ORM (Occlusion " "Roughness Metallic)`, and normal mapping." msgstr "" #: ../../docs/about/list_of_features.rst:298 msgid "" "Texture channels are smoothly overlaid on top of the underlying material, " "with support for normal/ORM-only decals." msgstr "" #: ../../docs/about/list_of_features.rst:300 msgid "" "Support for normal fade to fade the decal depending on its incidence angle." msgstr "" #: ../../docs/about/list_of_features.rst:301 msgid "" "Does not rely on runtime mesh generation. This means decals can be used on " "complex skinned meshes with no performance penalty, even if the decal moves " "every frame." msgstr "" #: ../../docs/about/list_of_features.rst:303 msgid "" "Support for nearest, bilinear, trilinear or anisotropic texture filtering " "(configured globally)." msgstr "" #: ../../docs/about/list_of_features.rst:304 msgid "" "Optional distance fade system to fade distant decals, improving performance." msgstr "" #: ../../docs/about/list_of_features.rst:305 msgid "" "When using the Forward+ renderer (default on desktop), decals are rendered " "with clustered forward optimizations to decrease their individual cost. " "Clustered rendering also lifts any limits on the number of decals that can " "be used on a mesh." msgstr "" #: ../../docs/about/list_of_features.rst:308 msgid "" "When using the Mobile renderer, up to 8 decals can be displayed per mesh " "resource." msgstr "" #: ../../docs/about/list_of_features.rst:311 msgid "**Sky:**" msgstr "" #: ../../docs/about/list_of_features.rst:313 msgid "Panorama sky (using an HDRI)." msgstr "" #: ../../docs/about/list_of_features.rst:314 msgid "" "Procedural sky and Physically-based sky that respond to the " "DirectionalLights in the scene." msgstr "" #: ../../docs/about/list_of_features.rst:315 msgid "" "Support for :ref:`custom sky shaders `, which can be " "animated." msgstr "" #: ../../docs/about/list_of_features.rst:316 msgid "" "The radiance map used for ambient and specular light can be updated in real-" "time depending on the quality settings chosen." msgstr "" #: ../../docs/about/list_of_features.rst:319 msgid "**Fog:**" msgstr "" #: ../../docs/about/list_of_features.rst:321 msgid "Exponential depth fog." msgstr "" #: ../../docs/about/list_of_features.rst:322 msgid "Exponential height fog." msgstr "" #: ../../docs/about/list_of_features.rst:323 msgid "" "Support for automatic fog color depending on the sky color (aerial " "perspective)." msgstr "" #: ../../docs/about/list_of_features.rst:324 msgid "Support for sun scattering in the fog." msgstr "" #: ../../docs/about/list_of_features.rst:325 msgid "" "Support for controlling how much fog rendering should affect the sky, with " "separate controls for traditional and volumetric fog." msgstr "" #: ../../docs/about/list_of_features.rst:327 msgid "Support for making specific materials ignore fog." msgstr "" #: ../../docs/about/list_of_features.rst:329 msgid "**Volumetric fog:**" msgstr "" #: ../../docs/about/list_of_features.rst:331 msgid "" "Global :ref:`volumetric fog ` that reacts to lights and " "shadows." msgstr "" #: ../../docs/about/list_of_features.rst:332 msgid "" "Volumetric fog can take indirect light into account when using VoxelGI or " "SDFGI." msgstr "" #: ../../docs/about/list_of_features.rst:333 msgid "" "Fog volume nodes that can be placed to add fog to specific areas (or remove " "fog from specific areas). Supported shapes include box, ellipse, cone, " "cylinder, and 3D texture-based density maps." msgstr "" #: ../../docs/about/list_of_features.rst:335 msgid "Each fog volume can have its own custom shader." msgstr "" #: ../../docs/about/list_of_features.rst:336 msgid "Can be used together with traditional fog." msgstr "" #: ../../docs/about/list_of_features.rst:338 msgid "**Particles:**" msgstr "" #: ../../docs/about/list_of_features.rst:340 msgid "" "GPU-based particles with support for subemitters (2D + 3D), trails (2D + " "3D), attractors (3D only) and collision (2D + 3D)." msgstr "" #: ../../docs/about/list_of_features.rst:343 msgid "" "3D particle attractor shapes supported: box, sphere and 3D vector fields." msgstr "" #: ../../docs/about/list_of_features.rst:344 msgid "" "3D particle collision shapes supported: box, sphere, baked signed distance " "field and real-time heightmap (suited for open world weather effects)." msgstr "" #: ../../docs/about/list_of_features.rst:346 msgid "" "2D particle collision is handled using a signed distance field generated in " "real-time based on :ref:`class_LightOccluder2D` nodes in the scene." msgstr "" #: ../../docs/about/list_of_features.rst:348 msgid "" "Trails can use the built-in ribbon trail and tube trail meshes, or custom " "meshes with skeletons." msgstr "" #: ../../docs/about/list_of_features.rst:350 msgid "Support for custom particle shaders with manual emission." msgstr "" #: ../../docs/about/list_of_features.rst:354 msgid "**Post-processing:**" msgstr "" #: ../../docs/about/list_of_features.rst:356 msgid "Tonemapping (Linear, Reinhard, Filmic, ACES, AgX)." msgstr "" #: ../../docs/about/list_of_features.rst:357 msgid "" "Automatic exposure adjustments based on viewport brightness (and manual " "exposure override)." msgstr "" #: ../../docs/about/list_of_features.rst:358 msgid "" "Near and far depth of field with adjustable bokeh simulation (box, hexagon, " "circle)." msgstr "" #: ../../docs/about/list_of_features.rst:359 msgid "Screen-space ambient occlusion (SSAO) at half or full resolution." msgstr "" #: ../../docs/about/list_of_features.rst:360 msgid "" "Glow/bloom with optional bicubic upscaling and several blend modes " "available: Screen, Soft Light, Add, Replace, Mix." msgstr "" #: ../../docs/about/list_of_features.rst:362 msgid "Glow can have a colored dirt map texture, acting as a lens dirt effect." msgstr "" #: ../../docs/about/list_of_features.rst:363 msgid "" "Glow can be :ref:`used as a screen-space blur effect " "`." msgstr "" #: ../../docs/about/list_of_features.rst:364 msgid "Color correction using a one-dimensional ramp or a 3D LUT texture." msgstr "" #: ../../docs/about/list_of_features.rst:365 msgid "Roughness limiter to reduce the impact of specular aliasing." msgstr "" #: ../../docs/about/list_of_features.rst:366 msgid "Brightness, contrast and saturation adjustments." msgstr "" #: ../../docs/about/list_of_features.rst:368 msgid "**Texture filtering:**" msgstr "" #: ../../docs/about/list_of_features.rst:370 msgid "Nearest, bilinear, trilinear or anisotropic filtering." msgstr "" #: ../../docs/about/list_of_features.rst:371 msgid "" "Filtering options are defined on a per-use basis, not a per-texture basis." msgstr "" #: ../../docs/about/list_of_features.rst:373 msgid "**Texture compression:**" msgstr "" #: ../../docs/about/list_of_features.rst:375 msgid "Basis Universal (slow, but results in smaller files)." msgstr "" #: ../../docs/about/list_of_features.rst:376 msgid "BPTC for high-quality compression (not supported on macOS)." msgstr "" #: ../../docs/about/list_of_features.rst:377 msgid "ETC2 (not supported on macOS)." msgstr "" #: ../../docs/about/list_of_features.rst:378 msgid "S3TC (not supported on mobile/Web platforms)." msgstr "" #: ../../docs/about/list_of_features.rst:380 #, fuzzy msgid "**Antialiasing:**" msgstr "Animacija" #: ../../docs/about/list_of_features.rst:382 msgid "Temporal :ref:`antialiasing ` (TAA)." msgstr "" #: ../../docs/about/list_of_features.rst:383 msgid "" "AMD FidelityFX Super Resolution 2.2 :ref:`antialiasing " "` (FSR2), which can be used at native resolution as a " "form of high-quality temporal antialiasing." msgstr "" #: ../../docs/about/list_of_features.rst:385 msgid "" "Multi-sample antialiasing (MSAA), for both :ref:`doc_2d_antialiasing` " "and :ref:`doc_3d_antialiasing`." msgstr "" #: ../../docs/about/list_of_features.rst:386 msgid "Fast approximate antialiasing (FXAA)." msgstr "" #: ../../docs/about/list_of_features.rst:387 msgid "" "Super-sample antialiasing (SSAA) using bilinear 3D scaling and a 3D " "resolution scale above 1.0." msgstr "" #: ../../docs/about/list_of_features.rst:388 msgid "" "Alpha antialiasing, MSAA alpha to coverage and alpha hashing on a per-" "material basis." msgstr "" #: ../../docs/about/list_of_features.rst:390 msgid "**Resolution scaling:**" msgstr "" #: ../../docs/about/list_of_features.rst:392 msgid "" "Support for :ref:`rendering 3D at a lower resolution " "` while keeping 2D rendering at the original scale. " "This can be used to improve performance on low-end systems or improve " "visuals on high-end systems." msgstr "" #: ../../docs/about/list_of_features.rst:395 msgid "" "Resolution scaling uses bilinear filtering, AMD FidelityFX Super Resolution " "1.0 (FSR1) or AMD FidelityFX Super Resolution 2.2 (FSR2)." msgstr "" #: ../../docs/about/list_of_features.rst:397 msgid "" "Texture mipmap LOD bias is adjusted automatically to improve quality at " "lower resolution scales. It can also be modified with a manual offset." msgstr "" #: ../../docs/about/list_of_features.rst:400 msgid "" "Most effects listed above can be adjusted for better performance or to " "further improve quality. This can be helpful when :ref:`using Godot for " "offline rendering `." msgstr "" #: ../../docs/about/list_of_features.rst:405 msgid "3D tools" msgstr "" #: ../../docs/about/list_of_features.rst:407 msgid "" "Built-in meshes: cube, cylinder/cone, (hemi)sphere, prism, plane, quad, " "torus, ribbon, tube." msgstr "" #: ../../docs/about/list_of_features.rst:408 msgid ":ref:`GridMaps ` for 3D tile-based level design." msgstr "" #: ../../docs/about/list_of_features.rst:409 msgid "" ":ref:`Constructive solid geometry ` (intended for " "prototyping)." msgstr "" #: ../../docs/about/list_of_features.rst:410 msgid "" "Tools for :ref:`procedural geometry generation `." msgstr "" #: ../../docs/about/list_of_features.rst:411 msgid "Path3D node to represent a path in 3D space." msgstr "" #: ../../docs/about/list_of_features.rst:414 msgid "PathFollow3D node to make nodes follow a Path3D." msgstr "" #: ../../docs/about/list_of_features.rst:416 msgid ":ref:`3D geometry helper class `." msgstr "" #: ../../docs/about/list_of_features.rst:417 msgid "" "Support for exporting the current scene as a glTF 2.0 file, both from the " "editor and at runtime from an exported project." msgstr "" #: ../../docs/about/list_of_features.rst:421 msgid "3D physics" msgstr "" #: ../../docs/about/list_of_features.rst:429 msgid "Vehicle bodies (intended for arcade physics, not simulation)." msgstr "" #: ../../docs/about/list_of_features.rst:431 msgid "Soft bodies." msgstr "" #: ../../docs/about/list_of_features.rst:432 msgid "Ragdolls." msgstr "" #: ../../docs/about/list_of_features.rst:437 msgid "" "Built-in shapes: cuboid, sphere, capsule, cylinder, world boundary (infinite " "plane)." msgstr "" #: ../../docs/about/list_of_features.rst:438 msgid "Generate triangle collision shapes for any mesh from the editor." msgstr "" #: ../../docs/about/list_of_features.rst:439 msgid "" "Generate one or several convex collision shapes for any mesh from the editor." msgstr "" #: ../../docs/about/list_of_features.rst:442 #: ../../docs/about/docs_changelog.rst:91 #: ../../docs/about/docs_changelog.rst:244 #: ../../docs/about/docs_changelog.rst:349 #: ../../docs/tutorials/shaders/index.rst:4 msgid "Shaders" msgstr "" #: ../../docs/about/list_of_features.rst:444 msgid "*2D:* Custom vertex, fragment, and light shaders." msgstr "" #: ../../docs/about/list_of_features.rst:445 msgid "*3D:* Custom vertex, fragment, light, and sky shaders." msgstr "" #: ../../docs/about/list_of_features.rst:446 msgid "" "Text-based shaders using a :ref:`shader language inspired by GLSL " "`." msgstr "" #: ../../docs/about/list_of_features.rst:447 msgid "Visual shader editor." msgstr "" #: ../../docs/about/list_of_features.rst:449 msgid "Support for visual shader plugins." msgstr "" #: ../../docs/about/list_of_features.rst:452 #: ../../docs/about/docs_changelog.rst:38 #: ../../docs/about/docs_changelog.rst:236 #: ../../docs/about/docs_changelog.rst:354 #: ../../docs/about/docs_changelog.rst:460 #: ../../docs/tutorials/scripting/index.rst:4 msgid "Scripting" msgstr "" #: ../../docs/about/list_of_features.rst:454 msgid "**General:**" msgstr "" #: ../../docs/about/list_of_features.rst:456 msgid "Object-oriented design pattern with scripts extending nodes." msgstr "" #: ../../docs/about/list_of_features.rst:457 msgid "Signals and groups for communicating between scripts." msgstr "" #: ../../docs/about/list_of_features.rst:458 msgid "" "Support for :ref:`cross-language scripting `." msgstr "" #: ../../docs/about/list_of_features.rst:459 msgid "" "Many 2D, 3D and 4D linear algebra data types such as vectors and transforms." msgstr "" #: ../../docs/about/list_of_features.rst:461 msgid ":ref:`GDScript: `" msgstr "" #: ../../docs/about/list_of_features.rst:463 msgid "" ":ref:`High-level interpreted language ` " "with :ref:`optional static typing `." msgstr "" #: ../../docs/about/list_of_features.rst:465 msgid "" "Syntax inspired by Python. However, GDScript is **not** based on Python." msgstr "" #: ../../docs/about/list_of_features.rst:466 msgid "Syntax highlighting is provided on GitHub." msgstr "" #: ../../docs/about/list_of_features.rst:467 msgid "" ":ref:`Use threads ` to perform asynchronous " "actions or make use of multiple processor cores." msgstr "" #: ../../docs/about/list_of_features.rst:470 #, fuzzy msgid ":ref:`C#: `" msgstr "Animacija" #: ../../docs/about/list_of_features.rst:472 msgid "Packaged in a separate binary to keep file sizes and dependencies down." msgstr "" #: ../../docs/about/list_of_features.rst:473 msgid "Supports .NET 8 and higher." msgstr "" #: ../../docs/about/list_of_features.rst:475 msgid "Full support for the C# 12.0 syntax and features." msgstr "" #: ../../docs/about/list_of_features.rst:477 msgid "" "Supports Windows, Linux, and macOS. Since Godot 4.2, experimental support " "for Android and iOS is also available." msgstr "" #: ../../docs/about/list_of_features.rst:479 msgid "On the iOS platform only some architectures are supported: ``arm64``." msgstr "" #: ../../docs/about/list_of_features.rst:480 msgid "" "The web platform is currently unsupported. To use C# on that platform, " "consider Godot 3 instead." msgstr "" #: ../../docs/about/list_of_features.rst:483 msgid "" "Using an external editor is recommended to benefit from IDE functionality." msgstr "" #: ../../docs/about/list_of_features.rst:485 msgid "**GDExtension (C, C++, Rust, D, ...):**" msgstr "" #: ../../docs/about/list_of_features.rst:487 msgid "" "When you need it, link to native libraries for higher performance and third-" "party integrations." msgstr "" #: ../../docs/about/list_of_features.rst:489 msgid "" "For scripting game logic, GDScript or C# are recommended if their " "performance is suitable." msgstr "" #: ../../docs/about/list_of_features.rst:492 msgid "" "Official GDExtension bindings for `C `__ and `C++ `__." msgstr "" #: ../../docs/about/list_of_features.rst:495 msgid "Use any build system and language features you wish." msgstr "" #: ../../docs/about/list_of_features.rst:497 msgid "" "Actively developed GDExtension bindings for `D `__, `Swift `__, and `Rust `__ " "bindings provided by the community. (Some of these bindings may be " "experimental and not production-ready)." msgstr "" #: ../../docs/about/list_of_features.rst:502 #: ../../docs/about/docs_changelog.rst:381 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:150 #: ../../docs/tutorials/audio/index.rst:6 #: ../../docs/tutorials/export/exporting_for_web.rst:275 msgid "Audio" msgstr "Audio" #: ../../docs/about/list_of_features.rst:506 msgid "Mono, stereo, 5.1 and 7.1 output." msgstr "" #: ../../docs/about/list_of_features.rst:507 msgid "Non-positional and positional playback in 2D and 3D." msgstr "" #: ../../docs/about/list_of_features.rst:509 msgid "Optional Doppler effect in 2D and 3D." msgstr "" #: ../../docs/about/list_of_features.rst:511 msgid "" "Support for re-routable :ref:`audio buses ` and effects " "with dozens of effects included." msgstr "" #: ../../docs/about/list_of_features.rst:513 msgid "" "Support for polyphony (playing several sounds from a single " "AudioStreamPlayer node)." msgstr "" #: ../../docs/about/list_of_features.rst:514 msgid "Support for random volume and pitch." msgstr "" #: ../../docs/about/list_of_features.rst:515 msgid "Support for real-time pitch scaling." msgstr "" #: ../../docs/about/list_of_features.rst:516 msgid "" "Support for sequential/random sample selection, including repetition " "prevention when using random sample selection." msgstr "" #: ../../docs/about/list_of_features.rst:518 msgid "" "Listener2D and Listener3D nodes to listen from a position different than the " "camera." msgstr "" #: ../../docs/about/list_of_features.rst:519 msgid "" "Support for :ref:`procedural audio generation `." msgstr "" #: ../../docs/about/list_of_features.rst:520 msgid "Audio input to record microphones." msgstr "" #: ../../docs/about/list_of_features.rst:521 msgid "MIDI input." msgstr "" #: ../../docs/about/list_of_features.rst:523 msgid "No support for MIDI output yet." msgstr "" #: ../../docs/about/list_of_features.rst:525 msgid "**APIs used:**" msgstr "" #: ../../docs/about/list_of_features.rst:527 msgid "*Windows:* WASAPI." msgstr "" #: ../../docs/about/list_of_features.rst:528 msgid "*macOS:* CoreAudio." msgstr "" #: ../../docs/about/list_of_features.rst:529 msgid "*Linux:* PulseAudio or ALSA." msgstr "" #: ../../docs/about/list_of_features.rst:532 msgid "Import" msgstr "Uvezi" #: ../../docs/about/list_of_features.rst:534 msgid "Support for :ref:`custom import plugins `." msgstr "" #: ../../docs/about/list_of_features.rst:536 msgid "**Formats:**" msgstr "" #: ../../docs/about/list_of_features.rst:538 msgid "*Images:* See :ref:`doc_importing_images`." msgstr "" #: ../../docs/about/list_of_features.rst:539 msgid "*Audio:*" msgstr "" #: ../../docs/about/list_of_features.rst:541 msgid "WAV with optional IMA-ADPCM compression." msgstr "" #: ../../docs/about/list_of_features.rst:542 msgid "Ogg Vorbis." msgstr "" #: ../../docs/about/list_of_features.rst:543 msgid "MP3." msgstr "" #: ../../docs/about/list_of_features.rst:545 msgid "*3D scenes:* See :ref:`doc_importing_3d_scenes`." msgstr "" #: ../../docs/about/list_of_features.rst:547 msgid "glTF 2.0 *(recommended)*." msgstr "" #: ../../docs/about/list_of_features.rst:548 msgid "" "``.blend`` (by calling Blender's glTF export functionality transparently)." msgstr "" #: ../../docs/about/list_of_features.rst:549 msgid "" "FBX (by calling `FBX2glTF `__ " "transparently)." msgstr "" #: ../../docs/about/list_of_features.rst:550 msgid "Collada (.dae)." msgstr "" #: ../../docs/about/list_of_features.rst:551 msgid "" "Wavefront OBJ (static scenes only, can be loaded directly as a mesh or " "imported as a 3D scene)." msgstr "" #: ../../docs/about/list_of_features.rst:553 msgid "" "Support for loading glTF 2.0 scenes at runtime, including from an exported " "project." msgstr "" #: ../../docs/about/list_of_features.rst:554 msgid "" "3D meshes use `Mikktspace `__ to generate " "tangents on import, which ensures consistency with other 3D applications " "such as Blender." msgstr "" #: ../../docs/about/list_of_features.rst:558 #: ../../docs/about/docs_changelog.rst:326 #: ../../docs/tutorials/rendering/viewports.rst:38 #: ../../docs/tutorials/ui/custom_gui_controls.rst:114 msgid "Input" msgstr "" #: ../../docs/about/list_of_features.rst:560 msgid "" ":ref:`Input mapping system ` using hardcoded input " "events or remappable input actions." msgstr "" #: ../../docs/about/list_of_features.rst:563 msgid "" "Axis values can be mapped to two different actions with a configurable " "deadzone." msgstr "" #: ../../docs/about/list_of_features.rst:564 msgid "Use the same code to support both keyboards and gamepads." msgstr "" #: ../../docs/about/list_of_features.rst:566 msgid "Keyboard input." msgstr "" #: ../../docs/about/list_of_features.rst:568 msgid "" "Keys can be mapped in \"physical\" mode to be independent of the keyboard " "layout." msgstr "" #: ../../docs/about/list_of_features.rst:570 msgid "Mouse input." msgstr "" #: ../../docs/about/list_of_features.rst:572 msgid "" "The mouse cursor can be visible, hidden, captured or confined within the " "window." msgstr "" #: ../../docs/about/list_of_features.rst:573 msgid "" "When captured, raw input will be used on Windows and Linux to sidestep the " "OS' mouse acceleration settings." msgstr "" #: ../../docs/about/list_of_features.rst:576 msgid "Gamepad input (up to 8 simultaneous controllers)." msgstr "" #: ../../docs/about/list_of_features.rst:577 msgid "Pen/tablet input with pressure support." msgstr "" #: ../../docs/about/list_of_features.rst:580 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:136 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:160 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:140 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.5.rst:257 #: ../../docs/tutorials/2d/using_tilemaps.rst:78 #: ../../docs/tutorials/navigation/index.rst:4 msgid "Navigation" msgstr "Navigacija" #: ../../docs/about/list_of_features.rst:582 msgid "" "A* algorithm in :ref:`2D ` and :ref:`3D `." msgstr "" #: ../../docs/about/list_of_features.rst:583 msgid "" "Navigation meshes with dynamic obstacle avoidance in :ref:`2D " "` and :ref:`3D `." msgstr "" #: ../../docs/about/list_of_features.rst:585 msgid "" "Generate navigation meshes from the editor or at runtime (including from an " "exported project)." msgstr "" #: ../../docs/about/list_of_features.rst:588 #: ../../docs/about/docs_changelog.rst:413 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:166 #: ../../docs/tutorials/export/exporting_for_web.rst:301 #: ../../docs/tutorials/networking/index.rst:5 msgid "Networking" msgstr "" #: ../../docs/about/list_of_features.rst:590 msgid "" "Low-level TCP networking using :ref:`class_StreamPeer` " "and :ref:`class_TCPServer`." msgstr "" #: ../../docs/about/list_of_features.rst:591 msgid "" "Low-level UDP networking using :ref:`class_PacketPeer` " "and :ref:`class_UDPServer`." msgstr "" #: ../../docs/about/list_of_features.rst:592 msgid "Low-level HTTP requests using :ref:`class_HTTPClient`." msgstr "" #: ../../docs/about/list_of_features.rst:593 msgid "High-level HTTP requests using :ref:`class_HTTPRequest`." msgstr "" #: ../../docs/about/list_of_features.rst:595 msgid "Supports HTTPS out of the box using bundled certificates." msgstr "" #: ../../docs/about/list_of_features.rst:597 msgid "" ":ref:`High-level multiplayer ` API using UDP and " "ENet." msgstr "" #: ../../docs/about/list_of_features.rst:599 msgid "Automatic replication using remote procedure calls (RPCs)." msgstr "" #: ../../docs/about/list_of_features.rst:600 msgid "Supports unreliable, reliable and ordered transfers." msgstr "" #: ../../docs/about/list_of_features.rst:602 msgid "" ":ref:`WebSocket ` client and server, available on all " "platforms." msgstr "" #: ../../docs/about/list_of_features.rst:603 msgid "" ":ref:`WebRTC ` client and server, available on all platforms." msgstr "" #: ../../docs/about/list_of_features.rst:604 msgid "" "Support for :ref:`UPnP ` to sidestep the requirement to forward " "ports when hosting a server behind a NAT." msgstr "" #: ../../docs/about/list_of_features.rst:608 #: ../../docs/about/docs_changelog.rst:398 #: ../../docs/tutorials/i18n/index.rst:4 msgid "Internationalization" msgstr "" #: ../../docs/about/list_of_features.rst:610 msgid "Full support for Unicode including emoji." msgstr "" #: ../../docs/about/list_of_features.rst:611 msgid "" "Store localization strings using :ref:`CSV ` " "or :ref:`gettext `." msgstr "" #: ../../docs/about/list_of_features.rst:614 msgid "Support for generating gettext POT and PO files from the editor." msgstr "" #: ../../docs/about/list_of_features.rst:616 msgid "" "Use localized strings in your project automatically in GUI elements or by " "using the ``tr()`` function." msgstr "" #: ../../docs/about/list_of_features.rst:618 msgid "" "Support for pluralization and translation contexts when using gettext " "translations." msgstr "" #: ../../docs/about/list_of_features.rst:619 msgid "" "Support for :ref:`bidirectional typesetting " "`, text shaping and OpenType localized " "forms." msgstr "" #: ../../docs/about/list_of_features.rst:621 msgid "Automatic UI mirroring for right-to-left locales." msgstr "" #: ../../docs/about/list_of_features.rst:622 msgid "" "Support for pseudolocalization to test your project for i18n-friendliness." msgstr "" #: ../../docs/about/list_of_features.rst:625 msgid "Windowing and OS integration" msgstr "" #: ../../docs/about/list_of_features.rst:627 msgid "Spawn multiple independent windows within a single process." msgstr "" #: ../../docs/about/list_of_features.rst:628 msgid "Move, resize, minimize, and maximize windows spawned by the project." msgstr "" #: ../../docs/about/list_of_features.rst:629 msgid "Change the window title and icon." msgstr "" #: ../../docs/about/list_of_features.rst:630 msgid "" "Request attention (will cause the title bar to blink on most platforms)." msgstr "" #: ../../docs/about/list_of_features.rst:631 msgid "Fullscreen mode." msgstr "" #: ../../docs/about/list_of_features.rst:633 msgid "" "Uses borderless fullscreen by default on Windows for fast alt-tabbing, but " "can optionally use exclusive fullscreen to reduce input lag." msgstr "" #: ../../docs/about/list_of_features.rst:636 msgid "Borderless windows (fullscreen or non-fullscreen)." msgstr "" #: ../../docs/about/list_of_features.rst:637 msgid "Ability to keep a window always on top." msgstr "" #: ../../docs/about/list_of_features.rst:638 msgid "Global menu integration on macOS." msgstr "" #: ../../docs/about/list_of_features.rst:639 msgid "" "Execute commands in a blocking or non-blocking manner (including running " "multiple instances of the same project)." msgstr "" #: ../../docs/about/list_of_features.rst:641 msgid "" "Open file paths and URLs using default or custom protocol handlers (if " "registered on the system)." msgstr "" #: ../../docs/about/list_of_features.rst:642 msgid "Parse custom command line arguments." msgstr "" #: ../../docs/about/list_of_features.rst:643 msgid "" "Any Godot binary (editor or exported project) can be :ref:`used as a " "headless server ` by starting it with " "the ``--headless`` command line argument. This allows running the engine " "without a GPU or display server." msgstr "" #: ../../docs/about/list_of_features.rst:649 #: ../../docs/tutorials/3d/3d_antialiasing.rst:342 #: ../../docs/tutorials/rendering/renderers.rst:128 #: ../../docs/tutorials/rendering/renderers.rst:150 #: ../../docs/tutorials/rendering/renderers.rst:196 #: ../../docs/tutorials/rendering/renderers.rst:226 #: ../../docs/tutorials/rendering/renderers.rst:254 #: ../../docs/tutorials/rendering/renderers.rst:291 #: ../../docs/tutorials/rendering/renderers.rst:315 #: ../../docs/tutorials/rendering/renderers.rst:327 #: ../../docs/tutorials/rendering/renderers.rst:345 #: ../../docs/engine_details/architecture/internal_rendering_architecture.rst:48 msgid "Mobile" msgstr "" #: ../../docs/about/list_of_features.rst:651 msgid "" "In-app purchases on :ref:`Android ` " "and :ref:`iOS `." msgstr "" #: ../../docs/about/list_of_features.rst:653 msgid "Support for advertisements using third-party modules." msgstr "" #: ../../docs/about/list_of_features.rst:658 msgid "XR support (AR and VR)" msgstr "" #: ../../docs/about/list_of_features.rst:660 msgid "Out of the box :ref:`support for OpenXR `." msgstr "" #: ../../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:664 msgid "" "Support for :ref:`Android-based headsets ` using " "OpenXR through a plugin." msgstr "" #: ../../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:668 msgid "Out of the box limited support for visionOS Apple headsets." msgstr "" #: ../../docs/about/list_of_features.rst:670 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:673 msgid "Other devices supported through an XR plugin structure." msgstr "" #: ../../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 "GUI system" msgstr "" #: ../../docs/about/list_of_features.rst:679 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 "**Nodes:**" msgstr "" #: ../../docs/about/list_of_features.rst:684 msgid "Buttons." msgstr "" #: ../../docs/about/list_of_features.rst:685 msgid "Checkboxes, check buttons, radio buttons." msgstr "" #: ../../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 "" "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 "Labels." msgstr "" #: ../../docs/about/list_of_features.rst:692 msgid "" "RichTextLabel for :ref:`text formatted using BBCode " "`, with support for animated custom effects." msgstr "" #: ../../docs/about/list_of_features.rst:694 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 "Controls can be rotated and scaled." msgstr "" #: ../../docs/about/list_of_features.rst:698 msgid "**Sizing:**" msgstr "" #: ../../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 "Containers to place GUI elements automatically following certain rules." msgstr "" #: ../../docs/about/list_of_features.rst:703 msgid ":ref:`Stack ` layouts." msgstr "" #: ../../docs/about/list_of_features.rst:704 msgid ":ref:`Grid ` layouts." msgstr "" #: ../../docs/about/list_of_features.rst:705 msgid "" ":ref:`Flow ` layouts (similar to autowrapping text)." msgstr "" #: ../../docs/about/list_of_features.rst:706 msgid "" ":ref:`Margin `, :ref:`centered " "` and :ref:`aspect ratio " "` layouts." msgstr "" #: ../../docs/about/list_of_features.rst:708 msgid ":ref:`Draggable splitter ` layouts." msgstr "" #: ../../docs/about/list_of_features.rst:710 msgid "" "Scale to :ref:`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:714 msgid "**Theming:**" msgstr "" #: ../../docs/about/list_of_features.rst:716 msgid "Built-in theme editor." msgstr "" #: ../../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:720 msgid "Procedural vector-based theming using :ref:`class_StyleBoxFlat`." msgstr "" #: ../../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:724 msgid "Texture-based theming using :ref:`class_StyleBoxTexture`." msgstr "" #: ../../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:730 #: ../../docs/about/docs_changelog.rst:211 #: ../../docs/about/docs_changelog.rst:269 #: ../../docs/about/docs_changelog.rst:500 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:49 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.2.rst:62 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:39 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:262 #: ../../docs/tutorials/2d/particle_process_material_2d.rst:178 #: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:713 #: ../../docs/tutorials/3d/particles/process_material_properties.rst:322 #: ../../docs/tutorials/animation/index.rst:4 #: ../../docs/engine_details/file_formats/tscn.rst:382 msgid "Animation" msgstr "Animacija" #: ../../docs/about/list_of_features.rst:732 msgid "Direct kinematics and inverse kinematics." msgstr "" #: ../../docs/about/list_of_features.rst:733 msgid "Support for animating any property with customizable interpolation." msgstr "" #: ../../docs/about/list_of_features.rst:734 msgid "Support for calling methods in animation tracks." msgstr "" #: ../../docs/about/list_of_features.rst:735 msgid "Support for playing sounds in animation tracks." msgstr "" #: ../../docs/about/list_of_features.rst:736 msgid "Support for Bézier curves in animation." msgstr "" #: ../../docs/about/list_of_features.rst:739 msgid "File formats" msgstr "" #: ../../docs/about/list_of_features.rst:741 msgid "" "Scenes and resources can be saved in :ref:`text-based " "` or binary formats." msgstr "" #: ../../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:744 msgid "Binary formats are faster to save/load for large scenes/resources." msgstr "" #: ../../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:748 msgid "Can optionally be compressed or encrypted." msgstr "" #: ../../docs/about/list_of_features.rst:750 msgid "Read and write :ref:`class_JSON` files." msgstr "" #: ../../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:753 msgid "Can (de)serialize any Godot datatype, including Vector2/3, Color, ..." msgstr "" #: ../../docs/about/list_of_features.rst:755 msgid "Read XML files using :ref:`class_XMLParser`." msgstr "" #: ../../docs/about/list_of_features.rst:756 msgid "" ":ref:`Load and save images, audio/video, fonts and ZIP archives " "` in an exported project without having to " "go through Godot's import system." msgstr "" #: ../../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:760 msgid "" ":ref:`Export additional PCK files` that can be read by " "the engine to support mods and DLCs." msgstr "" #: ../../docs/about/list_of_features.rst:764 #: ../../docs/about/docs_changelog.rst:552 msgid "Miscellaneous" msgstr "" #: ../../docs/about/list_of_features.rst:766 msgid "" ":ref:`Video playback ` with built-in support for Ogg " "Theora." msgstr "" #: ../../docs/about/list_of_features.rst:767 msgid "" ":ref:`Movie Maker mode ` to record videos from a " "running project with synchronized audio and perfect frame pacing." msgstr "" #: ../../docs/about/list_of_features.rst:769 msgid "" ":ref:`Low-level access to servers ` which allows " "bypassing the scene tree's overhead when needed." msgstr "" #: ../../docs/about/list_of_features.rst:771 msgid "" ":ref:`Command line interface ` for automation." msgstr "" #: ../../docs/about/list_of_features.rst:773 msgid "Export and deploy projects using continuous integration platforms." msgstr "" #: ../../docs/about/list_of_features.rst:774 msgid "" "`Shell completion scripts `__ are available for Bash, zsh and fish." msgstr "" #: ../../docs/about/list_of_features.rst:776 msgid "" "Print colored text to standard output on all platforms " "using :ref:`print_rich `." msgstr "" #: ../../docs/about/list_of_features.rst:779 msgid "" "The editor can :ref:`detect features used in a project and create a " "compilation profile `, which " "can be used to create smaller export template binaries with unneeded " "features disabled." msgstr "" #: ../../docs/about/list_of_features.rst:783 msgid "" "Support for :ref:`C++ modules ` statically linked " "into the engine binary." msgstr "" #: ../../docs/about/list_of_features.rst:786 msgid "" "Most built-in modules can be disabled at compile-time to reduce binary size " "in custom builds. See :ref:`doc_optimizing_for_size` for details." msgstr "" #: ../../docs/about/list_of_features.rst:789 msgid "Engine and editor written in C++17." msgstr "" #: ../../docs/about/list_of_features.rst:791 msgid "" "Can be :ref:`compiled ` using GCC, " "Clang and MSVC. MinGW is also supported." msgstr "" #: ../../docs/about/list_of_features.rst:793 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:797 msgid "Licensed under the permissive MIT license." msgstr "" #: ../../docs/about/list_of_features.rst:799 msgid "" "Open development process with `contributions welcome `__." msgstr "" #: ../../docs/about/list_of_features.rst:803 msgid "" "The `Godot proposals repository `__ lists features that have been requested by the community and " "may be implemented in future Godot releases." msgstr "" #: ../../docs/about/system_requirements.rst:6 msgid "System requirements" msgstr "" #: ../../docs/about/system_requirements.rst:8 msgid "" "This page contains system requirements for the editor and exported projects. " "These specifications are given for informative purposes only, but they can " "be referred to if you're looking to build or upgrade a system to use Godot " "on." msgstr "" #: ../../docs/about/system_requirements.rst:13 #, fuzzy msgid "Godot editor" msgstr "Animacija" #: ../../docs/about/system_requirements.rst:15 msgid "" "These are the **minimum** specifications required to run the Godot editor " "and work on a simple 2D or 3D project:" msgstr "" #: ../../docs/about/system_requirements.rst:19 #: ../../docs/about/system_requirements.rst:204 msgid "Desktop or laptop PC - Minimum" msgstr "" #: ../../docs/about/system_requirements.rst:26 #: ../../docs/about/system_requirements.rst:79 #: ../../docs/about/system_requirements.rst:116 #: ../../docs/about/system_requirements.rst:154 #: ../../docs/about/system_requirements.rst:211 #: ../../docs/about/system_requirements.rst:256 #: ../../docs/about/system_requirements.rst:298 #: ../../docs/about/system_requirements.rst:339 msgid "**CPU**" msgstr "" #: ../../docs/about/system_requirements.rst:26 #: ../../docs/about/system_requirements.rst:211 msgid "" "**Windows:** x86_32 CPU with SSE2 support, x86_64 CPU with SSE4.2 support, " "ARMv8 CPU" msgstr "" #: ../../docs/about/system_requirements.rst:28 #: ../../docs/about/system_requirements.rst:214 msgid "*Example: Intel Core 2 Duo E8200, AMD FX-4100, Snapdragon X Elite*" msgstr "" #: ../../docs/about/system_requirements.rst:30 #: ../../docs/about/system_requirements.rst:120 #: ../../docs/about/system_requirements.rst:216 #: ../../docs/about/system_requirements.rst:302 msgid "**macOS:** x86_64 or ARM CPU (Apple Silicon)" msgstr "" #: ../../docs/about/system_requirements.rst:32 #: ../../docs/about/system_requirements.rst:218 msgid "*Example: Intel Core 2 Duo SU9400, Apple M1*" msgstr "" #: ../../docs/about/system_requirements.rst:34 #: ../../docs/about/system_requirements.rst:220 msgid "" "**Linux:** x86_32 CPU with SSE2 support, x86_64 CPU with SSE4.2 support, " "ARMv7 or ARMv8 CPU" msgstr "" #: ../../docs/about/system_requirements.rst:37 #: ../../docs/about/system_requirements.rst:223 msgid "*Example: Intel Core 2 Duo E8200, AMD FX-4100, Raspberry Pi 4*" msgstr "" #: ../../docs/about/system_requirements.rst:39 #: ../../docs/about/system_requirements.rst:85 #: ../../docs/about/system_requirements.rst:128 #: ../../docs/about/system_requirements.rst:160 #: ../../docs/about/system_requirements.rst:225 #: ../../docs/about/system_requirements.rst:264 #: ../../docs/about/system_requirements.rst:311 #: ../../docs/about/system_requirements.rst:347 msgid "**GPU**" msgstr "" #: ../../docs/about/system_requirements.rst:39 msgid "**Forward+ renderer:** Integrated graphics with full Vulkan 1.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:41 #: ../../docs/about/system_requirements.rst:45 #: ../../docs/about/system_requirements.rst:228 #: ../../docs/about/system_requirements.rst:233 msgid "" "*Example: Intel HD Graphics 510 (Skylake), AMD Radeon R5 Graphics (Kaveri)*" msgstr "" #: ../../docs/about/system_requirements.rst:43 msgid "**Mobile renderer:** Integrated graphics with full Vulkan 1.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:47 msgid "" "**Compatibility renderer:** Integrated graphics with full OpenGL 3.3 support" msgstr "" #: ../../docs/about/system_requirements.rst:49 #: ../../docs/about/system_requirements.rst:238 msgid "" "*Example: Intel HD Graphics 2500 (Ivy Bridge), AMD Radeon R5 Graphics " "(Kaveri)*" msgstr "" #: ../../docs/about/system_requirements.rst:51 #: ../../docs/about/system_requirements.rst:97 #: ../../docs/about/system_requirements.rst:140 #: ../../docs/about/system_requirements.rst:172 #: ../../docs/about/system_requirements.rst:240 #: ../../docs/about/system_requirements.rst:280 #: ../../docs/about/system_requirements.rst:325 #: ../../docs/about/system_requirements.rst:361 msgid "**RAM**" msgstr "" #: ../../docs/about/system_requirements.rst:51 msgid "**Native editor:** 4 GB" msgstr "" #: ../../docs/about/system_requirements.rst:52 #: ../../docs/about/system_requirements.rst:173 msgid "**Web editor:** 8 GB" msgstr "" #: ../../docs/about/system_requirements.rst:54 #: ../../docs/about/system_requirements.rst:100 #: ../../docs/about/system_requirements.rst:143 #: ../../docs/about/system_requirements.rst:175 #: ../../docs/about/system_requirements.rst:243 #: ../../docs/about/system_requirements.rst:283 #: ../../docs/about/system_requirements.rst:328 #: ../../docs/about/system_requirements.rst:364 msgid "**Storage**" msgstr "" #: ../../docs/about/system_requirements.rst:54 msgid "" "200 MB (used for the executable, project files and cache). Exporting " "projects requires downloading export templates separately (1.3 GB after " "installation)." msgstr "" #: ../../docs/about/system_requirements.rst:58 #: ../../docs/about/system_requirements.rst:104 #: ../../docs/about/system_requirements.rst:145 #: ../../docs/about/system_requirements.rst:177 #: ../../docs/about/system_requirements.rst:245 #: ../../docs/about/system_requirements.rst:285 #: ../../docs/about/system_requirements.rst:330 #: ../../docs/about/system_requirements.rst:366 msgid "**Operating system**" msgstr "" #: ../../docs/about/system_requirements.rst:58 msgid "" "**Native editor:** Windows 10, macOS 10.13 (Compatibility) or macOS 10.15 " "(Forward+/Mobile), Linux distribution released after 2018" msgstr "" #: ../../docs/about/system_requirements.rst:60 #: ../../docs/about/system_requirements.rst:105 #: ../../docs/about/system_requirements.rst:248 #: ../../docs/about/system_requirements.rst:287 msgid "" "**Web editor:** Recent versions of mainstream browsers: Firefox and " "derivatives (including ESR), Chrome and Chromium derivatives, Safari and " "WebKit derivatives." msgstr "" #: ../../docs/about/system_requirements.rst:66 msgid "" "If your x86_64 CPU does not support SSE4.2, you can still run the 32-bit " "Godot executable which only has a SSE2 requirement (all x86_64 CPUs support " "SSE2)." msgstr "" #: ../../docs/about/system_requirements.rst:69 msgid "" "While supported on Linux, we have no official minimum requirements for " "running on rv64 (RISC-V), ppc64 & ppc32 (PowerPC), and loongarch64. In " "addition you must compile the editor for that platform (as well as export " "templates) yourself, no official downloads are currently provided. RISC-V " "compiling instructions can be found on the :ref:`doc_compiling_for_linuxbsd` " "page." msgstr "" #: ../../docs/about/system_requirements.rst:76 #: ../../docs/about/system_requirements.rst:253 msgid "Mobile device (smartphone/tablet) - Minimum" msgstr "" #: ../../docs/about/system_requirements.rst:79 #: ../../docs/about/system_requirements.rst:256 msgid "**Android:** SoC with any 32-bit or 64-bit ARM or x86 CPU" msgstr "" #: ../../docs/about/system_requirements.rst:81 #: ../../docs/about/system_requirements.rst:258 msgid "*Example: Qualcomm Snapdragon 430, Samsung Exynos 5 Octa 5430*" msgstr "" #: ../../docs/about/system_requirements.rst:83 #: ../../docs/about/system_requirements.rst:158 msgid "**iOS:** *Cannot run the editor*" msgstr "" #: ../../docs/about/system_requirements.rst:85 msgid "**Forward+ renderer:** SoC featuring GPU with full Vulkan 1.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:87 #: ../../docs/about/system_requirements.rst:91 msgid "*Example: Qualcomm Adreno 505, Mali-G71 MP2*" msgstr "" #: ../../docs/about/system_requirements.rst:89 msgid "**Mobile renderer:** SoC featuring GPU with full Vulkan 1.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:93 #: ../../docs/about/system_requirements.rst:276 msgid "" "**Compatibility renderer:** SoC featuring GPU with full OpenGL ES 3.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:95 msgid "*Example: Qualcomm Adreno 306, Mali-T628 MP6*" msgstr "" #: ../../docs/about/system_requirements.rst:97 msgid "**Native editor:** 3 GB" msgstr "" #: ../../docs/about/system_requirements.rst:98 msgid "**Web editor:** 6 GB" msgstr "" #: ../../docs/about/system_requirements.rst:100 msgid "" "200 MB (used for the executable, project files and cache) Exporting projects " "requires downloading export templates separately (1.3 GB after installation)" msgstr "" #: ../../docs/about/system_requirements.rst:104 msgid "" "**Native editor:** Android 6.0 (Compatibility) or Android 9.0 (Forward+/" "Mobile)" msgstr "" #: ../../docs/about/system_requirements.rst:109 msgid "" "These are the **recommended** specifications to get a smooth experience with " "the Godot editor on a simple 2D or 3D project:" msgstr "" #: ../../docs/about/system_requirements.rst:113 #: ../../docs/about/system_requirements.rst:295 msgid "Desktop or laptop PC - Recommended" msgstr "" #: ../../docs/about/system_requirements.rst:116 #: ../../docs/about/system_requirements.rst:298 msgid "" "**Windows:** x86_64 CPU with SSE4.2 support, with 4 physical cores or more, " "ARMv8 CPU" msgstr "" #: ../../docs/about/system_requirements.rst:118 #: ../../docs/about/system_requirements.rst:300 msgid "*Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Snapdragon X Elite*" msgstr "" #: ../../docs/about/system_requirements.rst:122 #: ../../docs/about/system_requirements.rst:304 msgid "*Example: Intel Core i5-8500, Apple M1*" msgstr "" #: ../../docs/about/system_requirements.rst:124 msgid "**Linux:** x86_64 CPU with SSE4.2 support, ARMv7 or ARMv8 CPU" msgstr "" #: ../../docs/about/system_requirements.rst:126 #: ../../docs/about/system_requirements.rst:309 msgid "" "*Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Raspberry Pi 5 with " "overclocking*" msgstr "" #: ../../docs/about/system_requirements.rst:128 msgid "**Forward+ renderer:** Dedicated graphics with full Vulkan 1.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:130 #: ../../docs/about/system_requirements.rst:134 #: ../../docs/about/system_requirements.rst:314 #: ../../docs/about/system_requirements.rst:319 msgid "" "*Example: NVIDIA GeForce GTX 1050 (Pascal), AMD Radeon RX 460 (GCN 4.0)*" msgstr "" #: ../../docs/about/system_requirements.rst:132 msgid "**Mobile renderer:** Dedicated graphics with full Vulkan 1.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:136 #: ../../docs/about/system_requirements.rst:321 msgid "" "**Compatibility renderer:** Dedicated graphics with full OpenGL 4.6 support" msgstr "" #: ../../docs/about/system_requirements.rst:138 #: ../../docs/about/system_requirements.rst:323 msgid "" "*Example: NVIDIA GeForce GTX 650 (Kepler), AMD Radeon HD 7750 (GCN 1.0)*" msgstr "" #: ../../docs/about/system_requirements.rst:140 msgid "**Native editor:** 8 GB" msgstr "" #: ../../docs/about/system_requirements.rst:141 msgid "**Web editor:** 12 GB" msgstr "" #: ../../docs/about/system_requirements.rst:143 #: ../../docs/about/system_requirements.rst:175 msgid "" "1.5 GB (used for the executable, project files, all export templates and " "cache)" msgstr "" #: ../../docs/about/system_requirements.rst:145 msgid "" "**Native editor:** Windows 10, macOS 10.15, Linux distribution released " "after 2020" msgstr "" #: ../../docs/about/system_requirements.rst:147 msgid "**Web editor:** Latest version of Firefox, Chrome, Edge, Safari, Opera" msgstr "" #: ../../docs/about/system_requirements.rst:151 #: ../../docs/about/system_requirements.rst:336 msgid "Mobile device (smartphone/tablet) - Recommended" msgstr "" #: ../../docs/about/system_requirements.rst:154 #: ../../docs/about/system_requirements.rst:339 msgid "" "**Android:** SoC with 64-bit ARM or x86 CPU, with 3 \"performance\" cores or " "more" msgstr "" #: ../../docs/about/system_requirements.rst:156 #: ../../docs/about/system_requirements.rst:341 msgid "*Example: Qualcomm Snapdragon 845, Samsung Exynos 9810*" msgstr "" #: ../../docs/about/system_requirements.rst:160 msgid "**Forward+ renderer:** SoC featuring GPU with full Vulkan 1.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:162 #: ../../docs/about/system_requirements.rst:166 #: ../../docs/about/system_requirements.rst:170 msgid "*Example: Qualcomm Adreno 630, Mali-G72 MP18*" msgstr "" #: ../../docs/about/system_requirements.rst:164 msgid "**Mobile renderer:** SoC featuring GPU with full Vulkan 1.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:168 #: ../../docs/about/system_requirements.rst:357 msgid "" "**Compatibility renderer:** SoC featuring GPU with full OpenGL ES 3.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:172 msgid "**Native editor:** 6 GB" msgstr "" #: ../../docs/about/system_requirements.rst:177 msgid "**Native editor:** Android 9.0" msgstr "" #: ../../docs/about/system_requirements.rst:178 msgid "" "**Web editor:** Latest version of Firefox, Chrome, Edge, Safari, Opera, " "Samsung Internet" msgstr "" #: ../../docs/about/system_requirements.rst:183 msgid "Exported Godot project" msgstr "" #: ../../docs/about/system_requirements.rst:187 msgid "" "The requirements below are a baseline for a **simple** 2D or 3D project, " "with basic scripting and few visual flourishes. CPU, GPU, RAM and storage " "requirements will heavily vary depending on your project's scope, its " "renderer, viewport resolution and graphics settings chosen. Other programs " "running on the system while the project is running will also compete for " "resources, including RAM and video RAM." msgstr "" #: ../../docs/about/system_requirements.rst:194 msgid "" "It is strongly recommended to do your own testing on low-end hardware to " "make sure your project runs at the desired speed. To provide scalability for " "low-end hardware, you will also need to introduce a `graphics options menu " "`__ to your project." msgstr "" #: ../../docs/about/system_requirements.rst:200 msgid "" "These are the **minimum** specifications required to run a simple 2D or 3D " "project exported with Godot:" msgstr "" #: ../../docs/about/system_requirements.rst:225 msgid "" "**Forward+ renderer:** Integrated graphics with full Vulkan 1.0 support, " "Metal 3 support (macOS) or Direct3D 12 (12_0 feature level) support (Windows)" msgstr "" #: ../../docs/about/system_requirements.rst:230 msgid "" "**Mobile renderer:** Integrated graphics with full Vulkan 1.0 support, Metal " "3 support (macOS) or Direct3D 12 (12_0 feature level) support (Windows)" msgstr "" #: ../../docs/about/system_requirements.rst:235 msgid "" "**Compatibility renderer:** Integrated graphics with full OpenGL 3.3 support " "or Direct3D 11 support (Windows)." msgstr "" #: ../../docs/about/system_requirements.rst:240 #: ../../docs/about/system_requirements.rst:361 msgid "**For native exports:** 2 GB" msgstr "" #: ../../docs/about/system_requirements.rst:241 #: ../../docs/about/system_requirements.rst:362 msgid "**For web exports:** 4 GB" msgstr "" #: ../../docs/about/system_requirements.rst:243 #: ../../docs/about/system_requirements.rst:283 #: ../../docs/about/system_requirements.rst:328 #: ../../docs/about/system_requirements.rst:364 msgid "150 MB (used for the executable, project files and cache)" msgstr "" #: ../../docs/about/system_requirements.rst:245 msgid "" "**For native exports:** Windows 10, macOS 10.13 (Compatibility), macOS 10.15 " "(Forward+/Mobile, Vulkan), macOS 13.0 (Forward+/Mobile, Metal), Linux " "distribution released after 2018" msgstr "" #: ../../docs/about/system_requirements.rst:260 msgid "**iOS:** SoC with any 64-bit ARM CPU" msgstr "" #: ../../docs/about/system_requirements.rst:262 msgid "*Example: Apple A7 (iPhone 5S)*" msgstr "" #: ../../docs/about/system_requirements.rst:264 msgid "" "**Forward+ renderer:** SoC featuring GPU with full Vulkan 1.0 support, or " "Metal 3 support (iOS/iPadOS)" msgstr "" #: ../../docs/about/system_requirements.rst:267 #: ../../docs/about/system_requirements.rst:273 msgid "" "*Example (Vulkan): Qualcomm Adreno 505, Mali-G71 MP2, Apple A12 (iPhone XR/" "XS)*" msgstr "" #: ../../docs/about/system_requirements.rst:268 #: ../../docs/about/system_requirements.rst:274 msgid "*Example (Metal): Apple A12 (iPhone XR/XS)*" msgstr "" #: ../../docs/about/system_requirements.rst:270 msgid "" "**Mobile renderer:** SoC featuring GPU with full Vulkan 1.0 support, or " "Metal 3 support (iOS/iPadOS)" msgstr "" #: ../../docs/about/system_requirements.rst:278 msgid "*Example: Qualcomm Adreno 306, Mali-T628 MP6, Apple A7 (iPhone 5S)*" msgstr "" #: ../../docs/about/system_requirements.rst:280 msgid "**For native exports:** 1 GB" msgstr "" #: ../../docs/about/system_requirements.rst:281 msgid "**For web exports:** 2 GB" msgstr "" #: ../../docs/about/system_requirements.rst:285 msgid "" "**For native exports:** Android 6.0 (Compatibility), Android 9.0 (Forward+/" "Mobile), iOS 12.0 (Forward+/Mobile, Vulkan), iOS 16.0 (Forward+/Mobile, " "Metal)" msgstr "" #: ../../docs/about/system_requirements.rst:291 msgid "" "These are the **recommended** specifications to get a smooth experience with " "a simple 2D or 3D project exported with Godot:" msgstr "" #: ../../docs/about/system_requirements.rst:306 msgid "" "**Linux:** x86_64 CPU with SSE4.2 support, with 4 physical cores or more, " "ARMv7 or ARMv8 CPU" msgstr "" #: ../../docs/about/system_requirements.rst:311 msgid "" "**Forward+ renderer:** Dedicated graphics with full Vulkan 1.2 support, " "Metal 3 support (macOS), or Direct3D 12 (12_0 feature level) support " "(Windows)" msgstr "" #: ../../docs/about/system_requirements.rst:316 msgid "" "**Mobile renderer:** Dedicated graphics with full Vulkan 1.2 support, Metal " "3 support (macOS), or Direct3D 12 (12_0 feature level) support (Windows)" msgstr "" #: ../../docs/about/system_requirements.rst:325 msgid "**For native exports:** 4 GB" msgstr "" #: ../../docs/about/system_requirements.rst:326 msgid "**For web exports:** 8 GB" msgstr "" #: ../../docs/about/system_requirements.rst:330 msgid "" "**For native exports:** Windows 10, macOS 10.15 (Forward+/Mobile, Vulkan), " "macOS 13.0 (Forward+/Mobile, Metal), Linux distribution released after 2020" msgstr "" #: ../../docs/about/system_requirements.rst:332 msgid "" "**For web exports:** Latest version of Firefox, Chrome, Edge, Safari, Opera" msgstr "" #: ../../docs/about/system_requirements.rst:343 msgid "**iOS:** SoC with 64-bit ARM CPU" msgstr "" #: ../../docs/about/system_requirements.rst:345 msgid "*Example: Apple A14 (iPhone 12)*" msgstr "" #: ../../docs/about/system_requirements.rst:347 msgid "" "**Forward+ renderer:** SoC featuring GPU with full Vulkan 1.2 support, or " "Metal 3 support (iOS/iPadOS)" msgstr "" #: ../../docs/about/system_requirements.rst:350 #: ../../docs/about/system_requirements.rst:355 #: ../../docs/about/system_requirements.rst:359 msgid "*Example: Qualcomm Adreno 630, Mali-G72 MP18, Apple A14 (iPhone 12)*" msgstr "" #: ../../docs/about/system_requirements.rst:352 msgid "" "**Mobile renderer:** SoC featuring GPU with full Vulkan 1.2 support, or " "Metal 3 support (iOS/iPadOS)" msgstr "" #: ../../docs/about/system_requirements.rst:366 msgid "" "**For native exports:** Android 9.0, iOS 14.1 (Forward+/Mobile, Vulkan), iOS " "16.0 (Forward+/Mobile, Metal)" msgstr "" #: ../../docs/about/system_requirements.rst:368 msgid "" "**For web exports:** Latest version of Firefox, Chrome, Edge, Safari, Opera, " "Samsung Internet" msgstr "" #: ../../docs/about/system_requirements.rst:374 msgid "" "Godot doesn't use OpenGL/OpenGL ES extensions introduced after OpenGL 3.3/" "OpenGL ES 3.0, but GPUs supporting newer OpenGL/OpenGL ES versions generally " "have fewer driver issues." msgstr "" #: ../../docs/about/faq.rst:-1 msgid "FAQ" msgstr "" #: ../../docs/about/faq.rst:9 #: ../../docs/community/asset_library/what_is_assetlib.rst:42 msgid "Frequently asked questions" msgstr "" #: ../../docs/about/faq.rst:12 msgid "" "What can I do with Godot? How much does it cost? What are the license terms?" msgstr "" #: ../../docs/about/faq.rst:14 msgid "" "Godot is `Free and open source Software `_ available under the `OSI-approved `_ MIT license. This means it is free as in " "\"free speech\" as well as in \"free beer.\"" msgstr "" #: ../../docs/about/faq.rst:18 msgid "In short:" msgstr "" #: ../../docs/about/faq.rst:20 msgid "" "You are free to download and use Godot for any purpose: personal, non-" "profit, commercial, or otherwise." msgstr "" #: ../../docs/about/faq.rst:21 msgid "" "You are free to modify, distribute, redistribute, and remix Godot to your " "heart's content, for any reason, both non-commercially and commercially." msgstr "" #: ../../docs/about/faq.rst:24 msgid "" "All the contents of this accompanying documentation are published under the " "permissive Creative Commons Attribution 3.0 (`CC BY 3.0 `_) license, with attribution to \"Juan " "Linietsky, Ariel Manzur and the Godot Engine community.\"" msgstr "" #: ../../docs/about/faq.rst:28 msgid "" "Logos and icons are generally under the same Creative Commons license. Note " "that some third-party libraries included with Godot's source code may have " "different licenses." msgstr "" #: ../../docs/about/faq.rst:32 msgid "" "For full details, look at the `COPYRIGHT.txt `_ as well as the `LICENSE.txt `_ and " "`LOGO_LICENSE.txt `_ files in the Godot repository." msgstr "" #: ../../docs/about/faq.rst:37 msgid "" "Also, see `the license page on the Godot website `_." msgstr "" #: ../../docs/about/faq.rst:40 msgid "Which platforms are supported by Godot?" msgstr "" #: ../../docs/about/faq.rst:42 msgid "**For the editor:**" msgstr "" #: ../../docs/about/faq.rst:44 ../../docs/about/faq.rst:52 #: ../../docs/about/faq.rst:259 #: ../../docs/tutorials/rendering/jitter_stutter.rst:116 #: ../../docs/tutorials/ui/gui_using_fonts.rst:813 #: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:16 msgid "Windows" msgstr "" #: ../../docs/about/faq.rst:45 ../../docs/about/faq.rst:53 #: ../../docs/about/faq.rst:270 #: ../../docs/tutorials/editor/default_key_mapping.rst:32 #: ../../docs/tutorials/editor/default_key_mapping.rst:102 #: ../../docs/tutorials/editor/default_key_mapping.rst:123 #: ../../docs/tutorials/editor/default_key_mapping.rst:178 #: ../../docs/tutorials/editor/default_key_mapping.rst:255 #: ../../docs/tutorials/editor/default_key_mapping.rst:344 #: ../../docs/tutorials/editor/default_key_mapping.rst:391 #: ../../docs/tutorials/editor/default_key_mapping.rst:402 #: ../../docs/tutorials/editor/default_key_mapping.rst:415 #: ../../docs/tutorials/editor/default_key_mapping.rst:446 #: ../../docs/tutorials/editor/default_key_mapping.rst:459 #: ../../docs/tutorials/editor/default_key_mapping.rst:482 #: ../../docs/tutorials/editor/default_key_mapping.rst:499 #: ../../docs/tutorials/editor/default_key_mapping.rst:538 #: ../../docs/tutorials/editor/default_key_mapping.rst:565 #: ../../docs/tutorials/rendering/jitter_stutter.rst:170 #: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:30 msgid "macOS" msgstr "" #: ../../docs/about/faq.rst:46 ../../docs/about/faq.rst:54 #: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:58 msgid "Linux, \\*BSD" msgstr "" #: ../../docs/about/faq.rst:47 msgid "Android (experimental)" msgstr "" #: ../../docs/about/faq.rst:48 msgid "`Web `__ (experimental)" msgstr "" #: ../../docs/about/faq.rst:50 msgid "**For exporting your games:**" msgstr "" #: ../../docs/about/faq.rst:55 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:328 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:202 #: ../../docs/tutorials/export/one-click_deploy.rst:103 #: ../../docs/tutorials/platform/android/index.rst:4 #: ../../docs/tutorials/rendering/jitter_stutter.rst:177 #: ../../docs/tutorials/ui/gui_using_fonts.rst:813 #: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:146 msgid "Android" msgstr "" #: ../../docs/about/faq.rst:56 #: ../../docs/tutorials/rendering/jitter_stutter.rst:184 #: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:133 msgid "iOS" msgstr "" #: ../../docs/about/faq.rst:57 #: ../../docs/tutorials/export/one-click_deploy.rst:124 #: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:378 #: ../../docs/tutorials/platform/web/index.rst:7 #: ../../docs/tutorials/rendering/renderers.rst:158 #: ../../docs/engine_details/development/compiling/optimizing_for_size.rst:368 #: ../../docs/engine_details/development/debugging/using_sanitizers.rst:200 #: ../../docs/engine_details/development/debugging/vulkan/vulkan_validation_layers.rst:138 msgid "Web" msgstr "" #: ../../docs/about/faq.rst:59 msgid "" "Both 32- and 64-bit binaries are supported where it makes sense, with 64 " "being the default. Official macOS builds support Apple Silicon natively as " "well as x86_64." msgstr "" #: ../../docs/about/faq.rst:62 msgid "" "Some users also report building and using Godot successfully on ARM-based " "systems with Linux, like the Raspberry Pi." msgstr "" #: ../../docs/about/faq.rst:65 msgid "" "The Godot team can't provide an open source console export due to the " "licensing terms imposed by console manufacturers. Regardless of the engine " "you use, though, releasing games on consoles is always a lot of work. You " "can read more about :ref:`doc_consoles`." msgstr "" #: ../../docs/about/faq.rst:70 msgid "" "For more on this, see the sections on :ref:`exporting ` and :ref:`compiling Godot yourself `." msgstr "" #: ../../docs/about/faq.rst:75 msgid "" "Godot 3 also had support for Universal Windows Platform (UWP). This platform " "port was removed in Godot 4 due to lack of maintenance, and it being " "deprecated by Microsoft. It is still available in the current stable release " "of Godot 3 for interested users." msgstr "" #: ../../docs/about/faq.rst:81 msgid "Which programming languages are supported in Godot?" msgstr "" #: ../../docs/about/faq.rst:83 msgid "" "The officially supported languages for Godot are GDScript, C#, and C++. See " "the subcategories for each language in the :ref:`scripting ` section." msgstr "" #: ../../docs/about/faq.rst:86 msgid "" "If you are just starting out with either Godot or game development in " "general, GDScript is the recommended language to learn and use since it is " "native to Godot. While scripting languages tend to be less performant than " "lower-level languages in the long run, for prototyping, developing Minimum " "Viable Products (MVPs), and focusing on Time-To-Market (TTM), GDScript will " "provide a fast, friendly, and capable way of developing your games." msgstr "" #: ../../docs/about/faq.rst:93 msgid "" "Note that C# support is still relatively new, and as such, you may encounter " "some issues along the way. C# support is also currently missing on the web " "platform. Our friendly and hard-working development community is always " "ready to tackle new problems as they arise, but since this is an open source " "project, we recommend that you first do some due diligence yourself. " "Searching through discussions on `open issues `__ " "is a great way to start your troubleshooting." msgstr "" #: ../../docs/about/faq.rst:102 msgid "" "As for new languages, support is possible via third parties with " "GDExtensions. (See the question about plugins below). Work is currently " "underway, for example, on unofficial bindings for Godot to `Python `_ and `Nim `_." msgstr "" #: ../../docs/about/faq.rst:109 msgid "What is GDScript and why should I use it?" msgstr "" #: ../../docs/about/faq.rst:111 msgid "" "GDScript is Godot's integrated scripting language. It was built from the " "ground up to maximize Godot's potential in the least amount of code, " "affording both novice and expert developers alike to capitalize on Godot's " "strengths as fast as possible. If you've ever written anything in a language " "like Python before, then you'll feel right at home. For examples and a " "complete overview of the power GDScript offers you, check out " "the :ref:`GDScript scripting guide `." msgstr "" #: ../../docs/about/faq.rst:118 msgid "" "There are several reasons to use GDScript, but the most salient reason is " "the overall **reduction of complexity**." msgstr "" #: ../../docs/about/faq.rst:121 msgid "" "The original intent of creating a tightly integrated, custom scripting " "language for Godot was two-fold: first, it reduces the amount of time " "necessary to get up and running with Godot, giving developers a rapid way of " "exposing themselves to the engine with a focus on productivity; second, it " "reduces the overall burden of maintenance, attenuates the dimensionality of " "issues, and allows the developers of the engine to focus on squashing bugs " "and improving features related to the engine core, rather than spending a " "lot of time trying to get a small set of incremental features working across " "a large set of languages." msgstr "" #: ../../docs/about/faq.rst:129 msgid "" "Since Godot is an open source project, it was imperative from the start to " "prioritize a more integrated and seamless experience over attracting " "additional users by supporting more familiar programming languages, " "especially when supporting those more familiar languages would result in a " "worse experience. We understand if you would rather use another language in " "Godot (see the list of supported options above). That being said, if you " "haven't given GDScript a try, try it for **three days**. Just like Godot, " "once you see how powerful it is and how rapid your development becomes, we " "think GDScript will grow on you." msgstr "" #: ../../docs/about/faq.rst:138 msgid "" "More information about getting comfortable with GDScript or dynamically " "typed languages can be found in the :ref:`doc_gdscript_more_efficiently` " "tutorial." msgstr "" #: ../../docs/about/faq.rst:142 msgid "What were the motivations behind creating GDScript?" msgstr "" #: ../../docs/about/faq.rst:144 msgid "" "In the early days, the engine used the `Lua `__ " "scripting language. Lua can be fast thanks to LuaJIT, but creating bindings " "to an object-oriented system (by using fallbacks) was complex and slow and " "took an enormous amount of code. After some experiments with `Python " "`__, that also proved difficult to embed." msgstr "" #: ../../docs/about/faq.rst:150 msgid "" "The main reasons for creating a custom scripting language for Godot were:" msgstr "" #: ../../docs/about/faq.rst:152 msgid "" "Poor threading support in most script VMs, and Godot uses threads (Lua, " "Python, Squirrel, JavaScript, ActionScript, etc.)." msgstr "" #: ../../docs/about/faq.rst:154 msgid "" "Poor class-extending support in most script VMs, and adapting to the way " "Godot works is highly inefficient (Lua, Python, JavaScript)." msgstr "" #: ../../docs/about/faq.rst:156 msgid "" "Many existing languages have horrible interfaces for binding to C++, " "resulting in a large amount of code, bugs, bottlenecks, and general " "inefficiency (Lua, Python, Squirrel, JavaScript, etc.). We wanted to focus " "on a great engine, not a great number of integrations." msgstr "" #: ../../docs/about/faq.rst:160 msgid "" "No native vector types (Vector3, Transform3D, etc.), resulting in highly " "reduced performance when using custom types (Lua, Python, Squirrel, " "JavaScript, ActionScript, etc.)." msgstr "" #: ../../docs/about/faq.rst:163 msgid "" "Garbage collector results in stalls or unnecessarily large memory usage " "(Lua, Python, JavaScript, ActionScript, etc.)." msgstr "" #: ../../docs/about/faq.rst:165 msgid "" "Difficulty integrating with the code editor for providing code completion, " "live editing, etc. (all of them)." msgstr "" #: ../../docs/about/faq.rst:168 msgid "GDScript was designed to curtail the issues above, and more." msgstr "" #: ../../docs/about/faq.rst:173 msgid "Which programming language is fastest?" msgstr "" #: ../../docs/about/faq.rst:175 msgid "" "In most games, the *scripting language* itself is not the cause of " "performance problems. Instead, performance is slowed by inefficient " "algorithms (which are slow in all languages), by GPU performance, or by the " "common C++ engine code like physics or navigation. All languages supported " "by Godot are fast enough for general-purpose scripting. You should choose a " "language based on other factors, like ease-of-use, familiarity, platform " "support, or language features." msgstr "" #: ../../docs/about/faq.rst:182 msgid "" "In general, the performance of C# and GDScript is within the same order of " "magnitude, and C++ is faster than both." msgstr "" #: ../../docs/about/faq.rst:185 msgid "" "Comparing GDScript performance to C# is tricky, since C# can be faster in " "some specific cases. The C# *language* itself tends to be faster than " "GDScript, which means that C# can be faster in situations with few calls to " "Godot engine code. However, C# can be slower than GDScript when making many " "Godot API calls, due to the cost of *marshalling*. C#'s performance can also " "be brought down by garbage collection which occurs at random and " "unpredictable moments. This can result in stuttering issues in complex " "projects, and is not exclusive to Godot." msgstr "" #: ../../docs/about/faq.rst:193 msgid "" "C++, using :ref:`GDExtension `, will almost always " "be faster than either C# or GDScript. However, C++ is less easy to use than " "C# or GDScript, and is slower to develop with." msgstr "" #: ../../docs/about/faq.rst:197 msgid "" "You can also use multiple languages within a single project, " "with :ref:`cross-language scripting `, or by " "using GDExtension and scripting languages together. Be aware that doing so " "comes with its own complications." msgstr "" #: ../../docs/about/faq.rst:203 msgid "What 3D model formats does Godot support?" msgstr "" #: ../../docs/about/faq.rst:205 msgid "" "You can find detailed information on supported formats, how to export them " "from your 3D modeling software, and how to import them for Godot in " "the :ref:`doc_importing_3d_scenes` documentation." msgstr "" #: ../../docs/about/faq.rst:210 msgid "" "Will [insert closed SDK such as FMOD, GameWorks, etc.] be supported in Godot?" msgstr "" #: ../../docs/about/faq.rst:212 msgid "" "The aim of Godot is to create a free and open source MIT-licensed engine " "that is modular and extendable. There are no plans for the core engine " "development community to support any third-party, closed-source/proprietary " "SDKs, as integrating with these would go against Godot's ethos." msgstr "" #: ../../docs/about/faq.rst:217 msgid "" "That said, because Godot is open source and modular, nothing prevents you or " "anyone else interested in adding those libraries as a module and shipping " "your game with them, as either open- or closed-source." msgstr "" #: ../../docs/about/faq.rst:221 msgid "" "To see how support for your SDK of choice could still be provided, look at " "the Plugins question below." msgstr "" #: ../../docs/about/faq.rst:224 msgid "" "If you know of a third-party SDK that is not supported by Godot but that " "offers free and open source integration, consider starting the integration " "work yourself. Godot is not owned by one person; it belongs to the " "community, and it grows along with ambitious community contributors like you." msgstr "" #: ../../docs/about/faq.rst:230 msgid "How can I extend Godot?" msgstr "" #: ../../docs/about/faq.rst:232 msgid "" "For extending Godot, like creating Godot Editor plugins or adding support " "for additional languages, take a look at :ref:`EditorPlugins " "` and tool scripts." msgstr "" #: ../../docs/about/faq.rst:236 msgid "" "Also, see the official blog post on GDExtension, a way to develop native " "extensions for Godot:" msgstr "" #: ../../docs/about/faq.rst:238 msgid "" "`Introducing GDNative's successor, GDExtension `_" msgstr "" #: ../../docs/about/faq.rst:240 msgid "" "You can also take a look at the GDScript implementation, the Godot modules, " "as well as the `Jolt physics engine integration `__ for Godot. This would be a good starting point to see " "how another third-party library integrates with Godot." msgstr "" #: ../../docs/about/faq.rst:246 msgid "" "How do I install the Godot editor on my system (for desktop integration)?" msgstr "" #: ../../docs/about/faq.rst:248 msgid "" "Since you don't need to actually install Godot on your system to run it, " "this means desktop integration is not performed automatically. There are two " "ways to overcome this. You can install Godot from `Steam `__ (all platforms), `Scoop " "`__ (Windows), `Homebrew `__ (macOS) or " "`Flathub `__ " "(Linux). This will automatically perform the required steps for desktop " "integration." msgstr "" #: ../../docs/about/faq.rst:256 msgid "" "Alternatively, you can manually perform the steps that an installer would do " "for you:" msgstr "" #: ../../docs/about/faq.rst:261 msgid "" "Move the Godot executable to a stable location (i.e. outside of your " "Downloads folder), so you don't accidentally move it and break the shortcut " "in the future." msgstr "" #: ../../docs/about/faq.rst:263 msgid "Right-click the Godot executable and choose **Create Shortcut**." msgstr "" #: ../../docs/about/faq.rst:264 msgid "" "Move the created shortcut to ``%APPDATA%\\Microsoft\\Windows\\Start " "Menu\\Programs``. This is the user-wide location for shortcuts that will " "appear in the Start menu. You can also pin Godot in the task bar by right-" "clicking the executable and choosing **Pin to Task Bar**." msgstr "" #: ../../docs/about/faq.rst:272 msgid "" "Drag the extracted Godot application to ``/Applications/Godot.app``, then " "drag it to the Dock if desired. Spotlight will be able to find Godot as long " "as it's in ``/Applications`` or ``~/Applications``." msgstr "" #: ../../docs/about/faq.rst:277 #: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:354 #: ../../docs/tutorials/rendering/jitter_stutter.rst:151 #: ../../docs/tutorials/ui/gui_using_fonts.rst:813 msgid "Linux" msgstr "" #: ../../docs/about/faq.rst:279 msgid "" "Move the Godot binary to a stable location (i.e. outside of your Downloads " "folder), so you don't accidentally move it and break the shortcut in the " "future." msgstr "" #: ../../docs/about/faq.rst:281 msgid "" "Rename and move the Godot binary to a location present in your ``PATH`` " "environment variable. This is typically ``/usr/local/bin/godot`` or ``/usr/" "bin/godot``. Doing this requires administrator privileges, but this also " "allows you to :ref:`run the Godot editor from a terminal " "` by entering ``godot``." msgstr "" #: ../../docs/about/faq.rst:287 msgid "" "If you cannot move the Godot editor binary to a protected location, you can " "keep the binary somewhere in your home directory, and modify the ``Path=`` " "line in the ``.desktop`` file linked below to contain the full *absolute* " "path to the Godot binary." msgstr "" #: ../../docs/about/faq.rst:292 msgid "" "Save `this .desktop file `__ to " "``$HOME/.local/share/applications/``. If you have administrator privileges, " "you can also save the ``.desktop`` file to ``/usr/local/share/applications`` " "to make the shortcut available for all users." msgstr "" #: ../../docs/about/faq.rst:298 msgid "Is the Godot editor a portable application?" msgstr "" #: ../../docs/about/faq.rst:300 msgid "" "In its default configuration, Godot is *semi-portable*. Its executable can " "run from any location (including non-writable locations) and never requires " "administrator privileges." msgstr "" #: ../../docs/about/faq.rst:304 msgid "" "However, configuration files will be written to the user-wide configuration " "or data directory. This is usually a good approach, but this means " "configuration files will not carry across machines if you copy the folder " "containing the Godot executable. See :ref:`doc_data_paths` for more " "information." msgstr "" #: ../../docs/about/faq.rst:309 msgid "" "If *true* portable operation is desired (e.g. for use on a USB stick), " "follow the steps in :ref:`doc_data_paths_self_contained_mode`." msgstr "" #: ../../docs/about/faq.rst:313 msgid "Why does Godot aim to keep its core feature set small?" msgstr "" #: ../../docs/about/faq.rst:315 msgid "" "Godot intentionally does not include features that can be implemented by add-" "ons unless they are used very often. One example of something not used often " "is advanced artificial intelligence functionality." msgstr "" #: ../../docs/about/faq.rst:319 msgid "There are several reasons for this:" msgstr "" #: ../../docs/about/faq.rst:321 msgid "" "**Code maintenance and surface for bugs.** Every time we accept new code in " "the Godot repository, existing contributors often take the responsibility of " "maintaining it. Some contributors don't always stick around after getting " "their code merged, which can make it difficult for us to maintain the code " "in question. This can lead to poorly maintained features with bugs that are " "never fixed. On top of that, the \"API surface\" that needs to be tested and " "checked for regressions keeps increasing over time." msgstr "" #: ../../docs/about/faq.rst:329 msgid "" "**Ease of contribution.** By keeping the codebase small and tidy, it can " "remain fast and easy to compile from source. This makes it easier for new " "contributors to get started with Godot, without requiring them to purchase " "high-end hardware." msgstr "" #: ../../docs/about/faq.rst:334 msgid "" "**Keeping the binary size small for the editor.** Not everyone has a fast " "Internet connection. Ensuring that everyone can download the Godot editor, " "extract it and run it in less than 5 minutes makes Godot more accessible to " "developers in all countries." msgstr "" #: ../../docs/about/faq.rst:339 msgid "" "**Keeping the binary size small for export templates.** This directly " "impacts the size of projects exported with Godot. On mobile and web " "platforms, keeping file sizes low is important to ensure fast installation " "and loading on underpowered devices. Again, there are many countries where " "high-speed Internet is not readily available. To add to this, strict data " "usage caps are often in effect in those countries." msgstr "" #: ../../docs/about/faq.rst:346 msgid "" "For all the reasons above, we have to be selective of what we can accept as " "core functionality in Godot. This is why we are aiming to move some core " "functionality to officially supported add-ons in future versions of Godot. " "In terms of binary size, this also has the advantage of making you pay only " "for what you actually use in your project. (In the meantime, you " "can :ref:`compile custom export templates with unused features disabled " "` to optimize the distribution size of your " "project.)" msgstr "" #: ../../docs/about/faq.rst:355 msgid "" "How should assets be created to handle multiple resolutions and aspect " "ratios?" msgstr "" #: ../../docs/about/faq.rst:357 msgid "" "This question pops up often and it's probably thanks to the misunderstanding " "created by Apple when they originally doubled the resolution of their " "devices. It made people think that having the same assets in different " "resolutions was a good idea, so many continued towards that path. That " "originally worked to a point and only for Apple devices, but then several " "Android and Apple devices with different resolutions and aspect ratios were " "created, with a very wide range of sizes and DPIs." msgstr "" #: ../../docs/about/faq.rst:365 msgid "" "The most common and proper way to achieve this is to, instead, use a single " "base resolution for the game and only handle different screen aspect ratios. " "This is mostly needed for 2D, as in 3D, it's just a matter of camera " "vertical or horizontal FOV." msgstr "" #: ../../docs/about/faq.rst:370 msgid "" "Choose a single base resolution for your game. Even if there are devices " "that go up to 1440p and devices that go down to 400p, regular hardware " "scaling in your device will take care of this at little or no performance " "cost. The most common choices are either near 1080p (1920x1080) or 720p " "(1280x720). Keep in mind the higher the resolution, the larger your assets, " "the more memory they will take and the longer the time it will take for " "loading." msgstr "" #: ../../docs/about/faq.rst:378 msgid "" "Use the stretch options in Godot; canvas items stretching while keeping " "aspect ratios works best. Check the :ref:`doc_multiple_resolutions` tutorial " "on how to achieve this." msgstr "" #: ../../docs/about/faq.rst:382 msgid "" "Determine a minimum resolution and then decide if you want your game to " "stretch vertically or horizontally for different aspect ratios, or if there " "is one aspect ratio and you want black bars to appear instead. This is also " "explained in :ref:`doc_multiple_resolutions`." msgstr "" #: ../../docs/about/faq.rst:387 msgid "" "For user interfaces, use the :ref:`anchoring ` to " "determine where controls should stay and move. If UIs are more complex, " "consider learning about Containers." msgstr "" #: ../../docs/about/faq.rst:391 msgid "And that's it! Your game should work in multiple resolutions." msgstr "" #: ../../docs/about/faq.rst:394 msgid "When is the next release of Godot out?" msgstr "" #: ../../docs/about/faq.rst:396 msgid "" "When it's ready! See :ref:`doc_release_policy_when_is_next_release_out` for " "more information." msgstr "" #: ../../docs/about/faq.rst:400 msgid "Which Godot version should I use for a new project?" msgstr "" #: ../../docs/about/faq.rst:402 msgid "" "We recommend using Godot 4.x for new projects, but depending on the feature " "set you need, it may be better to use 3.x instead. " "See :ref:`doc_release_policy_which_version_should_i_use` for more " "information." msgstr "" #: ../../docs/about/faq.rst:407 msgid "Should I upgrade my project to use new Godot versions?" msgstr "" #: ../../docs/about/faq.rst:409 msgid "" "Some new versions are safer to upgrade to than others. In general, whether " "you should upgrade depends on your project's circumstances. " "See :ref:`doc_release_policy_should_i_upgrade_my_project` for more " "information." msgstr "" #: ../../docs/about/faq.rst:414 msgid "Should I use the Forward+, Mobile, or Compatibility renderer?" msgstr "" #: ../../docs/about/faq.rst:416 msgid "" "You can find a detailed comparison of the renderers in :ref:`doc_renderers`." msgstr "" #: ../../docs/about/faq.rst:419 msgid "I would like to contribute! How can I get started?" msgstr "" #: ../../docs/about/faq.rst:421 msgid "" "Awesome! As an open source project, Godot thrives off of the innovation and " "the ambition of developers like you." msgstr "" #: ../../docs/about/faq.rst:424 msgid "" "The best way to start contributing to Godot is by using it and reporting any " "`issues `_ that you might " "experience. A good bug report with clear reproduction steps helps your " "fellow contributors fix bugs quickly and efficiently. You can also report " "issues you find in the `online documentation `_." msgstr "" #: ../../docs/about/faq.rst:430 msgid "" "If you feel ready to submit your first PR, pick any issue that resonates " "with you from one of the links above and try your hand at fixing it. You " "will need to learn how to compile the engine from sources, or how to build " "the documentation. You also need to get familiar with Git, a version control " "system that Godot developers use." msgstr "" #: ../../docs/about/faq.rst:435 msgid "" "We explain how to work with the engine source, how to edit the " "documentation, and what other ways to contribute are there in our " "`documentation for contributors `__." msgstr "" #: ../../docs/about/faq.rst:439 msgid "I have a great idea for Godot. How can I share it?" msgstr "" #: ../../docs/about/faq.rst:441 msgid "" "We are always looking for suggestions about how to improve the engine. User " "feedback is the main driving force behind our decision-making process, and " "limitations that you might face while working on your project are a great " "data point for us when considering engine enhancements." msgstr "" #: ../../docs/about/faq.rst:446 msgid "" "If you experience a usability problem or are missing a feature in the " "current version of Godot, start by discussing it with our `community " "`_. There may be other, perhaps better, " "ways to achieve the desired result that community members could suggest. And " "you can learn if other users experience the same issue, and figure out a " "good solution together." msgstr "" #: ../../docs/about/faq.rst:452 msgid "" "If you come up with a well-defined idea for the engine, feel free to open a " "`proposal issue `_. " "Try to be specific and concrete while describing your problem and your " "proposed solution — only actionable proposals can be considered. It is not " "required, but if you want to implement it yourself, that's always " "appreciated!" msgstr "" #: ../../docs/about/faq.rst:458 msgid "" "If you only have a general idea without specific details, you can open a " "`proposal discussion `_. These can be anything you want, and allow for a free-form " "discussion in search of a solution. Once you find one, a proposal issue can " "be opened." msgstr "" #: ../../docs/about/faq.rst:463 msgid "" "Please, read the `readme `_ document before creating a proposal to learn more " "about the process." msgstr "" #: ../../docs/about/faq.rst:469 msgid "Is it possible to use Godot to create non-game applications?" msgstr "" #: ../../docs/about/faq.rst:471 msgid "" "Yes! Godot features an extensive built-in UI system, and its small " "distribution size can make it a suitable alternative to frameworks like " "Electron or Qt." msgstr "" #: ../../docs/about/faq.rst:474 msgid "" "When creating a non-game application, make sure to enable :ref:`low-" "processor mode ` in the Project Settings to decrease CPU and GPU usage." msgstr "" #: ../../docs/about/faq.rst:478 msgid "" "Check out `Material Maker `__ " "and `Pixelorama `__ for " "examples of open source applications made with Godot." msgstr "" #: ../../docs/about/faq.rst:485 msgid "Is it possible to use Godot as a library?" msgstr "" #: ../../docs/about/faq.rst:487 msgid "" "If you are looking to make a game with Godot, keep in mind Godot is designed " "to be used with its editor. We recommend you give it a try, as it will most " "likely save you time in the long term." msgstr "" #: ../../docs/about/faq.rst:491 msgid "" "For more specialized applications, it can make sense to look into using " "Godot as a library. Since Godot 4.6, there is **experimental** support for " "using Godot as a static or shared library in the form of LibGodot. This is " "currently supported on Windows, macOS, and Linux. Support for Android and " "iOS is planned for a future release." msgstr "" #: ../../docs/about/faq.rst:497 msgid "" "You can find sample applications that use Godot as a library in the `migeran/" "libgodot_project GitHub repository `__." msgstr "" #: ../../docs/about/faq.rst:501 msgid "What user interface toolkit does Godot use?" msgstr "" #: ../../docs/about/faq.rst:503 msgid "" "Godot does not use a standard :abbr:`GUI (Graphical User Interface)` toolkit " "like GTK, Qt or wxWidgets. Instead, Godot uses its own user interface " "toolkit, which is always rendered using hardware acceleration. There is no " "built-in software fallback, although external solutions that emulate " "graphics APIs on the CPU can be used." msgstr "" #: ../../docs/about/faq.rst:508 msgid "" "This toolkit is exposed in the form of Control nodes, which are used to " "render the editor (which is written in C++). These Control nodes can also be " "used in projects from any scripting language supported by Godot." msgstr "" #: ../../docs/about/faq.rst:512 msgid "" "This custom toolkit makes it possible to benefit from hardware acceleration " "and have a consistent appearance across all platforms. On top of that, it " "doesn't have to deal with the LGPL licensing caveats that come with GTK or " "Qt. Lastly, this means Godot is \"eating its own dog food\" since the editor " "itself is one of the most complex users of Godot's UI system." msgstr "" #: ../../docs/about/faq.rst:518 msgid "" "This custom UI toolkit can be :ref:`embedded into other applications " "` (experimental). However, the preferred way " "to use it is to :ref:`use Godot to create non-game applications with the " "editor `." msgstr "" #: ../../docs/about/faq.rst:525 msgid "Why does Godot use the SCons build system?" msgstr "" #: ../../docs/about/faq.rst:527 msgid "" "Godot uses the `SCons `__ build system. There are no " "plans to switch to a different build system in the near future. There are " "many reasons why we have chosen SCons over other alternatives. For example:" msgstr "" #: ../../docs/about/faq.rst:531 msgid "" "Godot can be compiled for a dozen different platforms: all PC platforms, all " "mobile platforms, many consoles, and WebAssembly." msgstr "" #: ../../docs/about/faq.rst:533 msgid "" "Developers often need to compile for several of the platforms **at the same " "time**, or even different targets of the same platform. They can't afford " "reconfiguring and rebuilding the project each time. SCons can do this with " "no sweat, without breaking the builds." msgstr "" #: ../../docs/about/faq.rst:537 msgid "" "SCons will *never* break a build no matter how many changes, configurations, " "additions, removals etc." msgstr "" #: ../../docs/about/faq.rst:539 msgid "" "Godot's build process is not simple. Several files are generated by code " "(binders), others are parsed (shaders), and others need to offer " "customization (:ref:`modules `). This requires " "complex logic which is easier to write in an actual programming language " "(like Python) rather than using a mostly macro-based language only meant for " "building." msgstr "" #: ../../docs/about/faq.rst:544 msgid "" "Godot's build process makes heavy use of cross-compiling tools. Each " "platform has a specific detection process, and all these must be handled as " "specific cases with special code written for each." msgstr "" #: ../../docs/about/faq.rst:548 msgid "" "Please try to keep an open mind and get at least a little familiar with " "SCons if you are planning to build Godot yourself." msgstr "" #: ../../docs/about/faq.rst:554 msgid "Why does Godot not use STL (Standard Template Library)?" msgstr "" #: ../../docs/about/faq.rst:556 msgid "" "Like many other libraries (Qt as an example), Godot does not make use of STL " "(with a few exceptions such as threading primitives). We believe STL is a " "great general-purpose library, but we had special requirements for Godot." msgstr "" #: ../../docs/about/faq.rst:560 msgid "" "STL templates create very large symbols, which results in huge debug " "binaries. We use few templates with very short names instead." msgstr "" #: ../../docs/about/faq.rst:562 msgid "" "Most of our containers cater to special needs, like Vector, which uses copy " "on write and we use to pass data around, or the RID system, which requires " "O(1) access time for performance. Likewise, our hash map implementations are " "designed to integrate seamlessly with internal engine types." msgstr "" #: ../../docs/about/faq.rst:566 msgid "" "Our containers have memory tracking built-in, which helps better track " "memory usage." msgstr "" #: ../../docs/about/faq.rst:567 msgid "" "For large arrays, we use pooled memory, which can be mapped to either a " "preallocated buffer or virtual memory." msgstr "" #: ../../docs/about/faq.rst:569 msgid "" "We use our custom String type, as the one provided by STL is too basic and " "lacks proper internationalization support." msgstr "" #: ../../docs/about/faq.rst:572 msgid "" "Check out :ref:`Godot's container types ` for alternatives." msgstr "" #: ../../docs/about/faq.rst:575 msgid "Why does Godot not use exceptions?" msgstr "" #: ../../docs/about/faq.rst:577 msgid "" "We believe games should not crash, no matter what. If an unexpected " "situation happens, Godot will print an error (which can be traced even to " "script), but then it will try to recover as gracefully as possible and keep " "going." msgstr "" #: ../../docs/about/faq.rst:582 msgid "" "Additionally, exceptions significantly increase the binary size for the " "executable and result in increased compile times." msgstr "" #: ../../docs/about/faq.rst:586 msgid "Does Godot use an ECS (Entity Component System)?" msgstr "" #: ../../docs/about/faq.rst:588 msgid "" "Godot does **not** use an ECS and relies on inheritance instead. While there " "is no universally better approach, we found that using an inheritance-based " "approach resulted in better usability while still being fast enough for most " "use cases." msgstr "" #: ../../docs/about/faq.rst:592 msgid "" "That said, nothing prevents you from making use of composition in your " "project by creating child Nodes with individual scripts. These nodes can " "then be added and removed at runtime to dynamically add and remove behaviors." msgstr "" #: ../../docs/about/faq.rst:596 msgid "" "More information about Godot's design choices can be found in `this article " "`__." msgstr "" #: ../../docs/about/faq.rst:600 msgid "Why does Godot not force users to implement DOD (Data-Oriented Design)?" msgstr "" #: ../../docs/about/faq.rst:602 msgid "" "While Godot internally attempts to use cache coherency as much as possible, " "we believe users don't need to be forced to use DOD practices." msgstr "" #: ../../docs/about/faq.rst:605 msgid "" "DOD is mostly a cache coherency optimization that can only provide " "significant performance improvements when dealing with dozens of thousands " "of objects which are processed every frame with little modification. That " "is, if you are moving a few hundred sprites or enemies per frame, DOD won't " "result in a meaningful improvement in performance. In such a case, you " "should consider a different approach to optimization." msgstr "" #: ../../docs/about/faq.rst:612 msgid "" "The vast majority of games do not need this and Godot provides handy helpers " "to do the job for most cases when you do." msgstr "" #: ../../docs/about/faq.rst:615 msgid "" "If a game needs to process such a large amount of objects, our " "recommendation is to use C++ and GDExtensions for performance-heavy tasks " "and GDScript (or C#) for the rest of the game." msgstr "" #: ../../docs/about/faq.rst:620 msgid "How can I support Godot development or contribute?" msgstr "" #: ../../docs/about/faq.rst:622 msgid "" "See `How to contribute `__." msgstr "" #: ../../docs/about/faq.rst:625 msgid "Who is working on Godot? How can I contact you?" msgstr "" #: ../../docs/about/faq.rst:627 msgid "" "See the corresponding page on the `Godot website `_." msgstr "" #: ../../docs/about/complying_with_licenses.rst:6 msgid "Complying with licenses" msgstr "" #: ../../docs/about/complying_with_licenses.rst:10 msgid "" "The recommendations in this page **are not legal advice.** They are provided " "in good faith to help users navigate license attribution requirements." msgstr "" #: ../../docs/about/complying_with_licenses.rst:14 msgid "What are licenses?" msgstr "" #: ../../docs/about/complying_with_licenses.rst:16 msgid "" "Godot is created and distributed under the `MIT License `_. It doesn't have a sole owner, as every " "contributor that submits code to the project does it under this same license " "and keeps ownership of their contribution." msgstr "" #: ../../docs/about/complying_with_licenses.rst:21 msgid "" "The license is the legal requirement for you (or your company) to use and " "distribute the software (and derivative projects, including games made with " "it). Your game or project can have a different license, but it still needs " "to comply with the original one." msgstr "" #: ../../docs/about/complying_with_licenses.rst:28 msgid "" "This section covers compliance with licenses from a user perspective. If you " "are interested in licence compliance as a contributor, you can find " "guidelines `here `__." msgstr "" #: ../../docs/about/complying_with_licenses.rst:34 msgid "" "Alongside the Godot license text, remember to also list third-party notices " "for assets you're using, such as textures, models, sounds, music and fonts. " "This includes free assets, which often come with licenses that require " "attribution." msgstr "" #: ../../docs/about/complying_with_licenses.rst:40 #: ../../docs/tutorials/export/exporting_for_macos.rst:27 #: ../../docs/tutorials/export/exporting_for_ios.rst:22 #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:14 #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:14 #: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:14 #: ../../docs/engine_details/development/compiling/compiling_for_android.rst:25 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:14 #: ../../docs/engine_details/development/compiling/compiling_for_web.rst:14 #: ../../docs/engine_details/development/compiling/cross-compiling_for_ios_on_linux.rst:25 #: ../../docs/engine_details/development/compiling/compiling_with_dotnet.rst:9 #: ../../docs/community/asset_library/submitting_to_assetlib.rst:24 msgid "Requirements" msgstr "" #: ../../docs/about/complying_with_licenses.rst:42 msgid "" "In the case of the MIT license, the only requirement is to include the " "license text somewhere in your game or derivative project." msgstr "" #: ../../docs/about/complying_with_licenses.rst:45 msgid "This text reads as follows:" msgstr "" #: ../../docs/about/complying_with_licenses.rst:72 msgid "" "Beside its own MIT license, Godot includes code from a number of third-party " "libraries. See :ref:`doc_complying_with_licenses_thirdparty` for details." msgstr "" #: ../../docs/about/complying_with_licenses.rst:77 msgid "" "Your games do not need to be under the same license. You are free to release " "your Godot projects under any license and to create commercial games with " "the engine." msgstr "" #: ../../docs/about/complying_with_licenses.rst:82 msgid "Inclusion" msgstr "" #: ../../docs/about/complying_with_licenses.rst:84 msgid "" "The license text must be made available to the user. The license doesn't " "specify how the text has to be included, but here are the most common " "approaches (you only need to implement one of them, not all)." msgstr "" #: ../../docs/about/complying_with_licenses.rst:89 msgid "Credits screen" msgstr "" #: ../../docs/about/complying_with_licenses.rst:91 msgid "" "Include the above license text somewhere in the credits screen. It can be at " "the bottom after showing the rest of the credits. Most large studios use " "this approach with open source licenses." msgstr "" #: ../../docs/about/complying_with_licenses.rst:96 msgid "Licenses screen" msgstr "" #: ../../docs/about/complying_with_licenses.rst:98 msgid "" "Some games have a special menu (often in the settings) to display licenses. " "This menu is typically accessed with a button called **Third-party " "Licenses** or **Open Source Licenses**." msgstr "" #: ../../docs/about/complying_with_licenses.rst:103 msgid "Output log" msgstr "" #: ../../docs/about/complying_with_licenses.rst:105 msgid "" "Printing the license text using the :ref:`print() " "` function may be enough on platforms where " "a global output log is readable. This is the case on desktop platforms, " "Android and HTML5 (but not iOS)." msgstr "" #: ../../docs/about/complying_with_licenses.rst:110 msgid "Accompanying file" msgstr "" #: ../../docs/about/complying_with_licenses.rst:112 msgid "" "If the game is distributed on desktop platforms, a file containing the " "license text can be added to the software that is installed to the user PC." msgstr "" #: ../../docs/about/complying_with_licenses.rst:116 msgid "Printed manual" msgstr "" #: ../../docs/about/complying_with_licenses.rst:118 msgid "" "If the game includes a printed manual, the license text can be included " "there." msgstr "" #: ../../docs/about/complying_with_licenses.rst:121 msgid "Link to the license" msgstr "" #: ../../docs/about/complying_with_licenses.rst:123 msgid "" "The Godot Engine developers consider that a link to ``godotengine.org/" "license`` in your game documentation or credits would be an acceptable way " "to satisfy the license terms." msgstr "" #: ../../docs/about/complying_with_licenses.rst:129 msgid "" "Godot provides several methods to get license information in " "the :ref:`Engine ` singleton. This allows you to source the " "license information directly from the engine binary, which prevents the " "information from becoming outdated if you update engine versions." msgstr "" #: ../../docs/about/complying_with_licenses.rst:134 msgid "For the engine itself:" msgstr "" #: ../../docs/about/complying_with_licenses.rst:136 msgid ":ref:`Engine.get_license_text`" msgstr "" #: ../../docs/about/complying_with_licenses.rst:138 msgid "For third-party components used by the engine:" msgstr "" #: ../../docs/about/complying_with_licenses.rst:140 msgid ":ref:`Engine.get_license_info`" msgstr "" #: ../../docs/about/complying_with_licenses.rst:141 msgid ":ref:`Engine.get_copyright_info`" msgstr "" #: ../../docs/about/complying_with_licenses.rst:146 msgid "Third-party licenses" msgstr "" #: ../../docs/about/complying_with_licenses.rst:148 msgid "" "Godot itself contains software written by `third parties `_, which is compatible " "with, but not covered by Godot's MIT license." msgstr "" #: ../../docs/about/complying_with_licenses.rst:152 msgid "" "Many of these dependencies are distributed under permissive open source " "licenses which require attribution by explicitly citing their copyright " "statement and license text in the final product's documentation." msgstr "" #: ../../docs/about/complying_with_licenses.rst:156 msgid "" "Given the scope of the Godot project, this is fairly difficult to do " "thoroughly. For the Godot editor, the full documentation of third-party " "copyrights and licenses is provided in the `COPYRIGHT.txt `_ file." msgstr "" #: ../../docs/about/complying_with_licenses.rst:161 msgid "" "A good option for end users to document third-party licenses is to include " "this file in your project's distribution, which you can e.g. rename to " "``GODOT_COPYRIGHT.txt`` to prevent any confusion with your own code and " "assets." msgstr "" #: ../../docs/about/release_policy.rst:6 msgid "Godot release policy" msgstr "" #: ../../docs/about/release_policy.rst:8 msgid "" "Godot's release policy is in constant evolution. The description below " "provides a general idea of what to expect, but what will actually happen " "depends on the choices of core contributors and the needs of the community " "at a given time." msgstr "" #: ../../docs/about/release_policy.rst:14 msgid "Godot versioning" msgstr "" #: ../../docs/about/release_policy.rst:16 msgid "" "Godot loosely follows `Semantic Versioning `__ with a " "``major.minor.patch`` versioning system, albeit with an interpretation of " "each term adapted to the complexity of a game engine:" msgstr "" #: ../../docs/about/release_policy.rst:20 msgid "" "The ``major`` version is incremented when major compatibility breakages " "happen which imply significant porting work to move projects from one major " "version to another." msgstr "" #: ../../docs/about/release_policy.rst:24 msgid "" "For example, porting Godot projects from Godot 3.x to Godot 4.x requires " "running the project through a conversion tool, and then performing a number " "of further adjustments manually for what the tool could not do automatically." msgstr "" #: ../../docs/about/release_policy.rst:28 msgid "" "The ``minor`` version is incremented for feature releases that do not break " "compatibility in a major way. Minor compatibility breakage in very specific " "areas *may* happen in minor versions, but the vast majority of projects " "should not be affected or require significant porting work." msgstr "" #: ../../docs/about/release_policy.rst:33 msgid "" "This is because Godot, as a game engine, covers many areas like rendering, " "physics, and scripting. Fixing bugs or implementing new features in one area " "might sometimes require changing a feature's behavior or modifying a class's " "interface, even if the rest of the engine API remains backwards compatible." msgstr "" #: ../../docs/about/release_policy.rst:40 msgid "" "Upgrading to a new minor version is recommended for all users, but some " "testing is necessary to ensure that your project still behaves as expected." msgstr "" #: ../../docs/about/release_policy.rst:44 msgid "" "The ``patch`` version is incremented for maintenance releases which focus on " "fixing bugs and security issues, implementing new requirements for platform " "support, and backporting safe usability enhancements. Patch releases are " "backwards compatible." msgstr "" #: ../../docs/about/release_policy.rst:49 msgid "" "Patch versions may include minor new features which do not impact the " "existing API, and thus have no risk of impacting existing projects." msgstr "" #: ../../docs/about/release_policy.rst:54 msgid "" "Updating to new patch versions is therefore considered safe and strongly " "recommended to all users of a given stable branch." msgstr "" #: ../../docs/about/release_policy.rst:57 msgid "" "We call ``major.minor`` combinations *stable branches*. Each stable branch " "starts with a ``major.minor`` release (without the ``0`` for ``patch``) and " "is further developed for maintenance releases in a Git branch of the same " "name (for example patch updates for the 4.0 stable branch are developed in " "the ``4.0`` Git branch)." msgstr "" #: ../../docs/about/release_policy.rst:64 msgid "Release support timeline" msgstr "" #: ../../docs/about/release_policy.rst:68 msgid "" "Stable branches are supported *at least* until the next stable branch is " "released and has received its first patch update. In practice, we support " "stable branches on a *best effort* basis for as long as they have active " "users who need maintenance updates." msgstr "" #: ../../docs/about/release_policy.rst:73 msgid "" "Whenever a new major version is released, we make the previous stable branch " "a long-term supported release, and do our best to provide fixes for issues " "encountered by users of that branch who cannot port complex projects to the " "new major version. This was the case for the 2.1 branch, and is the case for " "the 3.x branch." msgstr "" #: ../../docs/about/release_policy.rst:79 msgid "" "In a given minor release series, only the latest patch release receives " "support. If you experience an issue using an older patch release, please " "upgrade to the latest patch release of that series and test again before " "reporting an issue on GitHub." msgstr "" #: ../../docs/about/release_policy.rst:85 msgid "**Version**" msgstr "" #: ../../docs/about/release_policy.rst:85 msgid "**Release date**" msgstr "" #: ../../docs/about/release_policy.rst:85 msgid "**Support level**" msgstr "" #: ../../docs/about/release_policy.rst:87 msgid "Godot 4.6 (`master`)" msgstr "" #: ../../docs/about/release_policy.rst:87 msgid "Q1 2026 (estimate)" msgstr "" #: ../../docs/about/release_policy.rst:87 msgid "" "|unstable| *Development.* Receives new features, usability and performance " "improvements, as well as bug fixes, while under development." msgstr "" #: ../../docs/about/release_policy.rst:133 #, fuzzy msgid "unstable" msgstr "Omogući" #: ../../docs/about/release_policy.rst:90 msgid "Godot 4.5" msgstr "" #: ../../docs/about/release_policy.rst:90 msgid "September 2025" msgstr "" #: ../../docs/about/release_policy.rst:90 #: ../../docs/about/release_policy.rst:106 msgid "" "|supported| Receives fixes for bugs and security issues, as well as patches " "that enable platform support." msgstr "" #: ../../docs/about/release_policy.rst:130 msgid "supported" msgstr "" #: ../../docs/about/release_policy.rst:93 msgid "Godot 4.4" msgstr "" #: ../../docs/about/release_policy.rst:93 msgid "March 2025" msgstr "" #: ../../docs/about/release_policy.rst:93 msgid "|partial| Receives fixes for security and platform support issues only." msgstr "" #: ../../docs/about/release_policy.rst:131 msgid "partial" msgstr "" #: ../../docs/about/release_policy.rst:95 msgid "Godot 4.3" msgstr "" #: ../../docs/about/release_policy.rst:95 msgid "August 2024" msgstr "" #: ../../docs/about/release_policy.rst:95 msgid "|eol| No longer supported (last update: 4.3)." msgstr "" #: ../../docs/about/release_policy.rst:132 msgid "eol" msgstr "" #: ../../docs/about/release_policy.rst:97 msgid "Godot 4.2" msgstr "" #: ../../docs/about/release_policy.rst:97 msgid "November 2023" msgstr "" #: ../../docs/about/release_policy.rst:97 msgid "|eol| No longer supported (last update: 4.2.2)." msgstr "" #: ../../docs/about/release_policy.rst:99 msgid "Godot 4.1" msgstr "" #: ../../docs/about/release_policy.rst:99 msgid "July 2023" msgstr "" #: ../../docs/about/release_policy.rst:99 msgid "|eol| No longer supported (last update: 4.1.4)." msgstr "" #: ../../docs/about/release_policy.rst:101 msgid "Godot 4.0" msgstr "" #: ../../docs/about/release_policy.rst:101 msgid "March 2023" msgstr "" #: ../../docs/about/release_policy.rst:101 msgid "|eol| No longer supported (last update: 4.0.4)." msgstr "" #: ../../docs/about/release_policy.rst:103 msgid "Godot 3.7 (`3.x`)" msgstr "" #: ../../docs/about/release_policy.rst:103 msgid "No ETA for now" msgstr "" #: ../../docs/about/release_policy.rst:103 msgid "" "|supported| *Beta.* Receives new features, usability and performance " "improvements, as well as bug fixes, while under development." msgstr "" #: ../../docs/about/release_policy.rst:106 msgid "Godot 3.6" msgstr "" #: ../../docs/about/release_policy.rst:106 msgid "September 2024" msgstr "" #: ../../docs/about/release_policy.rst:109 msgid "Godot 3.5" msgstr "" #: ../../docs/about/release_policy.rst:109 msgid "August 2022" msgstr "" #: ../../docs/about/release_policy.rst:109 msgid "|eol| No longer supported (last update: 3.5.3)." msgstr "" #: ../../docs/about/release_policy.rst:111 msgid "Godot 3.4" msgstr "" #: ../../docs/about/release_policy.rst:111 msgid "November 2021" msgstr "" #: ../../docs/about/release_policy.rst:111 msgid "|eol| No longer supported (last update: 3.4.5)." msgstr "" #: ../../docs/about/release_policy.rst:113 msgid "Godot 3.3" msgstr "" #: ../../docs/about/release_policy.rst:113 msgid "April 2021" msgstr "" #: ../../docs/about/release_policy.rst:113 msgid "|eol| No longer supported (last update: 3.3.4)." msgstr "" #: ../../docs/about/release_policy.rst:115 msgid "Godot 3.2" msgstr "" #: ../../docs/about/release_policy.rst:115 msgid "January 2020" msgstr "" #: ../../docs/about/release_policy.rst:115 msgid "|eol| No longer supported (last update: 3.2.3)." msgstr "" #: ../../docs/about/release_policy.rst:117 msgid "Godot 3.1" msgstr "" #: ../../docs/about/release_policy.rst:117 msgid "March 2019" msgstr "" #: ../../docs/about/release_policy.rst:117 msgid "|eol| No longer supported (last update: 3.1.2)." msgstr "" #: ../../docs/about/release_policy.rst:119 msgid "Godot 3.0" msgstr "" #: ../../docs/about/release_policy.rst:119 msgid "January 2018" msgstr "" #: ../../docs/about/release_policy.rst:119 msgid "|eol| No longer supported (last update: 3.0.6)." msgstr "" #: ../../docs/about/release_policy.rst:121 msgid "Godot 2.1" msgstr "" #: ../../docs/about/release_policy.rst:121 msgid "July 2016" msgstr "" #: ../../docs/about/release_policy.rst:121 msgid "|eol| No longer supported (last update: 2.1.6)." msgstr "" #: ../../docs/about/release_policy.rst:123 msgid "Godot 2.0" msgstr "" #: ../../docs/about/release_policy.rst:123 msgid "February 2016" msgstr "" #: ../../docs/about/release_policy.rst:123 msgid "|eol| No longer supported (last update: 2.0.4.1)." msgstr "" #: ../../docs/about/release_policy.rst:125 msgid "Godot 1.1" msgstr "" #: ../../docs/about/release_policy.rst:125 msgid "May 2015" msgstr "" #: ../../docs/about/release_policy.rst:125 #: ../../docs/about/release_policy.rst:127 msgid "|eol| No longer supported." msgstr "" #: ../../docs/about/release_policy.rst:127 msgid "Godot 1.0" msgstr "" #: ../../docs/about/release_policy.rst:127 msgid "December 2014" msgstr "" #: ../../docs/about/release_policy.rst:135 msgid "" "**Legend:** |supported| Full support – |partial| Partial support – |eol| No " "support (end of life) – |unstable| Development version" msgstr "" #: ../../docs/about/release_policy.rst:141 msgid "" "Pre-release Godot versions aren't intended to be used in production and are " "provided for testing purposes only." msgstr "" #: ../../docs/about/release_policy.rst:146 msgid "" "See :ref:`doc_upgrading_to_godot_4` for instructions on migrating a project " "from Godot 3.x to 4.x." msgstr "" #: ../../docs/about/release_policy.rst:152 msgid "Which version should I use for a new project?" msgstr "" #: ../../docs/about/release_policy.rst:154 msgid "" "We recommend using Godot 4.x for new projects, as the Godot 4.x series will " "be supported long after 3.x stops receiving updates in the future. One " "caveat is that a lot of third-party documentation hasn't been updated for " "Godot 4.x yet. If you have to follow a tutorial designed for Godot 3.x, we " "recommend keeping :ref:`doc_upgrading_to_godot_4` open in a separate tab to " "check which methods have been renamed (if you get a script error while " "trying to use a specific node or method that was renamed in Godot 4.x)." msgstr "" #: ../../docs/about/release_policy.rst:162 msgid "" "If your project requires a feature that is missing in 4.x (such as GLES2/" "WebGL 1.0), you should use Godot 3.x for a new project instead." msgstr "" #: ../../docs/about/release_policy.rst:168 msgid "Should I upgrade my project to use new engine versions?" msgstr "" #: ../../docs/about/release_policy.rst:172 msgid "" "Upgrading software while working on a project is inherently risky, so " "consider whether it's a good idea for your project before attempting an " "upgrade. Also, make backups of your project or use version control to " "prevent losing data in case the upgrade goes wrong." msgstr "" #: ../../docs/about/release_policy.rst:177 msgid "" "That said, we do our best to keep minor and especially patch releases " "compatible with existing projects." msgstr "" #: ../../docs/about/release_policy.rst:180 msgid "" "The general recommendation is to upgrade your project to follow new *patch* " "releases, such as upgrading from 4.0.2 to 4.0.3. This ensures you get bug " "fixes, security updates and platform support updates (which is especially " "important for mobile platforms). You also get continued support, as only the " "last patch release receives support on official community platforms." msgstr "" #: ../../docs/about/release_policy.rst:186 msgid "" "For *minor* releases, you should determine whether it's a good idea to " "upgrade on a case-by-case basis. We've made a lot of effort in making the " "upgrade process as seamless as possible, but some breaking changes may be " "present in minor releases, along with a greater risk of regressions. Some " "fixes included in minor releases may also change a class' expected behavior " "as required to fix some bugs. This is especially the case in classes marked " "as *experimental* in the documentation." msgstr "" #: ../../docs/about/release_policy.rst:194 msgid "" "*Major* releases bring a lot of new functionality, but they also remove " "previously existing functionality and may raise hardware requirements. They " "also require much more work to upgrade to compared to minor releases. As a " "result, we recommend sticking with the major release you've started your " "project with if you are happy with how your project currently works. For " "example, if your project was started with 3.5, we recommend upgrading to " "3.5.2 and possibly 3.6 in the future, but not to 4.0+, unless your project " "really needs the new features that come with 4.0+." msgstr "" #: ../../docs/about/release_policy.rst:206 msgid "When is the next release out?" msgstr "" #: ../../docs/about/release_policy.rst:210 msgid "" "While Godot contributors aren't working under any deadlines, we strive to " "publish minor releases relatively frequently." msgstr "" #: ../../docs/about/release_policy.rst:213 msgid "" "In particular, after the very long release cycle for 4.0, we are pivoting to " "a faster-paced development workflow, 4.1 released 4 months after 4.0, and " "4.2 released 4 months after 4.1." msgstr "" #: ../../docs/about/release_policy.rst:217 msgid "" "Frequent minor releases will enable us to ship new features faster (possibly " "as experimental), get user feedback quickly, and iterate to improve those " "features and their usability. Likewise, the general user experience will be " "improved more steadily with a faster path to the end users." msgstr "" #: ../../docs/about/release_policy.rst:222 msgid "" "Maintenance (patch) releases are released as needed with potentially very " "short development cycles, to provide users of the current stable branch with " "the latest bug fixes for their production needs." msgstr "" #: ../../docs/about/release_policy.rst:226 msgid "" "There is currently no planned release date for the next 3.x minor version, " "3.7. The current stable release, 3.6, may be the last stable branch of Godot " "3.x. Godot 3.x is supported on a best-effort basis, as long as contributors " "continue to maintain it." msgstr "" #: ../../docs/about/release_policy.rst:232 msgid "What are the criteria for compatibility across engine versions?" msgstr "" #: ../../docs/about/release_policy.rst:236 msgid "" "This section is intended to be used by contributors to determine which " "changes are safe for a given release. The list is not exhaustive; it only " "outlines the most common situations encountered during Godot's development." msgstr "" #: ../../docs/about/release_policy.rst:240 msgid "The following changes are acceptable in patch releases:" msgstr "" #: ../../docs/about/release_policy.rst:242 msgid "" "Fixing a bug in a way that has no major negative impact on most projects, " "such as a visual or physics bug. Godot's physics engine is not " "deterministic, so physics bug fixes are not considered to break " "compatibility. If fixing a bug has a negative impact that could impact a lot " "of projects, it should be made optional (e.g. using a project setting or " "separate method)." msgstr "" #: ../../docs/about/release_policy.rst:247 msgid "Adding a new optional parameter to a method." msgstr "" #: ../../docs/about/release_policy.rst:248 msgid "Small-scale editor usability tweaks." msgstr "" #: ../../docs/about/release_policy.rst:250 msgid "" "Note that we tend to be more conservative with the fixes we allow in each " "subsequent patch release. For instance, 4.0.1 may receive more impactful " "fixes than 4.0.4 would." msgstr "" #: ../../docs/about/release_policy.rst:254 msgid "" "The following changes are acceptable in minor releases, but not patch " "releases:" msgstr "" #: ../../docs/about/release_policy.rst:256 msgid "Significant new features." msgstr "" #: ../../docs/about/release_policy.rst:257 msgid "" "Renaming a method parameter. In C#, method parameters can be passed by name " "(but not in GDScript). As a result, this can break some projects that use C#." msgstr "" #: ../../docs/about/release_policy.rst:259 msgid "" "Deprecating a method, member variable, or class. This is done by adding a " "deprecated flag to its class reference, which will show up in the editor. " "When a method is marked as deprecated, it's slated to be removed in the next " "*major* release." msgstr "" #: ../../docs/about/release_policy.rst:263 msgid "Changes that affect the default project theme's visuals." msgstr "" #: ../../docs/about/release_policy.rst:264 msgid "" "Bug fixes which significantly change the behavior or the output, with the " "aim to meet user expectations better. In comparison, in patch releases, we " "may favor keeping a buggy behavior so we don't break existing projects which " "likely already rely on the bug or use a workaround." msgstr "" #: ../../docs/about/release_policy.rst:268 msgid "Performance optimizations that result in visual changes." msgstr "" #: ../../docs/about/release_policy.rst:270 msgid "" "The following changes are considered **compatibility-breaking** and can only " "be performed in a new major release:" msgstr "" #: ../../docs/about/release_policy.rst:273 msgid "Renaming or removing a method, member variable, or class." msgstr "" #: ../../docs/about/release_policy.rst:274 msgid "" "Modifying a node's inheritance tree by making it inherit from a different " "class." msgstr "" #: ../../docs/about/release_policy.rst:275 msgid "" "Changing the default value of a project setting value in a way that affects " "existing projects. To only affect new projects, the project manager should " "write a modified ``project.godot`` instead." msgstr "" #: ../../docs/about/release_policy.rst:279 msgid "" "Since Godot 5.0 hasn't been branched off yet, we currently discourage making " "compatibility-breaking changes of this kind." msgstr "" #: ../../docs/about/release_policy.rst:284 msgid "" "When modifying a method's signature in any fashion (including adding an " "optional parameter), a GDExtension compatibility method must be created. " "This ensures that existing GDExtensions continue to work across patch and " "minor releases, so that users don't have to recompile them. " "See :ref:`doc_handling_compatibility_breakages` for more information." msgstr "" #: ../../docs/about/docs_changelog.rst:6 msgid "Documentation changelog" msgstr "" #: ../../docs/about/docs_changelog.rst:8 msgid "" "The documentation is continually being improved. New releases include new " "pages, fixes and updates to existing pages, and many updates to " "the :ref:`class reference `. Below is a list of new " "pages added since version 3.0." msgstr "" #: ../../docs/about/docs_changelog.rst:15 msgid "" "This document only contains new pages, so not all changes are reflected. " "Many pages have been substantially updated but are not reflected in this " "document." msgstr "" #: ../../docs/about/docs_changelog.rst:19 msgid "New pages since version 4.4" msgstr "" #: ../../docs/about/docs_changelog.rst:24 #, fuzzy msgid ":ref:`doc_engine_compilation_configuration_editor`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:27 #: ../../docs/about/docs_changelog.rst:114 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:25 #: ../../docs/engine_details/development/compiling/compiling_for_web.rst:81 msgid "GDExtension" msgstr "" #: ../../docs/about/docs_changelog.rst:29 #, fuzzy msgid ":ref:`doc_gdextension_c_example`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:32 #: ../../docs/about/docs_changelog.rst:66 #: ../../docs/about/docs_changelog.rst:120 #: ../../docs/about/docs_changelog.rst:154 #: ../../docs/about/docs_changelog.rst:178 #: ../../docs/about/docs_changelog.rst:226 msgid "Migrating" msgstr "" #: ../../docs/about/docs_changelog.rst:34 #, fuzzy msgid ":ref:`doc_upgrading_to_godot_4.5`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:40 #, fuzzy msgid ":ref:`doc_logging`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:43 msgid "New pages since version 4.3" msgstr "" #: ../../docs/about/docs_changelog.rst:46 #: ../../docs/about/docs_changelog.rst:104 #: ../../docs/about/docs_changelog.rst:191 #: ../../docs/about/docs_changelog.rst:376 #: ../../docs/about/docs_changelog.rst:481 ../../docs/tutorials/2d/index.rst:13 msgid "2D" msgstr "" #: ../../docs/about/docs_changelog.rst:48 #, fuzzy msgid ":ref:`doc_introduction_to_2d`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:51 #: ../../docs/about/docs_changelog.rst:196 #: ../../docs/about/docs_changelog.rst:264 #: ../../docs/about/docs_changelog.rst:290 #: ../../docs/about/docs_changelog.rst:487 ../../docs/tutorials/3d/index.rst:4 #: ../../docs/tutorials/performance/index.rst:75 msgid "3D" msgstr "" #: ../../docs/about/docs_changelog.rst:53 #, fuzzy msgid ":ref:`doc_spring_arm`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:56 #: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:61 #: ../../docs/tutorials/scripting/debug/index.rst:4 msgid "Debug" msgstr "" #: ../../docs/about/docs_changelog.rst:58 #, fuzzy msgid ":ref:`doc_output_panel`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:63 msgid ":ref:`doc_using_the_xr_editor`" msgstr "" #: ../../docs/about/docs_changelog.rst:68 #, fuzzy msgid ":ref:`doc_upgrading_to_godot_4.4`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:71 #: ../../docs/tutorials/3d/global_illumination/introduction_to_global_illumination.rst:115 #: ../../docs/tutorials/performance/index.rst:6 #: ../../docs/tutorials/ui/bbcode_in_richtextlabel.rst:165 msgid "Performance" msgstr "" #: ../../docs/about/docs_changelog.rst:73 #, fuzzy msgid ":ref:`doc_pipeline_compilations`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:76 #: ../../docs/about/docs_changelog.rst:183 #: ../../docs/about/docs_changelog.rst:231 #: ../../docs/about/docs_changelog.rst:343 #: ../../docs/about/docs_changelog.rst:494 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:104 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:73 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:94 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.5.rst:276 #: ../../docs/tutorials/2d/using_tilemaps.rst:70 #: ../../docs/tutorials/performance/cpu_optimization.rst:246 #: ../../docs/tutorials/performance/thread_safe_apis.rst:104 #: ../../docs/tutorials/physics/index.rst:6 msgid "Physics" msgstr "" #: ../../docs/about/docs_changelog.rst:78 #, fuzzy msgid ":ref:`doc_physics_interpolation`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:79 msgid ":ref:`doc_physics_interpolation_quick_start_guide`" msgstr "" #: ../../docs/about/docs_changelog.rst:80 msgid ":ref:`doc_physics_interpolation_introduction`" msgstr "" #: ../../docs/about/docs_changelog.rst:81 msgid ":ref:`doc_using_physics_interpolation`" msgstr "" #: ../../docs/about/docs_changelog.rst:82 msgid ":ref:`doc_advanced_physics_interpolation`" msgstr "" #: ../../docs/about/docs_changelog.rst:83 msgid ":ref:`doc_2d_and_3d_physics_interpolation`" msgstr "" #: ../../docs/about/docs_changelog.rst:88 #, fuzzy msgid ":ref:`doc_renderers`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:93 #, fuzzy msgid ":ref:`doc_shader_functions`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:96 msgid "New pages since version 4.2" msgstr "" #: ../../docs/about/docs_changelog.rst:101 msgid ":ref:`doc_system_requirements`" msgstr "" #: ../../docs/about/docs_changelog.rst:106 #, fuzzy msgid ":ref:`doc_2d_parallax`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:109 msgid "Contributing" msgstr "Vaš doprinos" #: ../../docs/about/docs_changelog.rst:111 #, fuzzy msgid ":ref:`doc_handling_compatibility_breakages`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:116 msgid ":ref:`doc_gdextension_file`" msgstr "" #: ../../docs/about/docs_changelog.rst:117 msgid ":ref:`doc_godot_cpp_docs_system`" msgstr "" #: ../../docs/about/docs_changelog.rst:122 msgid ":ref:`doc_upgrading_to_godot_4.3`" msgstr "" #: ../../docs/about/docs_changelog.rst:127 msgid ":ref:`doc_compositor`" msgstr "" #: ../../docs/about/docs_changelog.rst:130 #: ../../docs/about/docs_changelog.rst:249 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.2.rst:216 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:198 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.5.rst:146 #: ../../docs/tutorials/rendering/renderers.rst:154 #: ../../docs/tutorials/xr/index.rst:4 msgid "XR" msgstr "" #: ../../docs/about/docs_changelog.rst:132 msgid ":ref:`doc_a_better_xr_start_script`" msgstr "" #: ../../docs/about/docs_changelog.rst:133 msgid ":ref:`doc_openxr_passthrough`" msgstr "" #: ../../docs/about/docs_changelog.rst:134 msgid ":ref:`doc_xr_next_steps`" msgstr "" #: ../../docs/about/docs_changelog.rst:135 msgid ":ref:`doc_openxr_settings`" msgstr "" #: ../../docs/about/docs_changelog.rst:136 #, fuzzy msgid ":ref:`doc_openxr_composition_layers`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:137 #, fuzzy msgid ":ref:`doc_openxr_body_tracking`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:141 msgid "New pages since version 4.1" msgstr "" #: ../../docs/about/docs_changelog.rst:144 #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:22 #: ../../docs/tutorials/performance/cpu_optimization.rst:180 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:49 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:89 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:123 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:253 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:372 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:401 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:510 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:595 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:606 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:624 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:661 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:677 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:692 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:709 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:721 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:729 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:742 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:750 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:763 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:797 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:805 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:813 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:78 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:118 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:216 msgid "C#" msgstr "" #: ../../docs/about/docs_changelog.rst:146 msgid ":ref:`doc_c_sharp_diagnostics`" msgstr "" #: ../../docs/about/docs_changelog.rst:149 #: ../../docs/about/docs_changelog.rst:172 #: ../../docs/about/docs_changelog.rst:221 #: ../../docs/about/docs_changelog.rst:307 msgid "Development" msgstr "Razvoj" #: ../../docs/about/docs_changelog.rst:151 msgid ":ref:`doc_2d_coordinate_systems`" msgstr "" #: ../../docs/about/docs_changelog.rst:156 msgid ":ref:`doc_upgrading_to_godot_4.2`" msgstr "" #: ../../docs/about/docs_changelog.rst:159 msgid "I/O" msgstr "" #: ../../docs/about/docs_changelog.rst:161 msgid ":ref:`doc_runtime_loading_and_saving`" msgstr "" #: ../../docs/about/docs_changelog.rst:164 #: ../../docs/about/docs_changelog.rst:336 #: ../../docs/about/docs_changelog.rst:537 #: ../../docs/tutorials/platform/index.rst:4 msgid "Platform-specific" msgstr "" #: ../../docs/about/docs_changelog.rst:166 #, fuzzy msgid ":ref:`doc_android_library`" msgstr "Animacija" #: ../../docs/about/docs_changelog.rst:169 msgid "New pages since version 4.0" msgstr "" #: ../../docs/about/docs_changelog.rst:174 msgid ":ref:`doc_internal_rendering_architecture`" msgstr "" #: ../../docs/about/docs_changelog.rst:175 msgid ":ref:`doc_using_sanitizers`" msgstr "" #: ../../docs/about/docs_changelog.rst:180 msgid ":ref:`doc_upgrading_to_godot_4.1`" msgstr "" #: ../../docs/about/docs_changelog.rst:185 msgid ":ref:`doc_troubleshooting_physics_issues`" msgstr "" #: ../../docs/about/docs_changelog.rst:188 msgid "New pages since version 3.6" msgstr "" #: ../../docs/about/docs_changelog.rst:193 msgid ":ref:`doc_2d_antialiasing`" msgstr "" #: ../../docs/about/docs_changelog.rst:198 msgid ":ref:`doc_3d_antialiasing`" msgstr "" #: ../../docs/about/docs_changelog.rst:199 msgid ":ref:`doc_faking_global_illumination`" msgstr "" #: ../../docs/about/docs_changelog.rst:200 msgid ":ref:`doc_introduction_to_global_illumination`" msgstr "" #: ../../docs/about/docs_changelog.rst:201 msgid ":ref:`doc_mesh_lod`" msgstr "" #: ../../docs/about/docs_changelog.rst:202 msgid ":ref:`doc_occlusion_culling`" msgstr "" #: ../../docs/about/docs_changelog.rst:203 msgid ":ref:`doc_using_sdfgi`" msgstr "" #: ../../docs/about/docs_changelog.rst:204 msgid ":ref:`doc_using_decals`" msgstr "" #: ../../docs/about/docs_changelog.rst:205 msgid ":ref:`doc_visibility_ranges`" msgstr "" #: ../../docs/about/docs_changelog.rst:206 msgid ":ref:`doc_volumetric_fog`" msgstr "" #: ../../docs/about/docs_changelog.rst:207 msgid ":ref:`doc_variable_rate_shading`" msgstr "" #: ../../docs/about/docs_changelog.rst:208 msgid ":ref:`doc_physical_light_and_camera_units`" msgstr "" #: ../../docs/about/docs_changelog.rst:213 msgid ":ref:`doc_creating_movies`" msgstr "" #: ../../docs/about/docs_changelog.rst:216 #: ../../docs/tutorials/assets_pipeline/index.rst:4 msgid "Assets pipeline" msgstr "" #: ../../docs/about/docs_changelog.rst:218 msgid ":ref:`doc_retargeting_3d_skeletons`" msgstr "" #: ../../docs/about/docs_changelog.rst:223 msgid ":ref:`doc_custom_platform_ports`" msgstr "" #: ../../docs/about/docs_changelog.rst:228 msgid ":ref:`doc_upgrading_to_godot_4`" msgstr "" #: ../../docs/about/docs_changelog.rst:233 msgid ":ref:`doc_large_world_coordinates`" msgstr "" #: ../../docs/about/docs_changelog.rst:238 msgid ":ref:`doc_custom_performance_monitors`" msgstr "" #: ../../docs/about/docs_changelog.rst:239 msgid ":ref:`doc_c_sharp_collections`" msgstr "" #: ../../docs/about/docs_changelog.rst:240 msgid ":ref:`doc_c_sharp_global_classes`" msgstr "" #: ../../docs/about/docs_changelog.rst:241 msgid ":ref:`doc_c_sharp_variant`" msgstr "" #: ../../docs/about/docs_changelog.rst:246 msgid ":ref:`doc_compute_shaders`" msgstr "" #: ../../docs/about/docs_changelog.rst:251 msgid ":ref:`doc_introducing_xr_tools`" msgstr "" #: ../../docs/about/docs_changelog.rst:252 msgid ":ref:`doc_xr_action_map`" msgstr "" #: ../../docs/about/docs_changelog.rst:253 msgid ":ref:`doc_deploying_to_android`" msgstr "" #: ../../docs/about/docs_changelog.rst:256 msgid "New pages since version 3.5" msgstr "" #: ../../docs/about/docs_changelog.rst:258 msgid "None." msgstr "" #: ../../docs/about/docs_changelog.rst:261 msgid "New pages since version 3.4" msgstr "" #: ../../docs/about/docs_changelog.rst:266 msgid ":ref:`doc_3d_text`" msgstr "" #: ../../docs/about/docs_changelog.rst:271 msgid ":ref:`doc_playing_videos`" msgstr "" #: ../../docs/about/docs_changelog.rst:276 msgid ":ref:`doc_managing_editor_features`" msgstr "" #: ../../docs/about/docs_changelog.rst:279 msgid "New pages since version 3.3" msgstr "" #: ../../docs/about/docs_changelog.rst:282 #: ../../docs/getting_started/step_by_step/scripting_languages.rst:59 #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:15 #: ../../docs/tutorials/performance/cpu_optimization.rst:171 #: ../../docs/tutorials/scripting/gdscript/index.rst:6 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:49 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:89 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:123 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:253 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:372 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:401 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:510 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:595 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:606 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:624 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:661 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:677 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:692 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:709 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:721 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:729 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:742 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:750 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:763 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:797 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:805 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:813 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:78 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:118 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:216 #: ../../docs/tutorials/scripting/debug/overview_of_debugging_tools.rst:257 #: ../../docs/engine_details/architecture/scripting_development.rst:7 msgid "GDScript" msgstr "" #: ../../docs/about/docs_changelog.rst:284 msgid ":ref:`doc_gdscript_documentation_comments`" msgstr "" #: ../../docs/about/docs_changelog.rst:287 msgid "New pages since version 3.2" msgstr "" #: ../../docs/about/docs_changelog.rst:292 msgid ":ref:`doc_3d_rendering_limitations`" msgstr "" #: ../../docs/about/docs_changelog.rst:297 msgid ":ref:`doc_troubleshooting`" msgstr "" #: ../../docs/about/docs_changelog.rst:298 msgid ":ref:`doc_list_of_features`" msgstr "" #: ../../docs/about/docs_changelog.rst:299 msgid ":ref:`doc_release_policy`" msgstr "" #: ../../docs/about/docs_changelog.rst:302 #: ../../docs/tutorials/best_practices/index.rst:4 #: ../../docs/tutorials/assets_pipeline/importing_images.rst:551 #: ../../docs/tutorials/assets_pipeline/importing_audio_samples.rst:275 #: ../../docs/tutorials/audio/text_to_speech.rst:94 msgid "Best practices" msgstr "" #: ../../docs/about/docs_changelog.rst:304 msgid ":ref:`doc_version_control_systems`" msgstr "" #: ../../docs/about/docs_changelog.rst:309 msgid ":ref:`doc_common_engine_methods_and_macros_error_macros`" msgstr "" #: ../../docs/about/docs_changelog.rst:310 msgid ":ref:`doc_vulkan_validation_layers`" msgstr "" #: ../../docs/about/docs_changelog.rst:311 msgid ":ref:`doc_gdscript_grammar`" msgstr "" #: ../../docs/about/docs_changelog.rst:312 msgid "Configuring an IDE: :ref:`doc_configuring_an_ide_code_blocks`" msgstr "" #: ../../docs/about/docs_changelog.rst:317 msgid ":ref:`doc_default_key_mapping`" msgstr "" #: ../../docs/about/docs_changelog.rst:318 msgid ":ref:`doc_using_the_web_editor`" msgstr "" #: ../../docs/about/docs_changelog.rst:321 #: ../../docs/tutorials/export/index.rst:6 msgid "Export" msgstr "Izvoz" #: ../../docs/about/docs_changelog.rst:323 msgid ":ref:`doc_exporting_for_dedicated_servers`" msgstr "" #: ../../docs/about/docs_changelog.rst:328 msgid ":ref:`doc_controllers_gamepads_joysticks`" msgstr "" #: ../../docs/about/docs_changelog.rst:331 #: ../../docs/about/docs_changelog.rst:387 #: ../../docs/tutorials/math/index.rst:4 msgid "Math" msgstr "" #: ../../docs/about/docs_changelog.rst:333 msgid ":ref:`doc_random_number_generation`" msgstr "" #: ../../docs/about/docs_changelog.rst:338 msgid ":ref:`doc_plugins_for_ios`" msgstr "" #: ../../docs/about/docs_changelog.rst:339 msgid ":ref:`doc_ios_plugin`" msgstr "" #: ../../docs/about/docs_changelog.rst:340 msgid ":ref:`doc_html5_shell_classref`" msgstr "" #: ../../docs/about/docs_changelog.rst:345 msgid ":ref:`doc_collision_shapes_2d`" msgstr "" #: ../../docs/about/docs_changelog.rst:346 msgid ":ref:`doc_collision_shapes_3d`" msgstr "" #: ../../docs/about/docs_changelog.rst:351 msgid ":ref:`doc_shaders_style_guide`" msgstr "" #: ../../docs/about/docs_changelog.rst:356 msgid ":ref:`doc_debugger_panel`" msgstr "" #: ../../docs/about/docs_changelog.rst:357 msgid ":ref:`doc_creating_script_templates`" msgstr "" #: ../../docs/about/docs_changelog.rst:358 msgid ":ref:`doc_evaluating_expressions`" msgstr "" #: ../../docs/about/docs_changelog.rst:359 msgid ":ref:`doc_what_is_gdextension`" msgstr "" #: ../../docs/about/docs_changelog.rst:360 msgid "" ":ref:`doc_gdscript_warning_system` (split " "from :ref:`doc_gdscript_static_typing`)" msgstr "" #: ../../docs/about/docs_changelog.rst:363 msgid "User Interface (UI)" msgstr "" #: ../../docs/about/docs_changelog.rst:365 msgid ":ref:`doc_control_node_gallery`" msgstr "" #: ../../docs/about/docs_changelog.rst:368 msgid "New pages since version 3.1" msgstr "" #: ../../docs/about/docs_changelog.rst:371 #: ../../docs/about/docs_changelog.rst:465 msgid "Project workflow" msgstr "" #: ../../docs/about/docs_changelog.rst:373 msgid ":ref:`doc_android_gradle_build`" msgstr "" #: ../../docs/about/docs_changelog.rst:378 msgid ":ref:`doc_2d_sprite_animation`" msgstr "" #: ../../docs/about/docs_changelog.rst:383 msgid ":ref:`doc_recording_with_microphone`" msgstr "" #: ../../docs/about/docs_changelog.rst:384 msgid ":ref:`doc_sync_with_audio`" msgstr "" #: ../../docs/about/docs_changelog.rst:389 msgid ":ref:`doc_beziers_and_curves`" msgstr "" #: ../../docs/about/docs_changelog.rst:390 msgid ":ref:`doc_interpolation`" msgstr "" #: ../../docs/about/docs_changelog.rst:393 msgid "Inputs" msgstr "" #: ../../docs/about/docs_changelog.rst:395 msgid ":ref:`doc_input_examples`" msgstr "" #: ../../docs/about/docs_changelog.rst:400 msgid ":ref:`doc_localization_using_gettext`" msgstr "" #: ../../docs/about/docs_changelog.rst:403 #: ../../docs/about/docs_changelog.rst:517 #: ../../docs/tutorials/3d/standard_material_3d.rst:255 msgid "Shading" msgstr "" #: ../../docs/about/docs_changelog.rst:405 msgid "Your First Shader Series:" msgstr "" #: ../../docs/about/docs_changelog.rst:406 #: ../../docs/about/docs_changelog.rst:524 msgid ":ref:`doc_introduction_to_shaders`" msgstr "" #: ../../docs/about/docs_changelog.rst:407 msgid ":ref:`doc_your_first_canvasitem_shader`" msgstr "" #: ../../docs/about/docs_changelog.rst:408 msgid ":ref:`doc_your_first_spatial_shader`" msgstr "" #: ../../docs/about/docs_changelog.rst:409 msgid ":ref:`doc_your_second_spatial_shader`" msgstr "" #: ../../docs/about/docs_changelog.rst:410 msgid ":ref:`doc_visual_shaders`" msgstr "" #: ../../docs/about/docs_changelog.rst:415 msgid ":ref:`doc_webrtc`" msgstr "" #: ../../docs/about/docs_changelog.rst:418 #: ../../docs/about/docs_changelog.rst:531 #: ../../docs/tutorials/plugins/index.rst:4 msgid "Plugins" msgstr "" #: ../../docs/about/docs_changelog.rst:420 msgid ":ref:`doc_android_plugin`" msgstr "" #: ../../docs/about/docs_changelog.rst:421 msgid ":ref:`doc_inspector_plugins`" msgstr "" #: ../../docs/about/docs_changelog.rst:422 msgid ":ref:`doc_visual_shader_plugins`" msgstr "" #: ../../docs/about/docs_changelog.rst:425 #: ../../docs/about/docs_changelog.rst:542 msgid "Multi-threading" msgstr "" #: ../../docs/about/docs_changelog.rst:427 msgid ":ref:`doc_using_multiple_threads`" msgstr "" #: ../../docs/about/docs_changelog.rst:430 #: ../../docs/about/docs_changelog.rst:547 msgid "Creating content" msgstr "" #: ../../docs/about/docs_changelog.rst:432 msgid "Procedural geometry series:" msgstr "" #: ../../docs/about/docs_changelog.rst:433 msgid ":ref:`Procedural geometry `" msgstr "" #: ../../docs/about/docs_changelog.rst:434 msgid ":ref:`doc_arraymesh`" msgstr "" #: ../../docs/about/docs_changelog.rst:435 msgid ":ref:`doc_surfacetool`" msgstr "" #: ../../docs/about/docs_changelog.rst:436 msgid ":ref:`doc_meshdatatool`" msgstr "" #: ../../docs/about/docs_changelog.rst:437 msgid ":ref:`doc_immediatemesh`" msgstr "" #: ../../docs/about/docs_changelog.rst:440 ../../docs/tutorials/3d/index.rst:37 msgid "Optimization" msgstr "" #: ../../docs/about/docs_changelog.rst:442 msgid ":ref:`doc_using_multimesh`" msgstr "" #: ../../docs/about/docs_changelog.rst:443 msgid ":ref:`doc_using_servers`" msgstr "" #: ../../docs/about/docs_changelog.rst:446 msgid "Legal" msgstr "" #: ../../docs/about/docs_changelog.rst:448 msgid ":ref:`doc_complying_with_licenses`" msgstr "" #: ../../docs/about/docs_changelog.rst:451 msgid "New pages since version 3.0" msgstr "" #: ../../docs/about/docs_changelog.rst:454 #: ../../docs/getting_started/step_by_step/index.rst:6 #: ../../docs/engine_details/development/compiling/compiling_with_script_encryption_key.rst:26 msgid "Step by step" msgstr "" #: ../../docs/about/docs_changelog.rst:456 msgid ":ref:`doc_signals`" msgstr "" #: ../../docs/about/docs_changelog.rst:457 #: ../../docs/tutorials/editor/command_line_tutorial.rst:443 msgid "Exporting" msgstr "" #: ../../docs/about/docs_changelog.rst:462 msgid ":ref:`doc_gdscript_static_typing`" msgstr "" #: ../../docs/about/docs_changelog.rst:467 msgid "Best Practices:" msgstr "" #: ../../docs/about/docs_changelog.rst:469 msgid ":ref:`doc_introduction_best_practices`" msgstr "" #: ../../docs/about/docs_changelog.rst:470 msgid ":ref:`doc_what_are_godot_classes`" msgstr "" #: ../../docs/about/docs_changelog.rst:471 msgid ":ref:`doc_scene_organization`" msgstr "" #: ../../docs/about/docs_changelog.rst:472 msgid ":ref:`doc_scenes_versus_scripts`" msgstr "" #: ../../docs/about/docs_changelog.rst:473 msgid ":ref:`doc_autoloads_versus_internal_nodes`" msgstr "" #: ../../docs/about/docs_changelog.rst:474 msgid ":ref:`doc_node_alternatives`" msgstr "" #: ../../docs/about/docs_changelog.rst:475 msgid ":ref:`doc_godot_interfaces`" msgstr "" #: ../../docs/about/docs_changelog.rst:476 msgid ":ref:`doc_godot_notifications`" msgstr "" #: ../../docs/about/docs_changelog.rst:477 msgid ":ref:`doc_data_preferences`" msgstr "" #: ../../docs/about/docs_changelog.rst:478 msgid ":ref:`doc_logic_preferences`" msgstr "" #: ../../docs/about/docs_changelog.rst:483 msgid ":ref:`doc_2d_lights_and_shadows`" msgstr "" #: ../../docs/about/docs_changelog.rst:484 msgid ":ref:`doc_2d_meshes`" msgstr "" #: ../../docs/about/docs_changelog.rst:489 msgid ":ref:`doc_csg_tools`" msgstr "" #: ../../docs/about/docs_changelog.rst:490 msgid ":ref:`doc_animating_thousands_of_fish`" msgstr "" #: ../../docs/about/docs_changelog.rst:491 msgid ":ref:`doc_controlling_thousands_of_fish`" msgstr "" #: ../../docs/about/docs_changelog.rst:496 msgid ":ref:`doc_ragdoll_system`" msgstr "" #: ../../docs/about/docs_changelog.rst:497 msgid ":ref:`doc_soft_body`" msgstr "" #: ../../docs/about/docs_changelog.rst:502 msgid ":ref:`doc_2d_skeletons`" msgstr "" #: ../../docs/about/docs_changelog.rst:503 msgid ":ref:`doc_animation_tree`" msgstr "" #: ../../docs/about/docs_changelog.rst:506 msgid "GUI" msgstr "" #: ../../docs/about/docs_changelog.rst:508 msgid ":ref:`doc_gui_containers`" msgstr "" #: ../../docs/about/docs_changelog.rst:511 msgid "Viewports" msgstr "" #: ../../docs/about/docs_changelog.rst:513 msgid ":ref:`doc_viewport_as_texture`" msgstr "" #: ../../docs/about/docs_changelog.rst:514 msgid ":ref:`doc_custom_postprocessing`" msgstr "" #: ../../docs/about/docs_changelog.rst:519 msgid ":ref:`doc_converting_glsl_to_godot_shaders`" msgstr "" #: ../../docs/about/docs_changelog.rst:520 msgid ":ref:`doc_advanced_postprocessing`" msgstr "" #: ../../docs/about/docs_changelog.rst:522 msgid "Shading Reference:" msgstr "" #: ../../docs/about/docs_changelog.rst:525 msgid ":ref:`doc_shading_language`" msgstr "" #: ../../docs/about/docs_changelog.rst:526 msgid ":ref:`doc_spatial_shader`" msgstr "" #: ../../docs/about/docs_changelog.rst:527 msgid ":ref:`doc_canvas_item_shader`" msgstr "" #: ../../docs/about/docs_changelog.rst:528 msgid ":ref:`doc_particle_shader`" msgstr "" #: ../../docs/about/docs_changelog.rst:533 msgid ":ref:`doc_making_main_screen_plugins`" msgstr "" #: ../../docs/about/docs_changelog.rst:534 msgid ":ref:`doc_3d_gizmo_plugins`" msgstr "" #: ../../docs/about/docs_changelog.rst:539 msgid ":ref:`doc_customizing_html5_shell`" msgstr "" #: ../../docs/about/docs_changelog.rst:544 msgid ":ref:`doc_thread_safe_apis`" msgstr "" #: ../../docs/about/docs_changelog.rst:549 msgid ":ref:`doc_making_trees`" msgstr "" #: ../../docs/about/docs_changelog.rst:554 msgid ":ref:`doc_jitter_stutter`" msgstr "" #: ../../docs/about/docs_changelog.rst:555 msgid ":ref:`doc_running_code_in_the_editor`" msgstr "" #: ../../docs/about/docs_changelog.rst:556 msgid ":ref:`doc_change_scenes_manually`" msgstr "" #: ../../docs/about/docs_changelog.rst:559 #: ../../docs/tutorials/scripting/cpp/build_system/cmake.rst:203 #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:116 #: ../../docs/engine_details/development/compiling/compiling_for_linuxbsd.rst:248 #: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:52 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:51 msgid "Compiling" msgstr "" #: ../../docs/about/docs_changelog.rst:561 msgid ":ref:`doc_optimizing_for_size`" msgstr "" #: ../../docs/about/docs_changelog.rst:562 msgid ":ref:`doc_compiling_with_script_encryption_key`" msgstr "" #: ../../docs/about/docs_changelog.rst:565 #: ../../docs/engine_details/development/index.rst:6 msgid "Engine development" msgstr "" #: ../../docs/about/docs_changelog.rst:567 msgid ":ref:`doc_binding_to_external_libraries`" msgstr "" #: ../../docs/getting_started/introduction/index.rst:12 msgid "" "This series will introduce you to Godot and give you an overview of its " "features." msgstr "" #: ../../docs/getting_started/introduction/index.rst:15 msgid "" "In the following pages, you will get answers to questions such as \"Is Godot " "for me?\" or \"What can I do with Godot?\". We will then introduce the " "engine's most essential concepts, run you through the editor's interface, " "and give you tips to make the most of your time learning it." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:4 #, fuzzy msgid "Introduction to Godot" msgstr "Uvod" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:6 msgid "" "This article is here to help you figure out whether Godot might be a good " "fit for you. We will introduce some broad features of the engine to give you " "a feel for what you can achieve with it and answer questions such as \"what " "do I need to know to get started?\"." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:11 msgid "" "This is by no means an exhaustive overview. We will introduce many more " "features in this getting started series." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:15 msgid "What is Godot?" msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:17 msgid "" "Godot is a general-purpose 2D and 3D game engine designed to support all " "sorts of projects. You can use it to create games or applications you can " "then release on desktop or mobile, as well as on the web." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:21 msgid "" "You can also create console games with it, although you either need strong " "programming skills or a developer to port the game for you." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:24 msgid "" "The Godot team can't provide an open source console export due to the " "licensing terms imposed by console manufacturers. Regardless of the engine " "you use, though, releasing games on consoles is always a lot of work. You " "can read more on that here: :ref:`doc_consoles`." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:30 msgid "What can the engine do?" msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:32 msgid "" "Godot was initially developed in-house by an Argentinian game studio. Its " "development started in 2001, and the engine was rewritten and improved " "tremendously since its open source release in 2014." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:36 msgid "" "Some examples of games created with Godot include Cassette Beasts, PVKK, and " "Usagi Shima. As for applications, the open source pixel art drawing program " "Pixelorama is powered by Godot, and so is the voxel RPG creator RPG in a " "Box. You can find many more examples in the `Official Showcase `_." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:45 msgid "Usagi Shima" msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:50 msgid "Cassette Beasts" msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:55 msgid "PVKK: Planetenverteidigungskanonenkommandant" msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:60 msgid "RPG in a Box" msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:63 msgid "How does it work and look?" msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:65 msgid "" "Godot comes with a fully-fledged game editor with integrated tools to answer " "the most common needs. It includes a code editor, an animation editor, a " "tilemap editor, a shader editor, a debugger, a profiler, and more." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:71 msgid "" "The team strives to offer a feature-rich game editor with a consistent user " "experience. While there is always room for improvement, the user interface " "keeps getting refined." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:75 msgid "" "Of course, if you prefer, you can work with external programs. We officially " "support importing 3D scenes designed in Blender_ and maintain plugins to " "code in VSCode_ and Emacs_ for GDScript and C#. We also support Visual " "Studio for C# on Windows." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:83 #: ../../docs/tutorials/scripting/index.rst:-1 msgid "Programming languages" msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:85 msgid "Let's talk about the available programming languages." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:87 msgid "" "You can code your games using :ref:`GDScript `, a Godot-" "specific and tightly integrated language with a lightweight syntax, " "or :ref:`C# `, which is popular in the games industry. These " "are the two main scripting languages we support." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:92 msgid "" "With the :ref:`GDExtension ` technology, you can " "also write gameplay or high-performance algorithms in :ref:`C++ " "` or :ref:`other languages ` without " "recompiling the engine. You can use this technology to integrate third-party " "libraries and other Software Development Kits (SDK) in the engine." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:98 msgid "" "Of course, you can also directly add modules and features to the engine, as " "it's completely free and open source." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:104 msgid "What do I need to know to use Godot?" msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:106 msgid "" "Godot is a feature-packed game engine. With its thousands of features, there " "is a lot to learn. To make the most of it, you need good programming " "foundations. While we try to make the engine accessible, you will benefit a " "lot from knowing how to think like a programmer first." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:111 msgid "" "Godot relies on the object-oriented programming paradigm. Being comfortable " "with concepts such as classes and objects will help you code efficiently in " "it." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:114 msgid "" "If you are entirely new to programming, GDQuest's *Learn GDScript From Zero* " "is a free and open source interactive tutorial for absolute beginners to " "learn to program with Godot's GDScript language. It is available as a " "`desktop application `__ or " "`in the browser `__." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:120 msgid "" "We will provide you with more Godot-specific learning resources " "in :ref:`doc_learning_new_features`." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:123 #: ../../docs/getting_started/introduction/learn_to_code_with_gdscript.rst:33 msgid "" "In the next part, you will get an overview of the engine's essential " "concepts." msgstr "" #: ../../docs/getting_started/introduction/learn_to_code_with_gdscript.rst:4 msgid "Learn to code with GDScript" msgstr "" #: ../../docs/getting_started/introduction/learn_to_code_with_gdscript.rst:6 msgid "" "In Godot, you can write code using the GDScript and C# programming languages." msgstr "" #: ../../docs/getting_started/introduction/learn_to_code_with_gdscript.rst:8 msgid "" "If you are new to programming, we recommend starting with GDScript because " "we designed it to be simpler than all-purpose languages like C#. It will be " "both faster and easier to learn." msgstr "" #: ../../docs/getting_started/introduction/learn_to_code_with_gdscript.rst:12 msgid "" "While GDScript is a language specific to Godot, the techniques you will " "learn with it will apply to other programming languages." msgstr "" #: ../../docs/getting_started/introduction/learn_to_code_with_gdscript.rst:15 msgid "" "Note that it is completely normal for a programmer to learn and use multiple " "languages. Programming languages have more similarities than differences, so " "once you know one, you can learn another much faster." msgstr "" #: ../../docs/getting_started/introduction/learn_to_code_with_gdscript.rst:20 msgid "Learn in your browser with the GDScript app" msgstr "" #: ../../docs/getting_started/introduction/learn_to_code_with_gdscript.rst:22 msgid "" "To learn GDScript, you can use the app Learn GDScript From Zero. It is a " "complete beginner course with interactive practices you can do right in your " "browser." msgstr "" #: ../../docs/getting_started/introduction/learn_to_code_with_gdscript.rst:28 msgid "Click here to access the app: `Learn GDScript From Zero app`_" msgstr "" #: ../../docs/getting_started/introduction/learn_to_code_with_gdscript.rst:30 msgid "" "This app is an open-source project. To report bugs or contribute, head to " "the app's source code repository: `GitHub repository`_." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:8 msgid "Overview of Godot's key concepts" msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:10 msgid "" "Every game engine revolves around abstractions you use to build your " "applications. In Godot, a game is a **tree** of **nodes** that you group " "together into **scenes**. You can then wire these nodes so they can " "communicate using **signals**." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:15 msgid "" "These are the four concepts you will learn here. We're going to look at them " "briefly to give you a sense of how the engine works. In the getting started " "series, you will get to use them in practice." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:22 #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:40 #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:49 msgid "Scenes" msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:24 msgid "" "In Godot, you break down your game in reusable scenes. A scene can be a " "character, a weapon, a menu in the user interface, a single house, an entire " "level, or anything you can think of. Godot's scenes are flexible; they fill " "the role of both prefabs and scenes in some other game engines." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:31 msgid "" "You can also nest scenes. For example, you can put your character in a " "level, and drag and drop a scene as a child of it." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:37 #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:14 #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:33 #: ../../docs/tutorials/scripting/gdscript/gdscript_exports.rst:254 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:306 #: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:160 #: ../../docs/engine_details/file_formats/tscn.rst:47 msgid "Nodes" msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:39 msgid "" "A scene is composed of one or more **nodes**. Nodes are your game's smallest " "building blocks that you arrange into trees. Here's an example of a " "character's nodes." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:45 msgid "" "It is made of a ``CharacterBody2D`` node named \"Player\", a ``Camera2D``, a " "``Sprite2D``, and a ``CollisionShape2D``." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:48 msgid "" "The node names end with \"2D\" because this is a 2D scene. Their 3D " "counterparts have names that end with \"3D\". Be aware that \"Spatial\" " "Nodes are now called \"Node3D\" starting with Godot 4." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:52 msgid "" "Notice how nodes and scenes look the same in the editor. When you save a " "tree of nodes as a scene, it then shows as a single node, with its internal " "structure hidden in the editor." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:56 msgid "" "Godot provides an extensive library of base node types you can combine and " "extend to build more powerful ones. 2D, 3D, or user interface, you will do " "most things with these nodes." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:63 #: ../../docs/engine_details/file_formats/tscn.rst:99 msgid "The scene tree" msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:65 msgid "" "All your game's scenes come together in the **scene tree**, literally a tree " "of scenes. And as scenes are trees of nodes, the scene tree also is a tree " "of nodes. But it's easier to think of your game in terms of scenes as they " "can represent characters, weapons, doors, or your user interface." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:75 #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:2660 #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:659 #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:724 #: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:545 #: ../../docs/tutorials/scripting/how_to_read_the_godot_api.rst:103 #: ../../docs/engine_details/architecture/object_class.rst:220 msgid "Signals" msgstr "Signali" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:77 msgid "" "Nodes emit signals when some event occurs. This feature allows you to make " "nodes communicate without hard-wiring them in code. It gives you a lot of " "flexibility in how you structure your scenes." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:83 msgid "" "Signals are Godot's version of the *observer* pattern. You can read more " "about it here: https://gameprogrammingpatterns.com/observer.html" msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:87 msgid "" "For example, buttons emit a signal when pressed. You can connect a piece of " "code to this signal which will run in reaction to this event, like starting " "the game or opening a menu." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:91 msgid "" "Other built-in signals can tell you when two objects collided, when a " "character or monster entered a given area, and much more. You can also " "define new signals tailored to your game." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:96 #: ../../docs/getting_started/step_by_step/instancing.rst:232 #: ../../docs/getting_started/step_by_step/scripting_languages.rst:156 #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:199 #: ../../docs/getting_started/step_by_step/signals.rst:549 #: ../../docs/tutorials/2d/2d_sprite_animation.rst:279 #: ../../docs/tutorials/2d/2d_movement.rst:312 #: ../../docs/tutorials/3d/global_illumination/introduction_to_global_illumination.rst:328 #: ../../docs/tutorials/export/exporting_pcks.rst:171 #: ../../docs/tutorials/scripting/gdscript/static_typing.rst:671 msgid "Summary" msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:98 msgid "" "Nodes, scenes, the scene tree, and signals are four core concepts in Godot " "that you will manipulate all the time." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:101 msgid "" "Nodes are your game's smallest building blocks. You combine them to create " "scenes that you then combine and nest into the scene tree. You can then use " "signals to make nodes react to events in other nodes or different scene tree " "branches." msgstr "" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:105 msgid "" "After this short breakdown, you probably have many questions. Bear with us " "as you will get many answers throughout the getting started series." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:10 msgid "First look at Godot's interface" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:12 msgid "" "This page will give you a brief overview of Godot's interface. We're going " "to look at the different main screens and docks to help you situate yourself." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:15 msgid "" "For a comprehensive breakdown of the editor's interface and how to use it, " "see the :ref:`Editor manual `." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:19 msgid "The Project Manager" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:21 msgid "" "When you launch Godot, the first window you see is the Project Manager. In " "the default tab **Projects**, you can manage existing projects, import or " "create new ones, and more." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:27 msgid "" "At the top of the window, there is another tab named **Asset Library**. The " "first time you go to this tab you'll see a \"Go Online\" button. For privacy " "reasons, the Godot project manager does not access the internet by default. " "To change this click the \"Go Online\" button. You can change this option " "later in the settings." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:32 msgid "" "Once your network mode is set to \"online\", you can search for demo " "projects in the open source asset library, which includes many projects " "developed by the community:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:37 msgid "" "The Project Manager's settings can be opened using the **Settings** menu:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:41 msgid "" "From here, you can change the editor's language (default is the system " "language), interface theme, display scale, network mode, and also the " "directory naming convention." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:44 msgid "" "To learn the Project Manager's ins and outs, read :ref:`doc_project_manager`." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:49 msgid "First look at Godot's editor" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:51 msgid "" "When you open a new or an existing project, the editor's interface appears. " "Let's look at its main areas:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:56 msgid "" "By default, along the window's top edge, it features **main menu** on the " "left, **workspace** switching buttons in the center (active workspace is " "highlighted), and **playtest** buttons and the **Movie Maker Mode** toggle " "on the right:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:62 msgid "" "Just below the workspace buttons, the opened :ref:`scenes " "` as tabs are seen. The plus (+) button " "right next to the tabs will add a new scene to the project. With the button " "on the far right, distraction-free mode can be toggled, which maximizes or " "restores the **viewport**'s size by hiding **docks** in the interface:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:69 msgid "" "In the center, below the scene selector is the **viewport** with its " "**toolbar** at the top, where you'll find different tools to move, scale, or " "lock the scene's nodes (currently the 3D workspace is active):" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:74 msgid "" "This toolbar changes based on the context and selected node. Here is the 2D " "toolbar:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:78 msgid "Below is the 3D one:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:82 msgid "" "To learn more on workspaces, " "read :ref:`doc_intro_to_the_editor_interface_five_screens`." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:84 msgid "" "To learn more on the 3D viewport and 3D in general, " "read :ref:`doc_introduction_to_3d`." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:86 msgid "" "On either side of the viewport sit the **docks**. And at the bottom of the " "window lies the **bottom panel**." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:89 msgid "" "Let's look at the docks. The **FileSystem** dock lists your project files, " "including scripts, images, audio samples, and more:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:94 msgid "The **Scene** dock lists the active scene's nodes:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:98 msgid "The **Inspector** allows you to edit the properties of a selected node:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:102 msgid "To read more on inspector, see :ref:`doc_editor_inspector_dock`." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:104 msgid "" "Docks can be customized. Read more " "on :ref:`doc_customizing_editor_moving_docks`." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:106 msgid "" "The **bottom panel**, situated below the viewport, is the host for the debug " "console, the animation editor, the audio mixer, and more. They can take " "precious space, that's why they're folded by default:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:112 msgid "" "When you click on one, it expands vertically. Below, you can see the " "animation editor opened:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:116 msgid "" "Bottom panels can also be shown or hidden using the shortcuts defined in " "**Editor Settings > Shortcuts**, under the **Bottom Panels** category." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:122 msgid "The five main screens" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:124 msgid "" "There are five main screen buttons centered at the top of the editor: 2D, " "3D, Script, Game and Asset Library." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:127 msgid "" "You'll use the **2D screen** for all types of games. In addition to 2D " "games, the 2D screen is where you'll build your interfaces." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:132 msgid "" "In the **3D screen**, you can work with meshes, lights, and design levels " "for 3D games." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:137 msgid "" "Read :ref:`doc_introduction_to_3d` for more detail about the **3D main " "screen**." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:140 msgid "" "The **Game screen** is where your project will appear when running it from " "the editor. You can go through your project to test it, and pause it and " "adjust it in real time. Note that this is for testing how adjustments would " "work, any changes made here are not saved when the game stops running." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:147 msgid "" "The **Script screen** is a complete code editor with a debugger, rich auto-" "completion, and built-in code reference." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:152 msgid "" "Finally, the **Asset Library** is a library of free and open source add-ons, " "scripts, and assets to use in your projects." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:157 msgid "" "You can learn more about the asset library in :ref:`doc_what_is_assetlib`." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:163 #, fuzzy msgid "Integrated class reference" msgstr "Referenca klase" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:165 msgid "Godot comes with a built-in class reference." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:167 msgid "" "You can search for information about a class, method, property, constant, or " "signal by any one of the following methods:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:170 msgid "" "Pressing :kbd:`F1` (or :kbd:`Opt + Space` on macOS, or :kbd:`Fn + F1` for " "laptops with a :kbd:`Fn` key) anywhere in the editor." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:172 msgid "" "Clicking the \"Search Help\" button in the top-right of the Script main " "screen." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:173 msgid "Clicking on the Help menu and Search Help." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:174 msgid "" ":kbd:`Ctrl + Click` (:kbd:`Cmd + Click` on macOS) on a class name, function " "name, or built-in variable in the script editor." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:179 msgid "" "When you do any of these, a window pops up. Type to search for any item. You " "can also use it to browse available objects and methods." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:184 msgid "" "Double-click on an item to open the corresponding page in the script main " "screen." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:188 msgid "Alternatively," msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:190 msgid "" "Clicking while pressing the :kbd:`Ctrl` key on a class name, function name, " "or built-in variable in the script editor." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:192 msgid "" "Right-clicking on nodes and choosing **Open Documentation** or choosing " "**Lookup Symbol** for elements in script editor will directly open their " "documentation." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:8 msgid "Learning new features" msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:10 msgid "" "Godot is a feature-rich game engine. There is a lot to learn about it. This " "page explains how you can use the online manual, built-in code reference, " "and join online communities to learn new features and techniques." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:15 msgid "Making the most of this manual" msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:17 msgid "" "What you are reading now is the user manual. It documents each of the " "engine's concepts and available features. When learning a new topic, you can " "start by browsing the corresponding section of this website. The left menu " "allows you to explore broad topics while the search bar will help you find " "more specific pages. If a page exists for a given theme, it will often link " "to more related content." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:26 msgid "" "The manual has a companion class reference that explains each Godot class's " "available functions and properties when programming. While the manual covers " "general features, concepts, and how to use the editor, the reference is all " "about using Godot's scripting API (Application Programming Interface). You " "can access it both online and offline. We recommend browsing the reference " "offline, from within the Godot editor. To do so, go to Help -> Search Help " "or press :kbd:`F1`." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:36 msgid "" "To browse it online, head to the manual's :ref:`Class Reference " "` section." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:39 msgid "A class reference's page tells you:" msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:41 msgid "" "Where the class exists in the inheritance hierarchy. You can click the top " "links to jump to parent classes and see the properties and methods a type " "inherits." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:47 msgid "A summary of the class's role and use cases." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:49 msgid "" "An explanation of the class's properties, methods, signals, enums, and " "constants." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:52 msgid "Links to manual pages further detailing the class." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:54 msgid "" "If the manual or class reference is missing or has insufficient information, " "please open an Issue in the official `godot-docs `_ GitHub repository to report it." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:59 msgid "" "You can hold :kbd:`Ctrl` (macOS :kbd:`Cmd`) and then mouseover text like the " "name of a class, property, method, signal, or constant to underline it, " "then :kbd:`Ctrl + Click` (macOS :kbd:`Cmd + Click`) it to jump to it." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:63 msgid "Learning to think like a programmer" msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:65 msgid "" "Teaching programming foundations and how to think like a game developer is " "beyond the scope of Godot's documentation. If you're new to programming, we " "recommend two excellent free resources to get you started:" msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:69 msgid "" "GDQuest's *Learn GDScript From Zero* is a free and open source interactive " "tutorial for absolute beginners to learn to program with Godot's GDScript " "language. It is available as a `desktop application `__ or `in the browser `__." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:75 msgid "" "If you prefer books, check out the free ebook `Automate The Boring Stuff " "With Python `_ by Al Sweigart." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:79 msgid "Learning with the community" msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:81 msgid "" "Godot has a growing community of users. If you're stuck on a problem or need " "help to better understand how to achieve something, you can ask other users " "for help on one of the many `active communities `_." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:86 msgid "" "The best place to ask questions and find already answered ones is the " "official `Godot Forum `_. These responses " "show up in search engine results and get saved, allowing other users to " "benefit from discussions on the platform. Once you have asked a question " "there, you can share its link on other social platforms. Before asking a " "question, be sure to look for existing answers that might solve your problem " "on this website or using your preferred search engine." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:94 msgid "" "Asking questions well and providing details will help others answer you " "faster and better. When asking questions, we recommend including the " "following information:" msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:98 msgid "" "**Describe your goal**. You want to explain what you are trying to achieve " "design-wise. If you are having trouble figuring out how to make a solution " "work, there may be a different, easier solution that accomplishes the same " "goal." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:103 msgid "" "If there is an error involved, **share the exact error message**. You can " "copy the exact error message in the editor's Debugger bottom panel by " "clicking the Copy Error icon. Knowing what it says can help community " "members better identify how you triggered the error." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:108 msgid "" "If there is code involved, **share a code sample**. Other users won't be " "able to help you fix a problem without seeing your code. Share the code as " "text directly. To do so, you can copy and paste a short code snippet in a " "chat box, or use a website like `Pastebin `_ to share " "long files." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:114 msgid "" "**Share a screenshot** of your *Scene* dock along with your written code. " "Most of the code you write affects nodes in your scenes. As a result, you " "should think of those scenes as part of your source code." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:120 msgid "" "Also, please don't take a picture with your phone, the low quality and " "screen reflections can make it hard to understand the image. Your operating " "system should have a built-in tool to take screenshots with the :kbd:`PrtSc` " "(Print Screen) key (macOS: use :kbd:`Cmd + Shift + 3` for a full screen " "shot, `more information here `_)." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:126 msgid "" "Alternatively, you can use a program like `ShareX `_ " "on Windows, or `Flameshot `_ on Windows/macOS/Linux." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:129 msgid "" "Sharing a video of your running game can also be really **useful to " "troubleshoot your game**. You can use programs like `OBS Studio `_ and `Screen to GIF `_ to " "capture your screen." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:134 msgid "" "You can then use a service like `streamable `_ or a " "cloud provider to upload and share your videos for free." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:137 msgid "" "If you're not using the stable version of Godot, please mention the version " "you're using. The answer can be different as available features and the " "interface evolve rapidly." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:141 msgid "" "Following these guidelines will maximize your chances of getting the answer " "you're looking for. They will save time both for you and the persons helping " "you." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:145 #, fuzzy msgid "Community tutorials" msgstr "Zajednica" #: ../../docs/getting_started/introduction/learning_new_features.rst:147 msgid "" "This manual aims to provide a comprehensive reference of Godot's features. " "Aside from the 2D and 3D getting started series, it does not contain " "tutorials to implement specific game genres. If you're looking for a " "tutorial about creating a role-playing game, a platformer, or other, please " "see :ref:`doc_community_tutorials`, which lists content made by the Godot " "community." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:4 msgid "Godot's design philosophy" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:6 msgid "Now that you've gotten your feet wet, let's talk about Godot's design." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:8 msgid "" "**Every game engine is different and fits different needs.** Not only do " "they offer a range of features, but the design of each engine is unique. " "This leads to different workflows and different ways to form your games' " "structures. This all stems from their respective design philosophies." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:13 msgid "" "This page is here to help you understand how Godot works, starting with some " "of its core pillars. It is not a list of available features, nor is it an " "engine comparison. To know if any engine can be a good fit for your project, " "you need to try it out for yourself and understand its design and " "limitations." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:19 msgid "" "Please watch `Godot explained in 7 minutes `_ if you're looking for an overview of the engine's features." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:24 msgid "Object-oriented design and composition" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:26 msgid "" "Godot embraces object-oriented design at its core with its flexible scene " "system and Node hierarchy. It tries to stay away from strict programming " "patterns to offer an intuitive way to structure your game." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:30 msgid "" "For one, Godot lets you **compose or aggregate** scenes. It's like nested " "prefabs: you can create a BlinkingLight scene and a BrokenLantern scene that " "uses the BlinkingLight. Then, create a city filled with BrokenLanterns. " "Change the BlinkingLight's color, save, and all the BrokenLanterns in the " "city will update instantly." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:37 msgid "On top of that, you can **inherit** from any scene." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:39 msgid "" "A Godot scene could be a Weapon, a Character, an Item, a Door, a Level, part " "of a level… anything you'd like. It works like a class in pure code, except " "you're free to design it by using the editor, using only the code, or mixing " "and matching the two." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:44 msgid "" "It's different from prefabs you find in several 3D engines, as you can then " "inherit from and extend those scenes. You may create a Magician that extends " "your Character. Modify the Character in the editor and the Magician will " "update as well. It helps you build your projects so that their structure " "matches the game's design." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:50 #: ../../docs/getting_started/first_2d_game/index.rst:12 #: ../../docs/getting_started/first_3d_game/index.rst:12 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:25 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:22 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:9 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:40 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:22 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:10 #: ../../docs/community/asset_library/using_assetlib.rst:16 #: ../../docs/community/asset_library/submitting_to_assetlib.rst:128 msgid "|image0|" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:174 #: ../../docs/getting_started/first_2d_game/index.rst:80 #: ../../docs/getting_started/first_3d_game/index.rst:74 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:451 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:334 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:346 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:375 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:514 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:616 #: ../../docs/community/asset_library/using_assetlib.rst:186 #: ../../docs/community/asset_library/submitting_to_assetlib.rst:218 msgid "image0" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:52 msgid "" "Also note that Godot offers many different types of objects called nodes, " "each with a specific purpose. Nodes are part of a tree and always inherit " "from their parents up to the Node class. Although the engine does feature " "some nodes like collision shapes that a parent physics body will use, most " "nodes work independently from one another." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:58 msgid "" "In other words, Godot's nodes do not work like components in some other game " "engines." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:61 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:361 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:27 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:19 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:47 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:26 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:17 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:24 #: ../../docs/community/asset_library/using_assetlib.rst:47 msgid "|image1|" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:175 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:452 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:335 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:347 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:376 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:515 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:449 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:617 #: ../../docs/community/asset_library/using_assetlib.rst:187 msgid "image1" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:63 msgid "" "Sprite2D is a Node2D, a CanvasItem and a Node. It has all the properties and " "features of its three parent classes, like transforms or the ability to draw " "custom shapes and render with a custom shader." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:68 msgid "All-inclusive package" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:70 msgid "" "Godot tries to provide its own tools to answer most common needs. It has a " "dedicated scripting workspace, an animation editor, a tilemap editor, a " "shader editor, a debugger, a profiler, the ability to hot-reload locally and " "on remote devices, etc." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:75 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:369 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:31 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:26 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:58 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:34 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:21 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:32 #: ../../docs/community/asset_library/using_assetlib.rst:57 msgid "|image2|" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:176 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:453 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:336 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:348 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:377 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:516 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:450 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:618 #: ../../docs/community/asset_library/using_assetlib.rst:188 msgid "image2" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:77 msgid "" "The goal is to offer a full package to create games and a continuous user " "experience. You can still work with external programs as long as there is an " "import plugin available in Godot for it." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:81 msgid "" "That is also partly why Godot offers its own programming language GDScript " "along with C#. GDScript is designed for the needs of game developers and " "game designers, and is tightly integrated in the engine and the editor." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:86 msgid "" "GDScript lets you write code using an indentation-based syntax, yet it " "detects types and offers a static language's quality of auto-completion. It " "is also optimized for gameplay code with built-in types like Vectors and " "Colors." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:90 msgid "" "Note that with GDExtension, you can write high-performance code using " "compiled languages like C, C++, Rust, D, Haxe, or Swift without recompiling " "the engine." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:93 msgid "" "Note that the 3D workspace doesn't feature as many tools as the 2D " "workspace. You'll need external programs or add-ons to edit terrains, " "animate complex characters, and so on. Godot provides a complete API to " "extend the editor's functionality using game code. See `The Godot editor is " "a Godot game`_ below." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:99 msgid "Open source" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:101 msgid "" "Godot offers a fully open source codebase under the **MIT license**. This " "means that the codebase is free for anyone to download, use, modify, or " "share, as long as its license file is kept intact." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:105 msgid "" "All technologies that ship with Godot, including third-party libraries, must " "be legally compatible with this open source license. Therefore, most parts " "of Godot are developed from the ground up by community contributors." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:109 msgid "" "Anyone can plug in proprietary tools for the needs of their projects — they " "just won't ship with the engine. This may include Google AdMob, or FMOD. Any " "of these can come as third-party plugins instead." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:114 msgid "" "On the other hand, an open codebase means you can **learn from and extend " "the engine** to your heart's content. You can also debug games easily, as " "Godot will print errors with a stack trace, even if they come from the " "engine itself." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:120 msgid "" "This **does not affect the work you do with Godot** in any way: there's no " "strings attached to the engine or anything you make with it." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:124 msgid "Community-driven" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:126 msgid "" "**Godot is made by its community, for the community, and for all game " "creators out there.** It's the needs of the users and open discussions that " "drive the core updates. New features from the core developers often focus on " "what will benefit the most users first." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:131 msgid "" "That said, although a handful of core developers work on it full-time, the " "project has thousands of contributors at the time of writing. Benevolent " "programmers work on features they may need themselves, so you'll see " "improvements in all corners of the engine at the same time in every major " "release." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:138 msgid "The Godot editor is a Godot game" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:140 msgid "" "The Godot editor runs on the game engine. It uses the engine's own UI " "system, it can hot-reload code and scenes when you test your projects, or " "run game code in the editor. This means you can **use the same code** and " "scenes for your games, or **build plugins and extend the editor.**" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:145 msgid "" "This leads to a reliable and flexible UI system, as it powers the editor " "itself. With the ``@tool`` annotation, you can run any game code in the " "editor." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:151 msgid "" "RPG in a Box is a voxel RPG editor made with Godot. It uses Godot's UI tools " "for its node-based programming system and for the rest of the interface." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:155 msgid "" "Put the ``@tool`` annotation at the top of any GDScript file and it will run " "in the editor. This lets you import and export plugins, create plugins like " "custom level editors, or create scripts with the same nodes and API you use " "in your projects." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:162 msgid "" "The editor is fully written in C++ and is statically compiled into the " "binary. This means you can't import it as a typical project that would have " "a ``project.godot`` file." msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:167 msgid "Separate 2D and 3D engines" msgstr "" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:169 msgid "" "Godot offers dedicated 2D and 3D rendering engines. As a result, **the base " "unit for 2D scenes is pixels.** Even though the engines are separate, you " "can render 2D in 3D, 3D in 2D, and overlay 2D sprites and interfaces over " "your 3D world." msgstr "" #: ../../docs/getting_started/step_by_step/index.rst:8 msgid "" "This series builds upon the :ref:`Introduction to Godot ` and will get you started with the editor and the engine. You " "will learn more about nodes and scenes, code your first classes with " "GDScript, use signals to make nodes communicate with one another, and more." msgstr "" #: ../../docs/getting_started/step_by_step/index.rst:13 msgid "" "The following lessons are here to prepare you " "for :ref:`doc_your_first_2d_game`, a step-by-step tutorial where you will " "code a game from scratch. By the end of it, you will have the necessary " "foundations to explore more features in other sections. We also included " "links to pages that cover a given topic in-depth where appropriate." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:7 msgid "Nodes and Scenes" msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:9 msgid "" "In :ref:`doc_key_concepts_overview`, we saw that a Godot game is a tree of " "scenes and that each scene is a tree of nodes. In this lesson, we explain a " "bit more about them. You will also create your first scene." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:16 msgid "" "**Nodes are the fundamental building blocks of your game**. They are like " "the ingredients in a recipe. There are dozens of kinds that can display an " "image, play a sound, represent a camera, and much more." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:22 msgid "All nodes have the following characteristics:" msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:24 msgid "A name." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:25 msgid "Editable properties." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:26 msgid "They receive callbacks to update every frame." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:27 msgid "You can extend them with new properties and functions." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:28 msgid "You can add them to another node as a child." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:30 msgid "" "The last characteristic is important. **Together, nodes form a tree**, which " "is a powerful feature to organize projects. Since different nodes have " "different functions, combining them produces more complex behavior. As we " "saw before, you can build a playable character the camera follows using " "a :ref:`CharacterBody2D ` node, a :ref:`Sprite2D " "` node, a :ref:`Camera2D ` node, and " "a :ref:`CollisionShape2D ` node." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:42 msgid "" "When you organize nodes in a tree, like our character, we call this " "construct a scene. Once saved, scenes work like new node types in the " "editor, where you can add them as a child of an existing node. In that case, " "the instance of the scene appears as a single node with its internals hidden." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:47 msgid "" "Scenes allow you to structure your game's code however you want. You can " "**compose nodes** to create custom and complex node types, like a game " "character that runs and jumps, a life bar, a chest with which you can " "interact, and more." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:53 msgid "" "The Godot editor essentially is a **scene editor**. It has plenty of tools " "for editing 2D and 3D scenes, as well as user interfaces. A Godot project " "can contain as many of these scenes as you need. The engine only requires " "one as your application's **main scene**. This is the scene Godot will first " "load when you or a player runs the game." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:59 msgid "On top of acting like nodes, scenes have the following characteristics:" msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:61 msgid "They always have one root node, like the \"Player\" in our example." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:62 msgid "You can save them to your local drive and load them later." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:63 msgid "" "You can create as many instances of a scene as you'd like. You could have " "five or ten characters in your game, created from your Character scene." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:67 msgid "Creating your first scene" msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:69 msgid "" "Let's create our first scene with a single node. To do so, you will need " "to :ref:`create a new project ` first. " "After opening the project, you should see an empty editor." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:75 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 " "` node, :button:`3D Scene` adds a :ref:`Node3D ` " "node, and :button:`User Interface` adds a :ref:`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 msgid "" "We're going to add a single :ref:`Label ` node to our scene. " "Its function is to draw text on the screen." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:88 msgid "" "Press the :button:`Add Child Node` button or :button:`Other Node` to create " "a root node." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:93 msgid "" "The :ui:`Create New Node` dialog opens, showing the long list of available " "nodes." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:97 msgid "Select the Label node. You can type its name to filter down the list." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:101 msgid "" "Click on the Label node to select it and click the :button:`Create` button " "at the bottom of the window." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:106 msgid "" "A lot happens when you add a scene's first node. The scene changes to the 2D " "workspace because Label is a 2D node type. The Label appears, selected, in " "the top-left corner of the viewport. The node appears in the Scene dock on " "the left, and the node's properties appear in the Inspector dock on the " "right." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:112 msgid "Changing a node's properties" msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:114 msgid "" "The next step is to change the Label's :inspector:`Text` property. Let's " "change it to \"Hello World\"." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:117 msgid "" "Head to the Inspector dock on the right of the viewport. Click inside the " "field below the :inspector:`Text` property and type \"Hello World\"." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:122 msgid "You will see the text draw in the viewport as you type." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:124 msgid "" "You can edit any property listed in the Inspector as we did with the Text. " "For a complete reference of the Inspector dock, " "see :ref:`doc_editor_inspector_dock`." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:128 msgid "" "You can move your Label node in the viewport by selecting the move tool in " "the toolbar." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:133 msgid "" "With the Label selected, click and drag anywhere in the viewport to move it " "to the center of the view delimited by the rectangle." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:139 msgid "Running the scene" msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:141 msgid "" "Everything's ready to run the scene! Press the :button:`Run Current Scene` " "button in the top-right of the screen or press :kbd:`F6` (:kbd:`Cmd + R` on " "macOS)." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:147 msgid "" "A popup invites you to save the scene, which is required to run it. Click " "the :button:`Save` button in the file browser to save it as ``label.tscn``." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:152 msgid "" "The :ui:`Save Scene As` dialog, like other file dialogs in the editor, only " "allows you to save files inside the project. The ``res://`` path at the top " "of the window represents the project's root directory and stands for " "\"resource path\". For more information about file paths in Godot, " "see :ref:`doc_filesystem`." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:158 msgid "" "The application should open in a new window and display the text \"Hello " "World\"." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:162 msgid "" "Close the window or press :kbd:`F8` (:kbd:`Cmd + .` on macOS) to quit the " "running scene." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:165 msgid "Setting the main scene" msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:167 msgid "" "To run our test scene, we used the :button:`Run Current Scene` button. " "Another button next to it, :button:`Run Project`, allows you to set and run " "the project's **main scene**. You can also press :kbd:`F5` (:kbd:`Cmd + B` " "on macOS) to do so." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:173 msgid "" "Running the project's *main scene* is distinct from running the *current " "scene*. If you encounter unexpected behavior, check to ensure you are " "running the correct scene." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:177 msgid "A popup window appears and invites you to select the main scene." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:181 msgid "" "Click the :button:`Select` button, and in the file dialog that appears, " "double click on ``label.tscn``." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:186 msgid "" "The demo should run again. Moving forward, every time you run the project, " "Godot will use this scene as a starting point." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:189 msgid "" "The editor saves the main scene's path in a project.godot file in your " "project's directory. While you can edit this text file directly to change " "project settings, you can also use the :menu:`Project > Project Settings` " "window to do so. For more information, see :ref:`doc_project_settings`." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:194 msgid "" "In the next part, we will discuss another key concept in games and in Godot: " "creating instances of a scene." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:4 #, fuzzy msgid "Creating instances" msgstr "Započinjanje" #: ../../docs/getting_started/step_by_step/instancing.rst:8 msgid "" "This tutorial refers to instancing scenes in the editor. To learn how to " "instance scenes from code, see :ref:`doc_nodes_and_scene_instances`." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:11 msgid "" "Godot's approach to *instancing* described below should not be confused with " "hardware instancing that can be used to render large amounts of similar " "objects quickly. See :ref:`doc_using_multimesh` instead." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:15 msgid "" "In the previous part, we saw that a scene is a collection of nodes organized " "in a tree structure, with a single node as its root. You can split your " "project into any number of scenes. This feature helps you break down and " "organize your game's different components." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:20 msgid "" "You can create as many scenes as you'd like and save them as files with the " "``.tscn`` extension, which stands for \"text scene\". The ``label.tscn`` " "file from the previous lesson was an example. We call those files \"Packed " "Scenes\" as they pack information about your scene's content." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:25 msgid "" "Here's an example of a ball. It's composed of a :ref:`RigidBody2D " "` node as its root named Ball, which allows the ball to " "fall and bounce on walls, a :ref:`Sprite2D ` node, and " "a :ref:`CollisionShape2D `." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:32 msgid "" "Once you have saved a scene, it works as a blueprint: you can reproduce it " "in other scenes as many times as you'd like. Replicating an object from a " "template like this is called **instancing**." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:38 msgid "" "As we mentioned in the previous part, instanced scenes behave like a node: " "the editor hides their content by default. When you instance the Ball, you " "only see the Ball node. Notice also how each duplicate has a unique name." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:42 msgid "" "Every instance of the Ball scene starts with the same structure and " "properties as ``ball.tscn``. However, you can modify each independently, " "such as changing how they bounce, how heavy they are, or any property " "exposed by the source scene." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:48 msgid "In practice" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:50 msgid "" "Let's use instancing in practice to see how it works in Godot. We invite you " "to download the ball's sample project we prepared for you: " "`instancing_starter.zip `_." 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 :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:58 msgid "" "In the Project Manager, click the :button:`Import` button to import the " "project." msgstr "" #: ../../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:67 msgid "Finally, click the :button:`Import` button." msgstr "" #: ../../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: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: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:88 msgid "Double-click the ball scene to instance it." msgstr "" #: ../../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:96 msgid "Click on it and drag it towards the center of the view." msgstr "" #: ../../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: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:108 msgid "You can repeat this process until you have several in the scene." msgstr "" #: ../../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:117 msgid "Editing scenes and instances" msgstr "" #: ../../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: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: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: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: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: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: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: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: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: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:158 msgid "A grey \"revert\" button appears next to the adjusted property." msgstr "" #: ../../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: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: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: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:182 msgid "Scene instances as a design language" msgstr "" #: ../../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: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:193 msgid "For example, you could break down a shooter game like so:" msgstr "" #: ../../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: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: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: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: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: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: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: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:237 msgid "The ability to divide your game into reusable components." msgstr "" #: ../../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:239 msgid "" "A language to think about your game project's structure in a natural way." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:9 msgid "Scripting languages" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:11 msgid "" "This lesson will give you an overview of the available scripting languages " "in Godot. You will learn the pros and cons of each option. In the next part, " "you will write your first script using GDScript." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:15 msgid "" "**Scripts attach to a node and extend its behavior**. This means that " "scripts inherit all functions and properties of the node they attach to." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:18 msgid "" "For example, take a game where a Camera2D node follows a ship. The Camera2D " "node follows its parent by default. Imagine you want the camera to shake " "when the player takes damage. As this feature is not built into Godot, you " "would attach a script to the Camera2D node and code the shake." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:26 msgid "Available scripting languages" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:28 msgid "" "Godot offers **four gameplay programming languages**: GDScript, C#, and, via " "its GDExtension technology, C and C++. There are more community-supported " "languages, but these are the official ones." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:32 msgid "" "You can use multiple languages in a single project. For instance, in a team, " "you could code gameplay logic in GDScript as it's fast to write, and use C# " "or C++ to implement complex algorithms and maximize their performance. Or " "you can write everything in GDScript or C#. It's your call." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:37 msgid "" "We provide this flexibility to answer the needs of different game projects " "and developers." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:41 msgid "Which language should I use?" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:43 msgid "" "If you're a beginner, we recommend to **start with GDScript**. We made this " "language specifically for Godot and the needs of game developers. It has a " "lightweight and straightforward syntax and provides the tightest integration " "with Godot." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:50 msgid "" "For C#, you will need an external code editor like `VSCode `_ or Visual Studio. While C# support is now mature, " "you will find fewer learning resources for it compared to GDScript. That's " "why we recommend C# mainly to users who already have experience with the " "language." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:56 msgid "Let's look at each language's features, as well as its pros and cons." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:61 msgid "" ":ref:`GDScript` is an `object-oriented `_ and `imperative " "`_ programming " "language built for Godot. It's made by and for game developers to save you " "time coding games. Its features include:" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:67 msgid "A simple syntax that leads to short files." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:68 msgid "Blazing fast compilation and loading times." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:69 msgid "" "Tight editor integration, with code completion for nodes, signals, and more " "information from the scene it's attached to." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:71 msgid "" "Built-in vector and transform types, making it efficient for heavy use of " "linear algebra, a must for games." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:73 msgid "Supports multiple threads as efficiently as statically typed languages." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:74 msgid "" "No `garbage collection `_, as this feature eventually gets in " "the way when creating games. The engine counts references and manages the " "memory for you in most cases by default, but you can also control memory if " "you need to." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:79 msgid "" "`Gradual typing `_. Variables " "have dynamic types by default, but you also can use type hints for strong " "type checks." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:83 msgid "" "GDScript looks like Python as you structure your code blocks using " "indentations, but it doesn't work the same way in practice. It's inspired by " "multiple languages, including Squirrel, Lua, and Python." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:89 msgid "Why don't we use Python or Lua directly?" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:91 msgid "" "Years ago, Godot used Python, then Lua. Both languages' integration took a " "lot of work and had severe limitations. For example, threading support was a " "big challenge with Python." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:95 msgid "" "Developing a dedicated language doesn't take us more work and we can tailor " "it to game developers' needs. We're now working on performance optimizations " "and features that would've been difficult to offer with third-party " "languages." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:101 msgid ".NET / C#" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:103 msgid "" "As Microsoft's `C# `_ is a favorite amongst game developers, we " "officially support it. C# is a mature and flexible language with tons of " "libraries written for it. We were able to add support for it thanks to a " "generous donation from Microsoft." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:111 msgid "" "C# offers a good tradeoff between performance and ease of use, although you " "should be aware of its garbage collector." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:114 msgid "" "You must use the .NET edition of the Godot editor to script in C#. You can " "download it on the Godot website's `download `_ page." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:118 msgid "" "Since Godot uses .NET 8, in theory, you can use any third-party .NET library " "or framework in Godot, as well as any Common Language Infrastructure-" "compliant programming language, such as F#, Boo, or ClojureCLR. However, C# " "is the only officially supported .NET option." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:123 msgid "" "GDScript code itself doesn't execute as fast as compiled C# or C++. However, " "most script code calls functions written with fast algorithms in C++ code " "inside the engine. In many cases, writing gameplay logic in GDScript, C#, or " "C++ won't have a significant impact on performance." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:136 msgid "To learn more about C#, head to the :ref:`doc_c_sharp` section." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:139 msgid "C++ via GDExtension" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:141 msgid "" "GDExtension allows you to write game code in C++ without needing to " "recompile Godot." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:146 msgid "" "You can use any version of the language or mix compiler brands and versions " "for the generated shared libraries, thanks to our use of an internal C API " "Bridge." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:149 msgid "" "GDExtension is the best choice for performance. You don't need to use it " "throughout an entire game, as you can write other parts in GDScript or C#." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:152 msgid "" "When working with GDExtension, the available types, functions, and " "properties closely resemble Godot's actual C++ API." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:158 msgid "" "Scripts are files containing code that you attach to a node to extend its " "functionality." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:161 msgid "" "Godot supports four official scripting languages, offering you flexibility " "between performance and ease of use." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:164 msgid "" "You can mix languages, for instance, to implement demanding algorithms with " "C or C++ and write most of the game logic with GDScript or C#." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:19 msgid "Creating your first script" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:21 msgid "" "In this lesson, you will code your first script to make the Godot icon turn " "in circles. As we mentioned :ref:`in the introduction " "`, we assume you have programming " "foundations." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:26 msgid "" "This tutorial is written for GDScript, and the equivalent C# code is " "included in another tab of each codeblock for convenience." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:31 msgid "" "To learn more about GDScript, its keywords, and its syntax, head to " "the :ref:`doc_gdscript` section. To learn more about C#, head to " "the :ref:`doc_c_sharp` section." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:36 msgid "Project setup" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:38 msgid "" "Please :ref:`create a new project ` to " "start with a clean slate. Your project should contain one picture: the Godot " "icon, which we often use for prototyping in the community." 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 :ui:`Scene` dock, click the :button:`Other Node` button." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:49 msgid "" "Type \"Sprite2D\" in the search bar to filter nodes and double-click on " "Sprite2D to create the node." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:54 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 :ui:`Inspector` on the " "right, you can see that the :inspector:`Texture` property says ````. " "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 msgid "" "You can create Sprite2D nodes automatically by dragging and dropping images " "on the viewport." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:70 msgid "" "Then, click and drag the icon in the viewport to center it in the game view." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:75 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 :button:`Attach Script`." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:82 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 :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 msgid "" "C# script names need to match their class name. In this case, you should " "name the file ``MySprite2D.cs``." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:96 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 msgid "" "Every GDScript file is implicitly a class. The ``extends`` keyword defines " "the class this script inherits or extends. In this case, it's ``Sprite2D``, " "meaning our script will get access to all the properties and functions of " "the Sprite2D node, including classes it extends, like ``Node2D``, " "``CanvasItem``, and ``Node``." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:119 msgid "" "In GDScript, if you omit the line with the ``extends`` keyword, your class " "will implicitly extend :ref:`RefCounted `, which Godot " "uses to manage your application's memory." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:123 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 :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 :ui:`Inspector` to see a " "description and its identifier in code." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:136 msgid "Hello, world!" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:138 msgid "" "Our script currently doesn't do anything. Let's make it print the text " "\"Hello, world!\" to the Output bottom panel to get started." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:141 msgid "Add the following code to your script:" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:157 msgid "" "Let's break it down. The ``func`` keyword defines a new function named " "``_init``. This is a special name for our class's constructor. The engine " "calls ``_init()`` on every object or node upon creating it in memory, if you " "define this function." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:162 msgid "" "GDScript is an indent-based language. The tab at the start of the line that " "says ``print()`` is necessary for the code to work. If you omit it or don't " "indent a line correctly, the editor will highlight it in red and display the " "following error message: \"Indented block expected\"." 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 :ui:`Output` bottom panel that expands. It should display \"Hello, world!" "\"." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:173 msgid "" "Delete the ``_init()`` function, so you're only left with the line ``extends " "Sprite2D``." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:177 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." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:194 msgid "" "Member variables sit near the top of the script, after any \"extends\" " "lines, but before functions. Every node instance with this script attached " "to it will have its own copy of the ``speed`` and ``angular_speed`` " "properties." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:199 msgid "" "Angles in Godot work in radians by default, but you have built-in functions " "and properties available if you prefer to calculate angles in degrees " "instead." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:203 msgid "" "To move our icon, we need to update its position and rotation every frame in " "the game loop. We can use the ``_process()`` virtual function of the " "``Node`` class. If you define it in any class that extends the Node class, " "like Sprite2D, Godot will call the function every frame and pass it an " "argument named ``delta``, the time elapsed since the last frame." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:211 msgid "" "Games work by rendering many images per second, each called a frame, and " "they do so in a loop. We measure the rate at which a game produces images in " "Frames Per Second (FPS). Most games aim for 60 FPS, although you might find " "figures like 30 FPS on slower mobile devices or 90 to 240 for virtual " "reality games." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:217 msgid "" "The engine and game developers do their best to update the game world and " "render images at a constant time interval, but there are always small " "variations in frame render times. That's why the engine provides us with " "this delta time value, making our motion independent of our framerate." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:222 msgid "At the bottom of the script, define the function:" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:237 msgid "" "The ``func`` keyword defines a new function. After it, we have to write the " "function's name and arguments it takes in parentheses. A colon ends the " "definition, and the indented blocks that follow are the function's content " "or instructions." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:242 msgid "" "Notice how ``_process()``, like ``_init()``, starts with a leading " "underscore. By convention, Godot's virtual functions, that is to say, built-" "in functions you can override to communicate with the engine, start with an " "underscore." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:247 msgid "" "The line inside the function, ``rotation += angular_speed * delta``, " "increments our sprite's rotation every frame. Here, ``rotation`` is a " "property inherited from the class ``Node2D``, which ``Sprite2D`` extends. It " "controls the rotation of our node and works with radians." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:252 msgid "" "In the code editor, you can :kbd:`Ctrl + Click` (:kbd:`Cmd + Click` on " "macOS) on any built-in property or function like ``position``, ``rotation``, " "or ``_process`` to open the corresponding documentation in a new tab." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:257 msgid "Run the scene to see the Godot icon turn in-place." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:261 msgid "" "In C#, notice how the ``delta`` argument taken by ``_Process()`` is a " "``double``. We therefore need to convert it to ``float`` when we apply it to " "the rotation." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:266 #, fuzzy msgid "Moving forward" msgstr "Idi Naprijed" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:268 msgid "" "Let's now make the node move. Add the following two lines inside of the " "``_process()`` function, ensuring the new lines are indented the same way as " "the ``rotation += angular_speed * delta`` line before them." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:285 msgid "" "As we already saw, the ``var`` keyword defines a new variable. If you put it " "at the top of the script, it defines a property of the class. Inside a " "function, it defines a local variable: it only exists within the function's " "scope." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:289 msgid "" "We define a local variable named ``velocity``, a 2D vector representing both " "a direction and a speed. To make the node move forward, we start from the " "Vector2 class's constant ``Vector2.UP``, a vector pointing up, and rotate it " "by calling the Vector2 method ``rotated()``. This expression, " "``Vector2.UP.rotated(rotation)``, is a vector pointing forward relative to " "our icon. Multiplied by our ``speed`` property, it gives us a velocity we " "can use to move the node forward." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:296 msgid "" "We add ``velocity * delta`` to the node's ``position`` to move it. The " "position itself is of type :ref:`Vector2 `, a built-in type " "in Godot representing a 2D vector." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:300 msgid "Run the scene to see the Godot head run in circles." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:304 msgid "" "Moving a node like that does not take into account colliding with walls or " "the floor. In :ref:`doc_your_first_2d_game`, you will learn another approach " "to moving objects while detecting collisions." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:308 msgid "" "Our node currently moves by itself. In the next " "part, :ref:`doc_scripting_player_input`, we'll use player input to control " "it." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:312 #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:132 #: ../../docs/getting_started/step_by_step/signals.rst:369 msgid "Complete script" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:314 #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:134 msgid "Here is the complete ``sprite_2d.gd`` file for reference." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:8 msgid "Listening to player input" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:10 msgid "" "Building upon the previous lesson, :ref:`doc_scripting_first_script`, let's " "look at another important feature of any game: giving control to the player. " "To add this, we need to modify our ``sprite_2d.gd`` code." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:16 msgid "You have two main tools to process the player's input in Godot:" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:18 msgid "" "The built-in input callbacks, mainly ``_unhandled_input()``. Like " "``_process()``, it's a built-in virtual function that Godot calls every time " "the player presses a key. It's the tool you want to use to react to events " "that don't happen every frame, like pressing :kbd:`Space` to jump. To learn " "more about input callbacks, see :ref:`doc_inputevent`." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:23 msgid "" "The ``Input`` singleton. A singleton is a globally accessible object. Godot " "provides access to several in scripts. It's the right tool to check for " "input every frame." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:27 msgid "" "We're going to use the ``Input`` singleton here as we need to know if the " "player wants to turn or move every frame." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:30 msgid "" "For turning, we should use a new variable: ``direction``. In our " "``_process()`` function, replace the ``rotation += angular_speed * delta`` " "line with the code below." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:59 msgid "" "Our ``direction`` local variable is a multiplier representing the direction " "in which the player wants to turn. A value of ``0`` means the player isn't " "pressing the left or the right arrow key. A value of ``1`` means the player " "wants to turn right, and ``-1`` means they want to turn left." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:64 msgid "" "To produce these values, we introduce conditional statements and the use of " "``Input``. A conditional statement starts with the ``if`` keyword in " "GDScript and ends with a colon. The condition is specifically the expression " "between the keyword and the colon at the end of the line." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:69 msgid "" "To check if a key was pressed this frame, we call " "``Input.is_action_pressed()``. The method takes a text string representing " "an input action and returns ``true`` if the action is pressed, ``false`` " "otherwise." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:73 msgid "" "The two actions we use above, \"ui_left\" and \"ui_right\", are predefined " "in every Godot project. They respectively trigger when the player presses " "the left and right arrows on the keyboard or left and right on a gamepad's D-" "pad." 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 :menu:`Project > Project Settings` and clicking on the :ui:`Input Map` " "tab." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:80 msgid "" "Finally, we use the ``direction`` as a multiplier when we update the node's " "``rotation``: ``rotation += angular_speed * direction * delta``." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:83 msgid "" "Comment out the lines ``var velocity = Vector2.UP.rotated(rotation) * " "speed`` and ``position += velocity * delta`` like this:" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:99 msgid "" "This will ignore the code that moved the icon's position in a circle without " "user input from the previous exercise." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:101 msgid "" "If you run the scene with this code, the icon should rotate when you " "press :kbd:`Left` and :kbd:`Right`." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:105 msgid "Moving when pressing \"up\"" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:107 msgid "" "To only move when pressing a key, we need to modify the code that calculates " "the velocity. Uncomment the code and replace the line starting with ``var " "velocity`` with the code below." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:125 msgid "" "We initialize the ``velocity`` with a value of ``Vector2.ZERO``, another " "constant of the built-in ``Vector`` type representing a 2D vector of length " "0." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:128 msgid "" "If the player presses the \"ui_up\" action, we then update the velocity's " "value, causing the sprite to move forward." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:193 msgid "" "If you run the scene, you should now be able to rotate with the left and " "right arrow keys and move forward by pressing :kbd:`Up`." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:201 msgid "" "In summary, every script in Godot represents a class and extends one of the " "engine's built-in classes. The node types your classes inherit from give you " "access to properties, such as ``rotation`` and ``position`` in our sprite's " "case. You also inherit many functions, which we didn't get to use in this " "example." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:206 msgid "" "In GDScript, the variables you put at the top of the file are your class's " "properties, also called member variables. Besides variables, you can define " "functions, which, for the most part, will be your classes' methods." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:210 msgid "" "Godot provides several virtual functions you can define to connect your " "class with the engine. These include ``_process()``, to apply changes to the " "node every frame, and ``_unhandled_input()``, to receive input events like " "key and button presses from the users. There are quite a few more." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:215 msgid "" "The ``Input`` singleton allows you to react to the player's input anywhere " "in your code. In particular, you'll get to use it in the ``_process()`` loop." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:218 msgid "" "In the next lesson, :ref:`doc_signals`, we'll build upon the relationship " "between scripts and nodes by having our nodes trigger code in scripts." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:-1 #: ../../docs/tutorials/scripting/gdscript/gdscript_documentation_comments.rst:78 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:601 #: ../../docs/tutorials/scripting/instancing_with_signals.rst:-1 msgid "Signal" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:12 #, fuzzy msgid "Using signals" msgstr "Signali" #: ../../docs/getting_started/step_by_step/signals.rst:14 msgid "" "In this lesson, we will look at signals. They are messages that nodes emit " "when something specific happens to them, like a button being pressed. Other " "nodes can connect to that signal and call a function when the event occurs." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:18 msgid "" "Signals are a delegation mechanism built into Godot that allows one game " "object to react to a change in another without them referencing one another. " "Using signals limits `coupling `_ and keeps your code flexible." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:24 msgid "" "For example, you might have a life bar on the screen that represents the " "player's health. When the player takes damage or uses a healing potion, you " "want the bar to reflect the change. To do so, in Godot, you would use " "signals." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:28 msgid "" "Like methods (:ref:`class_callable`), signals are a first-class type since " "Godot 4.0. This means you can pass them around as method arguments directly " "without having to pass them as strings, which allows for better " "autocompletion and is less error-prone. See the :ref:`class_signal` class " "reference for a list of what you can do with the Signal type directly." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:36 msgid "" "As mentioned in the introduction, signals are Godot's version of the " "observer pattern. You can learn more about it in `Game Programming Patterns " "`__." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:40 msgid "" "We will now use a signal to make our Godot icon from the previous lesson " "(:ref:`doc_scripting_player_input`) move and stop by pressing a button." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:43 #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:50 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:9 msgid "For this project, we will be following the Godot naming conventions." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:45 #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:52 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:11 msgid "" "**GDScript**: Classes (nodes) use PascalCase, variables and functions use " "snake_case, and constants use ALL_CAPS (See :ref:`doc_gdscript_styleguide`)." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:49 #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:56 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:15 msgid "" "**C#**: Classes, export variables and methods use PascalCase, private fields " "use _camelCase, local variables and parameters use camelCase " "(See :ref:`doc_c_sharp_styleguide`). Be careful to type the method names " "precisely when connecting signals." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:55 #: ../../docs/tutorials/animation/introduction.rst:108 #: ../../docs/tutorials/physics/kinematic_character_2d.rst:77 msgid "Scene setup" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:57 msgid "" "To add a button to our game, we will create a new scene which will include " "both a :ref:`Button ` and the ``sprite_2d.tscn`` scene we " "created in the :ref:`doc_scripting_first_script` lesson." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:61 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 :button:`2D Scene` button. This will add " "a :ref:`Node2D ` as our root." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:70 msgid "" "In the FileSystem dock, click and drag the ``sprite_2d.tscn`` file you saved " "previously onto the Node2D to instantiate it." 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 :button:`Add Child Node`." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:80 msgid "Search for the :ref:`Button ` node and add it." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:84 msgid "" "The node is small by default. Click and drag on the bottom-right handle of " "the Button in the viewport to resize it." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:89 msgid "" "If you don't see the handles, ensure the select tool is active in the " "toolbar." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:93 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 :inspector:`Text` " "property in the :ui:`Inspector`. Enter ``Toggle motion``." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:100 msgid "Your scene tree and viewport should look like this." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:104 msgid "" "Save your newly created scene as ``node_2d.tscn``, if you haven't already. " "You can then run it with :kbd:`F6` (:kbd:`Cmd + R` on macOS). At the moment, " "the button will be visible, but nothing will happen if you press it." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:110 msgid "Connecting a signal in the editor" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:112 msgid "" "Here, we want to connect the Button's \"pressed\" signal to our Sprite2D, " "and we want to call a new function that will toggle its motion on and off. " "We need to have a script attached to the Sprite2D node, which we do from the " "previous lesson." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:117 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:123 msgid "The dock displays a list of signals available on the selected node." msgstr "" #: ../../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: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: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: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: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: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: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: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: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() " "`. 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: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: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:213 msgid "Your complete ``sprite_2d.gd`` code should look like the following." msgstr "" #: ../../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:260 msgid "Connecting a signal via code" msgstr "" #: ../../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:265 msgid "" "Let's use a different node here. Godot has a :ref:`Timer ` node " "that's useful to implement skill cooldown times, weapon reloading, and more." msgstr "" #: ../../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: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: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: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:286 msgid "We need to do two operations to connect the nodes via code:" msgstr "" #: ../../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:289 msgid "Call the ``connect()`` method on the Timer's \"timeout\" signal." msgstr "" #: ../../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:295 msgid "" "We want to connect the signal when the scene is instantiated, and we can do " "that using the :ref:`Node._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:299 msgid "" "To get a reference to a node relative to the current one, we use the " "method :ref:`Node.get_node() `. We can store the " "reference in a variable." msgstr "" #: ../../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:322 msgid "" "We can now connect the Timer to the Sprite2D in the ``_ready()`` function." msgstr "" #: ../../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: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: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: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: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:436 msgid "Custom signals" msgstr "" #: ../../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: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: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: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:475 msgid "To emit a signal in your scripts, call ``emit()`` on the signal." msgstr "" #: ../../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: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: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: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: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:559 msgid "" "For example, an :ref:`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: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 "" #: ../../docs/getting_started/first_2d_game/index.rst:6 msgid "Your first 2D game" msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:8 msgid "" "In this step-by-step tutorial series, you will create your first complete 2D " "game with Godot. By the end of the series, you will have a simple yet " "complete game of your own, like the image below." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:14 msgid "" "You will learn how the Godot editor works, how to structure a project, and " "build a 2D game." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:17 msgid "" "This project is an introduction to the Godot engine. It assumes that you " "have some programming experience already. If you're new to programming " "entirely, you should start here: :ref:`doc_scripting`." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:21 msgid "" "The game is called \"Dodge the Creeps!\". Your character must move and avoid " "the enemies for as long as possible." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:24 #: ../../docs/getting_started/first_3d_game/index.rst:19 msgid "You will learn to:" msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:26 msgid "Create a complete 2D game with the Godot editor." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:27 msgid "Structure a simple game project." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:28 msgid "Move the player character and change its sprite." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:29 msgid "Spawn random enemies." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:30 msgid "Count the score." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:32 #: ../../docs/getting_started/first_3d_game/index.rst:30 msgid "And more." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:34 msgid "" "You'll find another series where you'll create a similar game but in 3D. We " "recommend you to start with this one, though." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:37 msgid "**Why start with 2D?**" msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:39 msgid "" "If you are new to game development or unfamiliar with Godot, we recommend " "starting with 2D games. This will allow you to become comfortable with both " "before tackling 3D games, which tend to be more complicated." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:43 msgid "You can find a completed version of this project at this location:" msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:45 #, fuzzy msgid "" "`Dodge the Creeps source code (GDScript) `__" msgstr "https://github.com/godotengine/godot-demo-projects" #: ../../docs/getting_started/first_2d_game/index.rst:46 #, fuzzy msgid "" "`Dodge the Creeps source code (C#) `__" msgstr "https://github.com/godotengine/godot-demo-projects" #: ../../docs/getting_started/first_2d_game/index.rst:49 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:34 msgid "Prerequisites" msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:51 msgid "" "This step-by-step tutorial is intended for beginners who followed the " "complete :ref:`doc_step_by_step`." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:54 msgid "" "If you're an experienced programmer, you can find the complete demo's source " "code here: `Dodge the Creeps source code `__." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:58 msgid "" "We prepared some game assets you'll need to download so we can jump straight " "to the code." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:61 msgid "You can download them by clicking the link below." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:63 msgid "" "`dodge_the_creeps_2d_assets.zip `_." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:66 #: ../../docs/getting_started/first_3d_game/index.rst:57 msgid "Contents" msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:4 #: ../../docs/tutorials/scripting/cpp/gdextension_cpp_example.rst:28 #: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:22 msgid "Setting up the project" msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:6 msgid "In this short first part, we'll set up and organize the project." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:8 msgid "Launch Godot and create a new project." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:12 msgid "" "When creating the new project, you only need to choose a valid *Project " "Path*. You can leave the other default settings alone." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:17 #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:24 msgid "" "Download `dodge_the_creeps_2d_assets.zip `_. The archive contains the images and " "sounds you'll be using to make the game. Extract the archive and move the " "``art/`` and ``fonts/`` directories to your project's directory." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:29 msgid "" "Ensure that you have the required dependencies to use C# in Godot. You need " "the latest stable .NET SDK, and an editor such as VS Code. " "See :ref:`doc_c_sharp_setup`." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:33 #: ../../docs/tutorials/performance/cpu_optimization.rst:195 msgid "C++" msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:35 msgid "" "The C++ part of this tutorial wasn't rewritten for the new GDExtension " "system yet." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:37 msgid "Your project folder should look like this." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:41 msgid "" "This game is designed for portrait mode, so we need to adjust the size of " "the game window. Click on *Project -> Project Settings* to open the project " "settings window, in the left column open the *Display -> Window* tab. There, " "set \"Viewport Width\" to ``480`` and \"Viewport Height\" to ``720``. You " "can see the \"Project\" menu on the upper left corner." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:49 msgid "" "Also, under the **Stretch** options, set **Mode** to ``canvas_items`` and " "**Aspect** to ``keep``. This ensures that the game scales consistently on " "different sized screens." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:55 msgid "Organizing the project" msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:57 msgid "" "In this project, we will make 3 independent scenes: ``Player``, ``Mob``, and " "``HUD``, which we will combine into the game's ``Main`` scene." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:60 msgid "" "In a larger project, it might be useful to create folders to hold the " "various scenes and their scripts, but for this relatively small game, you " "can save your scenes and scripts in the project's root folder, identified by " "``res://``. You can see your project folders in the FileSystem dock in the " "lower left corner:" msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:67 msgid "" "With the project in place, we're ready to design the player scene in the " "next lesson." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:4 msgid "Creating the player scene" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:6 msgid "" "With the project settings in place, we can start working on the player-" "controlled character." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:9 msgid "" "The first scene will define the ``Player`` object. One of the benefits of " "creating a separate Player scene is that we can test it separately, even " "before we've created other parts of the game." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:14 msgid "Node structure" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:16 msgid "" "To begin, we need to choose a root node for the player object. As a general " "rule, a scene's root node should reflect the object's desired functionality " "- what the object *is*. In the upper-left corner, in the \"Scene\" tab, " "click the \"Other Node\" button and add an :ref:`Area2D ` node " "to the scene." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:23 msgid "" "When you add the ``Area2D`` node, Godot will display the following **warning " "icon** next to it in the scene tree:" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:28 msgid "" "This warning tells us that the ``Area2D`` node requires a shape to detect " "collisions or overlaps. We can **ignore the warning temporarily** because we " "will first set up the player's visuals (using an animated sprite). Once the " "visuals are ready, we will add a collision shape as a child node. This will " "allow us to accurately size and position the shape based on the sprite's " "appearance." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:34 msgid "" "With ``Area2D`` we can detect objects that overlap or run into the player. " "Change the node's name to ``Player`` by double-clicking on it. Now that " "we've set the scene's root node, we can add additional nodes to give it more " "functionality." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:39 msgid "" "Before we add any children to the ``Player`` node, we want to make sure we " "don't accidentally move or resize them by clicking on them. Select the node " "and click the icon to the right of the lock. Its tooltip says \"Groups the " "selected node with its children. This causes the parent to be selected when " "any child node is clicked in 2D and 3D view.\"" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:47 msgid "" "Save the scene as ``player.tscn``. Click **Scene > Save**, or " "press :kbd:`Ctrl + S` on Windows/Linux or :kbd:`Cmd + S` on macOS." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:63 msgid "Sprite animation" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:65 msgid "" "Click on the ``Player`` node and add (:kbd:`Ctrl + A` on Windows/Linux " "or :kbd:`Cmd + A` on macOS) a child node :ref:`AnimatedSprite2D " "`. The ``AnimatedSprite2D`` will handle the " "appearance and animations for our player. Notice that there is a warning " "symbol next to the node. An ``AnimatedSprite2D`` requires " "a :ref:`SpriteFrames ` resource, which is a list of the " "animations it can display. Make sure ``AnimatedSprite2D`` is selected and " "then find the ``Sprite Frames`` property under the ``Animation`` section in " "the Inspector and click \"[empty]\" -> \"New SpriteFrames\":" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:76 msgid "" "Click on the ``SpriteFrames`` you just created to open the \"SpriteFrames\" " "panel:" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:80 msgid "" "On the left is a list of animations. Click the ``default`` one and rename it " "to ``walk``. Then click the **Add Animation** button to create a second " "animation named ``up``." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:84 msgid "" "Find the player images in the FileSystem dock - they're in the ``art`` " "folder you unzipped earlier. Drag the two images for each animation, into " "the **Animation Frames** side of the panel for the corresponding animation:" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:88 msgid "" "``playerGrey_walk1`` and ``playerGrey_walk2`` for the ``walk`` animation" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:89 msgid "``playerGrey_up1`` and ``playerGrey_up2`` for the ``up`` animation" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:93 msgid "" "The player images are a bit too large for the game window, so we need to " "scale them down. Click on the ``AnimatedSprite2D`` node and set the " "``Scale`` property to ``(0.5, 0.5)``. You can find it in the Inspector under " "the ``Node2D`` heading." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:100 msgid "" "Finally, add a :ref:`CollisionShape2D ` as a child " "of ``Player``. This will determine the player's \"hitbox\", or the bounds of " "its collision area. For this character, a ``CapsuleShape2D`` node gives the " "best fit, so next to \"Shape\" in the Inspector, click \"[empty]\" -> \"New " "CapsuleShape2D\". Using the two size handles, resize the shape to cover the " "sprite:" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:109 msgid "When you're finished, your ``Player`` scene should look like this:" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:113 msgid "" "Once this is done, the warning on the ``Area2D`` node will disappear, as it " "now has a shape assigned and can interact with other objects." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:116 msgid "Make sure to save the scene again after these changes." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:118 msgid "" "In the next part, we'll add a script to the player node to move and animate " "it. Then, we'll set up collision detection to know when the player got hit " "by something." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:4 msgid "Coding the player" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:6 msgid "" "In this lesson, we'll add player movement, animation, and set it up to " "detect collisions." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:9 msgid "" "To do so, we need to add some functionality that we can't get from a built-" "in node, so we'll add a script. Click the ``Player`` node and click the " "\"Attach Script\" button:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:15 msgid "" "In the script settings window, you can leave the default settings alone. " "Just click \"Create\":" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:18 msgid "" "If you're creating a C# script or other languages, select the language from " "the `language` drop down menu before hitting create." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:23 msgid "" "If this is your first time encountering GDScript, please " "read :ref:`doc_scripting` before continuing." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:26 msgid "Start by declaring the member variables this object will need:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:48 msgid "" "Using the ``export`` keyword on the first variable ``speed`` allows us to " "set its value in the Inspector. This can be handy for values that you want " "to be able to adjust just like a node's built-in properties. Click on the " "``Player`` node and you'll see the property now appears in the Inspector in " "a new section with the name of the script. Remember, if you change the value " "here, it will override the value written in the script." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:57 msgid "" "If you're using C#, you need to (re)build the project assemblies whenever " "you want to see new export variables or signals. This build can be manually " "triggered by clicking the **Build** button at the top right of the editor." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:66 msgid "" "Your ``player.gd`` script should already contain a ``_ready()`` and a " "``_process()`` function. If you didn't select the default template shown " "above, create these functions while following the lesson." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:71 msgid "" "The ``_ready()`` function is called when a node enters the scene tree, which " "is a good time to find the size of the game window:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:87 msgid "" "Now we can use the ``_process()`` function to define what the player will " "do. ``_process()`` is called every frame, so we'll use it to update elements " "of our game, which we expect will change often. For the player, we need to " "do the following:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:92 msgid "Check for input." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:93 msgid "Move in the given direction." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:94 msgid "Play the appropriate animation." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:96 msgid "" "First, we need to check for input - is the player pressing a key? For this " "game, we have 4 direction inputs to check. Input actions are defined in the " "Project Settings under \"Input Map\". Here, you can define custom events and " "assign different keys, mouse events, or other inputs to them. For this game, " "we will map the arrow keys to the four directions." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:102 msgid "" "Click on *Project -> Project Settings* to open the project settings window " "and click on the *Input Map* tab at the top. Type \"move_right\" in the top " "bar and click the \"Add\" button to add the ``move_right`` action." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:108 msgid "" "We need to assign a key to this action. Click the \"+\" icon on the right, " "to open the event manager window." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:113 msgid "" "The \"Listening for Input...\" field should automatically be selected. Press " "the \"right\" key on your keyboard, and the menu should look like this now." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:118 msgid "" "Select the \"ok\" button. The \"right\" key is now associated with the " "``move_right`` action." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:120 msgid "Repeat these steps to add three more mappings:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:122 msgid "``move_left`` mapped to the left arrow key." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:123 msgid "``move_up`` mapped to the up arrow key." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:124 msgid "And ``move_down`` mapped to the down arrow key." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:126 msgid "Your input map tab should look like this:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:130 msgid "Click the \"Close\" button to close the project settings." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:134 msgid "" "We only mapped one key to each input action, but you can map multiple keys, " "joystick buttons, or mouse buttons to the same input action." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:137 msgid "" "You can detect whether a key is pressed using ``Input.is_action_pressed()``, " "which returns ``true`` if it's pressed or ``false`` if it isn't." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:199 msgid "" "We start by setting the ``velocity`` to ``(0, 0)`` - by default, the player " "should not be moving. Then we check each input and add/subtract from the " "``velocity`` to obtain a total direction. For example, if you hold ``right`` " "and ``down`` at the same time, the resulting ``velocity`` vector will be " "``(1, 1)``. In this case, since we're adding a horizontal and a vertical " "movement, the player would move *faster* diagonally than if it just moved " "horizontally." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:206 msgid "" "We can prevent that if we *normalize* the velocity, which means we set its " "*length* to ``1``, then multiply by the desired speed. This means no more " "fast diagonal movement." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:210 msgid "" "If you've never used vector math before, or need a refresher, you can see an " "explanation of vector usage in Godot at :ref:`doc_vector_math`. It's good to " "know but won't be necessary for the rest of this tutorial." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:214 msgid "" "We also check whether the player is moving so we can call ``play()`` or " "``stop()`` on the AnimatedSprite2D." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:217 msgid "" "``$`` is shorthand for ``get_node()``. So in the code above, " "``$AnimatedSprite2D.play()`` is the same as " "``get_node(\"AnimatedSprite2D\").play()``." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:221 msgid "" "In GDScript, ``$`` returns the node at the relative path from the current " "node, or returns ``null`` if the node is not found. Since AnimatedSprite2D " "is a child of the current node, we can use ``$AnimatedSprite2D``." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:226 msgid "" "Now that we have a movement direction, we can update the player's position. " "We can also use ``clamp()`` to prevent it from leaving the screen. " "*Clamping* a value means restricting it to a given range. Add the following " "to the bottom of the ``_process`` function (make sure it's not indented " "under the `else`):" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:245 msgid "" "The `delta` parameter in the `_process()` function refers to the *frame " "length* - the amount of time that the previous frame took to complete. Using " "this value ensures that your movement will remain consistent even if the " "frame rate changes." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:250 msgid "" "Click \"Run Current Scene\" (:kbd:`F6`, :kbd:`Cmd + R` on macOS) and confirm " "you can move the player around the screen in all directions." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:253 msgid "If you get an error in the \"Debugger\" panel that says" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:255 msgid "" "``Attempt to call function 'play' in base 'null instance' on a null " "instance``" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:258 msgid "" "this likely means you spelled the name of the AnimatedSprite2D node wrong. " "Node names are case-sensitive and ``$NodeName`` must match the name you see " "in the scene tree." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:263 msgid "Choosing animations" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:265 msgid "" "Now that the player can move, we need to change which animation the " "AnimatedSprite2D is playing based on its direction. We have the \"walk\" " "animation, which shows the player walking to the right. This animation " "should be flipped horizontally using the ``flip_h`` property for left " "movement. We also have the \"up\" animation, which should be flipped " "vertically with ``flip_v`` for downward movement. Let's place this code at " "the end of the ``_process()`` function:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:299 msgid "" "The boolean assignments in the code above are a common shorthand for " "programmers. Since we're doing a comparison test (boolean) and also " "*assigning* a boolean value, we can do both at the same time. Consider this " "code versus the one-line boolean assignment above:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:323 msgid "" "Play the scene again and check that the animations are correct in each of " "the directions." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:326 msgid "" "A common mistake here is to type the names of the animations wrong. The " "animation names in the SpriteFrames panel must match what you type in the " "code. If you named the animation ``\"Walk\"``, you must also use a capital " "\"W\" in the code." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:331 msgid "" "When you're sure the movement is working correctly, add this line to " "``_ready()``, so the player will be hidden when the game starts:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:344 msgid "Preparing for collisions" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:346 msgid "" "We want ``Player`` to detect when it's hit by an enemy, but we haven't made " "any enemies yet! That's OK, because we're going to use Godot's *signal* " "functionality to make it work." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:350 msgid "" "Add the following at the top of the script. If you're using GDScript, add it " "after ``extends Area2D``. If you're using C#, add it after ``public partial " "class Player : Area2D``:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:365 msgid "" "This defines a custom signal called \"hit\" that we will have our player " "emit (send out) when it collides with an enemy. We will use ``Area2D`` to " "detect the collision. Select the ``Player`` node and click the \"Node\" tab " "next to the Inspector tab to see the list of signals the player can emit:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:372 msgid "" "Notice our custom \"hit\" signal is there as well! Since our enemies are " "going to be ``RigidBody2D`` nodes, we want the ``body_entered(body: " "Node2D)`` signal. This signal will be emitted when a body contacts the " "player. Click \"Connect..\" and the \"Connect a Signal\" window appears." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:377 msgid "" "Godot will create a function with that exact name directly in script for " "you. You don't need to change the default settings right now." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:384 msgid "" "If you're using an external text editor (for example, Visual Studio Code), a " "bug currently prevents Godot from doing so. You'll be sent to your external " "editor, but the new function won't be there." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:388 msgid "" "In this case, you'll need to write the function yourself into the Player's " "script file." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:393 msgid "" "Note the green icon indicating that a signal is connected to this function; " "this does not mean the function exists, only that the signal will attempt to " "connect to a function with that name, so double-check that the spelling of " "the function matches exactly!" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:397 msgid "Next, add this code to the function:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:419 msgid "" "Each time an enemy hits the player, the signal is going to be emitted. We " "need to disable the player's collision so that we don't trigger the ``hit`` " "signal more than once." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:423 msgid "" "Disabling the area's collision shape can cause an error if it happens in the " "middle of the engine's collision processing. Using ``set_deferred()`` tells " "Godot to wait to disable the shape until it's safe to do so." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:428 msgid "" "The last piece is to add a function we can call to reset the player when " "starting a new game." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:448 msgid "With the player working, we'll work on the enemy in the next lesson." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:4 msgid "Creating the enemy" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:6 msgid "" "Now it's time to make the enemies our player will have to dodge. Their " "behavior will not be very complex: mobs will spawn randomly at the edges of " "the screen, choose a random direction, and move in a straight line." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:10 msgid "" "We'll create a ``Mob`` scene, which we can then *instance* to create any " "number of independent mobs in the game." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:14 msgid "Node setup" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:16 msgid "Click Scene -> New Scene from the top menu and add the following nodes:" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:18 msgid ":ref:`RigidBody2D ` (named ``Mob``)" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:20 msgid ":ref:`AnimatedSprite2D `" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:21 msgid ":ref:`CollisionShape2D `" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:22 msgid ":ref:`VisibleOnScreenNotifier2D `" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:24 msgid "" "Don't forget to set the children so they can't be selected, like you did " "with the Player scene. This is done by selecting the parent node " "(``RigidBody2D``) in the Scene tree dock, then using the :button:`Group` " "button at the top of the 2D editor (or pressing :kbd:`Ctrl + G`)." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:29 msgid "" "Select the ``Mob`` node and set its ``Gravity Scale`` property in " "the :ref:`RigidBody2D ` section of the inspector to " "``0``. This will prevent the mob from falling downwards." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:34 msgid "" "In addition, under the :ref:`CollisionObject2D ` " "section just beneath the **RigidBody2D** section, expand the **Collision** " "group and uncheck the ``1`` inside the ``Mask`` property. This will ensure " "the mobs do not collide with each other." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:42 msgid "" "Set up the :ref:`AnimatedSprite2D ` like you did for " "the player. This time, we have 3 animations: ``fly``, ``swim``, and " "``walk``. There are two images for each animation in the art folder." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:46 msgid "" "The ``Animation Speed`` property has to be set for each individual " "animation. Adjust it to ``3`` for all 3 animations." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:50 msgid "" "You can use the \"Play Animation\" buttons on the right of the ``Animation " "Speed`` input field to preview your animations." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:52 msgid "" "We'll select one of these animations randomly so that the mobs will have " "some variety." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:55 msgid "" "Like the player images, these mob images need to be scaled down. Set the " "``AnimatedSprite2D``'s ``Scale`` property to ``(0.75, 0.75)``." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:58 msgid "" "As in the ``Player`` scene, add a ``CapsuleShape2D`` for the collision. To " "align the shape with the image, you'll need to set the ``Rotation`` property " "to ``90`` (under \"Transform\" in the Inspector)." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:62 msgid "Save the scene." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:65 msgid "Enemy script" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:67 msgid "Add a script to the ``Mob`` like this:" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:83 msgid "" "Now let's look at the rest of the script. In ``_ready()`` we play the " "animation and randomly choose one of the three animation types:" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:103 msgid "" "First, we get the list of animation names from the AnimatedSprite2D's " "``sprite_frames`` property. This returns an Array containing all three " "animation names: ``[\"walk\", \"swim\", \"fly\"]``." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:107 msgid "" "In the GDScript code, we use the :ref:`Array.pick_random " "` method to select one of these animation " "names at random. Meanwhile, in the C# code, we pick a random number between " "``0`` and ``2`` to select one of these names from the list (array indices " "start at ``0``). The expression ``GD.Randi() % n`` selects a random integer " "between ``0`` and ``n-1``." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:112 msgid "Finally, we call ``play()`` to start playing the chosen animation." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:114 msgid "" "The last piece is to make the mobs delete themselves when they leave the " "screen. Connect the ``screen_exited()`` signal of the " "``VisibleOnScreenNotifier2D`` node to the ``Mob`` and add this code:" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:132 msgid "" "``queue_free()`` is a function that essentially 'frees', or deletes, the " "node at the end of the frame." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:134 msgid "This completes the `Mob` scene." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:136 msgid "" "With the player and enemies ready, in the next part, we'll bring them " "together in a new scene. We'll make enemies spawn randomly around the game " "board and move forward, turning our project into a playable game." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:4 msgid "The main game scene" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:6 msgid "" "Now it's time to bring everything we did together into a playable game scene." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:8 msgid "" "Create a new scene and add a :ref:`Node ` named ``Main``. (The " "reason we are using Node instead of Node2D is because this node will be a " "container for handling game logic. It does not require 2D functionality " "itself.)" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:12 msgid "" "Click the **Instance** button (represented by a chain link icon) and select " "your saved ``player.tscn``." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:17 msgid "" "Now, add the following nodes as children of ``Main``, and name them as shown:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:19 msgid "" ":ref:`Timer ` (named ``MobTimer``) - to control how often mobs " "spawn" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:21 msgid "" ":ref:`Timer ` (named ``ScoreTimer``) - to increment the score " "every second" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:23 msgid "" ":ref:`Timer ` (named ``StartTimer``) - to give a delay before " "starting" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:25 msgid "" ":ref:`Marker2D ` (named ``StartPosition``) - to indicate the " "player's start position" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:28 msgid "" "Set the ``Wait Time`` property of each of the ``Timer`` nodes as follows " "(values are in seconds):" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:30 msgid "``MobTimer``: ``0.5``" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:31 msgid "``ScoreTimer``: ``1``" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:32 msgid "``StartTimer``: ``2``" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:34 msgid "" "In addition, set the ``One Shot`` property of ``StartTimer`` to \"On\" and " "set ``Position`` of the ``StartPosition`` node to ``(240, 450)``." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:38 msgid "Spawning mobs" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:40 msgid "" "The Main node will be spawning new mobs, and we want them to appear at a " "random location on the edge of the screen. Click the ``Main`` node in the " "Scene dock, then add a child :ref:`Path2D ` node named " "``MobPath``. When you select ``Path2D``, you will see some new buttons at " "the top of the editor:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:47 msgid "" "Select the middle one (\"Add Point\") and draw the path by clicking to add " "the points at the corners shown. To have the points snap to the grid, make " "sure \"Use Grid Snap\" and \"Use Smart Snap\" are both selected. These " "options can be found to the left of the \"Lock\" button, appearing as a " "magnet next to some dots and intersecting lines, respectively." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:55 msgid "" "Draw the path in *clockwise* order, or your mobs will spawn pointing " "*outwards* instead of *inwards*!" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:60 msgid "" "After placing point ``4`` in the image, click the \"Close Curve\" button and " "your curve will be complete." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:63 msgid "" "Now that the path is defined, add a :ref:`PathFollow2D ` " "node as a child of ``MobPath`` and name it ``MobSpawnLocation``. This node " "will automatically rotate and follow the path as it moves, so we can use it " "to select a random position and direction along the path." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:68 msgid "Your scene should look like this:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:73 msgid "Main script" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:75 msgid "" "Add a script to ``Main``. At the top of the script, we use ``@export var " "mob_scene: PackedScene`` to allow us to choose the Mob scene we want to " "instance." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:101 msgid "" "Click the ``Main`` node and you will see the ``Mob Scene`` property in the " "Inspector under \"Main.gd\"." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:104 msgid "You can assign this property's value in two ways:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:106 msgid "" "Drag ``mob.tscn`` from the \"FileSystem\" dock and drop it in the **Mob " "Scene** property." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:108 msgid "" "Click the down arrow next to \"[empty]\" and choose \"Load\". Select " "``mob.tscn``." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:110 msgid "" "Next, select the instance of the ``Player`` scene under ``Main`` node in the " "Scene dock, and access the Node dock on the sidebar. Make sure to have the " "Signals tab selected in the Node dock." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:114 msgid "" "You should see a list of the signals for the ``Player`` node. Find and " "double-click the ``hit`` signal in the list (or right-click it and select " "\"Connect...\"). This will open the signal connection dialog. We want to " "make a new function named ``game_over``, which will handle what needs to " "happen when a game ends. Type \"game_over\" in the \"Receiver Method\" box " "at the bottom of the signal connection dialog and click \"Connect\". You are " "aiming to have the ``hit`` signal emitted from ``Player`` and handled in the " "``Main`` script. Add the following code to the new function, as well as a " "``new_game`` function that will set everything up for a new game:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:155 msgid "" "Now we'll connect the ``timeout()`` signal of each Timer node " "(``StartTimer``, ``ScoreTimer``, and ``MobTimer``) to the main script. For " "each of the three timers, select the timer in the Scene dock, open the " "Signals tab of the Node dock, then double-click the ``timeout()`` signal in " "the list. This will open a new signal connection dialog. The default " "settings in this dialog should be fine, so select **Connect** to create a " "new signal connection." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:162 msgid "" "Once all three timers have this set up, you should be able to see each timer " "have a Signal connection for their respective ``timeout()`` signal, showing " "in green, within their respective Signals tabs:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:166 msgid "(For MobTimer): ``_on_mob_timer_timeout()``" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:167 msgid "(For ScoreTimer): ``_on_score_timer_timeout()``" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:168 msgid "(For StartTimer): ``_on_start_timer_timeout()``" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:170 msgid "" "Now we define how each of these timers operate by adding the code below. " "Notice that ``StartTimer`` will start the other two timers, and that " "``ScoreTimer`` will increment the score by 1." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:199 msgid "" "In ``_on_mob_timer_timeout()``, we will create a mob instance, pick a random " "starting location along the ``Path2D``, and set the mob in motion. The " "``PathFollow2D`` node will automatically rotate as it follows the path, so " "we will use that to select the mob's direction as well as its position. When " "we spawn a mob, we'll pick a random value between ``150.0`` and ``250.0`` " "for how fast each mob will move (it would be boring if they were all moving " "at the same speed)." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:207 msgid "" "Note that a new instance must be added to the scene using ``add_child()``." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:267 msgid "" "Why ``PI``? In functions requiring angles, Godot uses *radians*, not " "degrees. Pi represents a half turn in radians, about ``3.1415`` (there is " "also ``TAU`` which is equal to ``2 * PI``). If you're more comfortable " "working with degrees, you'll need to use the ``deg_to_rad()`` and " "``rad_to_deg()`` functions to convert between the two." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:275 msgid "Testing the scene" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:277 msgid "" "Let's test the scene to make sure everything is working. Add this " "``new_game`` call to ``_ready()``:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:293 msgid "" "Let's also assign ``Main`` as our \"Main Scene\" - the one that runs " "automatically when the game launches. Press the \"Play\" button and select " "``main.tscn`` when prompted." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:297 msgid "" "If you had already set another scene as the \"Main Scene\", you can right " "click ``main.tscn`` in the FileSystem dock and select \"Set As Main Scene\"." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:300 msgid "" "You should be able to move the player around, see mobs spawning, and see the " "player disappear when hit by a mob." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:303 msgid "" "When you're sure everything is working, remove the call to ``new_game()`` " "from ``_ready()`` and replace it with ``pass``." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:306 msgid "" "What's our game lacking? Some user interface. In the next lesson, we'll add " "a title screen and display the player's score." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:4 msgid "Heads up display" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:6 msgid "" "The final piece our game needs is a User Interface (UI) to display things " "like score, a \"game over\" message, and a restart button." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:9 msgid "" "Create a new scene, click the \"Other Node\" button and add " "a :ref:`CanvasLayer ` node named ``HUD``. \"HUD\" stands " "for \"heads-up display\", an informational display that appears as an " "overlay on top of the game view." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:13 msgid "" "The :ref:`CanvasLayer ` node lets us draw our UI elements " "on a layer above the rest of the game, so that the information it displays " "isn't covered up by any game elements like the player or mobs." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:17 msgid "The HUD needs to display the following information:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:19 msgid "Score, changed by ``ScoreTimer``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:20 msgid "A message, such as \"Game Over\" or \"Get Ready!\"" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:21 msgid "A \"Start\" button to begin the game." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:23 msgid "" "The basic node for UI elements is :ref:`Control `. To create " "our UI, we'll use two types of :ref:`Control ` " "nodes: :ref:`Label ` and :ref:`Button `." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:27 msgid "Create the following as children of the ``HUD`` node:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:29 msgid ":ref:`Label ` named ``ScoreLabel``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:30 msgid ":ref:`Label ` named ``Message``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:31 msgid ":ref:`Button ` named ``StartButton``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:32 msgid ":ref:`Timer ` named ``MessageTimer``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:34 msgid "" "Click on the ``ScoreLabel`` and type a number into the ``Text`` field in the " "Inspector. The default font for ``Control`` nodes is small and doesn't scale " "well. There is a font file included in the game assets called \"Xolonium-" "Regular.ttf\". To use this font, do the following:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:39 msgid "" "Under \"Theme Overrides > Fonts\", choose \"Load\" and select the \"Xolonium-" "Regular.ttf\" file." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:43 msgid "" "The font size is still too small, increase it to ``64`` under \"Theme " "Overrides > Font Sizes\". Once you've done this with the ``ScoreLabel``, " "repeat the changes for the ``Message`` and ``StartButton`` nodes." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:48 msgid "" "**Anchors:** ``Control`` nodes have a position and size, but they also have " "anchors. Anchors define the origin - the reference point for the edges of " "the node." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:52 msgid "" "Arrange the nodes as shown below. You can drag the nodes to place them " "manually, or for more precise placement, use \"Anchor Presets\"." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:59 msgid "ScoreLabel" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:61 msgid "Add the text ``0``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:62 #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:69 msgid "" "Set the \"Horizontal Alignment\" and \"Vertical Alignment\" to ``Center``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:63 msgid "Choose the \"Anchor Preset\" ``Center Top``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:66 msgid "Message" msgstr "Poruka" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:68 msgid "Add the text ``Dodge the Creeps!``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:70 msgid "" "Set the \"Autowrap Mode\" to ``Word``, otherwise the label will stay on one " "line." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:71 msgid "" "Under \"Control - Layout/Transform\" set \"Size X\" to ``480`` to use the " "entire width of the screen." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:72 msgid "Choose the \"Anchor Preset\" ``Center``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:75 msgid "StartButton" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:77 msgid "Add the text ``Start``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:78 msgid "" "Under \"Control - Layout/Transform\", set \"Size X\" to ``200`` and \"Size " "Y\" to ``100`` to add a little bit more padding between the border and text." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:80 msgid "Choose the \"Anchor Preset\" ``Center Bottom``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:81 msgid "Under \"Control - Layout/Transform\", set \"Position Y\" to ``580``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:83 msgid "" "On the ``MessageTimer``, set the ``Wait Time`` to ``2`` and set the ``One " "Shot`` property to \"On\"." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:86 msgid "Now add this script to ``HUD``:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:108 msgid "" "We now want to display a message temporarily, such as \"Get Ready\", so we " "add the following code" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:130 msgid "" "We also need to process what happens when the player loses. The code below " "will show \"Game Over\" for 2 seconds, then return to the title screen and, " "after a brief pause, show the \"Start\" button." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:163 msgid "" "When you need to pause for a brief time, an alternative to using a Timer " "node is to use the SceneTree's ``create_timer()`` function. This can be very " "useful to add delays such as in the above code, where we want to wait some " "time before showing the \"Start\" button." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:168 msgid "Add the code below to ``HUD`` to update the score" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:183 msgid "" "Connect the ``pressed()`` signal of ``StartButton`` and the ``timeout()`` " "signal of ``MessageTimer`` to the ``HUD`` node, and add the following code " "to the new functions:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:212 msgid "Connecting HUD to Main" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:214 msgid "" "Now that we're done creating the ``HUD`` scene, go back to ``Main``. " "Instance the ``HUD`` scene in ``Main`` like you did the ``Player`` scene. " "The scene tree should look like this, so make sure you didn't miss anything:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:220 msgid "" "Now we need to connect the ``HUD`` functionality to our ``Main`` script. " "This requires a few additions to the ``Main`` scene:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:223 msgid "" "In the Node tab, connect the HUD's ``start_game`` signal to the " "``new_game()`` function of the Main node by clicking the \"Pick\" button in " "the \"Connect a Signal\" window and selecting the ``new_game()`` method or " "type \"new_game\" below \"Receiver Method\" in the window. Verify that the " "green connection icon now appears next to ``func new_game()`` in the script." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:229 msgid "" "In ``new_game()``, update the score display and show the \"Get Ready\" " "message:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:243 msgid "In ``game_over()`` we need to call the corresponding ``HUD`` function:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:254 msgid "" "Finally, add this to ``_on_score_timer_timeout()`` to keep the display in " "sync with the changing score:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:268 msgid "" "Remember to remove the call to ``new_game()`` from ``_ready()`` if you " "haven't already, otherwise your game will start automatically." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:272 msgid "Now you're ready to play! Click the \"Play the Project\" button." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:275 msgid "Removing old creeps" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:277 msgid "" "If you play until \"Game Over\" and then start a new game right away, the " "creeps from the previous game may still be on the screen. It would be better " "if they all disappeared at the start of a new game. We just need a way to " "tell *all* the mobs to remove themselves. We can do this with the \"group\" " "feature." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:282 msgid "" "In the ``Mob`` scene, select the root node and click the \"Node\" tab next " "to the Inspector (the same place where you find the node's signals). Next to " "\"Signals\", click \"Groups\" to open the group overview and the \"+\" " "button to open the \"Create New Group\" dialog." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:289 msgid "Name the group ``mobs`` and click \"ok\" to add a new scene group." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:293 msgid "Now all mobs will be in the \"mobs\" group." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:297 msgid "" "We can then add the following line to the ``new_game()`` function in " "``Main``:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:310 msgid "" "The ``call_group()`` function calls the named function on every node in a " "group - in this case we are telling every mob to delete itself." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:313 msgid "" "The game's mostly done at this point. In the next and last part, we'll " "polish it a bit by adding a background, looping music, and some keyboard " "shortcuts." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:4 msgid "Finishing up" msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:6 msgid "" "We have now completed all the functionality for our game. Below are some " "remaining steps to add a bit more \"juice\" to improve the game experience." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:9 msgid "Feel free to expand the gameplay with your own ideas." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:12 #: ../../docs/tutorials/3d/environment_and_post_processing.rst:133 msgid "Background" msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:14 msgid "" "The default gray background is not very appealing, so let's change its " "color. One way to do this is to use a :ref:`ColorRect ` " "node. Make it the first node under ``Main`` so that it will be drawn behind " "the other nodes. ``ColorRect`` only has one property: ``Color``. Choose a " "color you like and select \"Layout\" -> \"Anchors Preset\" -> \"Full Rect\" " "either in the toolbar at the top of the viewport or in the inspector so that " "it covers the screen." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:20 msgid "" "You could also add a background image, if you have one, by using " "a :ref:`TextureRect ` node instead." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:24 msgid "Sound effects" msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:26 msgid "" "Sound and music can be the single most effective way to add appeal to the " "game experience. In your game's **art** folder, you have two sound files: " "\"House In a Forest Loop.ogg\" for background music, and \"gameover.wav\" " "for when the player loses." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:31 msgid "" "Add two :ref:`AudioStreamPlayer ` nodes as children " "of ``Main``. Name one of them ``Music`` and the other ``DeathSound``. On " "each one, click on the ``Stream`` property, select \"Load\", and choose the " "corresponding audio file." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:36 msgid "" "All audio is automatically imported with the ``Loop`` setting disabled. If " "you want the music to loop seamlessly, click on the Stream file arrow, " "select ``Make Unique``, then click on the Stream file and check the ``Loop`` " "box." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:42 msgid "" "To play the music, add ``$Music.play()`` in the ``new_game()`` function and " "``$Music.stop()`` in the ``game_over()`` function." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:45 msgid "Finally, add ``$DeathSound.play()`` in the ``game_over()`` function." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:76 msgid "Keyboard shortcut" msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:78 msgid "" "Since the game is played with keyboard controls, it would be convenient if " "we could also start the game by pressing a key on the keyboard. We can do " "this with the \"Shortcut\" property of the ``Button`` node." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:82 msgid "" "In a previous lesson, we created four input actions to move the character. " "We will create a similar input action to map to the start button." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:85 msgid "" "Select \"Project\" -> \"Project Settings\" and then click on the \"Input " "Map\" tab. In the same way you created the movement input actions, create a " "new input action called ``start_game`` and add a key mapping for " "the :kbd:`Enter` key." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:92 msgid "" "Now would be a good time to add controller support if you have one " "available. Attach or pair your controller and then under each input action " "that you wish to add controller support for, click on the \"+\" button and " "press the corresponding button, d-pad, or stick direction that you want to " "map to the respective input action." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:97 msgid "" "In the ``HUD`` scene, select the ``StartButton`` and find its **Shortcut** " "property in the Inspector. Create a new :ref:`Shortcut ` " "resource by clicking within the box, open the **Events** array and add a new " "array element to it by clicking on **Array[InputEvent] (size 0)**." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:104 msgid "" "Create a new :ref:`InputEventAction ` and name it " "``start_game``." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:108 msgid "" "Now when the start button appears, you can either click it or " "press :kbd:`Enter` to start the game." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:111 msgid "And with that, you completed your first 2D game in Godot." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:115 msgid "" "You got to make a player-controlled character, enemies that spawn randomly " "around the game board, count the score, implement a game over and replay, " "user interface, sounds, and more. Congratulations!" msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:119 msgid "" "There's still much to learn, but you can take a moment to appreciate what " "you achieved." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:122 msgid "" "And when you're ready, you can move on to :ref:`doc_your_first_3d_game` to " "learn to create a complete 3D game from scratch, in Godot." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:126 msgid "Sharing the finished game with others" msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:128 msgid "" "If you want people to try out your game without having to install Godot, " "you'll need to export the project for each operating system you want the " "game to be playable on. See :ref:`doc_exporting_projects` for instructions." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:132 msgid "" "After exporting the project, compress the exported executable and PCK file " "(not the raw project files) to a ZIP file, then upload this ZIP file to a " "file sharing website." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:6 msgid "Your first 3D game" msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:8 msgid "" "In this step-by-step tutorial series, you will create your first complete 3D " "game with Godot. By the end of the series, you will have a simple yet " "finished project of your own like the animated gif below." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:14 msgid "" "The game we'll code here is similar to :ref:`doc_your_first_2d_game`, with a " "twist: you can now jump and your goal is to squash the creeps. This way, you " "will both **recognize patterns** you learned in the previous tutorial and " "**build upon them** with new code and features." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:21 msgid "Work with 3D coordinates with a jumping mechanic." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:22 msgid "" "Use kinematic bodies to move 3D characters and detect when and how they " "collide." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:24 msgid "" "Use physics layers and a group to detect interactions with specific entities." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:25 msgid "" "Code basic procedural gameplay by instancing monsters at regular time " "intervals." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:27 msgid "Design a movement animation and change its speed at runtime." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:28 msgid "Draw a user interface on a 3D game." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:32 msgid "" "This tutorial is for beginners who followed the complete getting started " "series. We'll start slow with detailed instructions and shorten them as we " "do similar steps. If you're an experienced programmer, you can browse the " "complete demo's source code here:" msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:37 #, fuzzy msgid "" "`Squash the Creeps source code (GDScript) `__" msgstr "https://github.com/godotengine/godot-demo-projects" #: ../../docs/getting_started/first_3d_game/index.rst:38 #, fuzzy msgid "" "`Squash the Creeps source code (C#) `__" msgstr "https://github.com/godotengine/godot-demo-projects" #: ../../docs/getting_started/first_3d_game/index.rst:42 msgid "" "You can follow this series without having done the 2D one. However, if " "you're new to game development, we recommend you to start with 2D. 3D game " "code is always more complex and the 2D series will give you foundations to " "follow along more comfortably." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:47 msgid "" "We prepared some game assets so we can jump straight to the code. You can " "download them here: `Squash the Creeps assets `__." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:51 msgid "" "We will first work on a basic prototype for the player's movement. We will " "then add the monsters that we'll spawn randomly around the screen. After " "that, we'll implement the jump and squashing mechanic before refining the " "game with some nice animation. We'll wrap up with the score and the retry " "screen." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:4 msgid "Setting up the game area" msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:6 msgid "" "In this first part, we're going to set up the game area. Let's get started " "by importing the start assets and setting up the game scene." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:9 msgid "" "We've prepared a Godot project with the 3D models and sounds we'll use for " "this tutorial, linked in the index page. If you haven't done so yet, you can " "download the archive here: `Squash the Creeps assets `_." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:13 msgid "" "Once you downloaded it, extract the .zip archive on your computer. Open the " "Godot Project Manager and click the *Import* button." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:18 msgid "" "In the import popup, enter the full path to the freshly created directory " "``3d_squash_the_creeps_starter/``. You can click the *Browse* button on the " "right to open a file browser and navigate to the ``project.godot`` file the " "folder contains." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:25 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 *OK* to convert the project to your current Godot " "version." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:34 msgid "If it doesn't open immediately open the project from your project list." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:36 msgid "" "The start project contains an icon and two folders: ``art/`` and ``fonts/``. " "There, you will find the art assets and music we'll use in the game." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:41 msgid "" "There are two 3D models, ``player.glb`` and ``mob.glb``, some materials that " "belong to these models, and a music track." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:45 msgid "Setting up the playable area" msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:47 msgid "" "We're going to create our main scene with a plain :ref:`Node ` " "as its root. In the *Scene* dock, click the *Add Child Node* button " "represented by a \"+\" icon in the top-left and double-click on *Node*. Name " "the node ``Main``. An alternate method to rename the node is to right-click " "on *Node* and choose *Rename* (or :kbd:`F2`). Alternatively, to add a node " "to the scene, you can press :kbd:`Ctrl + A` (:kbd:`Cmd + A` on macOS)." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:54 msgid "" "Save the scene as ``main.tscn`` by pressing :kbd:`Ctrl + S` (:kbd:`Cmd + S` " "on macOS)." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:56 msgid "" "We'll start by adding a floor that'll prevent the characters from falling. " "To create static colliders like the floor, walls, or ceilings, you can " "use :ref:`StaticBody3D ` nodes. They " "require :ref:`CollisionShape3D ` child nodes to " "define the collision area. With the ``Main`` node selected, add " "a :ref:`StaticBody3D ` node, then " "a :ref:`CollisionShape3D `. Rename " "the :ref:`StaticBody3D ` to ``Ground``." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:63 msgid "Your scene tree should look like this" msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:67 msgid "" "A warning sign next to the :ref:`CollisionShape3D ` " "appears because we haven't defined its shape. If you click the icon, a popup " "appears to give you more information." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:72 msgid "" "To create a shape, select the :ref:`CollisionShape3D " "` node, head to the *Inspector* and click the " "** field next to the *Shape* property. Create a new *BoxShape3D*." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:77 msgid "" "The box shape is perfect for flat ground and walls. Its thickness makes it " "reliable to block even fast-moving objects." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:80 msgid "" "A box's wireframe appears in the viewport with three orange dots. You can " "click and drag these to edit the shape's extents interactively. We can also " "precisely set the size in the inspector. Click on the :ref:`BoxShape3D " "` to expand the resource. Set its *Size* to ``60`` on the " "X-axis, ``2`` for the Y-axis, and ``60`` for the Z-axis." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:89 msgid "" "Collision shapes are invisible. We need to add a visual floor that goes " "along with it. Select the ``Ground`` node and add a :ref:`MeshInstance3D " "` as its child." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:94 msgid "" "In the *Inspector*, click on the field next to *Mesh* and create " "a :ref:`BoxMesh ` resource to create a visible box." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:99 msgid "" "Once again, it's too small by default. Click the box icon to expand the " "resource and set its *Size* to ``60``, ``2``, and ``60``." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:104 msgid "" "You should see a wide grey slab that covers the grid and blue and red axes " "in the viewport." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:107 msgid "" "We're going to move the ground down so we can see the floor grid. To do " "this, the grid snapping feature can be used. Grid snapping can be activated " "2 ways in the 3D editor. The first is by pressing the *Use Snap* button (or " "pressing the :kbd:`Y` key). The second is by selecting a node, dragging a " "handle on the gizmo **then** holding :kbd:`Ctrl` while still clicking to " "enable snapping as long as :kbd:`Ctrl` is held." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:114 msgid "" "Start by setting snapping with your preferred method. Then move the " "``Ground`` node using the Y-axis (the green arrow on the gizmo)." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:120 msgid "" "If you can't see the 3D object manipulator like on the image above, ensure " "the *Select Mode* is active in the toolbar above the view." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:125 msgid "" "Move the ground down ``1`` meter, in order to have a visible editor grid. A " "label in the bottom-left corner of the viewport tells you how much you're " "translating the node." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:132 msgid "" "Moving the *Ground* node down moves both children along with it. Ensure you " "move the *Ground* node, **not** the *MeshInstance3D* or the " "*CollisionShape3D*." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:136 msgid "Ultimately, ``Ground``'s transform.position.y should be -1" msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:140 msgid "" "Let's add a directional light so our scene isn't all grey. Select the " "``Main`` node and add a child node :ref:`DirectionalLight3D " "`." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:145 msgid "" "We need to move and rotate the :ref:`DirectionalLight3D " "` node. Move it up by clicking and dragging on the " "manipulator's green arrow and click and drag on the red arc to rotate it " "around the X-axis, until the ground is lit." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:150 msgid "In the *Inspector*, turn on *Shadow* by clicking the checkbox." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:154 msgid "At this point, your project should look like this." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:158 msgid "" "That's our starting point. In the next part, we will work on the player " "scene and base movement." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:4 msgid "Player scene and input actions" msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:6 msgid "" "In the next two lessons, we will design the player scene, register custom " "input actions, and code player movement. By the end, you'll have a playable " "character that moves in eight directions." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:10 msgid "" "Create a new scene by going to the **Scene** menu in the top-left and " "clicking **New Scene**." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:15 msgid "" "Click the **Other Node** button and select the ``CharacterBody3D`` node type " "to create a :ref:`CharacterBody3D ` as the root node." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:20 msgid "" "Rename the :ref:`CharacterBody3D ` to ``Player``. " "Character bodies are complementary to the area and rigid bodies used in the " "2D game tutorial. Like rigid bodies, they can move and collide with the " "environment, but instead of being controlled by the physics engine, **you** " "dictate their movement. You will see how we use the node's unique features " "when we code the jump and squash mechanics." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:29 msgid "" "To learn more about the different physics node types, see " "the :ref:`doc_physics_introduction`." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:32 msgid "" "For now, we're going to create a basic rig for our character's 3D model. " "This will allow us to rotate the model later via code while it plays an " "animation." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:35 msgid "" "Add a :ref:`Node3D ` node as a child of ``Player``. Select the " "``Player`` node in the **Scene** tree and click the \"**+**\" button to add " "a child node. Rename it to ``Pivot``." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:41 msgid "" "Then, in the FileSystem dock, expand the ``art/`` folder by double-clicking " "it and drag and drop ``player.glb`` onto ``Pivot``." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:47 msgid "" "This should instantiate the model as a child of ``Pivot``. You can rename it " "to ``Character``." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:54 msgid "" "The ``.glb`` files contain 3D scene data based on the open source glTF 2.0 " "specification. They're a modern and powerful alternative to a proprietary " "format like FBX, which Godot also supports. To produce these files, we " "designed the model in `Blender 3D `__ and exported " "it to glTF." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:59 msgid "" "As with all kinds of physics nodes, we need a collision shape for our " "character to collide with the environment. Select the ``Player`` node again " "and add a child node :ref:`CollisionShape3D `. In " "the **Inspector**, on the **Shape** property, add a new :ref:`SphereShape3D " "`." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:66 msgid "The sphere's wireframe appears below the character." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:70 msgid "" "It will be the shape the physics engine uses to collide with the " "environment, so we want it to better fit the 3D model. Make it a bit larger " "by dragging the orange dot in the viewport. My sphere has a radius of about " "``0.8`` meters." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:74 msgid "" "Then, move the collision shape up so its bottom roughly aligns with the " "grid's plane." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:78 msgid "" "To make moving the shape easier, you can toggle the model's visibility by " "clicking the **eye icon** next to the ``Character`` or the ``Pivot`` nodes." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:83 msgid "Save the scene as ``player.tscn``." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:85 msgid "" "With the nodes ready, we can almost get coding. But first, we need to define " "some input actions." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:91 msgid "Creating input actions" msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:93 msgid "" "To move the character, we will listen to the player's input, like pressing " "the arrow keys. In Godot, while we could write all the key bindings in code, " "there's a powerful system that allows you to assign a label to a set of keys " "and buttons. This simplifies our scripts and makes them more readable." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:98 msgid "" "This system is the Input Map. To access its editor, head to the **Project** " "menu and select **Project Settings...**." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:103 msgid "" "At the top, there are multiple tabs. Click on **Input Map**. This window " "allows you to add new actions at the top; they are your labels. In the " "bottom part, you can bind keys to these actions." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:109 msgid "" "Godot projects come with some predefined actions designed for user interface " "design (see above screenshot). These will become visible if you enable the " "**Show Built-in Actions** toggle. We could use these here, but instead we're " "defining our own to support gamepads. Leave **Show Built-in Actions** " "disabled." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:114 msgid "" "We're going to name our actions ``move_left``, ``move_right``, " "``move_forward``, ``move_back``, and ``jump``." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:117 msgid "" "To add an action, write its name in the bar at the top and press Enter or " "click the **Add** button." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:121 msgid "Create the following five actions:" msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:125 msgid "" "To bind a key or button to an action, click the \"**+**\" button to its " "right. Do this for ``move_left``. Press the left arrow key and click **OK**." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:130 msgid "Bind also the :kbd:`A` key, onto the action ``move_left``." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:134 msgid "" "Let's now add support for a gamepad's left joystick. Click the \"**+**\" " "button again but this time, select the input within the input tree yourself. " "Select the negative X axis of the left joystick under **Joypad Axes**." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:140 msgid "Leave the other values as default and press **OK**." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:144 msgid "" "If you want controllers to have different input actions, you should use the " "Devices option in Additional Options. Device 0 corresponds to the first " "plugged gamepad, Device 1 corresponds to the second plugged gamepad, and so " "on." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:146 msgid "" "Do the same for the other input actions. For example, bind the right arrow, " "D, and the left joystick's positive axis to ``move_right``. After binding " "all keys, your interface should look like this." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:152 msgid "" "The final action to set up is the ``jump`` action. Bind the Space key and " "the gamepad's A button located under **Joypad Buttons**." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:157 msgid "Your jump input action should look like this." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:161 msgid "" "That's all the actions we need for this game. You can use this menu to label " "any groups of keys and buttons in your projects." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:164 msgid "In the next part, we'll code and test the player's movement." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:4 msgid "Moving the player with code" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:6 msgid "" "It's time to code! We're going to use the input actions we created in the " "last part to move the character." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:20 msgid "" "Right-click the ``Player`` node and select *Attach Script* to add a new " "script to it. In the popup, set the *Template* to *Empty* before pressing " "the *Create* button. We set it to *Empty* because we want to write our own " "code for player movement." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:27 msgid "" "Let's start with the class's properties. We're going to define a movement " "speed, a fall acceleration representing gravity, and a velocity we'll use to " "move the character." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:62 msgid "" "These are common properties for a moving body. The ``target_velocity`` is " "a :ref:`3D vector ` combining a speed with a direction. Here, " "we define it as a property because we want to update and reuse its value " "across frames." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:68 msgid "" "The values are quite different from 2D code because distances are in meters. " "While in 2D, a thousand units (pixels) may only correspond to half of your " "screen's width, in 3D, it's a kilometer." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:72 msgid "" "Let's code the movement. We start by calculating the input direction vector " "using the global ``Input`` object, in ``_physics_process()``." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:122 msgid "" "Here, instead of ``_process()``, we're going to make all calculations using " "the ``_physics_process()`` virtual function. It's designed specifically for " "physics-related code like moving a kinematic or rigid body. It updates the " "node using fixed time intervals." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:128 msgid "" "To learn more about the difference between ``_process()`` and " "``_physics_process()``, see :ref:`doc_idle_and_physics_processing`." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:131 msgid "" "We start by initializing a ``direction`` variable to ``Vector3.ZERO``. Then, " "we check if the player is pressing one or more of the ``move_*`` inputs and " "update the vector's ``x`` and ``z`` components accordingly. These correspond " "to the ground plane's axes." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:136 msgid "" "These four conditions give us eight possibilities and eight possible " "directions." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:138 msgid "" "In case the player presses, say, both W and D simultaneously, the vector " "will have a length of about ``1.4``. But if they press a single key, it will " "have a length of ``1``. We want the vector's length to be consistent, and " "not move faster diagonally. To do so, we can call its ``normalized()`` " "method." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:168 msgid "" "Here, we only normalize the vector if the direction has a length greater " "than zero, which means the player is pressing a direction key." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:171 msgid "" "We compute the direction the ``$Pivot`` is looking by creating a :ref:`Basis " "` that looks in the ``direction`` direction." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:174 msgid "" "Then, we update the velocity. We have to calculate the ground velocity and " "the fall speed separately. Be sure to go back one tab so the lines are " "inside the ``_physics_process()`` function but outside the condition we just " "wrote above." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:223 msgid "" "The ``CharacterBody3D.is_on_floor()`` function returns ``true`` if the body " "collided with the floor in this frame. That's why we apply gravity to the " "``Player`` only while it is in the air." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:226 msgid "" "For the vertical velocity, we subtract the fall acceleration multiplied by " "the delta time every frame. This line of code will cause our character to " "fall in every frame, as long as it is not on or colliding with the floor." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:230 msgid "" "The physics engine can only detect interactions with walls, the floor, or " "other bodies during a given frame if movement and collisions happen. We will " "use this property later to code the jump." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:234 msgid "" "On the last line, we call ``CharacterBody3D.move_and_slide()`` which is a " "powerful method of the ``CharacterBody3D`` class that allows you to move a " "character smoothly. If it hits a wall midway through a motion, the engine " "will try to smooth it out for you. It uses the *velocity* value native to " "the :ref:`CharacterBody3D `" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:246 msgid "And that's all the code you need to move the character on the floor." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:248 msgid "Here is the complete ``player.gd`` code for reference." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:352 msgid "Testing our player's movement" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:354 msgid "" "We're going to put our player in the ``Main`` scene to test it. To do so, we " "need to instantiate the player and then add a camera. Unlike in 2D, in 3D, " "you won't see anything if your viewport doesn't have a camera pointing at " "something." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:358 msgid "" "Save your ``Player`` scene and open the ``Main`` scene. You can click on the " "*Main* tab at the top of the editor to do so." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:363 msgid "" "If you closed the scene before, head to the *FileSystem* dock and double-" "click ``main.tscn`` to re-open it." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:366 msgid "" "To instantiate the ``Player``, right-click on the ``Main`` node and select " "*Instantiate Child Scene*." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:371 msgid "" "In the popup, double-click ``player.tscn``. The character should appear in " "the center of the viewport." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:375 msgid "Adding a camera" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:377 msgid "" "Let's add the camera next. Like we did with our *Player*\\ 's *Pivot*, we're " "going to create a basic rig. Right-click on the ``Main`` node again and " "select *Add Child Node*. Create a new :ref:`Marker3D `, and " "name it ``CameraPivot``. Select ``CameraPivot`` and add a child " "node :ref:`Camera3D ` to it. Your scene tree should look " "similar to this." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:383 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:44 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:64 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:48 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:30 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:36 #: ../../docs/community/asset_library/using_assetlib.rst:80 msgid "|image3|" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:454 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:349 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:378 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:517 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:451 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:619 #: ../../docs/community/asset_library/using_assetlib.rst:189 msgid "image3" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:385 msgid "" "Notice the *Preview* checkbox that appears in the top-left of the 3D view " "when you have the *Camera* selected. You can click it to preview the in-game " "camera projection." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:388 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:47 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:52 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:73 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:54 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:35 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:41 #: ../../docs/community/asset_library/using_assetlib.rst:85 msgid "|image4|" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:455 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:337 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:350 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:379 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:518 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:452 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:620 #: ../../docs/community/asset_library/using_assetlib.rst:190 msgid "image4" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:390 msgid "" "We're going to use the *Pivot* to rotate the camera as if it was on a crane. " "Let's first split the 3D view to be able to freely navigate the scene and " "see what the camera sees." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:394 msgid "" "In the toolbar right above the viewport, click on *View*, then *2 " "Viewports*. You can also press :kbd:`Ctrl + 2` (:kbd:`Cmd + 2` on macOS)." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:397 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:91 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:195 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:96 #: ../../docs/community/asset_library/using_assetlib.rst:164 msgid "|image11|" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:462 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:357 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:459 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:627 #: ../../docs/community/asset_library/using_assetlib.rst:197 msgid "image11" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:399 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:83 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:56 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:82 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:113 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:47 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:49 #: ../../docs/community/asset_library/using_assetlib.rst:89 msgid "|image5|" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:456 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:338 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:351 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:380 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:519 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:453 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:621 #: ../../docs/community/asset_library/using_assetlib.rst:191 msgid "image5" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:401 msgid "" "On the bottom view, select your :ref:`Camera3D ` and turn on " "camera Preview by clicking the checkbox." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:404 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:87 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:61 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:90 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:52 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:55 #: ../../docs/community/asset_library/using_assetlib.rst:98 msgid "|image6|" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:457 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:339 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:352 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:381 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:454 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:622 #: ../../docs/community/asset_library/using_assetlib.rst:192 msgid "image6" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:406 msgid "" "In the top view, make sure your *Camera3D* is selected and move the camera " "about ``19`` units on the Z axis (drag the blue arrow)." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:409 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:99 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:66 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:186 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:72 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:62 #: ../../docs/community/asset_library/using_assetlib.rst:124 msgid "|image7|" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:458 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:340 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:353 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:382 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:455 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:623 #: ../../docs/community/asset_library/using_assetlib.rst:193 msgid "image7" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:411 msgid "" "Here's where the magic happens. Select the *CameraPivot* and rotate it " "``-45`` degrees around the X axis (using the red circle). You'll see the " "camera move as if it was attached to a crane." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:415 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:222 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:72 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:190 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:106 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:67 #: ../../docs/community/asset_library/using_assetlib.rst:132 msgid "|image8|" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:459 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:341 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:354 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:383 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:456 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:624 #: ../../docs/community/asset_library/using_assetlib.rst:194 msgid "image8" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:417 msgid "" "You can run the scene by pressing :kbd:`F6` (:kbd:`Cmd + R` on macOS) and " "press the arrow keys to move the character." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:420 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:227 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:77 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:194 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:167 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:83 #: ../../docs/community/asset_library/using_assetlib.rst:153 msgid "|image9|" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:460 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:342 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:355 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:384 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:457 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:625 #: ../../docs/community/asset_library/using_assetlib.rst:195 msgid "image9" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:422 msgid "" "We can see some empty space around the character due to the perspective " "projection. In this game, we're going to use an orthographic projection " "instead to better frame the gameplay area and make it easier for the player " "to read distances." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:427 msgid "" "Select the *Camera* again and in the *Inspector*, set the *Projection* to " "*Orthogonal* and the *Size* to ``19``. The character should now look flatter " "and the ground should fill the background." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:433 msgid "" "When using an orthogonal camera in Godot 4, directional shadow quality is " "dependent on the camera's *Far* value. The higher the *Far* value, the " "further away the camera will be able to see. However, higher *Far* values " "also decrease shadow quality as the shadow rendering has to cover a greater " "distance." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:439 msgid "" "If directional shadows look too blurry after switching to an orthogonal " "camera, decrease the camera's *Far* property to a lower value such as " "``100``. Don't decrease this *Far* property too much, or objects in the " "distance will start disappearing." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:444 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:231 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:87 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:199 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:191 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:91 #: ../../docs/community/asset_library/using_assetlib.rst:159 msgid "|image10|" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:461 #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:343 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:356 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:385 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:458 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:626 #: ../../docs/community/asset_library/using_assetlib.rst:196 msgid "image10" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:446 msgid "" "Test your scene and you should be able to move in all 8 directions and not " "glitch through the floor!" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:448 msgid "" "Ultimately, we have both player movement and the view in place. Next, we " "will work on the monsters." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:4 msgid "Designing the mob scene" msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:6 msgid "" "In this part, you're going to code the monsters, which we'll call mobs. In " "the next lesson, we'll spawn them randomly around the playable area." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:9 msgid "" "Let's design the monsters themselves in a new scene. The node structure is " "going to be similar to the ``player.tscn`` scene." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:12 msgid "" "Create a scene with, once again, a :ref:`CharacterBody3D " "` node as its root. Name it ``Mob``. Add a child " "node :ref:`Node3D `, name it ``Pivot``. And drag and drop the " "file ``mob.glb`` from the *FileSystem* dock onto the ``Pivot`` to add the " "monster's 3D model to the scene." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:19 msgid "You can rename the newly created ``mob`` node into ``Character``." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:24 msgid "" "We need a collision shape for our body to work. Right-click on the ``Mob`` " "node, the scene's root, and click *Add Child Node*." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:29 msgid "Add a :ref:`CollisionShape3D `." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:34 msgid "In the *Inspector*, assign a *BoxShape3D* to the *Shape* property." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:38 msgid "" "We should change its size to fit the 3D model better. You can do so " "interactively by clicking and dragging on the orange dots." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:41 msgid "" "The box should touch the floor and be a little thinner than the model. " "Physics engines work in such a way that if the player's sphere touches even " "the box's corner, a collision will occur. If the box is a little too big " "compared to the 3D model, you may die at a distance from the monster, and " "the game will feel unfair to the players." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:49 msgid "" "Notice that my box is taller than the monster. It is okay in this game " "because we're looking at the scene from above and using a fixed perspective. " "Collision shapes don't have to match the model exactly. It's the way the " "game feels when you test it that should dictate their form and size." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:55 msgid "Removing monsters off-screen" msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:57 msgid "" "We're going to spawn monsters at regular time intervals in the game level. " "If we're not careful, their count could increase to infinity, and we don't " "want that. Each mob instance has both a memory and a processing cost, and we " "don't want to pay for it when the mob is outside the screen." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:62 msgid "" "Once a monster leaves the screen, we don't need it anymore, so we should " "delete it. Godot has a node that detects when objects leave the " "screen, :ref:`VisibleOnScreenNotifier3D `, " "and we're going to use it to destroy our mobs." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:68 msgid "" "When you keep instancing an object, there's a technique you can use to avoid " "the cost of creating and destroying instances all the time called pooling. " "It consists of pre-creating an array of objects and reusing them over and " "over." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:73 msgid "" "When working with GDScript, you don't need to worry about this. The main " "reason to use pools is to avoid freezes with garbage-collected languages " "like C# or Lua. GDScript uses a different technique to manage memory, " "reference counting, which doesn't have that caveat. You can learn more about " "that here: :ref:`doc_gdscript_basics_memory_management`." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:79 msgid "" "Select the ``Mob`` node and add a child node :ref:`VisibleOnScreenNotifier3D " "`. Another box, pink this time, appears. " "When this box completely leaves the screen, the node will emit a signal." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:85 msgid "Resize it using the orange dots until it covers the entire 3D model." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:90 msgid "Coding the mob's movement" msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:92 msgid "" "Let's implement the monster's motion. We're going to do this in two steps. " "First, we'll write a script on the ``Mob`` that defines a function to " "initialize the monster. We'll then code the randomized spawn mechanism in " "the ``main.tscn`` scene and call the function from there." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:97 msgid "Attach a script to the ``Mob``." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:101 msgid "" "Here's the movement code to start with. We define two properties, " "``min_speed`` and ``max_speed``, to define a random speed range, which we " "will later use to define ``CharacterBody3D.velocity``." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:139 msgid "" "Similarly to the player, we move the mob every frame by calling the function " "``CharacterBody3D.move_and_slide()``. This time, we don't update the " "``velocity`` every frame; we want the monster to move at a constant speed " "and leave the screen, even if it were to hit an obstacle." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:144 msgid "" "We need to define another function to calculate the " "``CharacterBody3D.velocity``. This function will turn the monster towards " "the player and randomize both its angle of motion and its velocity." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:148 msgid "" "The function will take a ``start_position``,the mob's spawn position, and " "the ``player_position`` as its arguments." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:151 msgid "" "We position the mob at ``start_position`` and turn it towards the player " "using the ``look_at_from_position()`` method, and randomize the angle by " "rotating a random amount around the Y axis. Below, ``randf_range()`` outputs " "a random value between ``-PI / 4`` radians and ``PI / 4`` radians." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:181 msgid "" "We got a random position, now we need a ``random_speed``. ``randi_range()`` " "will be useful as it gives random int values, and we will use ``min_speed`` " "and ``max_speed``. ``random_speed`` is just an integer, and we just use it " "to multiply our ``CharacterBody3D.velocity``. After ``random_speed`` is " "applied, we rotate ``CharacterBody3D.velocity`` Vector3 towards the player." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:214 msgid "Leaving the screen" msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:216 msgid "" "We still have to destroy the mobs when they leave the screen. To do so, " "we'll connect our :ref:`VisibleOnScreenNotifier3D " "` node's ``screen_exited`` signal to the " "``Mob``." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:219 msgid "" "Head back to the 3D viewport by clicking on the *3D* label at the top of the " "editor. You can also press :kbd:`Ctrl + F2` (:kbd:`Opt + 2` on macOS)." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:224 msgid "" "Select the :ref:`VisibleOnScreenNotifier3D " "` node and on the right side of the " "interface, navigate to the *Node* dock. Double-click the ``screen_exited()`` " "signal." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:229 msgid "Connect the signal to the ``Mob``" msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:233 msgid "" "This will add a new function for you in your mob script, " "``_on_visible_on_screen_notifier_3d_screen_exited()``. From it, call the " "``queue_free()`` method. This function destroys the instance it's called on." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:252 msgid "" "Our monster is ready to enter the game! In the next part, you will spawn " "monsters in the game level." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:255 msgid "Here is the complete ``mob.gd`` script for reference." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:4 msgid "Spawning monsters" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:6 msgid "" "In this part, we're going to spawn monsters along a path randomly. By the " "end, you will have monsters roaming the game board." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:11 msgid "" "Double-click on ``main.tscn`` in the *FileSystem* dock to open the ``Main`` " "scene." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:13 msgid "" "Before drawing the path, we're going to change the game resolution. Our game " "has a default window size of ``1152x648``. We're going to set it to " "``720x540``, a nice little box." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:17 msgid "Go to *Project -> Project Settings*." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:21 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 *Viewport Width* to ``720`` and the *Viewport Height* to ``540``." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:29 msgid "Creating the spawn path" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:31 msgid "" "Like you did in the 2D game tutorial, you're going to design a path and use " "a :ref:`PathFollow3D ` node to sample random locations " "on it." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:34 msgid "" "In 3D though, it's a bit more complicated to draw the path. We want it to be " "around the game view so monsters appear right outside the screen. But if we " "draw a path, we won't see it from the camera preview." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:38 msgid "" "To find the view's limits, we can use some placeholder meshes. Your viewport " "should still be split into two parts, with the camera preview at the bottom. " "If that isn't the case, press :kbd:`Ctrl + 2` (:kbd:`Cmd + 2` on macOS) to " "split the view into two. Select the :ref:`Camera3D ` node " "and click the *Preview* checkbox in the bottom viewport." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:47 msgid "Adding placeholder cylinders" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:49 msgid "" "Let's add the placeholder meshes. Add a new :ref:`Node3D ` as " "a child of the ``Main`` node and name it ``Cylinders``. We'll use it to " "group the cylinders. Select ``Cylinders`` and add a child " "node :ref:`MeshInstance3D `" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:54 msgid "In the *Inspector*, assign a *CylinderMesh* to the *Mesh* property." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:58 msgid "" "Set the top viewport to the top orthogonal view using the menu in the " "viewport's top-left corner. Alternatively, you can press the keypad's 7 key." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:63 msgid "" "The grid may be distracting. You can toggle it by going to the *View* menu " "in the toolbar and clicking *View Grid*." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:68 msgid "" "You now want to move the cylinder along the ground plane, looking at the " "camera preview in the bottom viewport. I recommend using grid snap to do so. " "You can toggle it by clicking the magnet icon in the toolbar or pressing Y." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:74 msgid "" "Move the cylinder so it's right outside the camera's view in the top-left " "corner." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:79 msgid "" "We're going to create copies of the mesh and place them around the game " "area. Press :kbd:`Ctrl + D` (:kbd:`Cmd + D` on macOS) to duplicate the node. " "You can also right-click the node in the *Scene* dock and select " "*Duplicate*. Move the copy down along the blue Z axis until it's right " "outside the camera's preview." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:84 msgid "" "Select both cylinders by pressing the :kbd:`Shift` key and clicking on the " "unselected one and duplicate them." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:89 msgid "Move them to the right by dragging the red X axis." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:93 msgid "" "They're a bit hard to see in white, aren't they? Let's make them stand out " "by giving them a new material." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:96 msgid "" "In 3D, materials define a surface's visual properties like its color, how it " "reflects light, and more. We can use them to change the color of a mesh." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:99 msgid "" "We can update all four cylinders at once. Select all the mesh instances in " "the *Scene* dock. To do so, you can click on the first one and Shift click " "on the last one." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:103 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:200 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:109 #: ../../docs/community/asset_library/using_assetlib.rst:172 msgid "|image12|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:358 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:460 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:628 #: ../../docs/community/asset_library/using_assetlib.rst:198 msgid "image12" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:105 msgid "" "In the *Inspector*, expand the *Material* section and assign " "a :ref:`StandardMaterial3D ` to slot *0*." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:107 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:214 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:118 #: ../../docs/community/asset_library/using_assetlib.rst:179 msgid "|image13|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:359 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:461 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:629 #: ../../docs/community/asset_library/using_assetlib.rst:199 msgid "image13" msgstr "" #: ../../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:113 msgid "Expand the *Albedo* section." msgstr "" #: ../../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:120 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:221 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:137 #: ../../docs/community/asset_library/using_assetlib.rst:126 msgid "|image14|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:360 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:462 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:630 #: ../../docs/community/asset_library/using_assetlib.rst:200 msgid "image14" msgstr "" #: ../../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:126 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:310 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:148 msgid "|image15|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:361 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:463 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:631 msgid "image15" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:128 msgid "" "Add a child node :ref:`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:131 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:315 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:153 msgid "|image16|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:362 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:464 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:632 msgid "image16" msgstr "" #: ../../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: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:139 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:322 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:159 msgid "|image17|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:363 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:465 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:633 msgid "image17" msgstr "" #: ../../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:143 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:333 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:166 msgid "|image18|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:364 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:466 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:634 msgid "image18" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:145 msgid "" "To sample random positions on it, we need a :ref:`PathFollow3D " "` node. Add a :ref:`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:149 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:342 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:170 msgid "|image19|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:365 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:467 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:635 msgid "image19" msgstr "" #: ../../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:154 msgid "Spawning monsters randomly" msgstr "" #: ../../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: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: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: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:187 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:348 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:174 msgid "|image20|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:366 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:468 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:636 msgid "image20" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:189 msgid "" "Add a new :ref:`Timer ` node as a child of ``Main``. Name it " "``MobTimer``." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:191 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:198 msgid "|image21|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:367 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:637 msgid "image21" msgstr "" #: ../../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:196 msgid "|image22|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:368 msgid "image22" msgstr "" #: ../../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: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:206 msgid "|image23|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:369 msgid "image23" msgstr "" #: ../../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:210 msgid "|image24|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:370 msgid "image24" msgstr "" #: ../../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:215 msgid "Let's code the mob spawning logic. We're going to:" msgstr "" #: ../../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:218 msgid "Sample a random position on the spawn path." msgstr "" #: ../../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: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:222 msgid "Add the mob as a child of the *Main* node." msgstr "" #: ../../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: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:282 msgid "gives an error because there is no $Player!" msgstr "" #: ../../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:338 msgid "" "You can test the scene by pressing :kbd:`F6` (:kbd:`Cmd + R` on macOS). You " "should see the monsters spawn and move in a straight line." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:341 msgid "|image25|" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:371 msgid "image25" msgstr "" #: ../../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 "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:4 msgid "Jumping and squashing monsters" msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:6 msgid "" "In this part, we'll add the ability to jump and squash the monsters. In the " "next lesson, we'll make the player die when a monster hits them on the " "ground." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:9 msgid "" "First, we have to change a few settings related to physics interactions. " "Enter the world of :ref:`physics layers " "`." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:14 msgid "Controlling physics interactions" msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:16 msgid "" "Physics bodies have access to two complementary properties: layers and " "masks. Layers define on which physics layer(s) an object is." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:19 msgid "" "Masks control the layers that a body will listen to and detect. This affects " "collision detection. When you want two bodies to interact, you need at least " "one to have a mask corresponding to the other." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:23 msgid "If that's confusing, don't worry, we'll see three examples in a second." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:25 msgid "" "The important point is that you can use layers and masks to filter physics " "interactions, control performance, and remove the need for extra conditions " "in your code." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:29 msgid "" "By default, all physics bodies and areas are set to both layer and mask " "``1``. This means they all collide with each other." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:32 msgid "" "Physics layers are represented by numbers, but we can give them names to " "keep track of what's what." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:36 msgid "Setting layer names" msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:38 msgid "" "Let's give our physics layers a name. Go to *Project -> Project Settings*." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:42 msgid "" "In the left menu, navigate down to *Layer Names -> 3D Physics*. You can see " "a list of layers with a field next to each of them on the right. You can set " "their names there. Name the first three layers *player*, *enemies*, and " "*world*, respectively." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:49 msgid "Now, we can assign them to our physics nodes." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:52 msgid "Assigning layers and masks" msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:54 msgid "" "In the *Main* scene, select the ``Ground`` node. In the *Inspector*, expand " "the *Collision* section. There, you can see the node's layers and masks as a " "grid of buttons." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:60 msgid "" "The ground is part of the world, so we want it to be part of the third " "layer. Click the lit button to toggle **off** the first *Layer* and toggle " "**on** the third one. Then, toggle **off** the *Mask* by clicking on it." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:66 msgid "" "As mentioned before, the *Mask* property allows a node to listen to " "interaction with other physics objects, but we don't need it to have " "collisions. ``Ground`` doesn't need to listen to anything; it's just there " "to prevent creatures from falling." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:70 msgid "" "Note that you can click the \"...\" button on the right side of the " "properties to see a list of named checkboxes." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:75 msgid "" "Next up are the ``Player`` and the ``Mob``. Open ``player.tscn`` by double-" "clicking the file in the *FileSystem* dock." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:78 msgid "" "Select the *Player* node and set its *Collision -> Mask* to both \"enemies\" " "and \"world\". You can leave the default *Layer* property as it is, because " "the first layer is the \"player\" layer." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:84 msgid "" "Then, open the *Mob* scene by double-clicking on ``mob.tscn`` and select the " "``Mob`` node." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:87 msgid "" "Set its *Collision -> Layer* to \"enemies\" and unset its *Collision -> " "Mask*, leaving the mask empty." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:92 msgid "" "These settings mean the monsters will move through one another. If you want " "the monsters to collide with and slide against each other, turn **on** the " "\"enemies\" mask." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:98 msgid "" "The mobs don't need to mask the \"world\" layer because they only move on " "the XZ plane. We don't apply any gravity to them by design." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:102 msgid "Jumping" msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:104 msgid "" "The jumping mechanic itself requires only two lines of code. Open the " "*Player* script. We need a value to control the jump's strength and update " "``_physics_process()`` to code the jump." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:108 msgid "" "After the line that defines ``fall_acceleration``, at the top of the script, " "add the ``jump_impulse``." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:127 msgid "" "Inside ``_physics_process()``, add the following code before the " "``move_and_slide()`` codeblock." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:156 msgid "That's all you need to jump!" msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:158 msgid "" "The ``is_on_floor()`` method is a tool from the ``CharacterBody3D`` class. " "It returns ``true`` if the body collided with the floor in this frame. " "That's why we apply gravity to the *Player*: so we collide with the floor " "instead of floating over it like the monsters." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:163 msgid "" "If the character is on the floor and the player presses \"jump\", we " "instantly give them a lot of vertical speed. In games, you really want " "controls to be responsive and giving instant speed boosts like these, while " "unrealistic, feels great." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:168 msgid "" "Notice that the Y axis is positive upwards. That's unlike 2D, where the Y " "axis is positive downwards." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:172 msgid "Squashing monsters" msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:174 msgid "" "Let's add the squash mechanic next. We're going to make the character bounce " "over monsters and kill them at the same time." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:177 msgid "" "We need to detect collisions with a monster and to differentiate them from " "collisions with the floor. To do so, we can use Godot's :ref:`group " "` tagging feature." 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. Click on the *+* button to open the *Create new " "Group* dialog." msgstr "" #: ../../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: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: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: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:205 msgid "Coding the squash mechanic" msgstr "" #: ../../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: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: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: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: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: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:300 msgid "" "The functions ``get_slide_collision_count()`` and ``get_slide_collision()`` " "both come from the :ref:`CharacterBody3D ` class and " "are related to ``move_and_slide()``." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:304 msgid "" "``get_slide_collision()`` returns " "a :ref:`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:312 msgid "" "The method ``is_in_group()`` is available on every :ref:`Node`." msgstr "" #: ../../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: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: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: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: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:366 msgid "" "When using C#, Godot will create the appropriate events automatically for " "all Signals ending with `EventHandler`, see :ref:`C# Signals " "`." msgstr "" #: ../../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: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:373 msgid "However, the player won't die yet. We'll work on that in the next part." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:4 msgid "Killing the player" msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:6 msgid "" "We can kill enemies by jumping on them, but the player still can't die. " "Let's fix this." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:9 msgid "" "We want to detect being hit by an enemy differently from squashing them. We " "want the player to die when they're moving on the floor, but not if they're " "in the air. We could use vector math to distinguish the two kinds of " "collisions. Instead, though, we will use an :ref:`Area3D ` " "node, which works well for hitboxes." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:16 msgid "Hitbox with the Area node" msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:18 msgid "" "Head back to the ``player.tscn`` scene and add a new child node :ref:`Area3D " "`. Name it ``MobDetector`` Add a :ref:`CollisionShape3D " "` node as a child of it." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:24 msgid "In the *Inspector*, assign a cylinder shape to it." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:28 msgid "" "Here is a trick you can use to make the collisions only happen when the " "player is on the ground or close to it. You can reduce the cylinder's height " "and move it up to the top of the character. This way, when the player jumps, " "the shape will be too high up for the enemies to collide with it." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:36 msgid "" "You also want the cylinder to be wider than the sphere. This way, the player " "gets hit before colliding and being pushed on top of the monster's collision " "box." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:40 msgid "The wider the cylinder, the more easily the player will get killed." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:42 msgid "" "Next, select the ``MobDetector`` node again, and in the *Inspector*, turn " "**off** its *Monitorable* property. This makes it so other physics nodes " "cannot detect the area. The complementary *Monitoring* property allows it to " "detect collisions. Then, remove the *Collision -> Layer* and set the mask to " "the \"enemies\" layer." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:50 msgid "" "When areas detect a collision, they emit signals. We're going to connect one " "to the ``Player`` node. Select ``MobDetector`` and go to *Inspector*'s " "*Node* tab, double-click the ``body_entered`` signal and connect it to the " "``Player``" msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:56 msgid "" "The *MobDetector* will emit ``body_entered`` when a :ref:`CharacterBody3D " "` or a :ref:`RigidBody3D ` node " "enters it. As it only masks the \"enemies\" physics layers, it will only " "detect the ``Mob`` nodes." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:60 msgid "" "Code-wise, we're going to do two things: emit a signal we'll later use to " "end the game and destroy the player. We can wrap these operations in a " "``die()`` function that helps us put a descriptive label on the code." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:104 msgid "Ending the game" msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:106 msgid "" "We can use the ``Player``\\ 's ``hit`` signal to end the game. All we need " "to do is connect it to the ``Main`` node and stop the ``MobTimer`` in " "reaction." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:110 msgid "" "Open ``main.tscn``, select the ``Player`` node, and in the *Node* dock, " "connect its ``hit`` signal to the ``Main`` node." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:115 msgid "Get the timer, and stop it, in the ``_on_player_hit()`` function." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:131 msgid "" "If you try the game now, the monsters will stop spawning when you die, and " "the remaining ones will leave the screen." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:134 msgid "" "Notice also that the game no longer crashes or displays an error when the " "player dies. Because we are stopping the MobTimer, it no longer triggers the " "``_on_mob_timer_timeout()`` function." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:137 msgid "" "Also note that the enemy colliding with the player and dying depends on the " "size and position of the ``Player`` and the ``Mob``\\ 's collision shapes. " "You may need to move them and resize them to achieve a tight game feel." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:141 msgid "" "You can pat yourself on the back: you prototyped a complete 3D game, even if " "it's still a bit rough." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:144 msgid "" "From there, we'll add a score, the option to retry the game, and you'll see " "how you can make the game feel much more alive with minimalistic animations." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:149 msgid "Code checkpoint" msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:151 msgid "" "Here are the complete scripts for the ``Main``, ``Mob``, and ``Player`` " "nodes, for reference. You can use them to compare and check your code." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:154 msgid "Starting with ``main.gd``." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:216 msgid "Next is ``mob.gd``." msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:311 msgid "Finally, the longest script, ``player.gd``:" msgstr "" #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:512 msgid "See you in the next lesson to add the score and the retry option." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:4 msgid "Score and replay" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:6 msgid "" "In this part, we'll add the score, music playback, and the ability to " "restart the game." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:9 msgid "" "We have to keep track of the current score in a variable and display it on " "screen using a minimal interface. We will use a text label to do that." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:12 msgid "" "In the main scene, add a new child node :ref:`Control ` to " "``Main`` and name it ``UserInterface``. Ensure you are on the 2D screen, " "where you can edit your User Interface (UI)." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:15 msgid "Add a :ref:`Label ` node and name it ``ScoreLabel``" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:19 msgid "" "In the *Inspector*, set the *Label*'s *Text* to a placeholder like \"Score: " "0\"." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:23 msgid "" "Also, the text is white by default, like our game's background. We need to " "change its color to see it at runtime." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:26 msgid "" "Scroll down to *Theme Overrides*, and expand *Colors* and enable *Font " "Color* in order to tint the text to black (which contrasts well with the " "white 3D scene)" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:32 msgid "" "Finally, click and drag on the text in the viewport to move it away from the " "top-left corner." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:37 msgid "" "The ``UserInterface`` node allows us to group our UI in a branch of the " "scene tree and use a theme resource that will propagate to all its children. " "We'll use it to set our game's font." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:42 msgid "Creating a UI theme" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:44 msgid "" "Once again, select the ``UserInterface`` node. In the *Inspector*, create a " "new theme resource in *Theme -> Theme*." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:49 msgid "" "Click on it to open the theme editor In the bottom panel. It gives you a " "preview of how all the built-in UI widgets will look with your theme " "resource." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:54 msgid "" "By default, a theme only has a few properties: *Default Base Scale*, " "*Default Font* and *Default Font Size*." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:59 msgid "" "You can add more properties to the theme resource to design complex user " "interfaces, but that is beyond the scope of this series. To learn more about " "creating and editing themes, see :ref:`doc_gui_skinning`." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:63 msgid "" "The *Default Font* expects a font file like the ones you have on your " "computer. Two common font file formats are TrueType Font (TTF) and OpenType " "Font (OTF)." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:66 msgid "" "In the *FileSystem* dock, expand the ``fonts`` directory and click and drag " "the ``Montserrat-Medium.ttf`` file we included in the project onto the " "*Default Font*. The text will reappear in the theme preview." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:70 msgid "" "The text is a bit small. Set the *Default Font Size* to ``22`` pixels to " "increase the text's size." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:75 msgid "Keeping track of the score" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:77 msgid "" "Let's work on the score next. Attach a new script to the ``ScoreLabel`` and " "define the ``score`` variable." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:96 msgid "" "The score should increase by ``1`` every time we squash a monster. We can " "use their ``squashed`` signal to know when that happens. However, because we " "instantiate monsters from the code, we cannot connect the mob signal to the " "``ScoreLabel`` via the editor." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:100 msgid "" "Instead, we have to make the connection from the code every time we spawn a " "monster." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:103 msgid "" "Open the script ``main.gd``. If it's still open, you can click on its name " "in the script editor's left column." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:108 msgid "" "Alternatively, you can double-click the ``main.gd`` file in the *FileSystem* " "dock." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:111 msgid "" "At the bottom of the ``_on_mob_timer_timeout()`` function, add the following " "line:" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:131 msgid "" "This line means that when the mob emits the ``squashed`` signal, the " "``ScoreLabel`` node will receive it and call the function " "``_on_mob_squashed()``." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:134 msgid "" "Head back to the ``score_label.gd`` script to define the " "``_on_mob_squashed()`` callback function." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:137 msgid "There, we increment the score and update the displayed text." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:154 msgid "" "The second line uses the value of the ``score`` variable to replace the " "placeholder ``%s``. When using this feature, Godot automatically converts " "values to string text, which is convenient when outputting text in labels or " "when using the ``print()`` function." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:161 msgid "" "You can learn more about string formatting here: :ref:`doc_gdscript_printf`. " "In C#, consider using `string interpolation with \"$\" `_." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:164 msgid "" "You can now play the game and squash a few enemies to see the score increase." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:171 msgid "" "In a complex game, you may want to completely separate your user interface " "from the game world. In that case, you would not keep track of the score on " "the label. Instead, you may want to store it in a separate, dedicated " "object. But when prototyping or when your project is simple, it is fine to " "keep your code simple. Programming is always a balancing act." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:178 msgid "Retrying the game" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:180 msgid "" "We'll now add the ability to play again after dying. When the player dies, " "we'll display a message on the screen and wait for input." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:183 msgid "" "Head back to the ``main.tscn`` scene, select the ``UserInterface`` node, add " "a child node :ref:`ColorRect `, and name it ``Retry``. This " "node fills a rectangle with a uniform color and will serve as an overlay to " "darken the screen." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:188 msgid "" "To make it span over the whole viewport, you can use the *Anchor Preset* " "menu in the toolbar." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:193 msgid "Open it and apply the *Full Rect* command." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:197 msgid "" "Nothing happens. Well, almost nothing; only the four green pins move to the " "corners of the selection box." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:202 msgid "" "This is because UI nodes (all the ones with a green icon) work with anchors " "and margins relative to their parent's bounding box. Here, the " "``UserInterface`` node has a small size and the ``Retry`` one is limited by " "it." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:206 msgid "" "Select the ``UserInterface`` and apply *Anchor Preset -> Full Rect* to it as " "well. The ``Retry`` node should now span the whole viewport." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:209 msgid "" "Let's change its color so it darkens the game area. Select ``Retry`` and in " "the *Inspector*, set its *Color* to something both dark and transparent. To " "do so, in the color picker, drag the *A* slider to the left. It controls the " "color's Alpha channel, that is to say, its opacity/transparency." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:216 msgid "" "Next, add a :ref:`Label ` as a child of ``Retry`` and give it " "the *Text* \"Press Enter to retry.\" To move it and anchor it in the center " "of the screen, apply *Anchor Preset -> Center* to it." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:224 msgid "Coding the retry option" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:226 msgid "" "We can now head to the code to show and hide the ``Retry`` node when the " "player dies and plays again." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:229 msgid "" "Open the script ``main.gd``. First, we want to hide the overlay at the start " "of the game. Add this line to the ``_ready()`` function." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:245 msgid "Then, when the player gets hit, we show the overlay." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:262 msgid "" "Finally, when the ``Retry`` node is visible, we need to listen to the " "player's input and restart the game if they press enter. To do this, we use " "the built-in ``_unhandled_input()`` callback, which is triggered on any " "input." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:266 msgid "" "If the player pressed the predefined ``ui_accept`` input action and " "``Retry`` is visible, we reload the current scene." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:288 msgid "" "The function ``get_tree()`` gives us access to the global :ref:`SceneTree " "` object, which allows us to reload and restart the current " "scene." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:293 msgid "Adding music" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:295 msgid "" "To add music that plays continuously in the background, we're going to use " "another feature in Godot: :ref:`autoloads `." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:298 msgid "" "To play audio, all you need to do is add an :ref:`AudioStreamPlayer " "` node to your scene and attach an audio file to " "it. When you start the scene, it can play automatically. However, when you " "reload the scene, like we do to play again, the audio nodes are also reset, " "and the music starts back from the beginning." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:303 msgid "" "You can use the autoload feature to have Godot load a node or a scene " "automatically at the start of the game, outside the current scene. You can " "also use it to create globally accessible objects." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:307 msgid "" "Create a new scene by going to the *Scene* menu and clicking *New Scene* or " "by using the *+* icon next to your currently opened scene." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:312 msgid "" "Click the *Other Node* button to create an :ref:`AudioStreamPlayer " "` and rename it to ``MusicPlayer``." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:317 msgid "" "We included a music soundtrack in the ``art/`` directory, ``House In a " "Forest Loop.ogg``. Click and drag it onto the *Stream* property in the " "*Inspector*. Also, turn on *Autoplay* so the music plays automatically at " "the start of the game." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:324 msgid "Save the scene as ``music_player.tscn``." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:326 msgid "" "We have to register it as an autoload. Head to the *Project -> Project " "Settings…* menu and click on the *Globals -> Autoload* tab." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:329 msgid "" "In the *Path* field, you want to enter the path to your scene. Click the " "folder icon to open the file browser and double-click on " "``music_player.tscn``. Then, click the *Add* button on the right to register " "the node." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:335 msgid "" "``music_player.tscn`` now loads into any scene you open or play. So if you " "run the game now, the music will play automatically in any scene." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:338 msgid "" "Before we wrap up this lesson, here's a quick look at how it works under the " "hood. When you run the game, your *Scene* dock changes to give you two tabs: " "*Remote* and *Local*." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:344 msgid "" "The *Remote* tab allows you to visualize the node tree of your running game. " "There, you will see the *Main* node and everything the scene contains and " "the instantiated mobs at the bottom." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:350 msgid "" "At the top are the autoloaded ``MusicPlayer`` and a *root* node, which is " "your game's viewport." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:353 msgid "" "And that does it for this lesson. In the next part, we'll add an animation " "to make the game both look and feel much nicer." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:356 msgid "Here is the complete ``main.gd`` script for reference." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:4 msgid "Character animation" msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:6 msgid "" "In this final lesson, we'll use Godot's built-in animation tools to make our " "characters float and flap. You'll learn to design animations in the editor " "and use code to make your game feel alive." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:12 msgid "We'll start with an introduction to using the animation editor." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:15 #, fuzzy msgid "Using the animation editor" msgstr "Animacija" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:17 msgid "" "The engine comes with tools to author animations in the editor. You can then " "use the code to play and control them at runtime." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:20 msgid "" "Open the player scene, select the ``Player`` node, and add " "an :ref:`AnimationPlayer ` node." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:22 msgid "The *Animation* dock appears in the bottom panel." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:26 msgid "" "It features a toolbar and the animation drop-down menu at the top, a track " "editor in the middle that's currently empty, and filter, snap, and zoom " "options at the bottom." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:30 msgid "Let's create an animation. Click on *Animation -> New*." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:34 msgid "Name the animation \"float\"." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:38 msgid "" "Once you've created the animation, the timeline appears with numbers " "representing time in seconds." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:43 msgid "" "We want the animation to start playback automatically at the start of the " "game. Also, it should loop." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:46 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:641 #, fuzzy msgid "Autoplay" msgstr "Zamijeni" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:51 msgid "" "You can also pin the animation editor by clicking the pin icon in the top-" "right. This prevents it from folding when you click on the viewport and " "deselect the nodes." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:57 msgid "" "Set the animation duration to ``1.2`` seconds in the top-right of the dock." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:59 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:64 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:70 msgid "The float animation" msgstr "" #: ../../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: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: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: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: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:93 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:98 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:101 msgid "|timeline_05_click|" msgstr "" #: ../../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: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: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:111 msgid "Create a keyframe for both properties" msgstr "" #: ../../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:639 msgid "second_keys_both" msgstr "" #: ../../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: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: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:132 msgid "|animation_final_keyframes|" msgstr "" #: ../../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: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:139 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:144 msgid "We can control the transition between keyframes using easing curves." msgstr "" #: ../../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:150 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:155 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:161 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: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:168 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:172 msgid "Your animation should look something like this." msgstr "" #: ../../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: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: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:191 msgid "Controlling the animation in code" msgstr "" #: ../../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: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:200 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: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: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:254 msgid "Animating the mobs" msgstr "" #: ../../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: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: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:266 msgid "" "Then open ``mob.tscn``, create an :ref:`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: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: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:294 msgid "And with that, you finished coding your first complete 3D game." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:296 msgid "**Congratulations**!" msgstr "" #: ../../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:302 msgid "Here's the *Player* script." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:517 msgid "And the *Mob*'s script." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:4 msgid "Going further" msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:6 msgid "" "You can pat yourself on the back for having completed your first 3D game " "with Godot." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:9 msgid "" "In this series, we went over a wide range of techniques and editor features. " "Hopefully, you've witnessed how intuitive Godot's scene system can be and " "learned a few tricks you can apply in your projects." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:13 msgid "" "But we just scratched the surface: Godot has a lot more in store for you to " "save time creating games. And you can learn all that by browsing the " "documentation." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:16 msgid "" "Where should you begin? Below, you'll find a few pages to start exploring " "and build upon what you've learned so far." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:19 #, fuzzy msgid "" "But before that, here's a link to download a completed version of the " "project: ``_." msgstr "" "Kopiraj `godot-docs repozitorij `__." #: ../../docs/getting_started/first_3d_game/going_further.rst:23 msgid "Exploring the manual" msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:25 msgid "" "The manual is your ally whenever you have a doubt or you're curious about a " "feature. It does not contain tutorials about specific game genres or " "mechanics. Instead, it explains how Godot works in general. In it, you will " "find information about 2D, 3D, physics, rendering and performance, and much " "more." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:30 msgid "Here are the sections we recommend you to explore next:" msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:32 msgid "" "Read the :ref:`Scripting section ` to learn " "essential programming features you'll use in every project." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:34 msgid "" "The :ref:`3D ` and :ref:`Physics ` sections will teach you more about 3D game creation in the engine." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:36 msgid "" ":ref:`Inputs ` is another important one for any " "game project." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:38 msgid "" "You can start with these or, if you prefer, look at the sidebar menu on the " "left and pick your options." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:41 msgid "" "We hope you enjoyed this tutorial series, and we're looking forward to " "seeing what you achieve using Godot." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:6 msgid "" "This series is a collection of best practices to help you work efficiently " "with Godot." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:9 msgid "" "Godot allows for a great amount of flexibility in how you structure a " "project's codebase and break it down into scenes. Each approach has its pros " "and cons, and they can be hard to weigh until you've worked with the engine " "for long enough." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:13 msgid "" "There are always many ways to structure your code and solve specific " "programming problems. It would be impossible to cover them all here." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:16 msgid "" "That is why each article starts from a real-world problem. We will break " "down each problem in fundamental questions, suggest solutions, analyze the " "pros and cons of each option, and highlight the best course of action for " "the problem at hand." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:20 msgid "" "You should start by reading :ref:`doc_what_are_godot_classes`. It explains " "how Godot's nodes and scenes relate to classes and objects in other Object-" "Oriented programming languages. It will help you make sense of the rest of " "the series." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:26 msgid "" "The best practices in Godot rely on Object-Oriented design principles. We " "use tools like the `single responsibility `_ principle and `encapsulation `_." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:4 msgid "Applying object-oriented principles in Godot" msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:6 msgid "" "The engine offers two main ways to create reusable objects: scripts and " "scenes. Neither of these technically define classes under the hood." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:9 msgid "" "Still, many best practices using Godot involve applying object-oriented " "programming principles to the scripts and scenes that compose your game. " "That is why it's useful to understand how we can think of them as classes." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:13 msgid "" "This guide briefly explains how scripts and scenes work in the engine's core " "to help you understand how they work under the hood." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:17 msgid "How scripts work in the engine" msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:19 msgid "" "The engine provides built-in classes like :ref:`Node `. You can " "extend those to create derived types using a script." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:22 msgid "" "These scripts are not technically classes. Instead, they are resources that " "tell the engine a sequence of initializations to perform on one of the " "engine's built-in classes." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:25 msgid "" "Godot's internal classes have methods that register a class's data with " "a :ref:`ClassDB `. This database provides runtime access to " "class information. ``ClassDB`` contains information about classes like:" msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:29 msgid "Properties." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:30 msgid "Methods." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:31 msgid "Constants." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:32 msgid "Signals." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:34 msgid "" "This ``ClassDB`` is what objects check against when performing an operation " "like accessing a property or calling a method. It checks the database's " "records and the object's base types' records to see if the object supports " "the operation." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:38 msgid "" "Attaching a :ref:`Script ` to your object extends the methods, " "properties, and signals available from the ``ClassDB``." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:43 msgid "" "Even scripts that don't use the ``extends`` keyword implicitly inherit from " "the engine's base :ref:`RefCounted ` class. As a result, " "you can instantiate scripts without the ``extends`` keyword from code. Since " "they extend ``RefCounted`` though, you cannot attach them to a :ref:`Node " "`." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:51 msgid "" "The behavior of scenes has many similarities to classes, so it can make " "sense to think of a scene as a class. Scenes are reusable, instantiable, and " "inheritable groups of nodes. Creating a scene is similar to having a script " "that creates nodes and adds them as children using ``add_child()``." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:55 msgid "" "We often pair a scene with a scripted root node that makes use of the " "scene's nodes. As such, the script extends the scene by adding behavior " "through imperative code." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:58 msgid "The content of a scene helps to define:" msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:60 msgid "What nodes are available to the script." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:61 msgid "How they are organized." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:62 msgid "How they are initialized." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:63 msgid "What signal connections they have with each other." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:65 msgid "" "Why is any of this important to scene organization? Because instances of " "scenes *are* objects. As a result, many object-oriented principles that " "apply to written code also apply to scenes: single responsibility, " "encapsulation, and others." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:69 msgid "" "The scene is *always an extension of the script attached to its root node*, " "so you can interpret it as part of a class." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:72 msgid "" "Most of the techniques explained in this best practices series build on this " "point." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:4 msgid "Scene organization" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:6 msgid "" "This article covers topics related to the effective organization of scene " "content. Which nodes should you use? Where should you place them? How should " "they interact?" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:11 msgid "How to build relationships effectively" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:13 msgid "" "When Godot users begin crafting their own scenes, they often run into the " "following problem:" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:16 msgid "" "They create their first scene and fill it with content only to eventually " "end up saving branches of their scene into separate scenes as the nagging " "feeling that they should split things up starts to accumulate. However, they " "then notice that the hard references they were able to rely on before are no " "longer possible. Re-using the scene in multiple places creates issues " "because the node paths do not find their targets and signal connections " "established in the editor break." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:24 msgid "" "To fix these problems, you must instantiate the sub-scenes without them " "requiring details about their environment. You need to be able to trust that " "the sub-scene will create itself without being picky about how it's used." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:28 msgid "" "One of the biggest things to consider in OOP is maintaining focused, " "singular-purpose classes with `loose coupling `_ to other parts of the codebase. This keeps the size of " "objects small (for maintainability) and improves their reusability." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:34 msgid "" "These OOP best practices have *several* implications for best practices in " "scene structure and script usage." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:37 msgid "" "**If at all possible, you should design scenes to have no dependencies.** " "That is, you should create scenes that keep everything they need within " "themselves." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:41 msgid "" "If a scene must interact with an external context, experienced developers " "recommend the use of `Dependency Injection `_. This technique involves having a high-level API " "provide the dependencies of the low-level API. Why do this? Because classes " "which rely on their external environment can inadvertently trigger bugs and " "unexpected behavior." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:48 msgid "" "To do this, you must expose data and then rely on a parent context to " "initialize it:" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:51 msgid "" "Connect to a signal. Extremely safe, but should be used only to \"respond\" " "to behavior, not start it. By convention, signal names are usually past-" "tense verbs like \"entered\", \"skill_activated\", or \"item_collected\"." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:85 msgid "Call a method. Used to start behavior." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:115 msgid "" "Initialize a :ref:`Callable ` property. Safer than a method " "as ownership of the method is unnecessary. Used to start behavior." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:146 msgid "Initialize a Node or other Object reference." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:176 msgid "Initialize a NodePath." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:206 msgid "" "These options hide the points of access from the child node. This in turn " "keeps the child **loosely coupled** to its environment. You can reuse it in " "another context without any extra changes to its API." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:212 msgid "" "Although the examples above illustrate parent-child relationships, the same " "principles apply towards all object relations. Nodes which are siblings " "should only be aware of their own hierarchies while an ancestor mediates " "their communications and references." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:295 msgid "" "The same principles also apply to non-Node objects that maintain " "dependencies on other objects. Whichever object owns the other objects " "should manage the relationships between them." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:301 msgid "" "You should favor keeping data in-house (internal to a scene), though, as " "placing a dependency on an external context, even a loosely coupled one, " "still means that the node will expect something in its environment to be " "true. The project's design philosophies should prevent this from happening. " "If not, the code's inherent liabilities will force developers to use " "documentation to keep track of object relations on a microscopic scale; this " "is otherwise known as development hell. Writing code that relies on external " "documentation to use it safely is error-prone by default." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:310 msgid "" "To avoid creating and maintaining such documentation, you convert the " "dependent node (\"child\" above) into a tool script that implements " "``_get_configuration_warnings()``. Returning a non-empty PackedStringArray " "from it will make the Scene dock generate a warning icon with the string(s) " "as a tooltip by the node. This is the same icon that appears for nodes such " "as the :ref:`Area2D ` node when it has no " "child :ref:`CollisionShape2D ` nodes defined. The " "editor then self-documents the scene through the script code. No content " "duplication via documentation is necessary." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:321 msgid "" "A GUI like this can better inform project users of critical information " "about a Node. Does it have external dependencies? Have those dependencies " "been satisfied? Other programmers, and especially designers and writers, " "will need clear instructions in the messages telling them what to do to " "configure it." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:326 msgid "" "So, why does all this complex switcheroo work? Well, because scenes operate " "best when they operate alone. If unable to work alone, then working with " "others anonymously (with minimal hard dependencies, i.e. loose coupling) is " "the next best thing. Inevitably, changes may need to be made to a class, and " "if these changes cause it to interact with other scenes in unforeseen ways, " "then things will start to break down. The whole point of all this " "indirection is to avoid ending up in a situation where changing one class " "results in adversely affecting other classes dependent on it." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:335 msgid "" "Scripts and scenes, as extensions of engine classes, should abide by *all* " "OOP principles. Examples include..." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:338 msgid "`SOLID `_" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:339 msgid "`DRY `_" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:340 msgid "`KISS `_" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:341 msgid "`YAGNI `_" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:344 msgid "Choosing a node tree structure" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:346 msgid "" "You might start to work on a game but get overwhelmed by the vast " "possibilities before you. You might know what you want to do, what systems " "you want to have, but *where* do you put them all? How you go about making " "your game is always up to you. You can construct node trees in countless " "ways. If you are unsure, this guide can give you a sample of a decent " "structure to start with." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:353 msgid "" "A game should always have an \"entry point\"; somewhere you can definitively " "track where things begin so that you can follow the logic as it continues " "elsewhere. It also serves as a bird's eye view of all other data and logic " "in the program. For traditional applications, this is normally a \"main\" " "function. In Godot, it's a Main node." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:359 #: ../../docs/tutorials/best_practices/scene_organization.rst:367 msgid "Node \"Main\" (main.gd)" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:361 msgid "" "The ``main.gd`` script will serve as the primary controller of your game." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:363 msgid "" "Then you have an in-game \"World\" (a 2D or 3D one). This can be a child of " "Main. In addition, you will need a primary GUI for your game that manages " "the various menus and widgets the project needs." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:368 msgid "Node2D/Node3D \"World\" (game_world.gd)" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:369 msgid "Control \"GUI\" (gui.gd)" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:371 msgid "" "When changing levels, you can then swap out the children of the \"World\" " "node. :ref:`Changing scenes manually ` gives you " "full control over how your game world transitions." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:375 msgid "" "The next step is to consider what gameplay systems your project requires. If " "you have a system that..." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:378 msgid "tracks all of its data internally" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:379 msgid "should be globally accessible" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:380 msgid "should exist in isolation" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:382 msgid "" "... then you should create an :ref:`autoload 'singleton' node " "`." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:386 msgid "" "For smaller games, a simpler alternative with less control would be to have " "a \"Game\" singleton that simply calls " "the :ref:`SceneTree.change_scene_to_file() " "` method to swap out the main " "scene's content. This structure more or less keeps the \"World\" as the main " "game node." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:392 msgid "" "Any GUI would also need to be either a singleton, a transitory part of the " "\"World\", or manually added as a direct child of the root. Otherwise, the " "GUI nodes would also delete themselves during scene transitions." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:396 msgid "" "If you have systems that modify other systems' data, you should define those " "as their own scripts or scenes, rather than autoloads. For more information, " "see :ref:`Autoloads versus regular nodes " "`." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:400 msgid "" "Each subsystem within your game should have its own section within the " "SceneTree. You should use parent-child relationships only in cases where " "nodes are effectively elements of their parents. Does removing the parent " "reasonably mean that the children should also be removed? If not, then it " "should have its own place in the hierarchy as a sibling or some other " "relation." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:408 msgid "" "In some cases, you need these separated nodes to *also* position themselves " "relative to each other. You can use the :ref:`RemoteTransform " "` / :ref:`RemoteTransform2D " "` nodes for this purpose. They will allow a target " "node to conditionally inherit selected transform elements from the Remote\\* " "node. To assign the ``target`` :ref:`NodePath `, use one of " "the following:" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:416 msgid "" "A reliable third party, likely a parent node, to mediate the assignment." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:417 msgid "" "A group, to pull a reference to the desired node (assuming there will only " "ever be one of the targets)." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:420 msgid "" "When you should do this is subjective. The dilemma arises when you must " "micro-manage when a node must move around the SceneTree to preserve itself. " "For example..." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:424 msgid "Add a \"player\" node to a \"room\"." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:425 msgid "Need to change rooms, so you must delete the current room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:426 msgid "" "Before the room can be deleted, you must preserve and/or move the player." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:428 msgid "If memory is not a concern, you can..." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:430 #, fuzzy msgid "Create the new room." msgstr "Započinjanje" #: ../../docs/tutorials/best_practices/scene_organization.rst:431 msgid "Move the player to the new room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:432 msgid "Delete the old room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:434 msgid "If memory is a concern, instead you will need to..." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:436 msgid "Move the player somewhere else in the tree." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:437 msgid "Delete the room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:438 msgid "Instantiate and add the new room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:439 msgid "Re-add the player to the new room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:441 msgid "" "The issue is that the player here is a \"special case\" where the developers " "must *know* that they need to handle the player this way for the project. " "The only way to reliably share this information as a team is to *document* " "it. Keeping implementation details in documentation is dangerous. It's a " "maintenance burden, strains code readability, and unnecessarily bloats the " "intellectual content of a project." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:448 msgid "" "In a more complex game with larger assets, it can be a better idea to keep " "the player somewhere else in the SceneTree entirely. This results in:" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:451 msgid "More consistency." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:452 msgid "No \"special cases\" that must be documented and maintained somewhere." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:453 msgid "" "No opportunity for errors to occur because these details are not accounted " "for." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:456 msgid "" "In contrast, if you ever need a child node that does *not* inherit the " "transform of its parent, you have the following options:" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:459 msgid "" "The **declarative** solution: place a :ref:`Node ` in between " "them. Since it doesn't have a transform, they won't pass this information to " "its children." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:462 msgid "" "The **imperative** solution: Use the ``top_level`` property for " "the :ref:`CanvasItem ` or :ref:`Node3D " "` node. This will make the node ignore its " "inherited transform." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:469 msgid "" "If building a networked game, keep in mind which nodes and gameplay systems " "are relevant to all players versus those just pertinent to the authoritative " "server. For example, users do not all need to have a copy of every players' " "\"PlayerController\" logic - they only need their own. Keeping them in a " "separate branch from the \"world\" can help simplify the management of game " "connections and the like." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:476 msgid "" "The key to scene organization is to consider the SceneTree in relational " "terms rather than spatial terms. Are the nodes dependent on their parent's " "existence? If not, then they can thrive all by themselves somewhere else. If " "they are dependent, then it stands to reason that they should be children of " "that parent (and likely part of that parent's scene if they aren't already)." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:482 msgid "" "Does this mean nodes themselves are components? Not at all. Godot's node " "trees form an aggregation relationship, not one of composition. But while " "you still have the flexibility to move nodes around, it is still best when " "such moves are unnecessary by default." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:4 msgid "When to use scenes versus scripts" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:6 msgid "" "We've already covered how scenes and scripts are different. Scripts define " "an engine class extension with imperative code, scenes with declarative code." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:10 msgid "" "Each system's capabilities are different as a result. Scenes can define how " "an extended class initializes, but not what its behavior actually is. Scenes " "are often used in conjunction with a script, the scene declaring a " "composition of nodes, and the script adding behavior with imperative code." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:16 msgid "Anonymous types" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:18 msgid "" "It *is* possible to completely define a scenes' contents using a script " "alone. This is, in essence, what the Godot Editor does, only in the C++ " "constructor of its objects." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:22 msgid "" "But, choosing which one to use can be a dilemma. Creating script instances " "is identical to creating in-engine classes whereas handling scenes requires " "a change in API:" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:62 msgid "" "Also, scripts will operate a little slower than scenes due to the speed " "differences between engine and script code. The larger and more complex the " "node, the more reason there is to build it as a scene." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:67 msgid "Named types" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:69 msgid "" "Scripts can be registered as a new type within the editor itself. This " "displays it as a new type in the node or resource creation dialog with an " "optional icon. This way, the user's ability to use the script is much more " "streamlined. Rather than having to..." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:74 msgid "Know the base type of the script they would like to use." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:76 msgid "Create an instance of that base type." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:78 msgid "Add the script to the node." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:80 msgid "" "With a registered script, the scripted type instead becomes a creation " "option like the other nodes and resources in the system. The creation dialog " "even has a search bar to look up the type by name." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:85 msgid "There are two systems for registering types:" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:87 msgid ":ref:`Custom Types `" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:89 msgid "Editor-only. Typenames are not accessible at runtime." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:91 msgid "Does not support inherited custom types." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:93 msgid "An initializer tool. Creates the node with the script. Nothing more." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:95 msgid "" "Editor has no type-awareness of the script or its relationship to other " "engine types or scripts." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:98 #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:116 msgid "Allows users to define an icon." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:100 msgid "" "Works for all scripting languages because it deals with Script resources in " "abstract." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:102 msgid "" "Set up using :ref:`EditorPlugin.add_custom_type " "`." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:104 msgid ":ref:`Script Classes `" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:106 msgid "Editor and runtime accessible." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:108 msgid "Displays inheritance relationships in full." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:110 msgid "" "Creates the node with the script, but can also change types or extend the " "type from the editor." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:113 msgid "" "Editor is aware of inheritance relationships between scripts, script " "classes, and engine C++ classes." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:118 msgid "" "Engine developers must add support for languages manually (both name " "exposure and runtime accessibility)." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:121 msgid "" "The Editor scans project folders and registers any exposed names for all " "scripting languages. Each scripting language must implement its own support " "for exposing this information." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:125 msgid "" "Both methodologies add names to the creation dialog, but script classes, in " "particular, also allow for users to access the typename without loading the " "script resource. Creating instances and accessing constants or static " "methods is viable from anywhere." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:130 msgid "" "With features like these, one may wish their type to be a script without a " "scene due to the ease of use it grants users. Those developing plugins or " "creating in-house tools for designers to use will find an easier time of " "things this way." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:135 msgid "" "On the downside, it also means having to use largely imperative programming." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:138 msgid "Performance of Script vs PackedScene" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:140 msgid "" "One last aspect to consider when choosing scenes and scripts is execution " "speed." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:142 msgid "" "As the size of objects increases, the scripts' necessary size to create and " "initialize them grows much larger. Creating node hierarchies demonstrates " "this. Each Node's logic could be several hundred lines of code in length." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:146 msgid "" "The code example below creates a new ``Node``, changes its name, assigns a " "script to it, sets its future parent as its owner so it gets saved to disk " "along with it, and finally adds it as a child of the ``Main`` node:" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:185 msgid "" "Script code like this is much slower than engine-side C++ code. Each " "instruction makes a call to the scripting API which leads to many " "\"lookups\" on the back-end to find the logic to execute." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:189 msgid "" "Scenes help to avoid this performance issue. :ref:`PackedScene " "`, the base type that scenes inherit from, defines " "resources that use serialized data to create objects. The engine can process " "scenes in batches on the back-end and provide much better performance than " "scripts." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:195 #: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:2144 #: ../../docs/tutorials/shaders/your_first_shader/your_first_2d_shader.rst:256 msgid "Conclusion" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:197 msgid "In the end, the best approach is to consider the following:" msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:199 msgid "" "If one wishes to create a basic tool that is going to be re-used in several " "different projects and which people of all skill levels will likely use " "(including those who don't label themselves as \"programmers\"), then " "chances are that it should probably be a script, likely one with a custom " "name/icon." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:204 msgid "" "If one wishes to create a concept that is particular to their game, then it " "should always be a scene. Scenes are easier to track/edit and provide more " "security than scripts." msgstr "" #: ../../docs/tutorials/best_practices/scenes_versus_scripts.rst:208 msgid "" "If one would like to give a name to a scene, then they can still sort of do " "this by declaring a script class and giving it a scene as a constant. The " "script becomes, in effect, a namespace:" msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:4 msgid "Autoloads versus regular nodes" msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:6 msgid "" "Godot offers a feature to automatically load nodes at the root of your " "project, allowing you to access them globally, that can fulfill the role of " "a Singleton: :ref:`doc_singletons_autoload`. These autoloaded nodes are not " "freed when you change the scene from code " "with :ref:`SceneTree.change_scene_to_file " "`." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:11 msgid "" "In this guide, you will learn when to use the Autoload feature, and " "techniques you can use to avoid it." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:15 msgid "The cutting audio issue" msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:17 msgid "" "Other engines can encourage the use of creating manager classes, singletons " "that organize a lot of functionality into a globally accessible object. " "Godot offers many ways to avoid global state thanks to the node tree and " "signals." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:21 msgid "" "For example, let's say we are building a platformer and want to collect " "coins that play a sound effect. There's a node for that: " "the :ref:`AudioStreamPlayer `. But if we call the " "``AudioStreamPlayer`` while it is already playing a sound, the new sound " "interrupts the first." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:26 msgid "" "A solution is to code a global, autoloaded sound manager class. It generates " "a pool of ``AudioStreamPlayer`` nodes that cycle through as each new request " "for sound effects comes in. Say we call that class ``Sound``, you can use it " "from anywhere in your project by calling " "``Sound.play(\"coin_pickup.ogg\")``. This solves the problem in the short " "term but causes more problems:" msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:32 msgid "" "**Global state**: one object is now responsible for all objects' data. If " "the ``Sound`` class has errors or doesn't have an AudioStreamPlayer " "available, all the nodes calling it can break." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:36 msgid "" "**Global access**: now that any object can call ``Sound.play(sound_path)`` " "from anywhere, there's no longer an easy way to find the source of a bug." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:39 msgid "" "**Global resource allocation**: with a pool of ``AudioStreamPlayer`` nodes " "stored from the start, you can either have too few and face bugs, or too " "many and use more memory than you need." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:45 msgid "" "About global access, the problem is that any code anywhere could pass wrong " "data to the ``Sound`` autoload in our example. As a result, the domain to " "explore to fix the bug spans the entire project." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:49 msgid "" "When you keep code inside a scene, only one or two scripts may be involved " "in audio." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:52 msgid "" "Contrast this with each scene keeping as many ``AudioStreamPlayer`` nodes as " "it needs within itself and all these problems go away:" msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:55 msgid "" "Each scene manages its own state information. If there is a problem with the " "data, it will only cause issues in that one scene." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:58 msgid "" "Each scene accesses only its own nodes. Now, if there is a bug, it's easy to " "find which node is at fault." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:61 msgid "Each scene allocates exactly the amount of resources it needs." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:64 msgid "Managing shared functionality or data" msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:66 msgid "" "Another reason to use an Autoload can be that you want to reuse the same " "method or data across many scenes." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:69 msgid "" "In the case of functions, you can create a new type of ``Node`` that " "provides that feature for an individual scene using the :ref:`class_name " "` keyword in GDScript." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:73 msgid "When it comes to data, you can either:" msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:75 msgid "" "Create a new type of :ref:`Resource ` to share the data." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:77 msgid "" "Store the data in an object to which each node has access, for example using " "the ``owner`` property to access the scene's root node." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:81 msgid "When you should use an Autoload" msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:83 msgid "" "GDScript supports the creation of ``static`` functions using ``static " "func``. When combined with ``class_name``, this makes it possible to create " "libraries of helper functions without having to create an instance to call " "them. The limitation of static functions is that they can't reference member " "variables, non-static functions or ``self``." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:89 msgid "" "Since Godot 4.1, GDScript also supports ``static`` variables using ``static " "var``. This means you can now share variables across instances of a class " "without having to create a separate autoload." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:93 msgid "" "Still, autoloaded nodes can simplify your code for systems with a wide " "scope. If the autoload is managing its own information and not invading the " "data of other objects, then it's a great way to create systems that handle " "broad-scoped tasks. For example, a quest or a dialogue system." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:100 msgid "" "An autoload is *not* necessarily a singleton. Nothing prevents you from " "instantiating copies of an autoloaded node. An autoload is only a tool that " "makes a node load automatically as a child of the root of your scene tree, " "regardless of your game's node structure or which scene you run, e.g. by " "pressing the :kbd:`F6` key." msgstr "" #: ../../docs/tutorials/best_practices/autoloads_versus_internal_nodes.rst:106 msgid "" "As a result, you can get the autoloaded node, for example an autoload called " "``Sound``, by calling ``get_node(\"/root/Sound\")``." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:4 msgid "When and how to avoid using nodes for everything" msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:6 msgid "" "Nodes are cheap to produce, but even they have their limits. A project may " "have tens of thousands of nodes all doing things. The more complex their " "behavior though, the larger the strain each one adds to a project's " "performance." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:11 msgid "" "Godot provides more lightweight objects for creating APIs which nodes use. " "Be sure to keep these in mind as options when designing how you wish to " "build your project's features." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:15 msgid "" ":ref:`Object `: The ultimate lightweight object, the original " "Object must use manual memory management. With that said, it isn't too " "difficult to create one's own custom data structures, even node structures, " "that are also lighter than the :ref:`Node ` class." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:20 msgid "" "**Example:** See the :ref:`Tree ` node. It supports a high level " "of customization for a table of content with an arbitrary number of rows and " "columns. The data that it uses to generate its visualization though is " "actually a tree of :ref:`TreeItem ` Objects." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:25 msgid "" "**Advantages:** Simplifying one's API to smaller scoped objects helps " "improve its accessibility and improve iteration time. Rather than working " "with the entire Node library, one creates an abbreviated set of Objects from " "which a node can generate and manage the appropriate sub-nodes." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:32 msgid "" "One should be careful when handling them. One can store an Object into a " "variable, but these references can become invalid without warning. For " "example, if the object's creator decides to delete it out of nowhere, this " "would trigger an error state when one next accesses it." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:37 msgid "" ":ref:`RefCounted `: Only a little more complex than " "Object. They track references to themselves, only deleting loaded memory " "when no further references to themselves exist. These are useful in the " "majority of cases where one needs data in a custom class." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:42 msgid "" "**Example:** See the :ref:`FileAccess ` object. It " "functions just like a regular Object except that one need not delete it " "themselves." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:45 msgid "**Advantages:** same as the Object." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:47 msgid "" ":ref:`Resource `: Only slightly more complex than " "RefCounted. They have the innate ability to serialize/deserialize (i.e. save " "and load) their object properties to/from Godot resource files." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:51 msgid "" "**Example:** Scripts, PackedScene (for scene files), and other types like " "each of the :ref:`AudioEffect ` classes. Each of these " "can be saved and loaded, therefore they extend from Resource." msgstr "" #: ../../docs/tutorials/best_practices/node_alternatives.rst:55 msgid "" "**Advantages:** Much has :ref:`already been said ` " "on :ref:`Resource `'s advantages over traditional data " "storage methods. In the context of using Resources over Nodes though, their " "main advantage is in Inspector-compatibility. While nearly as lightweight as " "Object/RefCounted, they can still display and export properties in the " "Inspector. This allows them to fulfill a purpose much like sub-Nodes on the " "usability front, but also improve performance if one plans to have many such " "Resources/Nodes in their scenes." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:4 msgid "Godot interfaces" msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:6 msgid "" "Often one needs scripts that rely on other objects for features. There are 2 " "parts to this process:" msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:9 msgid "Acquiring a reference to the object that presumably has the features." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:11 msgid "Accessing the data or logic from the object." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:13 msgid "The rest of this tutorial outlines the various ways of doing all this." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:16 msgid "Acquiring object references" msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:18 msgid "" "For all :ref:`Object `\\s, the most basic way of referencing " "them is to get a reference to an existing object from another acquired " "instance." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:32 msgid "" "The same principle applies for :ref:`RefCounted ` objects. " "While users often access :ref:`Node ` and :ref:`Resource " "` this way, alternative measures are available." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:36 msgid "" "Instead of property or method access, one can get Resources by load access." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:121 msgid "Note the following:" msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:123 msgid "There are many ways in which a language can load such resources." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:125 msgid "" "When designing how objects will access data, don't forget that one can pass " "resources around as references as well." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:128 msgid "" "Keep in mind that loading a resource fetches the cached resource instance " "maintained by the engine. To get a new object, one must :ref:`duplicate " "` an existing reference or instantiate one " "from scratch with ``new()``." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:133 msgid "Nodes likewise have an alternative access point: the SceneTree." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:267 msgid "Accessing data or logic from an object" msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:269 msgid "" "Godot's scripting API is duck-typed. This means that if a script executes an " "operation, Godot doesn't validate that it supports the operation by " "**type**. It instead checks that the object **implements** the individual " "method." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:273 msgid "" "For example, the :ref:`CanvasItem ` class has a " "``visible`` property. All properties exposed to the scripting API are in " "fact a setter and getter pair bound to a name. If one tried to " "access :ref:`CanvasItem.visible `, then " "Godot would do the following checks, in order:" msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:279 msgid "" "If the object has a script attached, it will attempt to set the property " "through the script. This leaves open the opportunity for scripts to override " "a property defined on a base object by overriding the setter method for the " "property." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:284 msgid "" "If the script does not have the property, it performs a HashMap lookup in " "the ClassDB for the \"visible\" property against the CanvasItem class and " "all of its inherited types. If found, it will call the bound setter or " "getter. For more information about HashMaps, see the :ref:`data preferences " "` docs." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:290 msgid "" "If not found, it does an explicit check to see if the user wants to access " "the \"script\" or \"meta\" properties." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:293 msgid "" "If not, it checks for a ``_set``/``_get`` implementation (depending on type " "of access) in the CanvasItem and its inherited types. These methods can " "execute logic that gives the impression that the Object has a property. This " "is also the case with the ``_get_property_list`` method." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:298 msgid "" "Note that this happens even for non-legal symbol names, such as names " "starting with a digit or containing a slash." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:301 msgid "" "As a result, this duck-typed system can locate a property either in the " "script, the object's class, or any class that object inherits, but only for " "things which extend Object." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:305 msgid "" "Godot provides a variety of options for performing runtime checks on these " "accesses:" msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:308 msgid "" "A duck-typed property access. These will be property checks (as described " "above). If the operation isn't supported by the object, execution will halt." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:336 msgid "" "A method check. In the case of :ref:`CanvasItem.visible " "`, one can access the methods, " "``set_visible`` and ``is_visible`` like any other method." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:474 msgid "" "Outsource the access to a :ref:`Callable `. These may be " "useful in cases where one needs the max level of freedom from dependencies. " "In this case, one relies on an external context to setup the method." msgstr "" #: ../../docs/tutorials/best_practices/godot_interfaces.rst:536 msgid "" "These strategies contribute to Godot's flexible design. Between them, users " "have a breadth of tools to meet their specific needs." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:4 msgid "Godot notifications" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:6 msgid "" "Every Object in Godot implements a :ref:`_notification " "` method. Its purpose is to allow " "the Object to respond to a variety of engine-level callbacks that may relate " "to it. For example, if the engine tells a :ref:`CanvasItem " "` to \"draw\", it will call " "``_notification(NOTIFICATION_DRAW)``." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:13 msgid "" "Some of these notifications, like draw, are useful to override in scripts. " "So much so that Godot exposes many of them with dedicated functions:" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:16 msgid "``_ready()``: ``NOTIFICATION_READY``" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:18 msgid "``_enter_tree()``: ``NOTIFICATION_ENTER_TREE``" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:20 msgid "``_exit_tree()``: ``NOTIFICATION_EXIT_TREE``" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:22 msgid "``_process(delta)``: ``NOTIFICATION_PROCESS``" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:24 msgid "``_physics_process(delta)``: ``NOTIFICATION_PHYSICS_PROCESS``" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:26 msgid "``_draw()``: ``NOTIFICATION_DRAW``" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:28 msgid "" "What users might *not* realize is that notifications exist for types other " "than Node alone, for example:" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:31 msgid "" ":ref:`Object::NOTIFICATION_POSTINITIALIZE " "`: a callback that " "triggers during object initialization. Not accessible to scripts." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:34 msgid "" ":ref:`Object::NOTIFICATION_PREDELETE " "`: a callback that triggers " "before the engine deletes an Object, i.e. a \"destructor\"." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:38 msgid "" "And many of the callbacks that *do* exist in Nodes don't have any dedicated " "methods, but are still quite useful." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:41 msgid "" ":ref:`Node::NOTIFICATION_PARENTED " "`: a callback that triggers " "anytime one adds a child node to another node." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:44 msgid "" ":ref:`Node::NOTIFICATION_UNPARENTED " "`: a callback that triggers " "anytime one removes a child node from another node." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:48 msgid "" "One can access all these custom notifications from the universal " "``_notification()`` method." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:52 msgid "" "Methods in the documentation labeled as \"virtual\" are also intended to be " "overridden by scripts." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:55 msgid "" "A classic example is the :ref:`_init ` " "method in Object. While it has no ``NOTIFICATION_*`` equivalent, the engine " "still calls the method. Most languages (except C#) rely on it as a " "constructor." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:60 msgid "" "So, in which situation should one use each of these notifications or virtual " "functions?" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:64 msgid "_process vs. _physics_process vs. \\*_input" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:66 msgid "" "Use ``_process()`` when one needs a framerate-dependent delta time between " "frames. If code that updates object data needs to update as often as " "possible, this is the right place. Recurring logic checks and data caching " "often execute here, but it comes down to the frequency at which one needs " "the evaluations to update. If they don't need to execute every frame, then " "implementing a Timer-timeout loop is another option." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:128 msgid "" "Use ``_physics_process()`` when one needs a framerate-independent delta time " "between frames. If code needs consistent updates over time, regardless of " "how fast or slow time advances, this is the right place. Recurring kinematic " "and object transform operations should execute here." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:133 msgid "" "While it is possible, to achieve the best performance, one should avoid " "making input checks during these callbacks. ``_process()`` and " "``_physics_process()`` will trigger at every opportunity (they do not " "\"rest\" by default). In contrast, ``*_input()`` callbacks will trigger only " "on frames in which the engine has actually detected the input." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:139 msgid "" "One can check for input actions within the input callbacks just the same. If " "one wants to use delta time, one can fetch it from the related delta time " "methods as needed." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:215 msgid "_init vs. initialization vs. export" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:217 msgid "" "If the script initializes its own node subtree, without a scene, that code " "should execute in ``_init()``. Other property or SceneTree-independent " "initializations should also run here." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:222 msgid "The C# equivalent to GDScript's ``_init()`` method is the constructor." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:224 msgid "" "``_init()`` triggers before ``_enter_tree()`` or ``_ready()``, but after a " "script creates and initializes its properties. When instantiating a scene, " "property values will set up according to the following sequence:" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:228 msgid "" "**Initial value assignment:** the property is assigned its initialization " "value, or its default value if one is not specified. If a setter exists, it " "is not used." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:231 msgid "" "``_init()`` **assignment:** the property's value is replaced by any " "assignments made in ``_init()``, triggering the setter." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:234 msgid "" "**Exported value assignment:** an exported property's value is again " "replaced by any value set in the Inspector, triggering the setter." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:306 msgid "" "As a result, instantiating a script versus a scene may affect both the " "initialization *and* the number of times the engine calls the setter." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:310 msgid "_ready vs. _enter_tree vs. NOTIFICATION_PARENTED" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:312 msgid "" "When instantiating a scene connected to the first executed scene, Godot will " "instantiate nodes down the tree (making ``_init()`` calls) and build the " "tree going downwards from the root. This causes ``_enter_tree()`` calls to " "cascade down the tree. Once the tree is complete, leaf nodes call " "``_ready``. A node will call this method once all child nodes have finished " "calling theirs. This then causes a reverse cascade going up back to the " "tree's root." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:319 msgid "" "When instantiating a script or a standalone scene, nodes are not added to " "the SceneTree upon creation, so no ``_enter_tree()`` callbacks trigger. " "Instead, only the ``_init()`` call occurs. When the scene is added to the " "SceneTree, the ``_enter_tree()`` and ``_ready()`` calls occur." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:324 msgid "" "If one needs to trigger behavior that occurs as nodes parent to another, " "regardless of whether it occurs as part of the main/active scene or not, one " "can use the :ref:`PARENTED ` " "notification. For example, here is a snippet that connects a node's method " "to a custom signal on the parent node without failing. Useful on data-" "centric nodes that one might create at runtime." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:6 msgid "Data preferences" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:8 msgid "" "Ever wondered whether one should approach problem X with data structure Y or " "Z? This article covers a variety of topics related to these dilemmas." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:13 msgid "" "This article makes references to \"[something]-time\" operations. This " "terminology comes from algorithm analysis' `Big O Notation `_." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:17 msgid "" "Long-story short, it describes the worst-case scenario of runtime length. In " "laymen's terms:" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:20 msgid "" "\"As the size of a problem domain increases, the runtime length of the " "algorithm...\"" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:23 msgid "Constant-time, ``O(1)``: \"...does not increase.\"" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:24 msgid "Logarithmic-time, ``O(log n)``: \"...increases at a slow rate.\"" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:25 msgid "Linear-time, ``O(n)``: \"...increases at the same rate.\"" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:26 msgid "Etc." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:28 msgid "" "Imagine if one had to process 3 million data points within a single frame. " "It would be impossible to craft the feature with a linear-time algorithm " "since the sheer size of the data would increase the runtime far beyond the " "time allotted. In comparison, using a constant-time algorithm could handle " "the operation without issue." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:34 msgid "" "By and large, developers want to avoid engaging in linear-time operations as " "much as possible. But, if one keeps the scale of a linear-time operation " "small, and if one does not need to perform the operation often, then it may " "be acceptable. Balancing these requirements and choosing the right " "algorithm / data structure for the job is part of what makes programmers' " "skills valuable." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:42 msgid "Array vs. Dictionary vs. Object" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:44 msgid "" "Godot stores all variables in the scripting API in the :ref:`Variant " "` class. Variants can store Variant-compatible data " "structures such as :ref:`Array ` and :ref:`Dictionary " "` as well as :ref:`Objects `." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:50 msgid "" "Godot implements Array as a ``Vector``. The engine stores the Array " "contents in a contiguous section of memory, i.e. they are in a row adjacent " "to each other." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:56 msgid "" "For those unfamiliar with C++, a Vector is the name of the array object in " "traditional C++ libraries. It is a \"templated\" type, meaning that its " "records can only contain a particular type (denoted by angled brackets). So, " "for example, a :ref:`PackedStringArray ` would be " "something like a ``Vector``." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:63 msgid "Contiguous memory stores imply the following operation performance:" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:65 msgid "**Iterate:** Fastest. Great for loops." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:67 msgid "Op: All it does is increment a counter to get to the next record." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:69 msgid "**Insert, Erase, Move:** Position-dependent. Generally slow." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:71 msgid "" "Op: Adding/removing/moving content involves moving the adjacent records over " "(to make room / fill space)." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:74 msgid "Fast add/remove *from the end*." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:76 msgid "Slow add/remove *from an arbitrary position*." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:78 msgid "Slowest add/remove *from the front*." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:80 msgid "If doing many inserts/removals *from the front*, then..." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:82 msgid "invert the array." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:84 msgid "do a loop which executes the Array changes *at the end*." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:86 msgid "re-invert the array." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:88 msgid "" "This makes only 2 copies of the array (still constant time, but slow) versus " "copying roughly 1/2 of the array, on average, N times (linear time)." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:91 msgid "" "**Get, Set:** Fastest *by position*. E.g. can request 0th, 2nd, 10th record, " "etc. but cannot specify which record you want." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:94 msgid "Op: 1 addition operation from array start position up to desired index." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:96 msgid "**Find:** Slowest. Identifies the index/position of a value." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:98 msgid "" "Op: Must iterate through array and compare values until one finds a match." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:100 msgid "" "Performance is also dependent on whether one needs an exhaustive search." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:103 msgid "" "If kept ordered, custom search operations can bring it to logarithmic time " "(relatively fast). Laymen users won't be comfortable with this though. Done " "by re-sorting the Array after every edit and writing an ordered-aware search " "algorithm." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:108 msgid "" "Godot implements Dictionary as a ``HashMap``. The engine stores a small array (initialized " "to 2^3 or 8 records) of key-value pairs. When one attempts to access a " "value, they provide it a key. It then *hashes* the key, i.e. converts it " "into a number. The \"hash\" is used to calculate the index into the array. " "As an array, the HM then has a quick lookup within the \"table\" of keys " "mapped to values. When the HashMap becomes too full, it increases to the " "next power of 2 (so, 16 records, then 32, etc.) and rebuilds the structure." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:116 msgid "" "Hashes are to reduce the chance of a key collision. If one occurs, the table " "must recalculate another index for the value that takes the previous " "position into account. In all, this results in constant-time access to all " "records at the expense of memory and some minor operational efficiency." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:121 msgid "Hashing every key an arbitrary number of times." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:123 msgid "" "Hash operations are constant-time, so even if an algorithm must do more than " "one, as long as the number of hash calculations doesn't become too dependent " "on the density of the table, things will stay fast. Which leads to..." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:128 msgid "Maintaining an ever-growing size for the table." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:130 msgid "" "HashMaps maintain gaps of unused memory interspersed in the table on purpose " "to reduce hash collisions and maintain the speed of accesses. This is why it " "constantly increases in size exponentially by powers of 2." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:135 msgid "" "As one might be able to tell, Dictionaries specialize in tasks that Arrays " "do not. An overview of their operational details is as follows:" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:138 msgid "**Iterate:** Fast." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:140 msgid "" "Op: Iterate over the map's internal vector of hashes. Return each key. " "Afterwards, users then use the key to jump to and return the desired value." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:144 msgid "**Insert, Erase, Move:** Fastest." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:146 msgid "" "Op: Hash the given key. Do 1 addition operation to look up the appropriate " "value (array start + offset). Move is two of these (one insert, one erase). " "The map must do some maintenance to preserve its capabilities:" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:151 msgid "update ordered List of records." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:153 msgid "determine if table density mandates a need to expand table capacity." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:155 msgid "" "The Dictionary remembers in what order users inserted its keys. This enables " "it to execute reliable iterations." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:158 msgid "**Get, Set:** Fastest. Same as a lookup *by key*." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:160 msgid "Op: Same as insert/erase/move." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:162 msgid "**Find:** Slowest. Identifies the key of a value." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:164 msgid "" "Op: Must iterate through records and compare the value until a match is " "found." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:167 msgid "" "Note that Godot does not provide this feature out-of-the-box (because they " "aren't meant for this task)." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:170 msgid "" "Godot implements Objects as stupid, but dynamic containers of data content. " "Objects query data sources when posed questions. For example, to answer the " "question, \"do you have a property called, 'position'?\", it might ask " "its :ref:`script ` or the :ref:`ClassDB `. One " "can find more information about what objects are and how they work in " "the :ref:`doc_what_are_godot_classes` article." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:177 msgid "" "The important detail here is the complexity of the Object's task. Every time " "it performs one of these multi-source queries, it runs through *several* " "iteration loops and HashMap lookups. What's more, the queries are linear-" "time operations dependent on the Object's inheritance hierarchy size. If the " "class the Object queries (its current class) doesn't find anything, the " "request defers to the next base class, all the way up until the original " "Object class. While these are each fast operations in isolation, the fact " "that it must make so many checks is what makes them slower than both of the " "alternatives for looking up data." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:189 msgid "" "When developers mention how slow the scripting API is, it is this chain of " "queries they refer to. Compared to compiled C++ code where the application " "knows exactly where to go to find anything, it is inevitable that scripting " "API operations will take much longer. They must locate the source of any " "relevant data before they can attempt to access it." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:195 msgid "" "The reason GDScript is slow is because every operation it performs passes " "through this system." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:198 msgid "" "C# can process some content at higher speeds via more optimized bytecode. " "But, if the C# script calls into an engine class' content or if the script " "tries to access something external to it, it will go through this pipeline." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:203 msgid "" "NativeScript C++ goes even further and keeps everything internal by default. " "Calls into external structures will go through the scripting API. In " "NativeScript C++, registering methods to expose them to the scripting API is " "a manual task. It is at this point that external, non-C++ classes will use " "the API to locate them." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:209 msgid "" "So, assuming one extends from Reference to create a data structure, like an " "Array or Dictionary, why choose an Object over the other two options?" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:212 msgid "" "**Control:** With objects comes the ability to create more sophisticated " "structures. One can layer abstractions over the data to ensure the external " "API doesn't change in response to internal data structure changes. What's " "more, Objects can have signals, allowing for reactive behavior." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:217 msgid "" "**Clarity:** Objects are a reliable data source when it comes to the data " "that scripts and engine classes define for them. Properties may not hold the " "values one expects, but one doesn't need to worry about whether the property " "exists in the first place." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:222 msgid "" "**Convenience:** If one already has a similar data structure in mind, then " "extending from an existing class makes the task of building the data " "structure much easier. In comparison, Arrays and Dictionaries don't fulfill " "all use cases one might have." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:227 msgid "" "Objects also give users the opportunity to create even more specialized data " "structures. With it, one can design their own List, Binary Search Tree, " "Heap, Splay Tree, Graph, Disjoint Set, and any host of other options." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:231 msgid "" "\"Why not use Node for tree structures?\" one might ask. Well, the Node " "class contains things that won't be relevant to one's custom data structure. " "As such, it can be helpful to construct one's own node type when building " "tree structures." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:278 msgid "" "From here, one can then create their own structures with specific features, " "limited only by their imagination." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:282 msgid "Enumerations: int vs. string" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:284 msgid "" "Most languages offer an enumeration type option. GDScript is no different, " "but unlike most other languages, it allows one to use either integers or " "strings for the enum values (the latter only when using the ``@export_enum`` " "annotation in GDScript). The question then arises, \"which should one use?\"" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:289 msgid "" "The short answer is, \"whichever you are more comfortable with.\" This is a " "feature specific to GDScript and not Godot scripting in general; The " "languages prioritizes usability over performance." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:293 msgid "" "On a technical level, integer comparisons (constant-time) will happen faster " "than string comparisons (linear-time). If one wants to keep up other " "languages' conventions though, then one should use integers." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:297 msgid "" "The primary issue with using integers comes up when one wants to *print* an " "enum value. As integers, attempting to print ``MY_ENUM`` will print ``5`` or " "what-have-you, rather than something like ``\"MyEnum\"``. To print an " "integer enum, one would have to write a Dictionary that maps the " "corresponding string value for each enum." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:303 msgid "" "If the primary purpose of using an enum is for printing values and one " "wishes to group them together as related concepts, then it makes sense to " "use them as strings. That way, a separate data structure to execute on the " "printing is unnecessary." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:309 msgid "" "AnimatedTexture vs. AnimatedSprite2D vs. AnimationPlayer vs. AnimationTree" msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:311 msgid "" "Under what circumstances should one use each of Godot's animation classes? " "The answer may not be immediately clear to new Godot users." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:314 msgid "" ":ref:`AnimatedTexture ` is a texture that the engine " "draws as an animated loop rather than a static image. Users can manipulate..." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:318 msgid "the rate at which it moves across each section of the texture (FPS)." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:320 msgid "the number of regions contained within the texture (frames)." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:322 msgid "" "Godot's :ref:`RenderingServer ` then draws the " "regions in sequence at the prescribed rate. The good news is that this " "involves no extra logic on the part of the engine. The bad news is that " "users have very little control." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:327 msgid "" "Also note that AnimatedTexture is a :ref:`Resource ` unlike " "the other :ref:`Node ` objects discussed here. One might create " "a :ref:`Sprite2D ` node that uses AnimatedTexture as its " "texture. Or (something the others can't do) one could add AnimatedTextures " "as tiles in a :ref:`TileSet ` and integrate it with " "a :ref:`TileMapLayer ` for many auto-animating " "backgrounds that all render in a single batched draw call." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:335 msgid "" "The :ref:`AnimatedSprite2D ` node, in combination " "with the :ref:`SpriteFrames ` resource, allows one to " "create a variety of animation sequences through spritesheets, flip between " "animations, and control their speed, regional offset, and orientation. This " "makes them well-suited to controlling 2D frame-based animations." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:341 msgid "" "If one needs to trigger other effects in relation to animation changes (for " "example, create particle effects, call functions, or manipulate other " "peripheral elements besides the frame-based animation), then one will need " "to use an :ref:`AnimationPlayer ` node in conjunction " "with the AnimatedSprite2D." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:347 msgid "" "AnimationPlayers are also the tool one will need to use if they wish to " "design more complex 2D animation systems, such as..." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:350 msgid "**Cut-out animations:** editing sprites' transforms at runtime." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:352 msgid "" "**2D Mesh animations:** defining a region for the sprite's texture and " "rigging a skeleton to it. Then one animates the bones which stretch and bend " "the texture in proportion to the bones' relationships to each other." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:357 msgid "A mix of the above." msgstr "" #: ../../docs/tutorials/best_practices/data_preferences.rst:359 msgid "" "While one needs an AnimationPlayer to design each of the individual " "animation sequences for a game, it can also be useful to combine animations " "for blending, i.e. enabling smooth transitions between these animations. " "There may also be a hierarchical structure between animations that one plans " "out for their object. These are the cases where the :ref:`AnimationTree " "` shines. One can find an in-depth guide on using the " "AnimationTree :ref:`here `." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:4 msgid "Logic preferences" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:6 msgid "" "Ever wondered whether one should approach problem X with strategy Y or Z? " "This article covers a variety of topics related to these dilemmas." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:10 msgid "Adding nodes and changing properties: which first?" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:12 msgid "" "When initializing nodes from a script at runtime, you may need to change " "properties such as the node's name or position. A common dilemma is, when " "should you change those values?" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:16 msgid "" "It is the best practice to change values on a node before adding it to the " "scene tree. Some property's setters have code to update other corresponding " "values, and that code can be slow! For most cases, this code has no impact " "on your game's performance, but in heavy use cases such as procedural " "generation, it can bring your game to a crawl." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:22 msgid "" "For these reasons, it is usually best practice to set the initial values of " "a node before adding it to the scene tree. There are some exceptions where " "values *can't* be set before being added to the scene tree, like setting " "global position." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:28 msgid "Loading vs. preloading" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:30 msgid "" "In GDScript, there exists the global :ref:`preload " "` method. It loads resources as early as " "possible to front-load the \"loading\" operations and avoid loading " "resources while in the middle of performance-sensitive code." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:35 msgid "" "Its counterpart, the :ref:`load ` method, loads " "a resource only when it reaches the load statement. That is, it will load a " "resource in-place which can cause slowdowns when it occurs in the middle of " "sensitive processes. The ``load()`` function is also an alias " "for :ref:`ResourceLoader.load(path) ` " "which is accessible to *all* scripting languages." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:42 msgid "" "So, when exactly does preloading occur versus loading, and when should one " "use either? Let's see an example:" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:122 msgid "" "Preloading allows the script to handle all the loading the moment one loads " "the script. Preloading is useful, but there are also times when one doesn't " "wish to use it. Here are a few considerations when determining which to use:" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:126 msgid "" "If one cannot determine when the script might load, then preloading a " "resource (especially a scene or script) could result in additional loads one " "does not expect. This could lead to unintentional, variable-length load " "times on top of the original script's load operations." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:131 msgid "" "If something else could replace the value (like a scene's exported " "initialization), then preloading the value has no meaning. This point isn't " "a significant factor if one intends to always create the script on its own." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:135 msgid "" "If one wishes only to 'import' another class resource (script or scene), " "then using a preloaded constant is often the best course of action. However, " "in exceptional cases, one may wish not to do this:" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:139 msgid "" "If the 'imported' class is liable to change, then it should be a property " "instead, initialized either using an ``@export`` or a ``load()`` (and " "perhaps not even initialized until later)." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:143 msgid "" "If the script requires a great many dependencies, and one does not wish to " "consume so much memory, then one may wish to load and unload various " "dependencies at runtime as circumstances change. If one preloads resources " "into constants, then the only way to unload these resources would be to " "unload the entire script. If they are instead loaded as properties, then one " "can set these properties to ``null`` and remove all references to the " "resource (which, as a :ref:`RefCounted `-extending type, " "will cause the resources to delete themselves from memory)." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:154 msgid "Large levels: static vs. dynamic" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:156 msgid "" "If one is creating a large level, which circumstances are most appropriate? " "Is it better to create the level as one static space? Or is it better to " "load the level in pieces and shift the world's content as needed?" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:160 msgid "" "Well, the simple answer is, \"when the performance requires it.\" The " "dilemma associated with the two options is one of the age-old programming " "choices: does one optimize memory over speed, or vice versa?" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:164 msgid "" "The naive answer is to use a static level that loads everything at once. " "But, depending on the project, this could consume a large amount of memory. " "Wasting users' RAM leads to programs running slow or outright crashing from " "everything else the computer tries to do at the same time." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:169 msgid "" "No matter what, one should break larger scenes into smaller ones (to aid in " "reusability of assets). Developers can then design a node that manages the " "creation/loading and deletion/unloading of resources and nodes in real-time. " "Games with large and varied environments or procedurally generated elements " "often implement these strategies to avoid wasting memory." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:175 msgid "" "On the flip side, coding a dynamic system is more complex; it uses more " "programmed logic which results in opportunities for errors and bugs. If one " "isn't careful, they can develop a system that bloats the technical debt of " "the application." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:180 msgid "As such, the best options would be..." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:182 msgid "Use static levels for smaller games." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:184 msgid "" "If one has the time/resources on a medium/large game, create a library or " "plugin that can manage nodes and resources with code. If refined over time " "so as to improve usability and stability, then it could evolve into a " "reliable tool across projects." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:189 msgid "" "Use dynamic logic for a medium/large game because one has the coding skills, " "but not the time or resources to refine the code (game's gotta get done). " "Could potentially refactor later to outsource the code into a plugin." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:194 msgid "" "For an example of the various ways one can swap scenes around at runtime, " "please see the :ref:`\"Change scenes manually\" " "` documentation." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:4 msgid "Project organization" msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:9 msgid "" "Since Godot has no restrictions on project structure or filesystem usage, " "organizing files when learning the engine can seem challenging. This " "tutorial suggests a workflow which should be a good starting point. We will " "also cover using version control with Godot." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:15 msgid "Organization" msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:17 msgid "" "Godot is scene-based in nature, and uses the filesystem as-is, without " "metadata or an asset database." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:20 msgid "" "Unlike other engines, many resources are contained within the scene itself, " "so the amount of files in the filesystem is considerably lower." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:23 msgid "" "Considering that, the most common approach is to group assets as close to " "scenes as possible; when a project grows, it makes it more maintainable." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:27 msgid "" "As an example, one can usually place into a single folder their basic " "assets, such as sprite images, 3D model meshes, materials, and music, etc. " "They can then use a separate folder to store built levels that use them." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:48 msgid "Style guide" msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:50 msgid "" "For consistency across projects, we recommend following these guidelines:" msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:52 msgid "" "Use **snake_case** for folder and file names (with the exception of C# " "scripts). This sidesteps case sensitivity issues that can crop up after " "exporting a project on Windows. C# scripts are an exception to this rule, as " "the convention is to name them after the class name which should be in " "PascalCase." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:57 msgid "" "Use **PascalCase** for node names, as this matches built-in node casing." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:58 msgid "" "In general, keep third-party resources in a top-level ``addons/`` folder, " "even if they aren't editor plugins. This makes it easier to track which " "files are third-party. There are some exceptions to this rule; for instance, " "if you use third-party game assets for a character, it makes more sense to " "include them within the same folder as the character scenes and scripts." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:65 msgid "Importing" msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:67 msgid "" "Godot versions prior to 3.0 did the import process from files outside the " "project. While this can be useful in large projects, it resulted in an " "organization hassle for most developers." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:71 msgid "" "Because of this, assets are now transparently imported from within the " "project folder." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:75 msgid "Ignoring specific folders" msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:77 msgid "" "To prevent Godot from importing files contained in a specific folder, create " "an empty file called ``.gdignore`` in the folder (the leading ``.`` is " "required). This can be useful to speed up the initial project importing." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:83 msgid "" "To create a file whose name starts with a dot on Windows, place a dot at " "both the beginning and end of the filename (\".gdignore.\"). Windows will " "automatically remove the trailing dot when you confirm the name." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:87 msgid "" "Alternatively, you can use a text editor such as Notepad++ or use the " "following command in a command prompt: ``type nul > .gdignore``" msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:90 msgid "" "Once the folder is ignored, resources in that folder can't be loaded anymore " "using the ``load()`` and ``preload()`` methods. Ignoring a folder will also " "automatically hide it from the FileSystem dock, which can be useful to " "reduce clutter." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:94 msgid "" "Note that the ``.gdignore`` file's contents are ignored, which is why the " "file should be empty. It does not support patterns like ``.gitignore`` files " "do." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:100 msgid "Case sensitivity" msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:102 msgid "" "Windows and recent macOS versions use case-insensitive filesystems by " "default, whereas Linux distributions use a case-sensitive filesystem by " "default. This can cause issues after exporting a project, since Godot's PCK " "virtual filesystem is case-sensitive. To avoid this, it's recommended to " "stick to ``snake_case`` naming for all files in the project (and lowercase " "characters in general)." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:111 msgid "" "You can break this rule when style guides say otherwise (such as the C# " "style guide). Still, be consistent to avoid mistakes." msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:114 msgid "" "On Windows 10, to further avoid mistakes related to case sensitivity, you " "can also make the project folder case-sensitive. After enabling the Windows " "Subsystem for Linux feature, run the following command in a PowerShell " "window:" msgstr "" #: ../../docs/tutorials/best_practices/project_organization.rst:126 msgid "" "If you haven't enabled the Windows Subsystem for Linux, you can enter the " "following line in a PowerShell window *running as Administrator* then reboot " "when asked:" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:4 msgid "Version control systems" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:9 msgid "" "Godot aims to be VCS-friendly and generate mostly readable and mergeable " "files." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:12 msgid "Version control plugins" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:14 msgid "" "Godot also supports the use of version control systems in the editor itself. " "However, version control in the editor requires a plugin for the specific " "VCS you're using." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:18 msgid "" "As of October 2025, there is only a Git plugin available, but the community " "may create additional VCS plugins." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:22 msgid "Official Git plugin" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:24 msgid "" "Using Git from inside the editor is supported with an official plugin. You " "can find the latest releases on `GitHub `__." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:28 msgid "" "Documentation on how to use the Git plugin can be found on its `wiki " "`__." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:32 msgid "Files to exclude from VCS" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:36 msgid "" "This lists files and folders that should be ignored from version control in " "Godot 4.1 and later." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:39 msgid "" "The list of files of folders that should be ignored from version control in " "Godot 3.x and Godot 4.0 is **entirely** different. This is important, as " "Godot 3.x and 4.0 may store sensitive credentials in ``export_presets.cfg`` " "(unlike Godot 4.1 and later)." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:44 msgid "" "If you are using Godot 3, check the ``3.6`` version of this documentation " "page instead." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:47 msgid "" "There are some files and folders Godot automatically creates when opening a " "project in the editor for the first time. To avoid bloating your version " "control repository with generated data, you should add them to your VCS " "ignore:" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:51 msgid "``.godot/``: This folder stores various project cache data." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:52 msgid "" "``*.translation``: These files are binary imported :ref:`translations " "` generated from CSV files." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:55 msgid "" "You can make the Godot project manager generate version control metadata for " "you automatically when creating a project. When choosing the **Git** option, " "this creates ``.gitignore`` and ``.gitattributes`` files in the project root:" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:59 msgid "" "Creating version control metadata in the project manager's New Project dialog" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:63 msgid "" "Creating version control metadata in the project manager's **New Project** " "dialog" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:65 msgid "" "In existing projects, select the **Project** menu at the top of the editor, " "then choose **Version Control > Generate Version Control Metadata**. This " "creates the same files as if the operation was performed in the project " "manager." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:70 msgid "Working with Git on Windows" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:72 msgid "" "Most Git for Windows clients are configured with the ``core.autocrlf`` set " "to ``true``. This can lead to files unnecessarily being marked as modified " "by Git due to their line endings being converted from LF to CRLF " "automatically." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:76 msgid "It is better to set this option as:" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:82 msgid "" "Creating version control metadata using the project manager or editor will " "automatically enforce LF line endings using the ``.gitattributes`` file. In " "this case, you don't need to change your Git configuration." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:87 msgid "Git LFS" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:89 msgid "" "Git LFS (Large File Storage) is a Git extension that allows you to manage " "large files in your repository. It replaces large files with text pointers " "inside Git, while storing the file contents on a remote server. This is " "useful for managing large assets, such as textures, audio files, and 3D " "models, without bloating your Git repository." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:97 msgid "" "When using Git LFS you will want to ensure it is setup before you commit any " "files to your repository. If you have already committed files to your " "repository, you will need to remove them from the repository and re-add them " "after setting up Git LFS." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:101 msgid "" "It is possible to use ``git lfs migrate`` to convert existing files in your " "repository, but this is more in-depth and requires a good understanding of " "Git." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:104 msgid "" "A common approach is setting up a new repository with Git LFS (and a proper " "``.gitattributes``), then copying the files from the old repository to the " "new one. This way, you can ensure that all files are tracked by LFS from the " "start." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:108 msgid "" "To use Git LFS with Godot, you need to install the Git LFS extension and " "configure it to track the file types you want to manage. You can do this by " "running the following command in your terminal: ::" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:115 msgid "" "This will create a ``.gitattributes`` file in your repository that tells Git " "to use LFS for the specified file types. You can add more file types by " "modifying the ``.gitattributes`` file. For example, to track all GLB files, " "you can do this by running the following command in your terminal: ::" msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:123 msgid "" "When you add or modify files that are tracked by LFS, Git will automatically " "store them in LFS instead of the regular Git history. You can push and pull " "LFS files just like regular Git files, but keep in mind that LFS files are " "stored separately from the rest of your Git history. This means that you may " "need to install Git LFS on any machine that you clone the repository to in " "order to access the LFS files." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:130 msgid "" "Below is an example ``.gitattributes`` file that you can use as a starting " "point for Git LFS. These file types were chosen because they are commonly " "used, but you can modify the list to include any binary types you may have " "in your project." msgstr "" #: ../../docs/tutorials/best_practices/version_control_systems.rst:177 msgid "" "For more information on Git LFS, check the official documentation: https://" "git-lfs.github.com/ and https://docs.github.com/en/repositories/working-with-" "files/managing-large-files." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:4 #: ../../docs/tutorials/3d/particles/collision.rst:170 #: ../../docs/tutorials/3d/occlusion_culling.rst:272 #: ../../docs/tutorials/3d/resolution_scaling.rst:269 #: ../../docs/tutorials/audio/text_to_speech.rst:86 #: ../../docs/tutorials/export/exporting_pcks.rst:156 #: ../../docs/tutorials/export/exporting_for_ios.rst:152 #: ../../docs/tutorials/export/exporting_for_web.rst:459 #: ../../docs/tutorials/export/one-click_deploy.rst:100 #: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:284 #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:403 #: ../../docs/engine_details/development/compiling/compiling_for_windows.rst:485 #: ../../docs/engine_details/development/compiling/compiling_for_macos.rst:310 #: ../../docs/engine_details/development/compiling/compiling_for_android.rst:249 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:96 #: ../../docs/engine_details/development/compiling/compiling_with_script_encryption_key.rst:77 #: ../../docs/engine_details/editor/creating_icons.rst:82 msgid "Troubleshooting" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:6 msgid "" "This page lists common issues encountered when using Godot and possible " "solutions." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:10 msgid "" "See :ref:`doc_using_the_web_editor` for caveats specific to the Web version " "of the Godot editor." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:14 msgid "" "The editor runs slowly and uses all my CPU and GPU resources, making my " "computer noisy" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:16 msgid "" "This is a known issue, especially on macOS since most Macs have Retina " "displays. Due to Retina displays' higher pixel density, everything has to be " "rendered at a higher resolution. This increases the load on the GPU and " "decreases perceived performance." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:21 msgid "There are several ways to improve performance and battery life:" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:23 msgid "" "In 3D, click the **Perspective** button in the top left corner and enable " "**Half Resolution**. The 3D viewport will now be rendered at half " "resolution, which can be up to 4 times faster." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:26 msgid "" "Open the Editor Settings and increase the value of **Low Processor Mode " "Sleep (µsec)** to ``33000`` (30 FPS). This value determines the amount of " "*microseconds* between frames to render. Higher values will make the editor " "feel less reactive, but will help decrease CPU and GPU usage significantly." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:30 msgid "" "If you have a node that causes the editor to redraw continuously (such as " "particles), hide it and show it using a script in the ``_ready()`` method. " "This way, it will be hidden in the editor, but will still be visible in the " "running project." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:36 msgid "" "The editor stutters and flickers on my variable refresh rate monitor (G-Sync/" "FreeSync)" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:38 msgid "" "This is a `known issue `__. Variable refresh rate monitors need to adjust their gamma curves " "continuously to emit a consistent amount of light over time. This can cause " "flicker to appear in dark areas of the image when the refresh rate varies a " "lot, which occurs as the Godot editor only redraws when necessary." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:44 msgid "There are several workarounds for this:" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:46 msgid "" "Enable **Interface > Editor > Update Continuously** in the Editor Settings. " "Keep in mind this will increase power usage and heat/noise emissions since " "the editor will now be rendering constantly, even if nothing has changed on " "screen. To alleviate this, you can increase **Low Processor Mode Sleep " "(µsec)** to ``33000`` (30 FPS) in the Editor Settings. This value determines " "the amount of *microseconds* between frames to render. Higher values will " "make the editor feel less reactive, but will help decrease CPU and GPU usage " "significantly." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:53 msgid "" "Alternatively, disable variable refresh rate on your monitor or in the " "graphics driver." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:54 msgid "" "VRR flicker can be reduced on some displays using the **VRR Control** or " "**Fine Tune Dark Areas** options in your monitor's OSD. These options may " "increase input lag or result in crushed blacks." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:57 msgid "" "If using an OLED display, use the **Black (OLED)** editor theme preset in " "the Editor Settings. This hides VRR flicker thanks to OLED's perfect black " "levels." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:61 msgid "The editor or project takes a very long time to start" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:63 msgid "" "When using one of the RenderingDevice-based renderers (Forward+ or Mobile), " "the first startup is expected to be relatively long. This is because shaders " "need to be compiled before they can be cached. Shaders also need to be " "cached again after updating Godot, after updating graphics drivers or after " "switching graphics cards." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:69 msgid "" "If the issue persists after the first startup, this is a `known bug `__ on Windows when you have " "specific USB peripherals connected. In particular, Corsair's iCUE software " "seems to cause this bug. Try updating your USB peripherals' drivers to their " "latest version. If the bug persists, you need to disconnect the specific " "peripheral before opening the editor. You can then connect the peripheral " "again." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:77 msgid "" "Firewall software such as Portmaster may also cause the debug port to be " "blocked. This causes the project to take a long time to start, while being " "unable to use debugging features in the editor (such as viewing ``print()`` " "output). You can work this around by changing the debug port used by the " "project in the Editor Settings (**Network > Debug > Remote Port**). The " "default is ``6007``; try another value that is greater than ``1024``, such " "as ``7007``." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:84 msgid "" "On Windows, when loading the project for the first time after the PC is " "turned on, Windows Defender will cause the filesystem cache validation on " "project startup to take significantly longer. This is especially noticeable " "in projects with a large number of files. Consinder adding the project " "folder to the list of exclusions by going to Virus & threat protection > " "Virus & threat protection settings > Add or remove exclusions." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:92 msgid "The Godot editor appears frozen after clicking the system console" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:94 msgid "" "When running Godot on Windows with the system console enabled, you can " "accidentally enable *selection mode* by clicking inside the command window. " "This Windows-specific behavior pauses the application to let you select text " "inside the system console. Godot cannot override this system-specific " "behavior." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:99 msgid "" "To solve this, select the system console window and press Enter to leave " "selection mode." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:103 msgid "" "The Godot editor's macOS dock icon gets duplicated every time it is manually " "moved" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:105 msgid "" "If you open the Godot editor and manually change the position of the dock " "icon, then restart the editor, you will get a duplicate dock icon all the " "way to the right of the dock." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:109 msgid "" "This is due to a design limitation of the macOS dock. The only known way to " "resolve this would be to merge the project manager and editor into a single " "process, which means the project manager would no longer spawn a separate " "process when starting the editor. While using a single process instance " "would bring several benefits, it isn't planned to be done in the near future " "due to the complexity of the task." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:116 msgid "" "To avoid this issue, keep the Godot editor's dock icon at its default " "location as created by macOS." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:120 msgid "" "Some text such as \"NO DC\" appears in the top-left corner of the Project " "Manager and editor window" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:122 msgid "" "This is caused by the NVIDIA graphics driver injecting an overlay to display " "information." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:124 msgid "" "To disable this overlay on Windows, restore your graphics driver settings to " "the default values in the NVIDIA Control Panel." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:127 msgid "" "To disable this overlay on Linux, open ``nvidia-settings``, go to **X Screen " "0 > OpenGL Settings** then uncheck **Enable Graphics API Visual Indicator**." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:131 msgid "" "A microphone or \"refresh\" icon appears in the bottom-right corner of the " "Project Manager and editor window" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:133 msgid "" "This is caused by the NVIDIA graphics driver injecting an overlay to display " "instant replay information on ShadowPlay recording. This overlay can only be " "seen on Windows, as Linux does not have support for ShadowPlay." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:137 msgid "" "To disable this overlay, press :kbd:`Alt + Z` (default shortcut for the " "NVIDIA overlay) and disable **Settings > HUD Layout > Status Indicator** in " "the NVIDIA overlay." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:140 msgid "" "Alternatively, you can install the `new NVIDIA app ` which replaces GeForce Experience and does not " "suffer from this issue. Unlike GeForce Experience, the NVIDIA app draws the " "replay indicator in the corner of the screen as opposed to the corner of " "each window." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:147 msgid "The editor or project appears overly sharp or blurry" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:149 #: ../../docs/tutorials/troubleshooting.rst:153 msgid "" "Correct appearance (left), oversharpened appearance due to graphics driver " "sharpening (right)" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:155 msgid "" "If the editor or project appears overly sharp, this is likely due to image " "sharpening being forced on all Vulkan or OpenGL applications by your " "graphics driver. You can disable this behavior in the graphics driver's " "control panel:" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:159 msgid "" "**NVIDIA (Windows):** Open the start menu and choose **NVIDIA Control " "Panel**. Open the **Manage 3D settings** tab on the left. In the list in the " "middle, scroll to **Image Sharpening** and set it to **Sharpening Off**." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:162 msgid "" "**AMD (Windows):** Open the start menu and choose **AMD Software**. Click " "the settings \"cog\" icon in the top-right corner. Go to the **Graphics** " "tab then disable **Radeon Image Sharpening**." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:166 msgid "" "If the editor or project appears overly blurry, this is likely due " "to :abbr:`FXAA (Fast Approximate AntiAliasing)` being forced on all Vulkan " "or OpenGL applications by your graphics driver." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:170 msgid "" "**NVIDIA (Windows):** Open the start menu and choose **NVIDIA Control " "Panel**. Open the **Manage 3D settings** tab on the left. In the list in the " "middle, scroll to **Fast Approximate Antialiasing** and set it to " "**Application Controlled**." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:174 msgid "" "**NVIDIA (Linux):** Open the applications menu and choose **NVIDIA X Server " "Settings**. Select to **Antialiasing Settings** on the left, then uncheck " "**Enable FXAA**." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:177 msgid "" "**AMD (Windows):** Open the start menu and choose **AMD Software**. Click " "the settings \"cog\" icon in the top-right corner. Go to the **Graphics** " "tab, scroll to the bottom and click **Advanced** to unfold its settings. " "Disable **Morphological Antialiasing**." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:182 msgid "" "Third-party vendor-independent utilities such as vkBasalt may also force " "sharpening or FXAA on all Vulkan applications. You may want to check their " "configuration as well." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:186 msgid "" "After changing options in the graphics driver or third-party utilities, " "restart Godot to make the changes effective." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:189 msgid "" "If you still wish to force sharpening or FXAA on other applications, it's " "recommended to do so on a per-application basis using the application " "profiles system provided by graphics drivers' control panels." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:194 msgid "The editor or project appears to have washed out colors" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:196 msgid "" "On Windows, this is usually caused by incorrect OS or monitor settings, as " "Godot currently does not support :abbr:`HDR (High Dynamic Range)` *output* " "(even though it may internally render in HDR)." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:200 msgid "" "As `most displays are not designed to display SDR content in HDR mode " "`__, it is recommended to " "disable HDR in the Windows settings when not running applications that use " "HDR output. On Windows 11, this can be done by pressing :kbd:`Windows + Alt " "+ B` (this shortcut is part of the Xbox Game Bar app). To toggle HDR " "automatically based on applications currently running, you can use " "`AutoActions `__." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:207 msgid "" "If you insist on leaving HDR enabled, it is possible to somewhat improve the " "result by ensuring the display is configured to use :abbr:`HGIG (HDR Gaming " "Interest Group)` tonemapping (as opposed to :abbr:`DTM (Dynamic Tone " "Mapping)`), then `using the Windows HDR calibration app `__. It is " "also strongly recommended to use Windows 11 instead of Windows 10 when using " "HDR. The end result will still likely be inferior to disabling HDR on the " "display, though." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:217 msgid "Support for HDR *output* is planned in a future release." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:220 msgid "" "The editor/project freezes or displays glitched visuals after resuming the " "PC from suspend" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:222 msgid "" "This is a known issue on Linux with NVIDIA graphics when using the " "proprietary driver. There is no definitive fix yet, as suspend on Linux + " "NVIDIA is often buggy when OpenGL or Vulkan is involved. The Compatibility " "rendering method (which uses OpenGL) is generally less prone to suspend-" "related issues compared to the Forward+ and Mobile renderers (which use " "Vulkan)." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:228 msgid "" "The NVIDIA driver offers an *experimental* `option to preserve video memory " "after suspend `__ which may resolve " "this issue. This option has been reported to work better with more recent " "NVIDIA driver versions." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:233 msgid "" "To avoid losing work, save scenes in the editor before putting the PC to " "sleep." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:236 msgid "" "The project works when run from the editor, but fails to load some files " "when running from an exported copy" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:238 msgid "" "This is usually caused by forgetting to specify a filter for non-resource " "files in the Export dialog. By default, Godot will only include actual " "*resources* into the PCK file. Some files commonly used, such as JSON files, " "are not considered resources. For example, if you load ``test.json`` in the " "exported project, you need to specify ``*.json`` in the non-resource export " "filter. See :ref:`doc_exporting_projects_export_mode` for more information." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:245 msgid "" "Also, note that files and folders whose names begin with a period will never " "be included in the exported project. This is done to prevent version control " "folders like ``.git`` from being included in the exported PCK file." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:249 msgid "" "On Windows, this can also be due to :ref:`case sensitivity " "` issues. If you reference a " "resource in your script with a different case than on the filesystem, " "loading will fail once you export the project. This is because the virtual " "PCK filesystem is case-sensitive, while Windows's filesystem is case-" "insensitive by default." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:256 msgid "" "The project crashes frequently or instantly after opening it from the " "project manager" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:258 msgid "" "This could be caused by a number of things such as an editor plugin, " "GDExtension addon, or something else. In this scenario it's recommended that " "you open the project in recovery mode, and attempt to find and fix whatever " "is causing the crashes. See the :ref:`Project Manager page " "` for more information." msgstr "" #: ../../docs/tutorials/editor/index.rst:7 #, fuzzy msgid "Editor introduction" msgstr "Uvod" #: ../../docs/tutorials/editor/index.rst:9 msgid "" "In this section, we cover the Godot editor in general, from its interface to " "using it with the command line." msgstr "" #: ../../docs/tutorials/editor/index.rst:13 msgid "Editor's interface" msgstr "" #: ../../docs/tutorials/editor/index.rst:15 msgid "" "The following pages explain how to use the various windows, workspaces, and " "docks that make up the Godot editor. We cover some specific editors' " "interfaces in other sections where appropriate. For example, " "the :ref:`animation editor `." msgstr "" #: ../../docs/tutorials/editor/index.rst:32 #, fuzzy msgid "XR editor" msgstr "Animacija" #: ../../docs/tutorials/editor/index.rst:34 msgid "" "Godot offers a port of the editor designed to run natively on Meta Quest " "devices. The port can be downloaded from the `Meta Horizon Store `__, or from " "the `Godot download page `__." msgstr "" #: ../../docs/tutorials/editor/index.rst:45 msgid "Android editor" msgstr "" #: ../../docs/tutorials/editor/index.rst:47 msgid "" "Godot offers a native port of the editor running entirely on Android " "devices. The Android port can be downloaded from the `Android Downloads page " "`__. While we strive for feature " "parity with the Desktop version of the editor, the Android port has a " "certain amount of caveats you should be aware of." msgstr "" #: ../../docs/tutorials/editor/index.rst:59 msgid "Web editor" msgstr "" #: ../../docs/tutorials/editor/index.rst:61 msgid "" "Godot offers an HTML5 version of the editor running entirely in your " "browser. No download is required to use it, but it has a certain amount of " "caveats you should be aware of." msgstr "" #: ../../docs/tutorials/editor/index.rst:72 msgid "Advanced features" msgstr "" #: ../../docs/tutorials/editor/index.rst:74 msgid "" "The articles below focus on advanced features useful for experienced " "developers, such as calling Godot from the command line and using an " "external text editor like Visual Studio Code or Emacs." msgstr "" #: ../../docs/tutorials/editor/index.rst:87 #: ../../docs/tutorials/editor/managing_editor_features.rst:6 msgid "Managing editor features" msgstr "" #: ../../docs/tutorials/editor/index.rst:89 msgid "" "Godot allows you to remove features from the editor. This may be useful if " "you're an educator trying to ease students into the editor slowly, or if " "you're working on a project that's only 2D or only 3D and don't want to see " "what you don't need." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:4 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.rst:113 msgid "Using the Project Manager" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:6 msgid "" "When you launch Godot, the first window you see is the Project Manager. It " "lets you create, remove, import, or play game projects:" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:11 msgid "" "To change the editors language click on the **Settings** Button in the top " "right corner:" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:16 msgid "" "In Project Manager Settings, you can change the interface **language** from " "the language dropdown menu, which is the system default language by default." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:19 msgid "" "You can also change the **theme** of the editor, the **display scale** for " "different interface element sizes, and the availability of online " "functionality using **network mode**. If network mode is online, Godot will " "also check and inform you about new versions of Godot." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:23 msgid "" "The **directory naming convention** can also be changed to replace spaces " "according to the chosen format when creating folders automatically." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:31 #, fuzzy msgid "Creating and importing projects" msgstr "Započinjanje" #: ../../docs/tutorials/editor/project_manager.rst:33 msgid "To create a new project:" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:35 msgid "Click the **Create** button on the top-left of the window." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:36 msgid "" "Give the project a name, then open the file browser using the **Browse** " "button, and choose an empty folder on your computer to save the files. " "Alternatively, you can enable **Create Folder** option to automatically " "create a new sub-folder with the project name, following the directory " "naming convention set in the settings. An empty folder will show a green " "tick on the right." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:41 msgid "Select one of the renderers (this can also be changed later)." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:42 msgid "" "Click the **Create & Edit** button to create the project folder and open it " "in the editor." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:46 msgid "" "You can optionally choose a version control system. Currently, only `git " "`__ is supported and it needs the Godot Git Plugin to " "be installed, either manually or using the :ref:`Asset Library " "`. To learn more about the Godot Git Plugin, see its " "`wiki `__." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:51 msgid "Using the file browser" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:53 msgid "" "From the **Create New Project** window, click the **Browse** button to open " "Godot's file browser. You can pick a location or type the folder's path in " "the **Path** field, after choosing a drive." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:57 msgid "" "Left of the path field on the top row contains arrows to navigate backward " "and forward through the last visited locations. The up arrow navigates to " "parent folder. On the right side of the path field, there are buttons to " "refresh the current folder's contents, favorite/unfavorite the current " "folder, and show/hide hidden folders." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:63 msgid "" "Next, the buttons to switch the display type of the folders and files " "between grid view and list view are seen." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:66 msgid "The last button on the right will create a new folder." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:68 msgid "" "Favorited folders will be displayed on the left side under the **Favorites** " "section. You can sort the favorites using the up and down buttons in this " "section. Last chosen folders will be listed under the **Recent** list." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:75 msgid "Opening and importing projects" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:77 msgid "" "The next time you open the Project Manager, you'll see your new project in " "the list. Double click on it to open it in the editor." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:82 msgid "" "You can similarly import existing projects using the **Import** button. " "Locate the folder that contains the project or the **project.godot** file to " "import and edit it." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:88 msgid "" "Alternatively, it is possible to choose a zip file to be automatically " "extracted by Godot." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:90 msgid "When the folder path is correct, you'll see a green checkmark." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:97 msgid "Downloading demos and templates" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:99 msgid "" "From the **Asset Library** tab you can download open source project " "templates and demos from the :ref:`Asset Library ` to help you get started faster." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:103 msgid "" "The first time you open this tab you'll notice that it's asking you to go " "online. For privacy reasons the project manager, and Godot editor, can't " "access the internet by default. To enable accessing the internet click the " "**Go Online** button. This will also allow project manager to notify you " "about updates. If you wish to turn this off in the future go into project " "manager settings and change **Network Mode** to \"Offline\"" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:109 msgid "" "Now that Godot is connected to the internet you can download a demo or " "template, to do this:" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:112 msgid "Click on its title." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:113 msgid "On the page that opens, click the download button." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:114 msgid "" "Once it finished downloading, click install and choose where you want to " "save the project." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:120 msgid "Managing projects with tags" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:122 msgid "" "For users with a lot of projects on one PC it can be a lot to keep track of. " "To aid in this Godot allows you to create project tags. To add a tag to a " "project click on the project in the project manager, then click on the " "**Manage Tags** button" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:128 msgid "" "This will open up the manage project tags window. To add a tag click the " "plus button." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:132 msgid "" "Type out the tag name, and click **OK**. Your project will now have a tag " "added to it. These tags can be used for any other project in your project " "manager." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:135 msgid "" "To show projects with a specific tag only, you can click on the tags or " "write ``tag:`` and type the tag you would like to search for in the filter " "bar. To limit the results using multiple tags, you can click on another tag " "or add ``tag:`` after a space and type another tag in the filter bar." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:140 msgid "" "In addition, tags will stay with projects. So if you tag your project, send " "it to another machine, and import it into the project manager you will see " "the tags you created." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:144 msgid "" "To remove a tag from your project manager it must be removed from all the " "projects it's used by. Once that's done close the project manager, open it " "up again, and the tag should be gone." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:149 #, fuzzy msgid "Recovery Mode" msgstr "Način Ravnala" #: ../../docs/tutorials/editor/project_manager.rst:151 msgid "" "If a project is immediately crashing on startup, or crashing frequently " "during editing it can be opened in recovery mode, to attempt to make it more " "stable while looking for the source of the crashing to fix it." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:155 msgid "" "Usually a project should open in recovery mode automatically when you re-" "open it after a crash. If it doesn't you can manually open recovery mode by " "selecting the project in the project manager, to do that select the project " "from your list of projects, click the dropdown button next to the edit node, " "and select ``Edit in recovery mode``." msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:163 msgid "While in recovery mode the following are disabled:" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:165 msgid "Tool scripts" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:166 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:176 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:210 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:152 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.5.rst:175 #: ../../docs/tutorials/plugins/editor/index.rst:4 msgid "Editor plugins" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:167 #, fuzzy msgid "GDExtension addons" msgstr "Razvoj" #: ../../docs/tutorials/editor/project_manager.rst:168 msgid "Automatic scene restoring" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:169 #, fuzzy msgid "Running the project" msgstr "Uvod" #: ../../docs/tutorials/editor/project_manager.rst:171 msgid "" "It is recommended that you backup your project before editing it in recovery " "mode." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:4 #, fuzzy msgid "Inspector Dock" msgstr "Izvoz" #: ../../docs/tutorials/editor/inspector_dock.rst:6 msgid "" "The Inspector dock lists all properties of an object, resource, or node. It " "will update the list of the properties as you select a different node from " "the Scene Tree dock, or if you use **Open** command from the FileSystem's " "context menu." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:12 msgid "" "This page explains how the Inspector dock works in-depth. You will learn how " "to edit properties, fold and unfold areas, use the search bar, and more." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:16 #: ../../docs/tutorials/editor/script_editor.rst:47 #: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:10 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0001.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0002.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0003.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0101.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0102.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0103.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0104.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0105.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0106.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0107.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0108.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0109.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0110.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0111.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0201.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0202.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0203.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0301.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0302.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0303.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0401.rst:8 #: ../../docs/tutorials/scripting/c_sharp/diagnostics/GD0402.rst:8 #: ../../docs/tutorials/scripting/debug/objectdb_profiler.rst:33 msgid "Usage" msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:18 msgid "" "If the inspector dock is visible, clicking on a node in the scene tree will " "automatically display its properties. If it is not visible, you can show it " "by navigating to **Editor > Editor Docks > Inspector**." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:23 msgid "At the top of the dock are the file and navigation buttons." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:27 msgid "From left to right:" msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:29 msgid "" "Opens a new window to select and create a resource in the memory and edit it." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:30 msgid "Opens a resource from the FileSystem to edit." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:31 msgid "Saves the currently edited resource to disk." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:32 msgid "Provides options to:" msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:34 msgid "**Edit Resource from Clipboard** by pasting the copied resource." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:35 msgid "**Copy Resource** to clipboard." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:36 msgid "**Show in FileSystem** if the resource is already saved." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:37 msgid "" "**Make Resource Built-In** to work in a built-in resource, not the one from " "the disk." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:39 msgid "" "The \"<\" and \">\" arrows let you navigate through your edited object " "history." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:40 msgid "" "The button next to them opens the history list for a quicker navigation. If " "you created multiple resources in the memory, you will also see them here." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:43 msgid "" "Below, you can find the selected node's icon, its name, and the quick button " "to open its documentation on the right side. Clicking on the node's name " "itself will list the sub-resources of this node if there are any." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:47 msgid "" "Then comes the search bar. Type anything in it to filter displayed " "properties. Delete the text to clear the search. This search is case " "insensitive and also searches letter by letter as you type. For instance, if " "you type ``vsb``, one of the results you see will be Visibility property as " "this property contains all of these letters." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:53 msgid "" "Before discussing the tool button next to the filter bar, it is worth " "mentioning what you actually see below it and how it is structured." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:58 msgid "" "Properties are grouped inside their respective *classes* as *sections*. You " "can expand each section to view the related properties." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:61 msgid "" "You can also open the documentation of each class by right-clicking on a " "class and selecting **Open Documentation**. Similarly, you can right click " "on a property and copy or paste its value, copy the property path, favorite " "it to be shown on the top of the inspector, or open its documentation page." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:67 msgid "" "If you hover your mouse over a property, you will see the description of " "what it does as well as how it can be called inside the script." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:70 msgid "" "You can directly change the values by clicking, typing, or selecting from " "the menu. If the property is a number or a slider, you can keep your left " "mouse button pressed and drag to change the values." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:76 msgid "" "If a node's property is a sub-resource, you can click on the down arrow to " "pick a resource type, or load one using the **Quick Load** or **Load** " "options. Alternatively, a supported resource can be dragged from the " "FileSystem. Once you start dragging, the compatible property will be " "highlighted. Simply drop it on the appropriate property's value." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:82 msgid "" "After loading a sub-resource, you can click on it to see its properties or " "adjust them." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:86 msgid "" "The values with different values than their original values will have a " "revert icon (|undo|). Clicking on this icon reverts the value to its " "original state. If the values are linked with each other, they will have a " "chain icon and changing one will change others as well. You can unchain them " "by clicking on this icon." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:84 msgid "undo" msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:91 msgid "" "If you are changing a property a lot, you may consider favoriting it by " "right-clicking and choosing **Favorite Property**. This will show it at the " "top of the inspector for all objects of this class." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:95 msgid "" "Now that we have a better understanding of the terms, we can proceed with " "the tool menu. If you click the tool menu icon next to the filter bar, a " "drop-down menu will offer various view and edit options." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:101 msgid "**Expand All**: Expands all sections showing all available properties." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:102 msgid "" "**Collapse All**: Collapses all properties showing only classes and the " "sections." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:103 msgid "" "**Expand Non-Default**: Only expands the sections where the original value " "is different than the current value (the properties with a revert icon (|" "undo|))." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:105 msgid "" "**Property Name Style**: This section determines how the properties' text is " "displayed in the inspector. ``Raw`` uses the property's own naming, " "``Capitalized`` uses title case by changing the initial letters of each word " "to uppercase and removing underscores, ``Localized`` displays the " "translation of the properties if you are using the Editor in a language " "other than English." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:110 msgid "" "**Copy Properties**: Copies all properties of the current node with their " "current values." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:111 msgid "" "**Paste Properties**: Pastes the copied properties from the clipboard. " "Useful to apply the common properties of one node to another." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:113 msgid "" "**Make Sub-Resources Unique**: By default, a duplicated node shares the sub-" "resources of the original node. Changing one parameter of the sub-resource " "in one node, affects the other one. Clicking this option makes each sub-" "resource used in this node unique, separated from other nodes." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:119 msgid "" "If a node has exported variables in its attached script, you will also see " "these in the inspector. The first image in this section has one for the " "Player node: `Action Suffix`. See :ref:`doc_gdscript_exports` for more on " "this topic." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:123 msgid "Refer to :ref:`doc_customizing_editor` for dock customization options." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:4 msgid "Project Settings" msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:6 msgid "" "There are dozens of settings you can change to control a project's " "execution, including physics, rendering, and windowing settings. These " "settings can be changed from the **Project Settings** window, from code, or " "by manually editing the ``project.godot`` file. You can see a full list of " "settings in the :ref:`ProjectSettings ` class." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:12 msgid "" "Internally, Godot stores the settings for a project in a ``project.godot`` " "file, a plain text file in INI format. While this is human-readable and " "version control friendly, it's not the most convenient to edit. For that " "reason, the **Project Settings** window is available to edit these settings. " "To open the Project Settings, select **Project > Project Settings** from the " "main menu." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:21 msgid "The Project Settings window" msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:23 msgid "" "The **Project Settings** window is mainly used to change settings in the " "**General** tab. Additionally, there are tabs for the :ref:`Input Map " "`, :ref:`Localization " "`, :ref:`Globals " "`, :ref:`Plugins " "`, and **Import Defaults**. Usage " "of these other tabs is documented elsewhere." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:32 #, fuzzy msgid "Changing project settings" msgstr "Način Navigacije" #: ../../docs/tutorials/editor/project_settings.rst:34 msgid "" "The **General** tab of the project settings window works much like the " "inspector. It displays a list of project settings which you can change, just " "like inspector properties. There is a list of categories on the left, which " "you can use to select related groups of settings. You can also search for a " "specific setting with the **Filter Settings** field." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:40 msgid "" "Each setting has a default value. Settings can be reset to their default " "values by clicking the circular arrow **Reset** button next to each property." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:44 msgid "Changing project settings from code" msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:46 msgid "" "You can use :ref:`set_setting() ` " "to change a setting's value from code:" msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:60 msgid "" "However, many project settings are only read once when the game starts. " "After that, changing the setting with ``set_setting()`` will have no effect. " "Instead, most settings have a corresponding property or method on a runtime " "class like :ref:`Engine ` or :ref:`DisplayServer " "`:" msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:76 msgid "" "In general, project settings are duplicated at runtime in the :ref:`Engine " "`, :ref:`PhysicsServer2D " "`, :ref:`PhysicsServer3D " "`, :ref:`RenderingServer " "`, :ref:`Viewport `, or :ref:`Window " "` classes. In the :ref:`ProjectSettings " "` class reference, settings links to their equivalent " "runtime property or method." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:85 msgid "Reading project settings" msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:87 msgid "" "You can read project settings with :ref:`get_setting() " "` " "or :ref:`get_setting_with_override() " "`:" msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:102 msgid "" "Since many project settings are only read once at startup, the value in the " "project settings may no longer be accurate. In these cases, it's better to " "read the value from the runtime equivalent property or method:" msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:118 msgid "Manually editing project.godot" msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:120 msgid "" "You can open the ``project.godot`` file using a text editor and manually " "change project settings. Note that if the ``project.godot`` file does not " "have a stored value for a particular setting, it is implicitly the default " "value of that setting. This means that if you are manually editing the file, " "you may have to write in both the setting name *and* the value." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:126 msgid "" "In general, it is recommended to use the Project Settings window rather than " "manually edit ``project.godot``." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:130 msgid "Advanced project settings" msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:135 msgid "The advanced project settings" msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:137 msgid "" "By default, only some project settings are shown. To see all the project " "settings, enable the **Advanced Settings** toggle." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:4 #, fuzzy msgid "Script Editor" msgstr "Animacija" #: ../../docs/tutorials/editor/script_editor.rst:11 msgid "" "Godot Engine's script editor is a powerful and fully-integrated text editor " "that not only streamlines the process of writing and debugging code written " "in GDScript but also allows for working with plain text files, providing " "developers with a seamless environment for scripting game logic and " "behaviors. It can highlight your code, automatically indent it, perform " "syntax checks, and much more. You can also create breakpoints to debug your " "project without switching to another window. The text editor also serves as " "an offline class reference viewer, which can be accessed in several ways as " "described in " "the :ref:`doc_intro_to_the_editor_interface_integrated_class_reference`." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:28 #, fuzzy msgid "Features" msgstr "Snimka" #: ../../docs/tutorials/editor/script_editor.rst:30 msgid "Some of the key features of the text editor are listed below:" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:32 msgid "Fully-integrated code editor for GDScript." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:33 msgid "Syntax highlighting support for GDScript and JSON files." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:34 msgid "Syntax checking for GDScript and JSON files." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:35 msgid "Bookmark and breakpoint support." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:36 #, fuzzy msgid "Automatic indentation." msgstr "Uvod" #: ../../docs/tutorials/editor/script_editor.rst:37 msgid "Code folding." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:38 msgid "Customizable theme." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:39 msgid "Multiple carets, which can be enabled using :kbd:`Alt + Left Click`." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:40 msgid "Auto-completion of variables, functions, constants, etc." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:41 msgid "" "Inline refactoring of symbols by selecting them and using :kbd:`Ctrl + D`." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:42 msgid "Mass find and replace across project files." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:49 msgid "" "If you are using GDScript in your project, the built-in text editor in Godot " "provides everything you need, serving as a one-stop location to fully " "utilize the Godot Engine. Nearly all parameters that can be adjusted via the " "user interface can also be modified directly through code." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:54 msgid "" "If you would like to use an external text editor or prefer to use C# in your " "project, see :ref:`doc_external_editor` " "and :ref:`doc_c_sharp_setup_external_editor`." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:58 msgid "" "Similar to many parts of the Godot's interface, the text editor can also be " "customized by changing its settings to your liking. You can access these " "settings by opening **Editor > Editor Settings** and going to the **Text " "Editor** group." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:65 msgid "" "You can open the Script Editor using the **Script** button in the workspace " "selector, located at the top center of Godot's interface. Alternatively, you " "can use the **Open Script** button next to a node in the Scene Tree dock, or " "double-click on a ``.gd`` file or a recognized text file in the FileSystem " "dock to open it directly in the Script Editor." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:73 msgid "" "Once it is open, you will see the text editor menus at the top, below the " "scene switcher. Next to the menus, you'll find buttons to open the online " "documentation or search within the built-in class reference. To the right of " "these buttons are two navigation arrows that allow you to navigate through " "your viewing history. Finally, you can use the float button to separate the " "text editor from Godot's window, which is useful if you are working with " "multiple monitors." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:81 msgid "" "Underneath the menus on the left, you will see the script panel. In the " "center, adjacent to the script panel, is the coding area. Beneath the coding " "area is the status bar, which displays the error and warning count in the " "code. Clicking on the error or warning icons will show the list of errors " "with the line numbers. Clicking on one will jump to that line. You can also " "choose to ignore warnings by opening the list and clicking ``Ignore``. The " "status bar also lets you change the zoom level of the code by clicking the " "percentage value. You can also use :kbd:`Ctrl + Mouse Wheel` (:kbd:`Cmd + " "Mouse Wheel` on Mac) to achieve the same effect. The status bar also shows " "the current position of the caret in terms of line and column, and whether " "the indentation is done using tabs, or spaces." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:94 msgid "" "Many of the actions performed in the text editor can also be executed using " "shortcuts. The actions show their corresponding shortcuts next to them. For " "a complete shortcut list, see the :ref:`text editor shortcuts " "`." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:98 msgid "" "In the next sections, we will go through different aspects of the text " "editor. You can also select a section below to jump to a specific topic:" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:109 #, fuzzy msgid "Script Panel" msgstr "Animacija" #: ../../docs/tutorials/editor/script_editor.rst:118 msgid "" "Below the menus, on the left panel, you will see a list of opened files and " "documentation pages. Depending on the file type, this list will have an icon " "next to the file name. For example, the |script| icon means that it is a " "GDScript. the |scriptcsharp| means it is a C# script. The |documentation| " "means that this is a built-in class reference. Finally, the |toolscript| " "means it is a currently running script (See :ref:`tool annotation " "` for more on this). Hovering a file will " "show a tooltip with its relative location in the project folder." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:111 #, fuzzy msgid "script" msgstr "Opis" #: ../../docs/tutorials/editor/script_editor.rst:112 msgid "scriptcsharp" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:113 #, fuzzy msgid "documentation" msgstr "Izvanmrežna Dokumentacija" #: ../../docs/tutorials/editor/script_editor.rst:114 msgid "toolscript" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:126 msgid "" "On the status bar, clicking the left arrow hides the script panel, clicking " "on the right arrow shows it." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:129 msgid "" "If you did not change any settings, the file names may also have a different " "coloring. This helps you identify the recently edited files by highlighting " "them. This behavior can be changed in the **Editor > Editor Settings** by " "adjusting the **Script Temperature** properties in the **Text Editor** " "section." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:134 msgid "" "The filter bar above the file names introduces a handy case-insensitive " "search to find a specific file. Even if you just type the letters of a file " "name into the bar, files containing these letters in order will also appear. " "Assume that there is a file named ``button.gd`` in the list. If you type " "``btn`` into the filter bar, this file will appear in the results. To reset " "the filter, clear the filter bar." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:140 msgid "" "An asterisk (*) next to a file name indicates that the file has unsaved " "changes." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:142 msgid "" "If you just enter \"*\" in the filter bar, you can display all unsaved files." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:144 msgid "" "You can drag a file to change the ordering. Middle-clicking on a file closes " "it. Right-clicking on a file provides several options to save or close " "files, or to copy the relative path of the file. On this menu:" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:148 msgid "" "You can also use **Move Up** and **Move Down** to change the order of the " "file, or use **Sort** to sort all files alphabetically. **Toggle Scripts " "Panel** hides the panel, which can be displayed again using the right arrow " "on the status bar. **Close Docs** closes all opened in-class reference " "documents leaving only script files open. **Show in FileSystem** finds and " "highlights the file in the FileSystem dock." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:155 msgid "" "Below the file list, you'll see the name of the currently open file. The " "button next to this switches the ordering of the methods defined in this " "file between alphabetical and as they appear. Under this is the outline of " "the file. If this is a script file, it will contain the list of defined " "methods. If, however, a class reference page is open, this area will show " "the table of contents of this document. Clicking on an item in this list " "will jump to the respective function or section in the file. Similarly, the " "**Filter Methods** bar lets you search for a specific function or section " "within the selected document with the same behavior as filtering scripts." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:168 msgid "Menus" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:170 msgid "" "The text editor's menus lie below the scene switcher and allow you to access " "a variety of tools and options, such as file management, search and replace, " "debugging controls, and code formatting features." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:174 msgid "" "An asterisk (*) next to an action means that this operation is also " "available in the context menu, which can be opened by right-clicking in the " "code editor." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:179 msgid "The **File** menu provides the following options:" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:183 msgid "" "**New Script...**: Opens the new script dialog to create and add the script " "to the project. If creation is successful, it will directly open it in the " "text editor. Depending on the version of Godot (with C# support or not), you " "can choose ``.gd`` or ``.cs`` as the extension." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:187 msgid "" "**New Text File...**: Opens the file dialog to create a plain text file with " "one of the recognized formats. Godot can also highlight ``json`` files." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:189 msgid "" "**Open...**: Opens the file dialog to let you browse inside your computer " "and choose any recognized text file to open it." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:191 msgid "" "**Reopen Closed Script**: Reopens the last closed scripts. You can use this " "option multiple times to reopen other closed scripts if you closed more than " "one." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:193 msgid "" "**Open Recent**: Provides a list of last opened scripts. You can also clear " "the list using the provided option at the bottom of the list." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:195 msgid "**Save**: Saves the currently selected script." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:196 msgid "" "**Save As...**: Opens the file dialog to save the currently open script with " "a different name." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:198 msgid "" "**Save All**: Saves all unsaved open scripts in the text editor. Scripts " "with unsaved changes will have an asterisk (*) next to their names in the " "script list." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:200 msgid "" "**Soft Reload Tool Script**: If the selected script is a :ref:`tool " "`, reloads the script to execute it again." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:202 msgid "" "**Copy Script Path**: Copies the currently selected script's relative path " "in the project using the ``res://`` prefix." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:204 msgid "" "**Show in FileSystem**: Finds and highlights the selected file in the " "FileSystem dock." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:206 msgid "" "**History Previous**: Changes the active script to the one that was " "previously opened. This is useful when you have multiple scripts open and " "want to quickly navigate back to the last script you were editing. If you " "also changed the caret position more than 10 lines, you will first move it " "to its previous location in the same file." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:210 msgid "" "**History Next**: After using `History Previous` to go back to an earlier " "script, this feature allows you to move forward through the script history, " "switching to scripts that were previously accessed. Similar to above, if you " "also changed the caret position more than 10 lines, you will first move it " "to its next location in the same file." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:215 msgid "" "**Theme**: Provides options to import an existing theme, save, or reload it. " "Changing theme settings is performed via `Editor Settings`." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:217 msgid "**Close**: Closes the active script." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:218 msgid "" "**Close All**: Closes all open scripts and prompts to save if there are " "unsaved changes." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:219 msgid "**Close Other Tabs**: Closes all open scripts except the selected one." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:220 msgid "" "**Close Docs**: Closes the class reference documentation pages, leaving only " "the scripts." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:222 msgid "" "**Run**: If the script extends :ref:`EditorScript ` and " "intended to be executed without running the project, this option runs the " "script. See :ref:`doc_running_code_in_the_editor_editorscript` for more." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:225 msgid "" "**Toggle Scripts Panel**: Shows or hides the script panel located on the " "left side of the text editor, allowing you to expand the available coding " "area. More on the `Scripts Panel` is explained :ref:`above " "`." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:229 msgid "The **Edit** menu provides several options for line operations:" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:233 msgid "" "**Undo***: Allows you to reverse the most recent action or series of " "actions, restoring document or code to its previous state before the changes " "were made." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:235 msgid "" "**Redo***: Allows you to reapply an action that was previously undone, " "effectively redoing the last action that was reversed by the Undo function." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:237 msgid "**Cut***: Cuts the selection to the clipboard." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:238 msgid "**Copy***: Copies the selection to the clipboard." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:239 msgid "**Paste***: Pastes the content of the clipboard if it contains text." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:240 msgid "**Select All***: Selects the all code in the text editor." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:241 msgid "" "**Duplicate Selection**: Copies the selection and appends it next to the " "selection." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:242 msgid "" "**Duplicate Lines**: Duplicates the current line and adds it as a new line " "below the current line." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:244 msgid "" "**Evaluate Selection***: Computes the values of the selected text if it " "contains `only` a mathematical expression, such as ``83 * 3`` or " "``pow(2,3)``." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:246 msgid "" "**Toggle Word Wrap**: Disables the horizontal scrollbar by wrapping the long " "lines to the next line. Note that this is just a visual change and no new " "linebreaks are added." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:248 msgid "" "**Line**: Provides a set of line operations. Depending on the opened file, " "the options might also be directly in the Edit menu, instead of a submenu." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:251 msgid "" "**Move Up**: Moves the current line or the selected line(s) one line up." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:252 msgid "" "**Move Down**: Moves the current line or the selected line(s) one line down." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:253 msgid "" "**Indent***: Indents the text from the caret or the selected line(s), " "following the indentation setting." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:255 msgid "" "**Unindent***: Unindents the text from the caret or the selected line(s), " "following the indentation setting." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:257 msgid "**Delete Line**: Deletes the current line or the selected line(s)." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:258 msgid "" "**Toggle Comment***: Comments and uncomments the current line or the " "selected line(s). You can perform the same action by selecting line(s) and " "choosing the same action after right-clicking on the selected text." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:262 msgid "" "**Folding**: Provides a set of folding options for the selected text. " "Depending on the opened file, the options might also be directly in the Edit " "menu, instead of a submenu." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:265 msgid "" "**Fold/Unfold Line***: If the code in the current line has a code block or " "code region beneath it, it hides this block by collapsing the lines. You can " "then unfold it using this option again, using the \">\" arrow next to the " "line number in the coding area, or clicking on the ellipsis \"...\" icon at " "the end of the folded line." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:269 msgid "" "**Fold All Lines**: Folds all code blocks or code regions in the open " "document." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:270 msgid "" "**Unfold All Lines**: Unfolds all code blocks and code regions in the open " "document." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:271 msgid "" "**Create Code Region***: Wraps the selected text in a foldable code region " "to improve the readability of larger scripts. " "See :ref:`doc_gdscript_builtin_types` for more." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:274 msgid "" "**Completion Query**: Suggests from built-in or user created symbols to auto-" "complete the partially written code. :kbd:`Up` and :kbd:`Down` arrows " "navigate up and down, pressing :kbd:`Enter` or :kbd:`Tab` accepts and adds " "the highlighted symbol to the code. :kbd:`Tab` will also replace existing " "text to the right of the caret." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:277 msgid "" "**Trim Trailing Whitespaces**: Removes extra spacing at the end of each line " "in the file." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:278 msgid "" "**Trim Final Newlines**: Removes the extra new lines at the end of the file." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:279 msgid "" "**Indentation**: Provides options for the indentation of the open file. " "Depending on the opened file, the options might also be directly in the Edit " "menu, instead of a submenu." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:283 msgid "" "**Convert Indent to Spaces**: Converts all indentation in the file to spaces." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:284 msgid "" "**Convert Indent to Tabs**: Converts all indentation in the file to tabs." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:285 msgid "" "**Auto Indent**: Converts the indentation of the selected lines (or the " "entire file) following the indentation setting." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:288 msgid "" "**Convert Case**: Changes the case of the selected text to `Upper Case*`, " "`Lower Case*`, or capitalizes each initial letter of the words." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:290 msgid "**Syntax Highlighter**: Allows you to choose the syntax highlighter." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:292 msgid "**Plain Text**: Disables highlighting." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:293 msgid "**Standard**: Default highlighting for C# scripts." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:294 msgid "**JSON**: Syntax highlighting for JSON files." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:295 msgid "**GDScript**: Syntax highlighting for GDScript files." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:297 msgid "The **Search** menu provides the following options:" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:301 msgid "" "**Find...**: Opens the quick-find bar under the status bar to search for " "text in the open file. You can navigate to the next match and previous match " "using the up and down arrows, respectively. Checking **Match Case** makes " "the search case-sensitive. Checking **Whole Words** means that the text must " "not have any letters or numbers next to it, only symbols and whitespace." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:303 msgid "**Find Next**: Similar to the down arrow, shows the next occurrence." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:304 msgid "" "**Find Previous**: Similar to the up arrow, shows the previous occurrence." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:307 msgid "" "**Replace...**: Opens the find and replace bar under the status bar to find " "text and replace it in the open file. You can choose to replace them one at " "a time or all at once. Additionally, you can limit the replacement to the " "selected text by checking the **Selection Only** checkbox in the find and " "replace bar. You can also use :kbd:`Ctrl + D` to additionally select the " "next instance of the currently selected text, allowing you to perform an in-" "line replacement on multiple occurrences." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:311 msgid "" "**Find in Files...**: Opens a window to search for text within the files in " "the project folder. Selecting \"Find...\" starts with the chosen folder, and " "includes the file extensions checked in the filters. The results are shown " "in the bottom panel with the number of matches and total number of files " "found, in the **Search Results** tab. Clicking on a result opens the file " "and jumps to the respective line." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:316 msgid "" "**Replace in Files...**: Opens a window to search and replace text with " "different text within the found files in the project folder. After clicking " "**Replace...**, you can select in which files to replace using the **Search " "Results** tab in the bottom panel by (un)checking them and using **Replace " "All** button." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:323 msgid "Note that \"Replace in Files\" operation cannot be undone!" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:325 msgid "" "Both the **Find in Files** and **Replace in Files** windows share the " "**Search...** and **Replace...** buttons. The only difference in the latter " "window is an additional text field that automatically fills in the search " "results panel when the **Replace...** button is clicked. The replacement " "operation is only executed if you click the **Replace All** button in this " "bottom panel, allowing you to also edit the word to replace later within " "this panel." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:334 msgid "" "**Contextual Help***: Opens the list of built-in class reference similar to " "pressing :kbd:`F1` on a symbol, or choosing **Lookup Symbol** from the " "context menu." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:337 msgid "" "The **Go To** menu lets you navigate within the code at ease with these " "options:" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:341 msgid "" "**Go to Function...**: Opens the function list to jump to. You can achieve " "the same result by typing in the filter methods bar in the script panel." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:343 msgid "**Go to Line...**: Jumps to the entered line number in the code editor." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:344 msgid "" "**Bookmarks**: Contains actions for the bookmark functionality, which you " "can use to find your way through your code easier, such as an incomplete " "section. Bookmarked lines will have a blue bookmark symbol left of the line " "number." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:348 msgid "" "**Toggle Bookmark***: Adds or removes the bookmark on the line where the " "caret is. You can also right click on a line to achieve this." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:350 msgid "**Remove All Bookmarks**: Removes all bookmarks in the open document." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:351 msgid "" "**Go to Next Bookmark**: Jumps to the next bookmark in the open document." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:352 msgid "" "**Go to Previous Bookmark**: Jumps to the previous bookmark in the open " "document." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:353 msgid "" "**Bookmarks** menu will also contain the list of bookmarked lines, including " "their line number and displaying the partial content in that line." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:356 msgid "" "**Breakpoints**: Breakpoints are helpful while debugging your code. Similar " "to **Bookmarks** menu, this menu lets you add or remove breakpoints, " "navigate between them and directly jump to a specific breakpoint. An easy " "way to add a breakpoint is hovering over the blank area left of a line " "number. It will show a faded red circle. Clicking it will add a breakpoint " "and the circle will stay there. Clicking on a circle removes the breakpoint." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:362 msgid "" "**Debug** menu offers actions which can be used while debugging. " "See :ref:`doc_debugger_tools_and_options` for more." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:368 msgid "Coding area" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:370 msgid "" "This section will only cover the basics of the coding area in terms of the " "user interface. To learn more about scripting in Godot, refer to " "the :ref:`doc_gdscript` or :ref:`Scripting ` " "documentation." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:376 msgid "" "The coding area is where you will type your scripts if you are using the " "built-in text editor. It offers highlighting and auto-completion features to " "help you while you code." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:379 msgid "" "The coding area shows line numbers on the left side. Below the navigation " "arrows on the right side, there is a clickable minimap that provides an " "overview of the entire script, allowing you to scroll through it." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:383 msgid "" "If a line of code is long enough (more than 80 characters, by default), the " "text editor will display a vertical line that can be used as a soft " "guideline. For a hard guideline, this value is set to 100 characters, by " "default. Both values can be changed, or the display of the line can be " "toggled in the \"Appearance\" settings of the text editor." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:392 msgid "" "In the script, to the left of function definitions, you might see additional " "icons. The |override| icon indicates that this function is an :ref:`override " "` of an existing function. Clicking it opens the " "documentation of the original function. The |receiver| icon means that it is " "a receiving method of a signal. Clicking it shows where the signal is coming " "from. A |foldable| icon to the left of the line denotes a foldable block. " "You can click to collapse or expand it. Alternatively, the ellipsis (...) " "icon can also be clicked to expand a folded block." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:388 msgid "override" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:389 msgid "receiver" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:390 msgid "foldable" msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:400 msgid "" "The example below summarizes the paragraph above. Lines 52, 56, and 58 are " "foldable blocks, line 57 is a code region with the name \"New Code Region,\" " "which you can also fold, and line 62 is a folded block. Line 53 is a " "bookmark, which can quickly be jumped to using the **Go To > Bookmarks** " "menu. Line 55 is a breakpoint that can be used in :ref:`debugging " "`." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:408 msgid "" "Many of the colors of the text editor such as highlighting colors, or even " "breakpoint or bookmark icon colors can be customized. You can experiment " "them by opening the text editor settings navigating to **Editor > Editor " "Settings > Text Editor** section." msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:-1 msgid "cheatsheet, cheat sheet, shortcut" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:9 msgid "Default editor shortcuts" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:11 msgid "" "Many Godot editor functions can be executed with keyboard shortcuts. This " "page lists functions which have associated shortcuts by default, but many " "others are available for customization in editor settings as well. To change " "keys associated with these and other actions navigate to **Editor > Editor " "Settings > Shortcuts**." msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:16 msgid "" "While some actions are universal, a lot of shortcuts are specific to " "individual tools. For this reason it is possible for some key combinations " "to be assigned to more than one function. The correct action will be " "performed depending on the context." msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:23 msgid "" "While Windows and Linux builds of the editor share most of the default " "settings, some shortcuts may differ for macOS version. This is done for " "better integration of the editor into macOS ecosystem. Users fluent with " "standard shortcuts on that OS should find Godot Editor's default key mapping " "intuitive." msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:29 msgid "General editor actions" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:32 #: ../../docs/tutorials/editor/default_key_mapping.rst:102 #: ../../docs/tutorials/editor/default_key_mapping.rst:123 #: ../../docs/tutorials/editor/default_key_mapping.rst:178 #: ../../docs/tutorials/editor/default_key_mapping.rst:255 #: ../../docs/tutorials/editor/default_key_mapping.rst:344 #: ../../docs/tutorials/editor/default_key_mapping.rst:391 #: ../../docs/tutorials/editor/default_key_mapping.rst:402 #: ../../docs/tutorials/editor/default_key_mapping.rst:415 #: ../../docs/tutorials/editor/default_key_mapping.rst:446 #: ../../docs/tutorials/editor/default_key_mapping.rst:459 #: ../../docs/tutorials/editor/default_key_mapping.rst:482 #: ../../docs/tutorials/editor/default_key_mapping.rst:499 #: ../../docs/tutorials/editor/default_key_mapping.rst:538 #: ../../docs/tutorials/editor/default_key_mapping.rst:565 msgid "Action name" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:32 #: ../../docs/tutorials/editor/default_key_mapping.rst:102 #: ../../docs/tutorials/editor/default_key_mapping.rst:123 #: ../../docs/tutorials/editor/default_key_mapping.rst:178 #: ../../docs/tutorials/editor/default_key_mapping.rst:255 #: ../../docs/tutorials/editor/default_key_mapping.rst:344 #: ../../docs/tutorials/editor/default_key_mapping.rst:391 #: ../../docs/tutorials/editor/default_key_mapping.rst:402 #: ../../docs/tutorials/editor/default_key_mapping.rst:415 #: ../../docs/tutorials/editor/default_key_mapping.rst:446 #: ../../docs/tutorials/editor/default_key_mapping.rst:459 #: ../../docs/tutorials/editor/default_key_mapping.rst:482 #: ../../docs/tutorials/editor/default_key_mapping.rst:499 #: ../../docs/tutorials/editor/default_key_mapping.rst:538 #: ../../docs/tutorials/editor/default_key_mapping.rst:565 msgid "Windows, Linux" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:32 #: ../../docs/tutorials/editor/default_key_mapping.rst:102 #: ../../docs/tutorials/editor/default_key_mapping.rst:123 #: ../../docs/tutorials/editor/default_key_mapping.rst:178 #: ../../docs/tutorials/editor/default_key_mapping.rst:255 #: ../../docs/tutorials/editor/default_key_mapping.rst:344 #: ../../docs/tutorials/editor/default_key_mapping.rst:391 #: ../../docs/tutorials/editor/default_key_mapping.rst:402 #: ../../docs/tutorials/editor/default_key_mapping.rst:415 #: ../../docs/tutorials/editor/default_key_mapping.rst:446 #: ../../docs/tutorials/editor/default_key_mapping.rst:459 #: ../../docs/tutorials/editor/default_key_mapping.rst:482 #: ../../docs/tutorials/editor/default_key_mapping.rst:499 #: ../../docs/tutorials/editor/default_key_mapping.rst:538 #: ../../docs/tutorials/editor/default_key_mapping.rst:565 msgid "Editor setting" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 msgid "Open 2D Workspace" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 msgid ":kbd:`Ctrl + F1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 msgid ":kbd:`Cmd + Ctrl + 1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 msgid "``editor/editor_2d``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 msgid "Open 3D Workspace" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 #: ../../docs/tutorials/editor/default_key_mapping.rst:463 msgid ":kbd:`Ctrl + F2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 msgid ":kbd:`Cmd + Ctrl + 2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 msgid "``editor/editor_3d``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:38 msgid "Open Script Editor" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:38 msgid ":kbd:`Ctrl + F3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:38 msgid ":kbd:`Cmd + Ctrl + 3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:38 msgid "``editor/editor_script``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:40 msgid "Search Help" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:40 msgid ":kbd:`F1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:40 msgid ":kbd:`Opt + Space`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:40 msgid "``editor/editor_help``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:42 msgid "Distraction Free Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:42 msgid ":kbd:`Ctrl + Shift + F11`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:42 #: ../../docs/tutorials/editor/default_key_mapping.rst:486 msgid ":kbd:`Cmd + Shift + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:42 msgid "``editor/distraction_free_mode``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:44 msgid "Next Scene Tab" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:44 msgid ":kbd:`Ctrl + Tab`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:44 msgid "``editor/next_tab``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:46 msgid "Previous Scene Tab" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:46 msgid ":kbd:`Ctrl + Shift + Tab`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:46 msgid "``editor/prev_tab``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:48 msgid "Filter Files" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:48 msgid ":kbd:`Ctrl + Alt + P`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:48 msgid ":kbd:`Opt + Cmd + P`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:48 msgid "``editor/filter_files``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:50 msgid "Open Scene" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:50 msgid ":kbd:`Ctrl + O`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:50 msgid ":kbd:`Cmd + O`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:50 msgid "``editor/open_scene``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:52 msgid "Close Scene" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:52 msgid ":kbd:`Ctrl + Shift + W`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:52 #: ../../docs/tutorials/editor/default_key_mapping.rst:374 msgid ":kbd:`Cmd + W`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:52 msgid "``editor/close_scene``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:54 msgid "Reopen Closed Scene" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:54 #: ../../docs/tutorials/editor/default_key_mapping.rst:362 msgid ":kbd:`Ctrl + Shift + T`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:54 #: ../../docs/tutorials/editor/default_key_mapping.rst:362 msgid ":kbd:`Cmd + Shift + T`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:54 msgid "``editor/reopen_closed_scene``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:56 msgid "Save Scene" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:56 #: ../../docs/tutorials/editor/default_key_mapping.rst:571 msgid ":kbd:`Ctrl + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:56 #: ../../docs/tutorials/editor/default_key_mapping.rst:571 msgid ":kbd:`Cmd + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:56 msgid "``editor/save_scene``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:58 msgid "Save Scene As" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:58 msgid ":kbd:`Ctrl + Shift + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:58 msgid ":kbd:`Cmd + Shift + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:58 msgid "``editor/save_scene_as``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:60 msgid "Save All Scenes" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:60 #: ../../docs/tutorials/editor/default_key_mapping.rst:366 msgid ":kbd:`Ctrl + Shift + Alt + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:60 #: ../../docs/tutorials/editor/default_key_mapping.rst:366 msgid ":kbd:`Cmd + Shift + Opt + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:60 msgid "``editor/save_all_scenes``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:62 msgid "Quick Open" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:62 msgid ":kbd:`Shift + Alt + O`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:62 msgid ":kbd:`Cmd + Ctrl + O`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:62 msgid "``editor/quick_open``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:64 msgid "Quick Open Scene" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:64 msgid ":kbd:`Ctrl + Shift + O`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:64 msgid ":kbd:`Cmd + Shift + O`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:64 msgid "``editor/quick_open_scene``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:66 msgid "Quick Open Script" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:66 msgid ":kbd:`Ctrl + Alt + O`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:66 msgid ":kbd:`Opt + Cmd + O`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:66 msgid "``editor/quick_open_script``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:68 #: ../../docs/tutorials/editor/default_key_mapping.rst:277 msgid "Undo" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:68 #: ../../docs/tutorials/editor/default_key_mapping.rst:277 msgid ":kbd:`Ctrl + Z`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:68 #: ../../docs/tutorials/editor/default_key_mapping.rst:277 msgid ":kbd:`Cmd + Z`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:68 msgid "``editor/undo``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:70 #: ../../docs/tutorials/editor/default_key_mapping.rst:279 msgid "Redo" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:70 msgid ":kbd:`Ctrl + Shift + Z`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:70 msgid ":kbd:`Cmd + Shift + Z`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:70 msgid "``editor/redo``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:72 msgid "Quit" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:72 msgid ":kbd:`Ctrl + Q`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:72 msgid ":kbd:`Cmd + Q`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:72 msgid "``editor/file_quit``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:74 msgid "Quit to Project List" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:74 msgid ":kbd:`Ctrl + Shift + Q`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:74 msgid ":kbd:`Shift + Opt + Q`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:74 msgid "``editor/quit_to_project_list``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:76 msgid "Take Screenshot" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:76 msgid ":kbd:`Ctrl + F12`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:76 msgid ":kbd:`Cmd + F12`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:76 msgid "``editor/take_screenshot``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:78 msgid "Toggle Fullscreen" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:78 msgid ":kbd:`Shift + F11`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:78 msgid ":kbd:`Cmd + Ctrl + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:78 msgid "``editor/fullscreen_mode``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:80 msgid "Play" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:80 #: ../../docs/tutorials/editor/default_key_mapping.rst:423 msgid ":kbd:`F5`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:80 #: ../../docs/tutorials/editor/default_key_mapping.rst:321 msgid ":kbd:`Cmd + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:80 msgid "``editor/play``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:82 msgid "Pause Scene" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:82 msgid ":kbd:`F7`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:82 msgid ":kbd:`Cmd + Ctrl + Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:82 msgid "``editor/pause_scene``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:84 msgid "Stop" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:84 msgid ":kbd:`F8`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:84 #: ../../docs/tutorials/editor/default_key_mapping.rst:333 msgid ":kbd:`Cmd + .`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:84 msgid "``editor/stop``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:86 msgid "Play Scene" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:86 msgid ":kbd:`F6`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:86 #: ../../docs/tutorials/editor/default_key_mapping.rst:575 msgid ":kbd:`Cmd + R`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:86 msgid "``editor/play_scene``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:88 msgid "Play Custom Scene" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:88 msgid ":kbd:`Ctrl + Shift + F5`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:88 #: ../../docs/tutorials/editor/default_key_mapping.rst:275 #: ../../docs/tutorials/editor/default_key_mapping.rst:368 msgid ":kbd:`Cmd + Shift + R`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:88 msgid "``editor/play_custom_scene``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:90 msgid "Expand Bottom Panel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:90 msgid ":kbd:`Shift + F12`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:90 msgid "``editor/bottom_panel_expand``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:92 msgid "Command Palette" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:92 #: ../../docs/tutorials/editor/default_key_mapping.rst:161 msgid ":kbd:`Ctrl + Shift + P`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:92 #: ../../docs/tutorials/editor/default_key_mapping.rst:161 msgid ":kbd:`Cmd + Shift + P`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:92 msgid "``editor/command_palette``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:96 msgid "Bottom panels" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:98 msgid "" "Only bottom panels that are always available have a default shortcut " "assigned. Others must be manually bound in the Editor Settings if desired." msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:104 msgid "Toggle Last Opened Panel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:104 msgid ":kbd:`Ctrl + J`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:104 msgid "``editor/toggle_last_opened_bottom_panel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:106 msgid "Toggle Animation Bottom Panel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:106 msgid ":kbd:`Alt + N`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:106 msgid "``bottom_panels/toggle_animation_bottom_panel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:108 msgid "Toggle Audio Bottom Panel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:108 msgid ":kbd:`Alt + A`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:108 msgid "``bottom_panels/toggle_audio_bottom_panel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:110 msgid "Toggle Debugger Bottom Panel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:110 msgid ":kbd:`Alt + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:110 msgid "``bottom_panels/toggle_debugger_bottom_panel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:112 msgid "Toggle FileSystem Bottom Panel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:112 #: ../../docs/tutorials/editor/default_key_mapping.rst:289 #: ../../docs/tutorials/editor/default_key_mapping.rst:427 msgid ":kbd:`Alt + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:112 msgid "``bottom_panels/toggle_filesystem_bottom_panel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:114 msgid "Toggle Output Bottom Panel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:114 msgid ":kbd:`Alt + O`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:114 msgid "``bottom_panels/toggle_output_bottom_panel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:116 msgid "Toggle Shader Editor Bottom Panel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:116 msgid ":kbd:`Alt + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:116 msgid "``bottom_panels/toggle_shader_editor_bottom_panel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:120 msgid "2D / CanvasItem editor" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:125 #: ../../docs/tutorials/editor/default_key_mapping.rst:380 msgid "Zoom In" msgstr "Zumiraj" #: ../../docs/tutorials/editor/default_key_mapping.rst:125 #: ../../docs/tutorials/editor/default_key_mapping.rst:380 msgid ":kbd:`Ctrl + =`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:125 #: ../../docs/tutorials/editor/default_key_mapping.rst:380 msgid ":kbd:`Cmd + =`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:125 msgid "``canvas_item_editor/zoom_plus``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:127 #: ../../docs/tutorials/editor/default_key_mapping.rst:382 msgid "Zoom Out" msgstr "Odzumiraj" #: ../../docs/tutorials/editor/default_key_mapping.rst:127 #: ../../docs/tutorials/editor/default_key_mapping.rst:382 msgid ":kbd:`Ctrl + -`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:127 #: ../../docs/tutorials/editor/default_key_mapping.rst:382 msgid ":kbd:`Cmd + -`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:127 msgid "``canvas_item_editor/zoom_minus``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:129 msgid "Zoom Reset" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:129 #: ../../docs/tutorials/editor/default_key_mapping.rst:384 msgid ":kbd:`Ctrl + 0`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:129 #: ../../docs/tutorials/editor/default_key_mapping.rst:384 msgid ":kbd:`Cmd + 0`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:129 msgid "``canvas_item_editor/zoom_reset``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:131 msgid "Pan View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:131 msgid ":kbd:`Space`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:131 msgid "``canvas_item_editor/pan_view``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:133 #: ../../docs/tutorials/editor/default_key_mapping.rst:198 msgid "Select Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:133 #: ../../docs/tutorials/editor/default_key_mapping.rst:192 #: ../../docs/tutorials/editor/default_key_mapping.rst:198 msgid ":kbd:`Q`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:133 msgid "``canvas_item_editor/select_mode``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:135 #: ../../docs/tutorials/editor/default_key_mapping.rst:200 msgid "Move Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:135 #: ../../docs/tutorials/editor/default_key_mapping.rst:186 #: ../../docs/tutorials/editor/default_key_mapping.rst:200 msgid ":kbd:`W`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:135 msgid "``canvas_item_editor/move_mode``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:137 #: ../../docs/tutorials/editor/default_key_mapping.rst:202 msgid "Rotate Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:137 #: ../../docs/tutorials/editor/default_key_mapping.rst:190 #: ../../docs/tutorials/editor/default_key_mapping.rst:202 #: ../../docs/tutorials/editor/default_key_mapping.rst:523 msgid ":kbd:`E`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:137 msgid "``canvas_item_editor/rotate_mode``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:139 #: ../../docs/tutorials/editor/default_key_mapping.rst:204 msgid "Scale Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:139 #: ../../docs/tutorials/editor/default_key_mapping.rst:188 #: ../../docs/tutorials/editor/default_key_mapping.rst:501 msgid ":kbd:`S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:139 msgid "``canvas_item_editor/scale_mode``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:141 msgid "Ruler Mode" msgstr "Način Ravnala" #: ../../docs/tutorials/editor/default_key_mapping.rst:141 #: ../../docs/tutorials/editor/default_key_mapping.rst:204 #: ../../docs/tutorials/editor/default_key_mapping.rst:517 msgid ":kbd:`R`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:141 msgid "``canvas_item_editor/ruler_mode``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:143 msgid "Use Smart Snap" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:143 msgid ":kbd:`Shift + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:143 msgid "``canvas_item_editor/use_smart_snap``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:145 msgid "Use Grid Snap" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:145 msgid ":kbd:`Shift + G`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:145 msgid "``canvas_item_editor/use_grid_snap``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:147 msgid "Multiply grid step by 2" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:147 msgid ":kbd:`Num *`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:147 msgid "``canvas_item_editor/multiply_grid_step``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:149 msgid "Divide grid step by 2" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:149 msgid ":kbd:`Num /`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:149 msgid "``canvas_item_editor/divide_grid_step``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:151 msgid "Always Show Grid" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:151 msgid ":kbd:`G`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:151 msgid "``canvas_item_editor/show_grid``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:153 msgid "Show Helpers" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:153 msgid ":kbd:`H`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:153 msgid "``canvas_item_editor/show_helpers``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:155 msgid "Show Guides" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:155 #: ../../docs/tutorials/editor/default_key_mapping.rst:208 msgid ":kbd:`Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:155 msgid "``canvas_item_editor/show_guides``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:157 msgid "Center Selection" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:157 #: ../../docs/tutorials/editor/default_key_mapping.rst:230 msgid ":kbd:`F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:157 msgid "``canvas_item_editor/center_selection``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:159 msgid "Frame Selection" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:159 #: ../../docs/tutorials/editor/default_key_mapping.rst:180 msgid ":kbd:`Shift + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:159 msgid "``canvas_item_editor/frame_selection``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:161 msgid "Preview Canvas Scale" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:161 msgid "``canvas_item_editor/preview_canvas_scale``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:163 msgid "Insert Key" msgstr "Umetni Ključ(Key)" #: ../../docs/tutorials/editor/default_key_mapping.rst:163 msgid ":kbd:`Ins`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:163 msgid "``canvas_item_editor/anim_insert_key``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:165 msgid "Insert Key (Existing Tracks)" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:165 msgid ":kbd:`Ctrl + Ins`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:165 msgid ":kbd:`Cmd + Ins`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:165 msgid "``canvas_item_editor/anim_insert_key_existing_tracks``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:167 msgid "Make Custom Bones from Nodes" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:167 #: ../../docs/tutorials/editor/default_key_mapping.rst:323 msgid ":kbd:`Ctrl + Shift + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:167 #: ../../docs/tutorials/editor/default_key_mapping.rst:323 #: ../../docs/tutorials/editor/default_key_mapping.rst:329 msgid ":kbd:`Cmd + Shift + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:167 msgid "``canvas_item_editor/skeleton_make_bones``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:169 msgid "Clear Pose" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:169 msgid ":kbd:`Shift + K`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:169 msgid "``canvas_item_editor/anim_clear_pose``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:175 msgid "3D / Spatial editor" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:180 msgid "Toggle Freelook" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:180 msgid "``spatial_editor/freelook_toggle``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:182 msgid "Freelook Left" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:182 msgid ":kbd:`A`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:182 msgid "``spatial_editor/freelook_left``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:184 msgid "Freelook Right" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:184 #: ../../docs/tutorials/editor/default_key_mapping.rst:513 msgid ":kbd:`D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:184 msgid "``spatial_editor/freelook_right``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:186 msgid "Freelook Forward" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:186 msgid "``spatial_editor/freelook_forward``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:188 msgid "Freelook Backwards" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:188 msgid "``spatial_editor/freelook_backwards``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:190 msgid "Freelook Up" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:190 msgid "``spatial_editor/freelook_up``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:192 msgid "Freelook Down" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:192 msgid "``spatial_editor/freelook_down``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:194 msgid "Freelook Speed Modifier" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:194 msgid ":kbd:`Shift`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:194 msgid "``spatial_editor/freelook_speed_modifier``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:196 msgid "Freelook Slow Modifier" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:196 msgid ":kbd:`Alt`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:196 msgid ":kbd:`Opt`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:196 msgid "``spatial_editor/freelook_slow_modifier``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:198 msgid "``spatial_editor/tool_select``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:200 msgid "``spatial_editor/tool_move``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:202 msgid "``spatial_editor/tool_rotate``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:204 msgid "``spatial_editor/tool_scale``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:206 msgid "Use Local Space" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:206 msgid ":kbd:`T`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:206 msgid "``spatial_editor/local_coords``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:208 msgid "Use Snap" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:208 msgid "``spatial_editor/snap``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:210 msgid "Snap Object to Floor" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:210 #: ../../docs/tutorials/editor/default_key_mapping.rst:540 msgid ":kbd:`PgDown`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:210 msgid "``spatial_editor/snap_to_floor``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:212 msgid "Top View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:212 msgid ":kbd:`Num 7`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:212 msgid "``spatial_editor/top_view``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:214 msgid "Bottom View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:214 msgid ":kbd:`Alt + Num 7`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:214 msgid ":kbd:`Opt + Num 7`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:214 msgid "``spatial_editor/bottom_view``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:216 msgid "Front View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:216 msgid ":kbd:`Num 1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:216 msgid "``spatial_editor/front_view``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:218 msgid "Rear View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:218 msgid ":kbd:`Alt + Num 1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:218 msgid ":kbd:`Opt + Num 1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:218 msgid "``spatial_editor/rear_view``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:220 msgid "Right View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:220 msgid ":kbd:`Num 3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:220 msgid "``spatial_editor/right_view``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:222 msgid "Left View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:222 msgid ":kbd:`Alt + Num 3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:222 msgid ":kbd:`Opt + Num 3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:222 msgid "``spatial_editor/left_view``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:224 msgid "Switch Perspective/Orthogonal View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:224 msgid ":kbd:`Num 5`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:224 msgid "``spatial_editor/switch_perspective_orthogonal``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:226 msgid "Insert Animation Key" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:226 msgid ":kbd:`K`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:226 msgid "``spatial_editor/insert_anim_key``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:228 msgid "Focus Origin" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:228 msgid ":kbd:`O`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:228 msgid "``spatial_editor/focus_origin``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:230 msgid "Focus Selection" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:230 msgid "``spatial_editor/focus_selection``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:232 msgid "Align Transform with View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:232 msgid ":kbd:`Ctrl + Alt + M`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:232 msgid ":kbd:`Opt + Cmd + M`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:232 msgid "``spatial_editor/align_transform_with_view``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:234 msgid "Align Rotation with View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:234 #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid ":kbd:`Ctrl + Alt + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:234 #: ../../docs/tutorials/editor/default_key_mapping.rst:273 msgid ":kbd:`Opt + Cmd + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:234 msgid "``spatial_editor/align_rotation_with_view``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:236 msgid "1 Viewport" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:236 msgid ":kbd:`Ctrl + 1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:236 msgid ":kbd:`Cmd + 1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:236 msgid "``spatial_editor/1_viewport``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:238 msgid "2 Viewports" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:238 msgid ":kbd:`Ctrl + 2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:238 msgid ":kbd:`Cmd + 2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:238 msgid "``spatial_editor/2_viewports``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:240 msgid "2 Viewports (Alt)" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:240 msgid ":kbd:`Ctrl + Alt + 2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:240 msgid ":kbd:`Opt + Cmd + 2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:240 msgid "``spatial_editor/2_viewports_alt``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:242 msgid "3 Viewports" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:242 msgid ":kbd:`Ctrl + 3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:242 msgid ":kbd:`Cmd + 3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:242 msgid "``spatial_editor/3_viewports``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:244 msgid "3 Viewports (Alt)" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:244 msgid ":kbd:`Ctrl + Alt + 3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:244 msgid ":kbd:`Opt + Cmd + 3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:244 msgid "``spatial_editor/3_viewports_alt``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:246 msgid "4 Viewports" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:246 msgid ":kbd:`Ctrl + 4`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:246 msgid ":kbd:`Cmd + 4`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:246 msgid "``spatial_editor/4_viewports``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:252 #, fuzzy msgid "Text editor" msgstr "Animacija" #: ../../docs/tutorials/editor/default_key_mapping.rst:257 msgid "Cut" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:257 #: ../../docs/tutorials/editor/default_key_mapping.rst:503 msgid ":kbd:`Ctrl + X`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:257 #: ../../docs/tutorials/editor/default_key_mapping.rst:503 msgid ":kbd:`Cmd + X`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:257 msgid "``script_text_editor/cut``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:259 msgid "Copy" msgstr "Kopiraj" #: ../../docs/tutorials/editor/default_key_mapping.rst:259 #: ../../docs/tutorials/editor/default_key_mapping.rst:393 #: ../../docs/tutorials/editor/default_key_mapping.rst:448 #: ../../docs/tutorials/editor/default_key_mapping.rst:505 msgid ":kbd:`Ctrl + C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:259 #: ../../docs/tutorials/editor/default_key_mapping.rst:393 #: ../../docs/tutorials/editor/default_key_mapping.rst:448 #: ../../docs/tutorials/editor/default_key_mapping.rst:505 msgid ":kbd:`Cmd + C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:259 msgid "``script_text_editor/copy``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:261 msgid "Paste" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:261 #: ../../docs/tutorials/editor/default_key_mapping.rst:507 msgid ":kbd:`Ctrl + V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:261 #: ../../docs/tutorials/editor/default_key_mapping.rst:507 msgid ":kbd:`Cmd + V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:261 msgid "``script_text_editor/paste``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:263 msgid "Select All" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:263 #: ../../docs/tutorials/editor/default_key_mapping.rst:461 msgid ":kbd:`Ctrl + A`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:263 #: ../../docs/tutorials/editor/default_key_mapping.rst:461 msgid ":kbd:`Cmd + A`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:263 msgid "``script_text_editor/select_all``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:265 #: ../../docs/tutorials/editor/default_key_mapping.rst:346 msgid "Find" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:265 #: ../../docs/tutorials/editor/default_key_mapping.rst:346 msgid ":kbd:`Ctrl + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:265 #: ../../docs/tutorials/editor/default_key_mapping.rst:346 msgid ":kbd:`Cmd + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:265 msgid "``script_text_editor/find``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:267 #: ../../docs/tutorials/editor/default_key_mapping.rst:348 msgid "Find Next" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:267 #: ../../docs/tutorials/editor/default_key_mapping.rst:348 msgid ":kbd:`F3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:267 msgid ":kbd:`Cmd + G`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:267 msgid "``script_text_editor/find_next``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:269 #: ../../docs/tutorials/editor/default_key_mapping.rst:350 msgid "Find Previous" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:269 #: ../../docs/tutorials/editor/default_key_mapping.rst:350 msgid ":kbd:`Shift + F3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:269 #: ../../docs/tutorials/editor/default_key_mapping.rst:435 msgid ":kbd:`Cmd + Shift + G`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:269 msgid "``script_text_editor/find_previous``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:271 #: ../../docs/tutorials/editor/default_key_mapping.rst:352 msgid "Find in Files" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:271 #: ../../docs/tutorials/editor/default_key_mapping.rst:352 msgid ":kbd:`Ctrl + Shift + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:271 #: ../../docs/tutorials/editor/default_key_mapping.rst:352 msgid ":kbd:`Cmd + Shift + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:271 msgid "``script_text_editor/find_in_files``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:273 msgid "Replace" msgstr "Zamijeni" #: ../../docs/tutorials/editor/default_key_mapping.rst:273 #: ../../docs/tutorials/editor/default_key_mapping.rst:575 msgid ":kbd:`Ctrl + R`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:273 msgid "``script_text_editor/replace``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:275 msgid "Replace in Files" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:275 #: ../../docs/tutorials/editor/default_key_mapping.rst:368 msgid ":kbd:`Ctrl + Shift + R`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:275 msgid "``script_text_editor/replace_in_files``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:277 msgid "``script_text_editor/undo``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:279 msgid ":kbd:`Ctrl + Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:279 msgid ":kbd:`Cmd + Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:279 msgid "``script_text_editor/redo``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:281 #: ../../docs/tutorials/editor/default_key_mapping.rst:354 #: ../../docs/tutorials/editor/default_key_mapping.rst:473 msgid "Move Up" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:281 #: ../../docs/tutorials/editor/default_key_mapping.rst:421 msgid ":kbd:`Alt + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:281 #: ../../docs/tutorials/editor/default_key_mapping.rst:421 msgid ":kbd:`Opt + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:281 msgid "``script_text_editor/move_up``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:283 #: ../../docs/tutorials/editor/default_key_mapping.rst:356 #: ../../docs/tutorials/editor/default_key_mapping.rst:475 msgid "Move Down" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:283 msgid ":kbd:`Alt + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:283 msgid ":kbd:`Opt + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:283 msgid "``script_text_editor/move_down``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:285 msgid "Delete Line" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:285 #: ../../docs/tutorials/editor/default_key_mapping.rst:395 msgid ":kbd:`Ctrl + Shift + K`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:285 #: ../../docs/tutorials/editor/default_key_mapping.rst:395 msgid ":kbd:`Cmd + Shift + K`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:285 msgid "``script_text_editor/delete_line``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:287 msgid "Toggle Comment" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:287 msgid ":kbd:`Ctrl + K`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:287 msgid ":kbd:`Cmd + K`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:287 msgid "``script_text_editor/toggle_comment``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:289 msgid "Fold/Unfold Line" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:289 msgid ":kbd:`Ctrl + Cmd + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:289 msgid "``script_text_editor/toggle_fold_line``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:291 #, fuzzy msgid "Duplicate Lines" msgstr "Dupliciraj" #: ../../docs/tutorials/editor/default_key_mapping.rst:291 msgid ":kbd:`Ctrl + Alt + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:291 msgid ":kbd:`Cmd + Shift + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:291 msgid "``script_text_editor/duplicate_lines``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:293 #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid "Duplicate Selection" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:293 #: ../../docs/tutorials/editor/default_key_mapping.rst:486 msgid ":kbd:`Ctrl + Shift + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:293 msgid ":kbd:`Cmd + Shift + C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:293 msgid "``script_text_editor/duplicate_selection``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:295 #, fuzzy msgid "Select Down" msgstr "Reflekcija" #: ../../docs/tutorials/editor/default_key_mapping.rst:295 msgid ":kbd:`Ctrl + Shift + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:295 #: ../../docs/tutorials/editor/default_key_mapping.rst:356 msgid ":kbd:`Shift + Opt + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:295 msgid "``common/ui_text_caret_add_below``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 #, fuzzy msgid "Select Up" msgstr "Reflekcija" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 #, fuzzy msgid ":kbd:`Ctrl + Shift + Up Arrow`" msgstr ":kbd:`Ctrl + E`" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 #: ../../docs/tutorials/editor/default_key_mapping.rst:354 msgid ":kbd:`Shift + Opt + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 msgid "``common/ui_text_caret_add_above``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:299 msgid "Select Next Occurrence" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:299 #: ../../docs/tutorials/editor/default_key_mapping.rst:450 #: ../../docs/tutorials/editor/default_key_mapping.rst:471 #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid ":kbd:`Ctrl + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:299 #: ../../docs/tutorials/editor/default_key_mapping.rst:450 #: ../../docs/tutorials/editor/default_key_mapping.rst:471 #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid ":kbd:`Cmd + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:299 msgid "``common/ui_text_add_selection_for_next_occurrence``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:301 msgid "Complete Symbol" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:301 msgid ":kbd:`Ctrl + Space`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:301 msgid "``script_text_editor/complete_symbol``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:303 msgid "Evaluate Selection" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:303 msgid ":kbd:`Ctrl + Shift + E`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:303 msgid ":kbd:`Cmd + Shift + E`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:303 msgid "``script_text_editor/evaluate_selection``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:305 msgid "Trim Trailing Whitespace" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:305 msgid ":kbd:`Ctrl + Alt + T`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:305 msgid ":kbd:`Opt + Cmd + T`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:305 msgid "``script_text_editor/trim_trailing_whitespace``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:307 msgid "Uppercase" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:307 msgid ":kbd:`Shift + F4`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:307 msgid "``script_text_editor/convert_to_uppercase``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:309 msgid "Lowercase" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:309 msgid ":kbd:`Shift + F5`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:309 msgid "``script_text_editor/convert_to_lowercase``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:311 msgid "Capitalize" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:311 msgid ":kbd:`Shift + F6`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:311 msgid "``script_text_editor/capitalize``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid "Convert Indent to Spaces" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid ":kbd:`Ctrl + Shift + Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid ":kbd:`Cmd + Shift + Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid "``script_text_editor/convert_indent_to_spaces``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:315 msgid "Convert Indent to Tabs" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:315 msgid ":kbd:`Ctrl + Shift + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:315 msgid ":kbd:`Cmd + Shift + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:315 msgid "``script_text_editor/convert_indent_to_tabs``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:317 msgid "Auto Indent" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:317 #: ../../docs/tutorials/editor/default_key_mapping.rst:569 msgid ":kbd:`Ctrl + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:317 #: ../../docs/tutorials/editor/default_key_mapping.rst:569 msgid ":kbd:`Cmd + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:317 msgid "``script_text_editor/auto_indent``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:319 msgid "Toggle Bookmark" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:319 msgid ":kbd:`Ctrl + Alt + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:319 msgid ":kbd:`Opt + Cmd + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:319 msgid "``script_text_editor/toggle_bookmark``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:321 msgid "Go to Next Bookmark" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:321 msgid ":kbd:`Ctrl + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:321 msgid "``script_text_editor/goto_next_bookmark``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:323 msgid "Go to Previous Bookmark" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:323 msgid "``script_text_editor/goto_previous_bookmark``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid "Go to Function" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid ":kbd:`Ctrl + Cmd + J`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid "``script_text_editor/goto_function``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:327 msgid "Go to Line" msgstr "Idi na liniju" #: ../../docs/tutorials/editor/default_key_mapping.rst:327 #: ../../docs/tutorials/editor/default_key_mapping.rst:435 msgid ":kbd:`Ctrl + L`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:327 msgid ":kbd:`Cmd + L`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:327 msgid "``script_text_editor/goto_line``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:329 msgid "Toggle Breakpoint" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:329 msgid ":kbd:`F9`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:329 msgid "``script_text_editor/toggle_breakpoint``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:331 msgid "Remove All Breakpoints" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:331 msgid ":kbd:`Ctrl + Shift + F9`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:331 msgid ":kbd:`Cmd + Shift + F9`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:331 msgid "``script_text_editor/remove_all_breakpoints``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:333 msgid "Go to Next Breakpoint" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:333 msgid ":kbd:`Ctrl + .`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:333 msgid "``script_text_editor/goto_next_breakpoint``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:335 msgid "Go to Previous Breakpoint" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:335 msgid ":kbd:`Ctrl + ,`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:335 msgid ":kbd:`Cmd + ,`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:335 msgid "``script_text_editor/goto_previous_breakpoint``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:337 msgid "Contextual Help" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:337 msgid ":kbd:`Alt + F1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:337 msgid ":kbd:`Opt + Shift + Space`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:337 msgid "``script_text_editor/contextual_help``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:341 #, fuzzy msgid "Script editor" msgstr "Animacija" #: ../../docs/tutorials/editor/default_key_mapping.rst:346 msgid "``script_editor/find``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:348 msgid "``script_editor/find_next``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:350 msgid "``script_editor/find_previous``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:352 msgid "``script_editor/find_in_files``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:354 msgid ":kbd:`Shift + Alt + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:354 msgid "``script_editor/window_move_up``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:356 msgid ":kbd:`Shift + Alt + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:356 msgid "``script_editor/window_move_down``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:358 msgid "Next Script" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:358 msgid ":kbd:`Ctrl + Shift + .`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:358 msgid ":kbd:`Cmd + Shift + .`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:358 msgid "``script_editor/next_script``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:360 msgid "Previous Script" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:360 msgid ":kbd:`Ctrl + Shift + ,`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:360 msgid ":kbd:`Cmd + Shift + ,`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:360 msgid "``script_editor/prev_script``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:362 msgid "Reopen Closed Script" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:362 msgid "``script_editor/reopen_closed_script``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 msgid "Save" msgstr "Spremi" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 msgid ":kbd:`Ctrl + Alt + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 msgid ":kbd:`Opt + Cmd + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 msgid "``script_editor/save``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:366 msgid "Save All" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:366 msgid "``script_editor/save_all``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:368 msgid "Soft Reload Script" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:368 msgid "``script_editor/reload_script_soft``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 msgid "History Previous" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 #: ../../docs/tutorials/editor/default_key_mapping.rst:417 msgid ":kbd:`Alt + Left Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 #: ../../docs/tutorials/editor/default_key_mapping.rst:417 msgid ":kbd:`Opt + Left Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 msgid "``script_editor/history_previous``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:372 msgid "History Next" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:372 #: ../../docs/tutorials/editor/default_key_mapping.rst:419 msgid ":kbd:`Alt + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:372 #: ../../docs/tutorials/editor/default_key_mapping.rst:419 msgid ":kbd:`Opt + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:372 msgid "``script_editor/history_next``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:374 msgid "Close" msgstr "Zatvori" #: ../../docs/tutorials/editor/default_key_mapping.rst:374 msgid ":kbd:`Ctrl + W`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:374 msgid "``script_editor/close_file``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:376 #: ../../docs/engine_details/development/compiling/compiling_for_ios.rst:86 msgid "Run" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:376 msgid ":kbd:`Ctrl + Shift + X`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:376 msgid ":kbd:`Cmd + Shift + X`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:376 msgid "``script_editor/run_file``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:378 msgid "Toggle Scripts Panel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:378 msgid ":kbd:`Ctrl + \\\\`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:378 msgid ":kbd:`Cmd + \\\\`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:378 msgid "``script_editor/toggle_scripts_panel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:380 msgid "``script_editor/zoom_in``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:382 msgid "``script_editor/zoom_out``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:384 msgid "Reset Zoom" msgstr "Resetiraj zum" #: ../../docs/tutorials/editor/default_key_mapping.rst:384 msgid "``script_editor/reset_zoom``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:388 #, fuzzy msgid "Editor output" msgstr "Uvod" #: ../../docs/tutorials/editor/default_key_mapping.rst:393 #: ../../docs/tutorials/editor/default_key_mapping.rst:505 msgid "Copy Selection" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:393 msgid "``editor/copy_output``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:395 msgid "Clear Output" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:395 msgid "``editor/clear_output``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:399 msgid "Debugger" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:404 msgid "Step Into" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:404 msgid ":kbd:`F11`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:404 msgid "``debugger/step_into``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:406 msgid "Step Over" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:406 msgid ":kbd:`F10`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:406 msgid "``debugger/step_over``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:408 msgid "Continue" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:408 msgid ":kbd:`F12`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:408 msgid "``debugger/continue``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:412 #, fuzzy msgid "File dialog" msgstr "Opis" #: ../../docs/tutorials/editor/default_key_mapping.rst:417 msgid "Go Back" msgstr "Idi Natrag" #: ../../docs/tutorials/editor/default_key_mapping.rst:417 msgid "``file_dialog/go_back``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:419 msgid "Go Forward" msgstr "Idi Naprijed" #: ../../docs/tutorials/editor/default_key_mapping.rst:419 msgid "``file_dialog/go_forward``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:421 msgid "Go Up" msgstr "Idi gore" #: ../../docs/tutorials/editor/default_key_mapping.rst:421 msgid "``file_dialog/go_up``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:423 msgid "Refresh" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:423 msgid "``file_dialog/refresh``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 msgid "Toggle Hidden Files" msgstr "Prikaži/sakrij skrivene datoteke" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 msgid ":kbd:`Ctrl + H`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 msgid ":kbd:`Cmd + H`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 msgid "``file_dialog/toggle_hidden_files``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:427 msgid "Toggle Favorite" msgstr "Prikaži/sakrij favorite" #: ../../docs/tutorials/editor/default_key_mapping.rst:427 msgid ":kbd:`Opt + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:427 msgid "``file_dialog/toggle_favorite``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:429 msgid "Toggle Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:429 msgid ":kbd:`Alt + V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:429 msgid ":kbd:`Opt + V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:429 msgid "``file_dialog/toggle_mode``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 msgid "Create Folder" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 #: ../../docs/tutorials/editor/default_key_mapping.rst:567 msgid ":kbd:`Ctrl + N`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 #: ../../docs/tutorials/editor/default_key_mapping.rst:567 msgid ":kbd:`Cmd + N`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 msgid "``file_dialog/create_folder``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:433 #: ../../docs/tutorials/editor/default_key_mapping.rst:452 #: ../../docs/tutorials/editor/default_key_mapping.rst:467 msgid "Delete" msgstr "Obriši" #: ../../docs/tutorials/editor/default_key_mapping.rst:433 #: ../../docs/tutorials/editor/default_key_mapping.rst:452 #: ../../docs/tutorials/editor/default_key_mapping.rst:467 #: ../../docs/tutorials/editor/default_key_mapping.rst:488 #: ../../docs/tutorials/editor/default_key_mapping.rst:509 msgid ":kbd:`Del`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:433 #: ../../docs/tutorials/editor/default_key_mapping.rst:452 #: ../../docs/tutorials/editor/default_key_mapping.rst:467 #: ../../docs/tutorials/editor/default_key_mapping.rst:488 #: ../../docs/tutorials/editor/default_key_mapping.rst:509 #: ../../docs/tutorials/editor/default_key_mapping.rst:579 msgid ":kbd:`Cmd + BkSp`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:433 msgid "``file_dialog/delete``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:435 msgid "Focus Path" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:435 msgid "``file_dialog/focus_path``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:437 msgid "Move Favorite Up" msgstr "Pomakni favorita gore" #: ../../docs/tutorials/editor/default_key_mapping.rst:437 #: ../../docs/tutorials/editor/default_key_mapping.rst:473 msgid ":kbd:`Ctrl + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:437 #: ../../docs/tutorials/editor/default_key_mapping.rst:473 msgid ":kbd:`Cmd + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:437 msgid "``file_dialog/move_favorite_up``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:439 msgid "Move Favorite Down" msgstr "Pomakni favorita dolje" #: ../../docs/tutorials/editor/default_key_mapping.rst:439 #: ../../docs/tutorials/editor/default_key_mapping.rst:475 msgid ":kbd:`Ctrl + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:439 #: ../../docs/tutorials/editor/default_key_mapping.rst:475 msgid ":kbd:`Cmd + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:439 msgid "``file_dialog/move_favorite_down``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:443 msgid "FileSystem dock" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:448 msgid "Copy Path" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:448 msgid "``filesystem_dock/copy_path``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:450 #: ../../docs/tutorials/editor/default_key_mapping.rst:471 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:130 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:219 msgid "Duplicate" msgstr "Dupliciraj" #: ../../docs/tutorials/editor/default_key_mapping.rst:450 msgid "``filesystem_dock/duplicate``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:452 msgid "``filesystem_dock/delete``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:456 #, fuzzy msgid "Scene tree dock" msgstr "Stablo scena" #: ../../docs/tutorials/editor/default_key_mapping.rst:461 msgid "Add Child Node" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:461 msgid "``scene_tree/add_child_node``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:463 msgid "Batch Rename" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:463 msgid ":kbd:`Cmd + F2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:463 msgid "``scene_tree/batch_rename``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:465 msgid "Copy Node Path" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:465 msgid ":kbd:`Ctrl + Shift + C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:465 msgid ":kbd:`Cmd + Shift + C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:465 msgid "``scene_tree/copy_node_path``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:467 msgid "``scene_tree/delete``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:469 msgid "Force Delete" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:469 msgid ":kbd:`Shift + Del`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:469 msgid "``scene_tree/delete_no_confirm``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:471 msgid "``scene_tree/duplicate``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:473 msgid "``scene_tree/move_up``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:475 msgid "``scene_tree/move_down``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:479 #, fuzzy msgid "Animation track editor" msgstr "Animacija" #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid "``animation_editor/duplicate_selection``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:486 msgid "Duplicate Transposed" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:486 msgid "``animation_editor/duplicate_selection_transposed``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:488 #: ../../docs/tutorials/editor/default_key_mapping.rst:509 msgid "Delete Selection" msgstr "Izbriši Odabir" #: ../../docs/tutorials/editor/default_key_mapping.rst:488 msgid "``animation_editor/delete_selection``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:490 msgid "Go to Next Step" msgstr "Idi na sljedeći korak" #: ../../docs/tutorials/editor/default_key_mapping.rst:490 msgid ":kbd:`Ctrl + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:490 msgid ":kbd:`Cmd + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:490 msgid "``animation_editor/goto_next_step``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:492 msgid "Go to Previous Step" msgstr "Idi na prethodni korak" #: ../../docs/tutorials/editor/default_key_mapping.rst:492 msgid ":kbd:`Ctrl + Left Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:492 msgid ":kbd:`Cmd + Left Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:492 msgid "``animation_editor/goto_prev_step``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:496 #, fuzzy msgid "TileMap editor" msgstr "Animacija" #: ../../docs/tutorials/editor/default_key_mapping.rst:501 msgid "Select" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:501 msgid "``tiles_editor/selection_tool``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:503 msgid "Cut Selection" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:503 msgid "``tiles_editor/cut``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:505 msgid "``tiles_editor/copy``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:507 #, fuzzy msgid "Paste Selection" msgstr "Izbriši Odabir" #: ../../docs/tutorials/editor/default_key_mapping.rst:507 msgid "``tiles_editor/paste``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:509 msgid "``tiles_editor/delete``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:511 msgid "Cancel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:511 msgid ":kbd:`Esc`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:511 msgid "``tiles_editor/cancel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:513 #: ../../docs/tutorials/2d/using_tilemaps.rst:224 msgid "Paint" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:513 msgid "``tiles_editor/paint_tool``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:515 #: ../../docs/tutorials/2d/using_tilemaps.rst:253 msgid "Line" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:515 msgid ":kbd:`L`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:515 msgid "``tiles_editor/line_tool``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:517 msgid "Rect" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:517 msgid "``tiles_editor/rect_tool``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:519 msgid "Bucket" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:519 msgid ":kbd:`B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:519 msgid "``tiles_editor/bucket_tool``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:521 #: ../../docs/tutorials/2d/using_tilemaps.rst:316 msgid "Picker" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:521 msgid ":kbd:`P`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:521 msgid "``tiles_editor/picker``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:523 #: ../../docs/tutorials/2d/using_tilemaps.rst:328 msgid "Eraser" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:523 msgid "``tiles_editor/eraser``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:525 msgid "Flip Horizontally" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:525 msgid ":kbd:`C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:525 msgid "``tiles_editor/flip_tile_horizontal``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:527 msgid "Flip Vertically" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:527 msgid ":kbd:`V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:527 msgid "``tiles_editor/flip_tile_vertical``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:529 msgid "Rotate Left" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:529 msgid ":kbd:`Z`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:529 msgid "``tiles_editor/rotate_tile_left``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:531 msgid "Rotate Right" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:531 msgid ":kbd:`X`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:531 msgid "``tiles_editor/rotate_tile_right``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:535 msgid "TileSet Editor" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:540 msgid "Next Coordinate" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:540 msgid "``tileset_editor/next_shape``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:542 msgid "Previous Coordinate" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:542 msgid ":kbd:`PgUp`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:542 msgid "``tileset_editor/previous_shape``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:544 #, fuzzy msgid "Region Mode" msgstr "Način Interpolacije" #: ../../docs/tutorials/editor/default_key_mapping.rst:544 msgid ":kbd:`1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:544 msgid "``tileset_editor/editmode_region``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:546 msgid "Collision Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:546 msgid ":kbd:`2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:546 msgid "``tileset_editor/editmode_collision``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:548 msgid "Occlusion Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:548 msgid ":kbd:`3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:548 msgid "``tileset_editor/editmode_occlusion``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:550 msgid "Navigation Mode" msgstr "Način Navigacije" #: ../../docs/tutorials/editor/default_key_mapping.rst:550 msgid ":kbd:`4`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:550 msgid "``tileset_editor/editmode_navigation``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:552 msgid "Bitmask Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:552 msgid ":kbd:`5`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:552 msgid "``tileset_editor/editmode_bitmask``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:554 msgid "Priority Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:554 msgid ":kbd:`6`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:554 msgid "``tileset_editor/editmode_priority``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:556 msgid "Icon Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:556 msgid ":kbd:`7`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:556 msgid "``tileset_editor/editmode_icon``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:558 msgid "Z Index Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:558 msgid ":kbd:`8`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:558 msgid "``tileset_editor/editmode_z_index``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:562 #, fuzzy msgid "Project manager" msgstr "Projekti početna" #: ../../docs/tutorials/editor/default_key_mapping.rst:567 msgid "New Project" msgstr "Novi projekt" #: ../../docs/tutorials/editor/default_key_mapping.rst:567 msgid "``project_manager/new_project``" msgstr "``project_manager/new_project``" #: ../../docs/tutorials/editor/default_key_mapping.rst:569 msgid "Import Project" msgstr "Uvezi projekt" #: ../../docs/tutorials/editor/default_key_mapping.rst:569 msgid "``project_manager/import_project``" msgstr "``project_manager/import_project``" #: ../../docs/tutorials/editor/default_key_mapping.rst:571 msgid "Scan for Projects" msgstr "Pregledaj projekte" #: ../../docs/tutorials/editor/default_key_mapping.rst:571 msgid "``project_manager/scan_projects``" msgstr "``project_manager/scan_projects``" #: ../../docs/tutorials/editor/default_key_mapping.rst:573 msgid "Edit Project" msgstr "Uredi projekt" #: ../../docs/tutorials/editor/default_key_mapping.rst:573 msgid ":kbd:`Ctrl + E`" msgstr ":kbd:`Ctrl + E`" #: ../../docs/tutorials/editor/default_key_mapping.rst:573 msgid ":kbd:`Cmd + E`" msgstr ":kbd:`Cmd + E`" #: ../../docs/tutorials/editor/default_key_mapping.rst:573 msgid "``project_manager/edit_project``" msgstr "``project_manager/edit_project``" #: ../../docs/tutorials/editor/default_key_mapping.rst:575 msgid "Run Project" msgstr "Pokreni projekt" #: ../../docs/tutorials/editor/default_key_mapping.rst:575 msgid "``project_manager/run_project``" msgstr "``project_manager/run_project``" #: ../../docs/tutorials/editor/default_key_mapping.rst:577 msgid "Rename Project" msgstr "Preimenuj projekt" #: ../../docs/tutorials/editor/default_key_mapping.rst:577 msgid ":kbd:`F2`" msgstr ":kbd:`F2`" #: ../../docs/tutorials/editor/default_key_mapping.rst:577 msgid ":kbd:`Enter`" msgstr ":kbd:`Enter`" #: ../../docs/tutorials/editor/default_key_mapping.rst:577 msgid "``project_manager/rename_project``" msgstr "``project_manager/rename_project``" #: ../../docs/tutorials/editor/default_key_mapping.rst:579 msgid "Remove Project" msgstr "Ukloni projekt" #: ../../docs/tutorials/editor/default_key_mapping.rst:579 msgid ":kbd:`Delete`" msgstr ":kbd:`Delete`" #: ../../docs/tutorials/editor/default_key_mapping.rst:579 msgid "``project_manager/remove_project``" msgstr "``project_manager/remove_project``" #: ../../docs/tutorials/editor/customizing_editor.rst:4 msgid "Customizing the interface" msgstr "Prilagođavanje sučelja" #: ../../docs/tutorials/editor/customizing_editor.rst:6 msgid "" "Godot's interface lives in a single window by default. Since Godot 4.0, you " "can split several elements to separate windows to better make use of multi-" "monitor setups." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:13 msgid "Moving and resizing docks" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:15 msgid "" "Click and drag on the edge of any dock or panel to resize it horizontally or " "vertically:" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:18 #: ../../docs/tutorials/editor/customizing_editor.rst:22 msgid "Resizing a dock in the editor" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:24 msgid "" "Click the \"3 vertical dots\" icon at the top of any dock to change its " "location, or split it to a separate window by choosing **Make Floating** in " "the submenu that appears:" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:27 #: ../../docs/tutorials/editor/customizing_editor.rst:31 msgid "Moving a dock in the editor" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:33 msgid "" "To move a floating dock back to the editor window, close the dock window " "using the **×** button in the top-right corner of the window (or in the top-" "left corner on macOS). Alternatively, you can press :kbd:`Alt + F4` while " "the split window is focused." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:45 msgid "Splitting the script or shader editor to its own window" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:49 msgid "" "This feature is only available on platforms that support spawning multiple " "windows: Windows, macOS and Linux." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:52 msgid "" "This feature is also not available if **Single Window Mode** is enabled in " "the Editor Settings." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:55 msgid "" "Since Godot 4.1, you can split the script or shader editor to its own window." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:57 msgid "" "To split the script editor to its own window, click the corresponding button " "in the top-right corner of the script editor:" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:60 #: ../../docs/tutorials/editor/customizing_editor.rst:64 msgid "Splitting the script editor to its own window" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:66 msgid "" "To split the shader editor to its own window, click the corresponding button " "in the top-right corner of the script editor:" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:69 #: ../../docs/tutorials/editor/customizing_editor.rst:73 msgid "Splitting the shader editor to its own window" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:75 msgid "" "To go back to the previous state (with the script/shader editor embedded in " "the editor window), close the split window using the **×** button in the top-" "right corner of the window (or in the top-left corner on macOS). " "Alternatively, you can press :kbd:`Alt + F4` while the split window is " "focused." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:81 msgid "Customizing editor layouts" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:83 msgid "" "You may want to save and load a dock configuration depending on the kind of " "task you're working on. For instance, when working on animating a character, " "it may be more convenient to have docks laid out in a different fashion " "compared to when you're designing a level." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:88 msgid "" "For this purpose, Godot provides a way to save and restore editor layouts. " "Before saving a layout, make changes to the docks you'd like to save. The " "following changes are persisted to the saved layout:" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:92 #, fuzzy msgid "Moving a dock." msgstr "Idi Naprijed" #: ../../docs/tutorials/editor/customizing_editor.rst:93 msgid "Resizing a dock." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:94 msgid "Making a dock floating." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:95 msgid "Changing a floating dock's position or size." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:96 msgid "" "FileSystem dock properties: split mode, display mode, sorting order, file " "list display mode, selected paths and unfolded paths." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:101 msgid "" "Splitting the script or shader editor to its own window is *not* persisted " "as part of a layout." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:104 msgid "" "After making changes, open the **Editor** menu at the top of the editor then " "choose **Editor Layouts > Save**. Enter a name for the layout, then click " "**Save**. If you've already saved an editor layout, you can choose to " "override an existing layout using the list." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:109 msgid "" "After making changes, open the **Editor** menu at the top of the editor then " "choose **Editor Layouts**. In the dropdown list, you will see a list of " "saved editor layouts, plus **Default** which is a hardcoded editor layout " "that can't be removed. The default layout matches a fresh Godot installation " "with no changes made to the docks' positions and sizes, and no floating " "docks." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:115 msgid "" "You can remove a layout using the **Delete** option in the **Editor " "Layouts** dropdown." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:120 msgid "" "If you name the saved layout ``Default`` (case-sensitive), the default " "editor layout will be overwritten. Note that the ``Default`` does not appear " "in the list of layouts to overwrite until you overwrite it once, but you can " "still write its name manually." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:125 msgid "" "You can go back to the standard default layout by removing the ``Default`` " "layout after overriding it. (This option does not appear if you haven't " "overridden the default layout yet.)" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:129 msgid "" "Editor layouts are saved to a file named ``editor_layouts.cfg`` in the " "configuration path of the :ref:`doc_data_paths_editor_data_paths`." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:133 msgid "Customizing editor settings" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:135 msgid "" "In the **Editor** menu at the top of the editor, you can find an **Editor " "Settings** option. This opens a window similar to the Project Settings, but " "with settings used by the editor. These settings are shared across all " "projects and are not saved in the project files." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:140 #: ../../docs/tutorials/editor/customizing_editor.rst:144 msgid "The Editor Settings window" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:146 msgid "Some commonly changed settings are:" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:148 msgid "" "**Interface > Editor > Editor Language:** Controls the language the editor " "displays in. To make English tutorials easier to follow, you may want to " "change this to English so that menu names are identical to names referred to " "by tutorials. The language can also be changed in the top-right corner of " "the project manager." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:153 msgid "" "**Interface > Editor > Display Scale:** Controls how large UI elements " "display on screen. The default **Auto** setting finds a suitable value based " "on your display's DPI and resolution. Due to engine limitations, it only " "takes the display-provided scaling factor on macOS, not on Windows or Linux." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:157 msgid "" "**Interface > Editor > Single Window Mode:** If enabled, this forces the " "editor to use a single window. This disables certain features such as " "splitting the script/shaders editor to their own window. Single-window mode " "can be more stable, especially on Linux when using Wayland." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:161 msgid "" "**Interface > Theme > Preset:** The editor theme preset to use. The " "**Light** theme preset may be easier to read if you're outdoors or in a room " "with sunlight. The **Black (OLED)** preset can reduce power consumption on " "OLED displays, which are increasingly common in laptops and phones/tablets." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:165 msgid "" "**FileSystem > Directories > Autoscan Project Path:** This can be set to a " "folder path that will be automatically scanned for projects in the project " "manager every time it starts." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:168 msgid "" "**FileSystem > Directories > Default Project Path:** Controls the default " "location where new projects are created in the project manager." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:170 msgid "" "**Editors > 3D > Emulate Numpad:** This allows using the top row 0-9 keys in " "the 3D editor as their equivalent numpad keys. It's recommended to enable " "this option if you don't have a number pad on your keyboard." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:173 msgid "" "**Editors > 3D > Emulate 3 Button Mouse:** This allows using the pan, zoom " "and orbit modifiers in the 3D editor even when not holding down any mouse " "button. It's recommended to enable this option if you're using a trackpad." msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:177 msgid "" "See the :ref:`class_EditorSettings` class reference for a complete " "description of most editor settings. You can also hover an editor setting's " "name with the mouse in the Editor Settings to show its description." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:4 #, fuzzy msgid "Using the XR editor" msgstr "Animacija" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:6 msgid "" "In 2024, we introduced the `Godot XR editor `__, a version of the Godot " "editor **designed to run natively on XR devices**, enabling the creation, " "development and export of 2D, 3D, and **XR** apps and games directly on " "device." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:10 msgid "" "The app can be downloaded from the `Meta Horizon Store `__, or from the `Godot " "download page `__." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:15 msgid "" "The XR editor is in early access, while we continue to refine the " "experience. See :ref:`doc_using_the_xr_editor_limitations` below." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:18 msgid "XR devices support" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:20 msgid "" "For now, the Godot XR editor is only available for the following `Meta Quest " "`__ devices running **Meta Horizon OS v69 or " "higher**:" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:23 msgid "Meta Quest 3" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:24 msgid "Meta Quest 3s" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:25 msgid "Meta Quest Pro" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:29 msgid "" "We are working to add support for more XR devices, including PCVR devices." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:32 #: ../../docs/tutorials/editor/using_the_android_editor.rst:26 msgid "Runtime Permissions" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:34 #: ../../docs/tutorials/editor/using_the_android_editor.rst:28 msgid "" "`All files access permission `__: Enables the editor to create, " "import, and read project files from any file locations on the device. " "Without this permission, the editor is still functional, but has limited " "access to the device's files and directories." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:37 #: ../../docs/tutorials/editor/using_the_android_editor.rst:31 msgid "" "`REQUEST_INSTALL_PACKAGES `__: Enables the editor to " "install exported project APKs." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:38 #: ../../docs/tutorials/editor/using_the_android_editor.rst:32 msgid "" "`RECORD_AUDIO `__: Requested when the `audio/driver/" "enable_input `__ project setting is enabled." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:39 msgid "" "`USE_SCENE `__: Required to enable and access the scene APIs when " "running an XR project." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:42 #: ../../docs/tutorials/editor/using_the_android_editor.rst:35 msgid "Tips & Tricks" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:44 #: ../../docs/tutorials/editor/using_the_android_editor.rst:37 msgid "**Input**" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:46 msgid "" "For the best experience and high level of productivity, connecting a " "bluetooth keyboard & mouse is recommended to interact with the XR editor. " "The XR editor supports all of the `usual shortcuts and key mappings `__." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:48 msgid "" "When interacting with tracked controllers or tracked hands, you can toggle " "on the `interface/touchscreen/enable_long_press_as_right_click `__ editor setting to enable right-click by long press." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:50 msgid "" "When interacting with tracked controllers or tracked hands, you can increase " "the size of the scrollbar using the `interface/touchscreen/" "increase_scrollbar_touch_area `__ editor setting." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:53 #: ../../docs/tutorials/editor/using_the_android_editor.rst:44 msgid "**Multi-tasking**" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:55 msgid "" "`Theater View `__ can be used to fullscreen " "the *Editor window*." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:56 msgid "" "Enable `Seamless Multitasking `__, available in the Quest *Experimental " "Settings*, to enable the ability to quickly transition between a running XR " "project and the *Editor window*." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:58 msgid "" "When developing a non-XR project, the Godot editor app icon will provide the " "ability to switch between the *Editor window* and the *Play window* when the " "latter is active, using Quest's *App menu* feature." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:59 msgid "" "When developing and running an XR project, you can bring back the *Editor " "window* by:" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:61 msgid "Pressing on the *Meta* button to invoke the menu bar" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:62 msgid "" "Clicking on the Godot editor app icon to summon the *App menu*, and select " "the *Editor window* tile." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:64 #: ../../docs/tutorials/editor/using_the_android_editor.rst:52 #, fuzzy msgid "**Projects sync**" msgstr "Opis" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:66 #: ../../docs/tutorials/editor/using_the_android_editor.rst:54 msgid "" "Syncing projects via Git can be done by downloading an Android Git client. " "We recommend the `Termux terminal `__, an Android " "terminal emulator which provides access to common terminal utilities such " "Git and SSH." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:69 #: ../../docs/tutorials/editor/using_the_android_editor.rst:57 msgid "" "**Note:** To use Git with the Termux terminal, you'll need to grant *WRITE* " "permission to the terminal. This can be done by `running the following " "command `__ from within " "the terminal: ``termux-setup-storage``" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:72 #: ../../docs/tutorials/editor/using_the_android_editor.rst:60 msgid "**Plugins**" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:74 #: ../../docs/tutorials/editor/using_the_android_editor.rst:62 msgid "" "GDExtension plugins work as expected, but require the plugin developer to " "provide native Android binaries." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:79 #: ../../docs/tutorials/editor/using_the_android_editor.rst:67 msgid "Limitations & known issues" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:81 msgid "Here are the known limitations and issues of the XR editor:" msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:83 msgid "" "No Meta Quest 2 support due to the limited amount of memory on the device. " "However advanced users can grab the XR editor APK from the `download page " "`__ and sideload it onto their " "device if they desire to do so." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:86 #: ../../docs/tutorials/editor/using_the_android_editor.rst:71 msgid "No gradle build support." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:87 msgid "" "No support for Android plugins as they require gradle build support. " "GDExtension plugins are supported." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:88 #: ../../docs/tutorials/editor/using_the_android_editor.rst:73 #: ../../docs/tutorials/editor/using_the_web_editor.rst:53 msgid "No C#/Mono support." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:89 #: ../../docs/tutorials/editor/using_the_android_editor.rst:74 #: ../../docs/tutorials/editor/using_the_web_editor.rst:69 msgid "No support for external script editors." msgstr "" #: ../../docs/tutorials/editor/using_the_xr_editor.rst:90 msgid "" "While available, the *Vulkan Forward+* renderer is not recommended due to " "severe performance issues." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:4 #, fuzzy msgid "Using the Android editor" msgstr "Animacija" #: ../../docs/tutorials/editor/using_the_android_editor.rst:6 msgid "" "In 2023, we added an `Android port of the editor `__ that can be used " "to create, develop, and export 2D and 3D projects on Android devices." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:9 msgid "" "The app can be downloaded from the `Godot download page `__ or from the `Google Play Store " "`__." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:14 msgid "" "The Android editor is in early access, while we continue to refine the " "experience. See :ref:`doc_using_the_android_editor_limitations` below." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:17 msgid "Android devices support" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:19 msgid "" "The Android editor requires devices running Android 5 Lollipop or higher, " "with at least OpenGL 3 support. This includes (not exhaustive):" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:21 msgid "Android tablets, foldables and large phones" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:22 msgid "Android-powered netbooks" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:23 msgid "Chromebooks supporting Android apps" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:39 msgid "" "For the best experience and high level of productivity, connecting a " "bluetooth keyboard & mouse is recommended to interact with the Android " "editor. The Android editor supports all of the `usual shortcuts and key " "mappings `__." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:41 msgid "" "When interacting with keyboard & mouse, you can decrease the size of the " "scrollbar using the `interface/touchscreen/increase_scrollbar_touch_area " "`__ editor setting." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:42 msgid "" "For 2D projects, the `block coding plugin `__ can provide a block-based visual alternative to " "composing scripts when lacking a connected hardware keyboard." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:46 msgid "" "On smaller devices, enabling and using picture-in-picture (PiP) mode " "provides the ability to easily transition between the *Editor* and the *Play " "window*." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:48 msgid "" "PiP can be enabled via the `run/window_placement/play_window_pip_mode " "`__ editor setting." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:49 msgid "" "The `run/window_placement/android_window `__ editor setting can be used to specify " "whether the *Play* window should always launch in PiP mode." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:50 msgid "**Note:** In PiP mode, the *Play* window does not have input access." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:69 msgid "Here are the known limitations and issues of the Android editor:" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:72 msgid "" "No support for Android plugins as they require gradle build support. " "GDExtensions plugins are supported." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:75 msgid "" "While available, the Forward+ renderer is not recommended due to severe " "performance issues." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:76 msgid "UX not optimized for Android phones form-factor." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:77 msgid "" "`Android Go devices `__ lacks the *All files access* permission required for device " "read/write access. As a workaround, when using an Android Go device, it's " "recommended to create new projects only in the Android *Documents* or " "*Downloads* directories." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:80 msgid "" "The editor doesn't properly resume when *Don't keep activities* is enabled " "in the *Developer Options*." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:81 msgid "" "There is a `bug `__ with " "the Samsung keyboard that causes random input to be inserted when writing " "scripts. It's recommended to use the `Google keyboard (Gboard) `__ instead." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:86 msgid "" "See the `list of open issues on GitHub related to the Android editor " "`__ " "for a list of known bugs." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:6 msgid "Using the Web editor" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:8 msgid "" "There is a `Web editor `__ you can use to " "work on new or existing projects." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:13 msgid "" "The web editor is in a preliminary stage. While its feature set may be " "sufficient for educational purposes, it is currently **not recommended for " "production work**. See :ref:`doc_using_the_web_editor_limitations` below." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:18 msgid "Browser support" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:20 msgid "" "The Web editor requires support for WebAssembly's SharedArrayBuffer. This is " "in turn required to support threading in the browser. The following desktop " "browsers support WebAssembly threading and can therefore run the web editor:" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:24 msgid "Chrome 68 or later" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:25 msgid "Firefox 79 or later" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:26 msgid "Edge 79 or later" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:31 msgid "" "Opera and Safari are not supported yet. Safari may work in the future once " "proper threading support is added." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:34 msgid "**Mobile browsers are currently not supported.**" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:36 msgid "" "The web editor only supports the Compatibility rendering method, as there is " "no stable way to run Vulkan applications on the web yet." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:41 msgid "" "If you use Linux, due to `poor Firefox WebGL performance `__, it's recommended to use a " "Chromium-based browser instead of Firefox." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:48 #: ../../docs/tutorials/editor/using_engine_compilation_configuration_editor.rst:89 #: ../../docs/tutorials/3d/3d_text.rst:55 #: ../../docs/tutorials/3d/3d_text.rst:106 #: ../../docs/tutorials/3d/3d_text.rst:147 #: ../../docs/tutorials/3d/using_decals.rst:251 #: ../../docs/tutorials/3d/particles/subemitters.rst:67 #: ../../docs/tutorials/3d/global_illumination/reflection_probes.rst:178 #: ../../docs/tutorials/assets_pipeline/exporting_3d_scenes.rst:24 #: ../../docs/tutorials/export/exporting_for_web.rst:221 #: ../../docs/tutorials/performance/general_optimization.rst:78 #: ../../docs/tutorials/physics/large_world_coordinates.rst:222 #: ../../docs/tutorials/xr/xr_full_screen_effects.rst:67 msgid "Limitations" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:50 msgid "" "Due to limitations on the Godot or Web platform side, the following features " "are currently missing:" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:54 msgid "No GDExtension support." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:55 msgid "" "No debugging support. This means GDScript debugging/profiling, live scene " "editing, the Remote Scene tree dock and other features that rely on the " "debugger protocol will not work." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:58 msgid "" "No project exporting. As a workaround, you can download the project source " "using **Project > Tools > Download Project Source** and export it using a " "`native version of the Godot editor `__." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:61 msgid "The editor won't warn you when closing the tab with unsaved changes." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:62 msgid "" "No lightmap baking support. You can still use existing lightmaps if they " "were baked with a native version of the Godot editor (e.g. by importing an " "existing project)." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:66 msgid "" "The following features are unlikely to be supported due to inherent " "limitations of the Web platform:" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:70 msgid "No support for Android one-click deploy." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:74 msgid "" "See the `list of open issues on GitHub related to the web editor `__ for " "a list of known bugs." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:79 msgid "Importing a project" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:81 msgid "To import an existing project, the current process is as follows:" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:83 msgid "" "Specify a ZIP file to preload on the HTML5 filesystem using the **Preload " "project ZIP** input." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:85 msgid "" "Run the editor by clicking **Start Godot editor**. The Godot Project Manager " "should appear after 10-20 seconds. On slower machines or connections, " "loading may take up to a minute." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:88 msgid "" "In the dialog that appears at the middle of the window, specify a name for " "the folder to create then click the **Create Folder** button (it doesn't " "have to match the ZIP archive's name)." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:91 msgid "Click **Install & Edit** and the project will open in the editor." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:95 msgid "" "It's important to place the project folder somewhere in ``/home/web_user/``. " "If your project folder is placed outside ``/home/web_user/``, you will lose " "your project when closing the editor!" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:99 msgid "" "When you follow the steps described above, the project folder will always be " "located in ``/home/web_user/projects``, keeping it safe." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:103 msgid "Editing and running a project" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:105 msgid "" "Unlike the native version of Godot, the web editor is constrained to a " "single window. Therefore, it cannot open a new window when running the " "project. Instead, when you run the project by clicking the Run button or " "pressing :kbd:`F5`, it will appear to \"replace\" the editor window." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:110 msgid "" "The web editor offers an alternative way to deal with the editor and game " "windows (which are now \"tabs\"). You can switch between the **Editor** and " "**Game** tabs using the buttons on the top. You can also close the running " "game or editor by clicking the **×** button next to those tabs." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:116 msgid "Where are my project files?" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:118 msgid "" "Due to browser security limitations, the editor will save the project files " "to the browser's IndexedDB storage. This storage isn't accessible as a " "regular folder on your machine, but is abstracted away in a database." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:125 msgid "" "You can download the project files as a ZIP archive by using **Project > " "Tools > Download Project Source**. This can be used to export the project " "using a `native Godot editor `__, since " "exporting from the web editor isn't supported yet." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:130 msgid "" "In the future, it may be possible to use the `HTML5 FileSystem API `__ to store the project " "files on the user's filesystem as the native editor would do. However, this " "isn't implemented yet." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:4 msgid "Command line tutorial" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:8 msgid "" "Some developers like using the command line extensively. Godot is designed " "to be friendly to them, so here are the steps for working entirely from the " "command line. Given the engine relies on almost no external libraries, " "initialization times are pretty fast, making it suitable for this workflow." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:16 msgid "" "On Windows and Linux, you can run a Godot binary in a terminal by specifying " "its relative or absolute path." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:19 msgid "" "On macOS, the process is different due to Godot being contained within a " "``.app`` bundle (which is a *folder*, not a file). To run a Godot binary " "from a terminal on macOS, you have to ``cd`` to the folder where the Godot " "application bundle is located, then run ``Godot.app/Contents/MacOS/Godot`` " "followed by any command line arguments. If you've renamed the application " "bundle from ``Godot`` to another name, make sure to edit this command line " "accordingly." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:28 msgid "Command line reference" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:34 msgid "**Legend**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:36 msgid "" "|release| Available in editor builds, debug export templates and release " "export templates." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:30 msgid "release" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:37 msgid "|debug| Available in editor builds and debug export templates only." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:31 msgid "debug" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:38 msgid "|editor| Only available in editor builds." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:32 msgid "editor" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:40 msgid "" "Note that unknown command line arguments have no effect whatsoever. The " "engine will **not** warn you when using a command line argument that doesn't " "exist with a given build type." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:44 msgid "**General options**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:47 #: ../../docs/tutorials/editor/command_line_tutorial.rst:63 #: ../../docs/tutorials/editor/command_line_tutorial.rst:133 #: ../../docs/tutorials/editor/command_line_tutorial.rst:162 #: ../../docs/tutorials/editor/command_line_tutorial.rst:232 #: ../../docs/engine_details/development/configuring_an_ide/qt_creator.rst:59 msgid "Command" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:47 #: ../../docs/tutorials/editor/command_line_tutorial.rst:63 #: ../../docs/tutorials/editor/command_line_tutorial.rst:133 #: ../../docs/tutorials/editor/command_line_tutorial.rst:162 #: ../../docs/tutorials/editor/command_line_tutorial.rst:232 #: ../../docs/tutorials/export/exporting_for_macos.rst:102 #: ../../docs/tutorials/export/exporting_for_macos.rst:122 #: ../../docs/tutorials/export/exporting_for_macos.rst:155 #: ../../docs/tutorials/export/exporting_for_macos.rst:198 #: ../../docs/tutorials/io/binary_serialization_api.rst:122 #: ../../docs/tutorials/io/binary_serialization_api.rst:133 #: ../../docs/tutorials/io/binary_serialization_api.rst:142 #: ../../docs/tutorials/io/binary_serialization_api.rst:153 #: ../../docs/tutorials/io/binary_serialization_api.rst:162 #: ../../docs/tutorials/io/binary_serialization_api.rst:171 #: ../../docs/tutorials/io/binary_serialization_api.rst:184 #: ../../docs/tutorials/io/binary_serialization_api.rst:195 #: ../../docs/tutorials/io/binary_serialization_api.rst:210 #: ../../docs/tutorials/io/binary_serialization_api.rst:223 #: ../../docs/tutorials/io/binary_serialization_api.rst:242 #: ../../docs/tutorials/io/binary_serialization_api.rst:257 #: ../../docs/tutorials/io/binary_serialization_api.rst:272 #: ../../docs/tutorials/io/binary_serialization_api.rst:291 #: ../../docs/tutorials/io/binary_serialization_api.rst:316 #: ../../docs/tutorials/io/binary_serialization_api.rst:347 #: ../../docs/tutorials/io/binary_serialization_api.rst:362 #: ../../docs/tutorials/io/binary_serialization_api.rst:371 #: ../../docs/tutorials/io/binary_serialization_api.rst:382 #: ../../docs/tutorials/io/binary_serialization_api.rst:392 #: ../../docs/tutorials/io/binary_serialization_api.rst:414 #: ../../docs/tutorials/io/binary_serialization_api.rst:423 #: ../../docs/tutorials/io/binary_serialization_api.rst:432 #: ../../docs/tutorials/io/binary_serialization_api.rst:444 #: ../../docs/tutorials/io/binary_serialization_api.rst:468 #: ../../docs/tutorials/io/binary_serialization_api.rst:480 #: ../../docs/tutorials/io/binary_serialization_api.rst:492 #: ../../docs/tutorials/io/binary_serialization_api.rst:505 #: ../../docs/tutorials/io/binary_serialization_api.rst:516 #: ../../docs/tutorials/io/binary_serialization_api.rst:527 #: ../../docs/tutorials/io/binary_serialization_api.rst:538 #: ../../docs/tutorials/io/binary_serialization_api.rst:549 #: ../../docs/tutorials/io/binary_serialization_api.rst:557 #: ../../docs/tutorials/io/binary_serialization_api.rst:570 #: ../../docs/tutorials/io/binary_serialization_api.rst:583 #: ../../docs/tutorials/io/binary_serialization_api.rst:598 #: ../../docs/tutorials/inputs/inputevent.rst:163 #: ../../docs/tutorials/plugins/editor/import_plugins.rst:248 #: ../../docs/tutorials/scripting/gdscript/gdscript_basics.rst:147 #: ../../docs/tutorials/scripting/gdscript/gdscript_documentation_comments.rst:35 #: ../../docs/tutorials/scripting/gdscript/gdscript_documentation_comments.rst:94 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:18 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:89 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:112 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:125 #: ../../docs/tutorials/scripting/how_to_read_the_godot_api.rst:34 #: ../../docs/tutorials/scripting/creating_script_templates.rst:202 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:25 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:818 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:876 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:17 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:128 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:168 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:236 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:359 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:549 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:17 #: ../../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:299 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:359 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:34 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:58 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:84 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:139 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:156 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:186 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:130 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:155 #: ../../docs/tutorials/shaders/shader_reference/sky_shader.rst:200 #: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:34 #: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:63 #: ../../docs/tutorials/shaders/visual_shaders.rst:133 #: ../../docs/tutorials/shaders/converting_glsl_to_godot_shaders.rst:91 #: ../../docs/tutorials/shaders/converting_glsl_to_godot_shaders.rst:164 #: ../../docs/tutorials/shaders/converting_glsl_to_godot_shaders.rst:229 #: ../../docs/tutorials/xr/ar_passthrough.rst:42 #: ../../docs/tutorials/xr/xr_action_map.rst:139 #: ../../docs/tutorials/xr/xr_action_map.rst:228 #: ../../docs/tutorials/xr/openxr_render_models.rst:238 #: ../../docs/tutorials/xr/openxr_spatial_entities.rst:37 #: ../../docs/tutorials/xr/openxr_spatial_entities.rst:968 #: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1119 #: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1284 #: ../../docs/tutorials/xr/openxr_spatial_entities.rst:1617 #: ../../docs/engine_details/architecture/unit_testing.rst:297 msgid "Description" msgstr "Opis" #: ../../docs/tutorials/editor/command_line_tutorial.rst:49 msgid "``-h``, ``--help``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:49 msgid "|release| Display the list of command line options." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:51 msgid "``--version``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:51 msgid "|release| Display the version string." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:53 msgid "``-v``, ``--verbose``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:53 msgid "|release| Use verbose stdout mode." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:55 msgid "``-q``, ``--quiet``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:55 msgid "" "|release| Quiet mode, silences stdout messages. Errors are still displayed." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:57 msgid "``--no-header``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:57 msgid "" "|release| Do not print engine version and rendering method header on startup." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:60 msgid "**Run options**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:65 msgid "``--``, ``++``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:65 msgid "" "|release| Separator for user-provided arguments. Following arguments are not " "used by the engine, but can be read from ``OS.get_cmdline_user_args()``." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:67 msgid "``-e``, ``--editor``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:67 msgid "|editor| Start the editor instead of running the scene." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:69 msgid "``-p``, ``--project-manager``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:69 msgid "|editor| Start the Project Manager, even if a project is auto-detected." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:71 #, fuzzy msgid "``--recovery-mode``" msgstr "Način Ravnala" #: ../../docs/tutorials/editor/command_line_tutorial.rst:71 msgid "" "|editor| \"Start the editor in recovery mode, which disables features that " "can typically cause startup crashes, such as tool scripts, editor plugins, " "GDExtension addons, and others." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:74 msgid "``--debug-server ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:74 msgid "" "|editor| Start the editor debug server (``://[:]``, " "e.g. ``tcp://127.0.0.1:6007``)" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:76 msgid "``--dap-port ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:76 msgid "" "|editor| Use the specified port for the GDScript Debug Adapter Protocol. " "Recommended port range ``[1024, 49151]``." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:78 msgid "``--lsp-port ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:78 msgid "" "|editor| Use the specified port for the GDScript Language Server Protocol. " "Recommended port range ``[1024, 49151]``." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:80 msgid "``--quit``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:80 msgid "|release| Quit after the first iteration." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:82 msgid "``--quit-after``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:82 msgid "" "|release| Quit after the given number of iterations. Set to 0 to disable." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:84 msgid "``-l``, ``--language ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:84 msgid "" "|release| Use a specific locale. ```` follows the format " "``language_Script_COUNTRY_VARIANT`` where language is a 2 or 3-letter " "language code in lowercase and the rest is optional. See :ref:`doc_locales` " "for more details." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:87 msgid "``--path ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:87 msgid "" "|release| Path to a project (```` must contain a 'project.godot' " "file)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:89 msgid "``--scene ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:89 msgid "|release| Path or UID of a scene in the project that should be started." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:91 msgid "``-u``, ``--upwards``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:91 msgid "|release| Scan folders upwards for 'project.godot' file." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:93 msgid "``--main-pack ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:93 msgid "|release| Path to a pack (.pck) file to load." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:95 msgid "``--render-thread ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:95 msgid "" "|release| Render thread mode ('unsafe', 'safe', 'separate'). " "See :ref:`Thread Model ` for more details." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:98 msgid "``--remote-fs
``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:98 msgid "|release| Remote filesystem (``[:]`` address)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:100 msgid "``--remote-fs-password ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:100 msgid "|release| Password for remote filesystem." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:102 msgid "``--audio-driver ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:102 msgid "" "|release| Audio driver. Use ``--help`` first to display the list of " "available drivers." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:104 msgid "``--display-driver ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:104 msgid "" "|release| Display driver (and rendering driver). Use ``--help`` first to " "display the list of available drivers." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:106 msgid "``--audio-output-latency`` " msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:106 msgid "" "|release| Override audio output latency in milliseconds (default is 15 ms). " "Lower values make sound playback more reactive but increase CPU usage, and " "may result in audio cracking if the CPU can't keep up" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:109 msgid "``--rendering-method ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:109 msgid "|release| Renderer name. Requires driver support." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:111 msgid "``--rendering-driver ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:111 msgid "" "|release| Rendering driver (depends on display driver). Use ``--help`` first " "to display the list of available drivers." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:113 msgid "``--gpu-index ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:113 msgid "" "|release| Use a specific GPU (run with ``--verbose`` to get available device " "list)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:115 msgid "``--text-driver ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:115 msgid "|release| Text driver (Fonts, BiDi, shaping)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:117 msgid "``--tablet-driver ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:117 msgid "|release| Pen tablet input driver." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:119 msgid "``--headless``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:119 msgid "" "|release| Enable headless mode (``--display-driver headless --audio-driver " "Dummy``). Useful for servers and with ``--script``." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:121 msgid "``--log-file``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:121 msgid "" "|release| Write output/error log to the specified path instead of the " "default location defined by the project. path should be absolute or " "relative to the project directory." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:124 msgid "``--write-movie ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:124 msgid "" "|release| Run the engine in a way that a movie is written (usually with .avi " "or .png extension). ``--fixed-fps`` is forced when enabled, but can be used " "to change movie FPS. ``--disable-vsync`` can speed up movie writing but " "makes interaction more difficult. ``--quit-after`` can be used to specify " "the number of frames to write." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:130 msgid "**Display options**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:135 msgid "``-f``, ``--fullscreen``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:135 msgid "|release| Request fullscreen mode." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:137 msgid "``-m``, ``--maximized``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:137 msgid "|release| Request a maximized window." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:139 msgid "``-w``, ``--windowed``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:139 msgid "|release| Request windowed mode." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:141 msgid "``-t``, ``--always-on-top``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:141 msgid "|release| Request an always-on-top window." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:143 msgid "``--resolution x``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:143 msgid "|release| Request window resolution." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:145 msgid "``--position ,``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:145 msgid "|release| Request window position." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:147 msgid "``--screen ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:147 msgid "|release| Request window screen." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:149 msgid "``--single-window``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:149 msgid "|release| Use a single window (no separate subwindows)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:151 msgid "``--xr-mode ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:151 msgid "|release| Select XR mode ('default', 'off', 'on')." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:153 msgid "``--wid ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:153 msgid "|release| Request parented to window." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:155 msgid "``--accessibility ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:155 msgid "" "|release| Select accessibility mode ['auto' (when screen reader is running, " "default), 'always', 'disabled']." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:159 msgid "**Debug options**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:164 msgid "``-d``, ``--debug``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:164 msgid "|release| Debug (local stdout debugger)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:166 msgid "``-b``, ``--breakpoints``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:166 msgid "" "|release| Breakpoint list as source::line comma-separated pairs, no spaces " "(use ``%20`` instead)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:168 msgid "``--ignore-error-breaks``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:168 msgid "|release| If debugger is connected, prevents sending error breakpoints." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:170 msgid "``--profiling``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:170 msgid "|release| Enable profiling in the script debugger." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:172 msgid "``--gpu-profile``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:172 msgid "" "|release| Show a GPU profile of the tasks that took the most time during " "frame rendering." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:174 msgid "``--gpu-validation``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:174 msgid "" "|release| Enable graphics API :ref:`validation layers " "` for debugging." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:176 msgid "``--gpu-abort``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:176 msgid "" "|debug| Abort on GPU errors (usually validation layer errors), may help see " "the problem if your system freezes." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:178 msgid "``--generate-spirv-debug-info``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:178 msgid "" "|debug| Generate SPIR-V debug information. This allows source-level shader " "debugging with RenderDoc." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:180 msgid "``--extra-gpu-memory-tracking``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:180 msgid "" "|debug| Enables additional memory tracking (see class reference for " "`RenderingDevice.get_driver_and_device_memory_report()` and linked methods). " "Currently only implemented for Vulkan. Enabling this feature may cause " "crashes on some systems due to buggy drivers or bugs in the Vulkan Loader. " "See https://github.com/godotengine/godot/issues/95967" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:185 msgid "``--accurate-breadcrumbs``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:185 msgid "" "|debug| Force barriers between breadcrumbs. Useful for narrowing down a " "command causing GPU resets. Currently only implemented for Vulkan." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:188 msgid "``--remote-debug ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:188 msgid "" "|release| Remote debug (``://[:]``, e.g. ``tcp://" "127.0.0.1:6007``)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:190 msgid "``--single-threaded-scene``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:190 msgid "" "|release| Scene tree runs in single-threaded mode. Sub-thread groups are " "disabled and run on the main thread." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:192 msgid "``--debug-collisions``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:192 msgid "|debug| Show collision shapes when running the scene." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:194 msgid "``--debug-paths``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:194 msgid "|debug| Show path lines when running the scene." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:196 msgid "``--debug-navigation``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:196 msgid "|debug| Show navigation polygons when running the scene." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:198 msgid "``--debug-avoidance``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:198 msgid "|debug| Show navigation avoidance debug visuals when running the scene." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:200 msgid "``--debug-stringnames``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:200 msgid "" "|debug| Print all StringName allocations to stdout when the engine quits." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:202 msgid "``--debug-canvas-item-redraw``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:202 msgid "" "|debug| Display a rectangle each time a canvas item requests a redraw " "(useful to troubleshoot low processor mode)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:205 msgid "``--max-fps ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:205 msgid "" "|release| Set a maximum number of frames per second rendered (can be used to " "limit power usage). A value of 0 results in unlimited framerate." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:208 msgid "``--frame-delay ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:208 msgid "" "|release| Simulate high CPU load (delay each frame by milliseconds). Do " "not use as a FPS limiter; use --max-fps instead." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:211 msgid "``--time-scale ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:211 msgid "" "|release| Force time scale (higher values are faster, 1.0 is normal speed)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:213 msgid "``--disable-vsync``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:213 msgid "" "|release| Forces disabling of vertical synchronization, even if enabled in " "the project settings. Does not override driver-level V-Sync enforcement." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:216 msgid "``--disable-render-loop``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:216 msgid "" "|release| Disable render loop so rendering only occurs when called " "explicitly from script." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:218 msgid "``--disable-crash-handler``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:218 msgid "|release| Disable crash handler when supported by the platform code." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:220 msgid "``--fixed-fps ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:220 msgid "" "|release| Force a fixed number of frames per second. This setting disables " "real-time synchronization." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:222 msgid "``--delta-smoothing ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:222 msgid "" "|release| Enable or disable frame delta smoothing ('enable', 'disable')." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:224 msgid "``--print-fps``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:224 msgid "|release| Print the frames per second to the stdout." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:226 msgid "``--editor-pseudolocalization``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:226 msgid "" "|editor| Enable pseudolocalization for the editor and the project manager." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:229 msgid "**Standalone tools**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:234 msgid "``-s``, ``--script