# Godot Engine Documentation in Arabic # 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. # # Abdulkarim , 2023. # abidin toumi , 2021. # abubakrAlsaab , 2021. # Airbus5717 , 2020. # Ali F. Abbas , 2023. # amrdarweesh , 2020. # Anas , 2020. # Anas Khalil , 2018. # aymen achour , 2023. # Aymen B'm , 2018. # Bellachia Mohamed Bahaa Eddine , 2019. # Codes Otaku , 2018. # Games Toon , 2021-2022. # Hamed Mohammed Almuslhi , 2023. # Haoyu Qiu , 2023. # Hareth Mohammed , 2021. # HASSAN GAMER - حسن جيمر , 2021-2022. # Hatim Jamal , 2021. # Ibraheem Asad , 2023. # Ibraheem Tawfik , 2019. # ILG - Game , 2021. # Jhon Smith , 2022. # Kareem Abduljaleel , 2021. # Maher Hanna , 2022. # Mohamed El-Baz , 2018. # Mohammedi Mohammed Djawad , 2023. # Moustafa Sedick , 2020. # Moustapha Oumar , 2020. # Mr.k , 2022. # Mr.k , 2023. # Musab Alasaifer , 2020. # Nabeel20 , 2020-2023. # NEDAL NNEE , 2022. # Omar Aglan , 2018-2020. # Omar Aglan , 2023. # Omar Salam , 2019. # Omran Alsaedi , 2023. # osama-su , 2020. # Oussama otadev , 2022. # Rached Noureddine , 2018. # Raeed Mazin , 2021. # spiderx0x , 2019. # Takai Eddine Kennouche , 2018. # TURKYM7MD , 2022. # Xester , 2019. # xX-Void-Xx , 2022. # Yassine Oudjana , 2020. # Youssef Mohamed , 2023. # ywmaa , 2022. # ZenithSal , 2021. # zeyad majed , 2022. # أحمد النور , 2022. # أحمد مصطفى الطبراني , 2020. # عبد الرحمن أبو سعدة ||Abd Alrahman abo saada , 2022. # يزن حمزه , 2022. # Jugy , 2023. # Emad Alhaddad , 2023. # Jeremiaha Emile , 2023. # Mohamed khemkham , 2023. # ZAID G , 2024. # "Ali F. Abbas" , 2024. # ButterBukket , 2024. # Spirit , 2024. # naif , 2025. # Te , 2025. # 7Xme , 2025. # "Jo. Adly" , 2025. msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot-docs-l10n\n" "POT-Creation-Date: 2025-08-01 17:01+0200\n" "PO-Revision-Date: 2025-07-23 18:15+0000\n" "Last-Translator: \"Jo. Adly\" \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" "X-Generator: Weblate 5.13-dev\n" #: ../../docs/_templates/layout.html:58 msgid "Previous" msgstr "السابق" #: ../../docs/_templates/layout.html:61 msgid "Next" msgstr "التالي" #: ../../docs/_templates/versions.html:26 #: ../../docs/tutorials/performance/cpu_optimization.rst:160 msgid "Languages" msgstr "لغات" #: ../../docs/_templates/versions.html:32 msgid "Versions" msgstr "الإصدارات" #: ../../docs/_templates/versions.html:39 msgid "On Read the Docs" msgstr "على قراءة المستندات" #: ../../docs/_templates/versions.html:41 msgid "Project Home" msgstr "الصفحة الرئيسية للمشروع" #: ../../docs/_templates/versions.html:44 msgid "Builds" msgstr "إنشاء" #: ../../docs/_templates/versions.html:47 msgid "Downloads" msgstr "تنزيلات" #: ../../docs/index.rst:65 ../../docs/about/docs_changelog.rst:68 #: ../../docs/about/docs_changelog.rst:275 #: ../../docs/tutorials/inputs/mouse_and_input_coordinates.rst:7 #: ../../docs/tutorials/scripting/gdscript/gdscript_advanced.rst:7 #: ../../docs/contributing/development/core_and_modules/variant_class.rst:7 msgid "About" msgstr "حول" #: ../../docs/index.rst:79 ../../docs/tutorials/2d/2d_parallax.rst:20 #: ../../docs/tutorials/platform/android/android_in_app_purchases.rst:13 #: ../../docs/contributing/documentation/contributing_to_the_documentation.rst:15 msgid "Getting started" msgstr "ابدا" #: ../../docs/index.rst:94 msgid "Manual" msgstr "كتيب" #: ../../docs/index.rst:128 ../../docs/about/docs_changelog.rst:78 msgid "Contributing" msgstr "مساهمة" #: ../../docs/index.rst:140 ../../docs/about/docs_changelog.rst:287 msgid "Community" msgstr "المجتمع" #: ../../docs/index.rst:151 msgid "Class reference" msgstr "مرجع القالب البرمجي" #: ../../docs/index.rst:4 #, fuzzy msgid "Godot Docs – *4.4* branch" msgstr "وثائق محرك جودت-الإصدار *الرئيسي*" #: ../../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 "" "وثائق محرك جوْدَوتْ متوفرة بعدة لغات وبإصدارات مختلفة. اضغط على \"إقرأ " "الوثائق\" في الجزء السفلي من الشريط الجانبي لمشاهدة قائمة اللغات والإصدارات." #: ../../docs/index.rst:14 msgid "" "This documentation is translated from the `original English one `_ by community members on `Weblate `_." msgstr "" "تم ترجمة الوثائق من `النسخة الإنجليزية `_ بواسطة أعضاء متطوعين في موقع `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 "" "استنادًا إلى مستوى الجهد المبذول في إكمال الترجمة، قد تجد فقرات أو صفحات " "كاملة لا تزال باللغة الإنجليزية. يمكنك مساعدة المجتمع من خلال توفير ترجمات " "جديدة أو مراجعة الترجمات الموجودة على Weblate." #: ../../docs/index.rst:23 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 "" "في الوقت الحاضر، تتوفر الترجمات فقط في للإصدار \"المستقر\". يمكنك الإطلاع " "على التوثيق بلغة الإنجليزية لإصدرات اخرى للمحرك بستخدام \"إقراء مستندات\" في " "أسفل القائمة الفرعية" #: ../../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 "" "مرحبا إلى الوثائق الرّسمية `لمحرك جوْدَوتْ `__ ، محرّك " "الألعاب المجّاني والمفتوح المصدر للمنظور الثلاثي والثنائي الأبعاد والذي يطوّره " "المجتمع! إذا كنت بدأت مؤخرًا بقرأة الوثائق، ننصحك أن تقرأ :ref:`صفحة المقدمة " "` حيث ستجد شرح عامّ عن ما تحتويه هذه الوثائق." #: ../../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 "" "ستسمح لك قائمة المحتويات الموجودة بالأسفل والعامود الجانبي بالوصول بسهولة " "للموضوع الذي يهمك في كتيب الوثائق. يمكنك كذلك استعمال خاصية البحث الموجودة " "في الزاوية أعلى اليسار." #: ../../docs/index.rst:38 msgid "Get involved" msgstr "شاركنا!" #: ../../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 "" "محرك جوْدَوتْ مشروع مفتوح المصدر طوّر من مجتمع من المتطوّعين. فريق الوثائق يمكن " "أن يستفيد من ملاحظاتك و يساعد في تحسين الشروحات ومراجع القوالب البرمجية. إذا " "لم تفهم شيئا ما، أو لم تستطع العثور عن ما تبحث عنه في الوثائق، ساعدنا على " "تحسينها من خلال إبلاغنا!" #: ../../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 "" "قم بتقديم مشكلة أو طلب سحب على `أرشيف جيت هب `_، ساعدنا على `ترجمة المستندات `_ للغتك، أو تناقش معنا، إما على " "قناة ``#documentation`` على `ديسكورد `_، أو قناة " "``#godotengine-doc`` على `irc.freenode.net `_!" #: ../../docs/index.rst:52 msgid "weblate_widget" msgstr "weblate_widget" #: ../../docs/:2 msgid "Translation status" msgstr "وضع الترجمة" #: ../../docs/index.rst:54 msgid "Offline documentation" msgstr "الوثائق دون اتصال بإنترنت" #: ../../docs/index.rst:56 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 "" "لتصفح الوثائق دون اتصال بالإنترنت، يمكنك تنزيل نسخة HTML (تُحدَّث كل اثنين): " "`stable `__, `latest `__, `3.6 `__. استخرج " "ملف ZIP ثم افتح ملف ``index.html`` ذي المستوى الأعلى في متصفح الويب." #: ../../docs/index.rst:59 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 "" "للأجهزة المحمولة او للقراءة الإلكترونية يمكنك `تحميل نسخة HTML ` __ للقراءة بدون اتصال بالانترنت (تُحدّث كل يوم اثنين). استخرج " "ارشيف الZIP ثم افتح ``index.html`` في متصفح الإنترنت." #: ../../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/viewports.rst:7 #: ../../docs/tutorials/rendering/renderers.rst:13 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:5 #: ../../docs/tutorials/scripting/gdextension/what_is_gdextension.rst:7 #: ../../docs/tutorials/scripting/gdextension/gdextension_cpp_example.rst:7 #: ../../docs/tutorials/scripting/gdextension/gdextension_c_example.rst:7 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.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/contributing/development/best_practices_for_engine_contributors.rst:7 #: ../../docs/contributing/development/core_and_modules/2d_coordinate_systems.rst:7 #: ../../docs/contributing/development/core_and_modules/custom_godot_servers.rst:7 #: ../../docs/contributing/development/core_and_modules/custom_resource_format_loaders.rst:7 #: ../../docs/contributing/development/core_and_modules/custom_audiostreams.rst:7 #: ../../docs/contributing/development/editor/editor_style_guide.rst:7 #: ../../docs/community/asset_library/submitting_to_assetlib.rst:7 msgid "Introduction" msgstr "المقدمة" #: ../../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 "" "مرحبًا بكم في المستند الرسمي **لمحرك جوْدَوتْ**، محرك الألعاب ثنائي و ثلاثي " "الأبعاد المجاني و المفتوح المصدر يطوّره المتطوعين! وراء هذا الكلام الكثير، " "ستجد أداة قوية وسهلة الاستخدام لتطوير أي نوع من الألعاب، لأي جهاز و منصة " "وبدون أي قيود على الاستخدام على الإطلاق." #: ../../docs/about/introduction.rst:26 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 "" "تهدف هذه الصفحة إلى تقديم عرض عام عن المحرك ومحتويات هذه المستندات، حتى تعرف " "من أين تبدأ إذا كنت جديداً، أو أين تبحث عن معلومات حول خاصية محددة." #: ../../docs/about/introduction.rst:31 msgid "Before you start" msgstr "قبل ان تبدأ" #: ../../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 "" "صفحة :المرجع: `الدروس التعليمية والمصادر `صفحة تعرض " "فيديوهات تعليمية يساهم بها المجتمع - او بمعنى متطوعون. إذا كنت تفضل مشاهدة " "الفيديوهات عن قراءة النصوص، فقم بإلقاء نظرة على هذه الصفحة (ملاحظة: " "الفيديوهات باللغة الإنجليزية.)\n" "خلاف ذلك صفحة مرجع `\n" "نقطة رائعة لبداية" #: ../../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 "" "في حالة مواجهة أي مشكلة مع أحد البرامج التعليمية أو مشروعك، يمكنك العثور على " "المساعدة على قنوات المجتمع المختلفة ، " "وخاصة مجتمع Godot Discord والمنتدى ." #: ../../docs/about/introduction.rst:44 msgid "About Godot Engine" msgstr "حول محرك جودوت" #: ../../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 "" "محرك الألعاب أداة معقدة، ويصعب تقديمها ببعض الكلمات. سنعرض رُؤُوسُ الأقلام, لك " "كامل الحرية في إعادة استخدام الكلام المقدم للكتابة عن محرك جوْدَوتْ:" #: ../../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 "" "محرك جوْدَوتْ, هو محرك ألعاب متعدد المنصات مليء بالمزايا لإنشاء ألعاب ثنائية " "وثلاثية الأبعاد من واجهة موحدة. وهو يوفر مجموعة شاملة من الأدوات الشائعة، " "لتمكين المستخدمين على التركيز على صنع الألعاب دون الحاجة إلى إعادة إختراع " "العجلة من جديد. يمكن تصدير الألعاب بنقرة واحدة إلى عدد من المنصات، بما في " "ذلك المنصات الرئيسية لسطح المكتب (لينكس و ماكنتوش و مايكروسوفت ويندوز) " "بالإضافة إلى الأنظمة المحمولة الأساسية (أندرويد و آي يو إس /iOS/) والأنظمة " "الأساسية المعتمدة علي تقنيات الويب (إتش تي إم إل 5\n" "/Html5/)." #: ../../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 "تنظيم الوثائق" #: ../../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 "" "**حول** يحتوي على المقدمة بالإضافة إلى معلومات حول المحرك وتاريخه وترخيصه " "ومؤلفيه وما إلى ذلك. ويحتوي أيضًا على :ref:`doc_faq`." #: ../../docs/about/introduction.rst:74 #, fuzzy 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 "" "**ابدأ** تحتوي على جميع المعلومات الضرورية حول استخدام المحرك لإنشاء " "الألعاب. يبدأ الأمر بالبرنامج التعليمي :ref:`Step by step ` والذي يجب أن يكون نقطة الدخول لجميع المستخدمين الجدد. **هذا " "هو أفضل مكان للبدء إذا كنت جديدًا!**" #: ../../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 "" "**Contributing** gives information related to contributing to Godot, whether " "to the core engine, documentation, demos or other parts. It describes how to " "report bugs, how contributor workflows are organized, etc. It also contains " "sections intended for advanced users and contributors, with information on " "compiling the engine, contributing to the editor, or developing C++ modules." msgstr "" "**المساهمة** توفر المعلومات المتعلقة بالمساهمة في جوْدَتْ، سواء فيما يتعلق " "بالمحرك الأساسي أو الوثائق أو العروض التوضيحية أو الأجزاء الأخرى. فهو يصف " "كيفية الإبلاغ عن الأخطاء، وكيفية تنظيم سير عمل المساهمين، وما إلى ذلك. " "ويحتوي أيضًا على أقسام مخصصة للمستخدمين والمساهمين المتقدمين، مع معلومات حول " "تجميع المحرك، أو المساهمة في المحرر، أو تطوير وحدات C++ النمطية." #: ../../docs/about/introduction.rst:86 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:90 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 "" "في الاخير, **قالب المرجع** يوثق كل واجهة برمجة التطبيقات(API) الخاص بجوْدَتْ, و " "متوفر ايضا مباشرة من خلال محرر النص البرمجي الخاص بالمحرك. تستطيع الحصول على " "معلومات متعلقة بكل القوالب, الدوال, الاشارات و غيرها من هنا." #: ../../docs/about/introduction.rst:94 msgid "" "In addition to this documentation, you may also want to take a look at the " "various `Godot demo projects `_." msgstr "" "بالإضافة إلى هذه ‏‏الوثائق‏‏ ، قد ترغب أيضا في إلقاء نظرة على مختلف \"مشاريع " "‏‏Godot‏‏ التجريبية \".‏" #: ../../docs/about/introduction.rst:98 msgid "About this documentation" msgstr "‏حول هذه ‏‏الوثائق‏" #: ../../docs/about/introduction.rst:100 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 :ref:`Ways to " "contribute ` and :ref:`Writing documentation " "`, or get in touch with the " "`Documentation team `_ on " "`Godot Contributors Chat `_." msgstr "" "أعضاء مجتمع جوْدَتْ يقومون باستمرار بكتابة، تصحيح، تعديل وتحسين الوثائق. دائما " "نبحث على المزيد من المساعدة. يمكنك المساعدة من خلال الاشارة الى مشاكل في " "Github او ترجمة الوثائق للغتك الخاصة. اذا كنت مهتما بالمساعدة، " "أنظر:ref:`Ways to contribute ` و :ref:`Writing " "documentation ` ,او تواصل مع " "`Documentation team `_ على " "`Godot Contributors Chat `_." #: ../../docs/about/introduction.rst:108 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 "" "جميع محتويات ‏‏الوثائق‏‏ مرخصة بموجب ترخيص Creative Commons Attribution 3.0 ('CC " "BY 3.0 '_) المتساهل ، مع " "الإسناد إلى \"* Juan Linietsky و Ariel Manzur ‏‏ومجتمع‏‏ ‏‏Godot‏‏ Engine *\" ما لم " "يذكر خلاف ذلك.‏" #: ../../docs/about/introduction.rst:113 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 "" "تسرد هذه الصفحة الميزات التي يدعمها الإصدار المستقر الحالي من Godot. بعض هذه " "الميزات غير متوفرة في سلسلة الإصدارات 3.x `__." #: ../../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 "" "راجع :ref:'doc_system_requirements' لمعرفة متطلبات ‏‏إصدار‏‏ الأجهزة والبرامج.‏" #: ../../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 "ويندوز (x86 وARM، 64 بت و32 بت)." #: ../../docs/about/list_of_features.rst:26 msgid "macOS (x86 and ARM, 64-bit only)." msgstr "‏macOS‏‏ (x86 وARM، 64 بت فقط)." #: ../../docs/about/list_of_features.rst:27 msgid "Linux (x86 and ARM, 64-bit and 32-bit)." msgstr "‏لينكس (x86 و ARM ، 64 بت و 32 بت)." #: ../../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 #, fuzzy msgid "" "Official binaries are compiled using the `Godot Engine buildroot `__, allowing for binaries that work across " "common Linux distributions." msgstr "" "‏يتم تجميع الثنائيات الرسمية باستخدام \"‏‏Godot‏‏ Engine buildroot \" __ ، مما يسمح بالثنائيات التي تعمل عبر " "توزيعات Linux الشائعة (‏‏بما في ذلك‏‏ متغيرات LTS)." #: ../../docs/about/list_of_features.rst:35 msgid "Android (editor support is experimental)." msgstr "‏Android‏‏ (‏‏دعم‏‏ ‏‏المحرر‏‏ تجريبي‏‏)." #: ../../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:39 msgid "**Runs exported projects:**" msgstr "**تقوم بتشغيل المشاريع المصدّرة:**" #: ../../docs/about/list_of_features.rst:41 msgid "iOS." msgstr "" #: ../../docs/about/list_of_features.rst:42 msgid ":ref:`Consoles `." msgstr ":ref:`أجهزة الألعاب `." #: ../../docs/about/list_of_features.rst:44 #, fuzzy 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:49 #: ../../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:55 #: ../../docs/about/docs_changelog.rst:35 #: ../../docs/about/docs_changelog.rst:249 #: ../../docs/about/docs_changelog.rst:304 #: ../../docs/tutorials/editor/external_editor.rst:43 #: ../../docs/contributing/development/compiling/compiling_with_dotnet.rst:199 msgid "Editor" msgstr "المحرّر" #: ../../docs/about/list_of_features.rst:57 #: ../../docs/about/list_of_features.rst:497 msgid "**Features:**" msgstr "**مميزات.**" #: ../../docs/about/list_of_features.rst:59 msgid "Scene tree editor." msgstr "محرر شجرة المشهد." #: ../../docs/about/list_of_features.rst:60 msgid "Built-in script editor." msgstr "محرر النص البرمجي." #: ../../docs/about/list_of_features.rst:61 msgid "" "Support for :ref:`external script editors ` such as " "Visual Studio Code or Vim." msgstr "" "الدعم ل :ref:`محررات النص البرمجي الخارجية ` مثل Visual " "Studio Code أو Vim." #: ../../docs/about/list_of_features.rst:63 msgid "GDScript :ref:`debugger `." msgstr "GDScript :ref:`منقح الأخطاء البرمجية `." #: ../../docs/about/list_of_features.rst:65 #, fuzzy msgid "Support for debugging in threads is available since 4.2." msgstr "لا يوجد دعم لتنقيح الأخطاء في تعدد مهام المعالج حاليا." #: ../../docs/about/list_of_features.rst:66 msgid "" "Visual profiler with CPU and GPU time indications for each step of the " "rendering pipeline." msgstr "" #: ../../docs/about/list_of_features.rst:68 msgid "" "Performance monitoring tools, including :ref:`custom performance monitors " "`." msgstr "" #: ../../docs/about/list_of_features.rst:70 msgid "Live script reloading." msgstr "إعادة تحميل النص البرمجي بشكل مباشر." #: ../../docs/about/list_of_features.rst:71 msgid "Live scene editing." msgstr "تحرير المشهد بشكل مباشر." #: ../../docs/about/list_of_features.rst:73 msgid "" "Changes will reflect in the editor and will be kept after closing the " "running project." msgstr "التعديلات تظهر مباشرة في المحرر و يحتفظ بها بعد إغلاق المشروع الشّغال." #: ../../docs/about/list_of_features.rst:75 msgid "Remote inspector." msgstr "الفاحص عن بعد." #: ../../docs/about/list_of_features.rst:77 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:79 msgid "Live camera replication." msgstr "تكرار الكاميرا الحية." #: ../../docs/about/list_of_features.rst:81 msgid "Move the in-editor camera and see the result in the running project." msgstr "حرّك كاميرا المحرر وشاهد النتائج في المشروع المشغّل." #: ../../docs/about/list_of_features.rst:83 msgid "Built-in offline class reference documentation." msgstr "قالب الوثائق المرجعية المدمج بدون اتصال." #: ../../docs/about/list_of_features.rst:84 msgid "Use the editor in dozens of languages contributed by the community." msgstr "استخدم المحرر مع الكثير من اللغات التي يساهم فيها مجتمع جودو." #: ../../docs/about/list_of_features.rst:86 msgid "**Plugins:**" msgstr "**إضافات:**" #: ../../docs/about/list_of_features.rst:88 msgid "" "Editor plugins can be downloaded from the :ref:`asset library " "` to extend editor functionality." msgstr "" "يمكن تنزيل إضافات المحرر من :ref:`مكتبة المعدات ` " "لتوسيع إمكانيات الحرر." #: ../../docs/about/list_of_features.rst:90 msgid "" ":ref:`Create your own plugins ` using GDScript to add " "new features or speed up your workflow." msgstr "" ":ref:`أنشئ إضافاتك الخاصة ` إستخدام GDScript لإضافة " "ميّزات جديدة أو لتسريع سير العمل." #: ../../docs/about/list_of_features.rst:92 #, fuzzy msgid "" ":ref:`Download projects from the asset library ` " "in the Project Manager and import them directly." msgstr "" ":ref:`قم بتنزيل المشاريع من مكتبة الأصول` في مدير " "المشروع واستيرادها مباشرة." #: ../../docs/about/list_of_features.rst:96 #: ../../docs/about/docs_changelog.rst:55 #: ../../docs/about/docs_changelog.rst:95 #: ../../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:85 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.4.rst:165 #: ../../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:71 #: ../../docs/tutorials/rendering/index.rst:4 #: ../../docs/tutorials/rendering/viewports.rst:202 msgid "Rendering" msgstr "معالَجة" #: ../../docs/about/list_of_features.rst:98 #: ../../docs/tutorials/rendering/renderers.rst:15 msgid "Godot 4 includes three renderers:" msgstr "" #: ../../docs/about/list_of_features.rst:100 #: ../../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:103 #: ../../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:107 #: ../../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:111 #, fuzzy msgid "" "See :ref:`doc_renderers` for a detailed comparison of the rendering methods." msgstr "" "راجع :ref:'doc_system_requirements' لمعرفة متطلبات ‏‏إصدار‏‏ الأجهزة والبرامج.‏" #: ../../docs/about/list_of_features.rst:114 msgid "2D graphics" msgstr "الرسوميات ثنائية الأبعاد" #: ../../docs/about/list_of_features.rst:116 msgid "Sprite, polygon and line rendering." msgstr "عرض الرموز المتحركة والمضلع والخط." #: ../../docs/about/list_of_features.rst:118 #, fuzzy msgid "" "High-level tools to draw lines and polygons such as :ref:`class_Polygon2D` " "and :ref:`class_Line2D`, with support for texturing." msgstr "أدوات عالية المستوى لرسم الخطوط والمضلعات مثل Polygon2D و Line2D." #: ../../docs/about/list_of_features.rst:121 #, fuzzy msgid "AnimatedSprite2D as a helper for creating animated sprites." msgstr "AnimatedSprite كمساعد لإنشاء صور متحركة." #: ../../docs/about/list_of_features.rst:122 msgid "Parallax layers." msgstr "طبقات المنظر." #: ../../docs/about/list_of_features.rst:124 msgid "Pseudo-3D support including preview in the editor." msgstr "دعم Pseudo-3D بما في ذلك المعاينة في المحرر." #: ../../docs/about/list_of_features.rst:126 msgid "" ":ref:`2D lighting ` with normal maps and specular " "maps." msgstr "" #: ../../docs/about/list_of_features.rst:128 msgid "Point (omni/spot) and directional 2D lights." msgstr "" #: ../../docs/about/list_of_features.rst:129 msgid "Hard or soft shadows (adjustable on a per-light basis)." msgstr "" #: ../../docs/about/list_of_features.rst:130 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:134 msgid "" ":ref:`Font rendering ` using bitmaps, rasterization " "using FreeType or multi-channel signed distance fields (MSDF)." msgstr "" #: ../../docs/about/list_of_features.rst:137 #, fuzzy msgid "" "Bitmap fonts can be exported using tools like BMFont, or imported from " "images (for fixed-width fonts only)." msgstr "يمكن تصدير الخطوط النقطية باستخدام أدوات مثل BMFont." #: ../../docs/about/list_of_features.rst:139 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:141 #, fuzzy msgid "" "Dynamic fonts support optional font outlines with adjustable width and color." msgstr "يدعم DynamicFont مخططات الخطوط الاختيارية بعرض ولون قابلين للتعديل." #: ../../docs/about/list_of_features.rst:142 msgid "" "Dynamic fonts support variable fonts and OpenType features including " "ligatures." msgstr "" #: ../../docs/about/list_of_features.rst:143 msgid "" "Dynamic fonts support simulated bold and italic when the font file lacks " "those styles." msgstr "" #: ../../docs/about/list_of_features.rst:145 #, fuzzy msgid "" "Dynamic fonts support oversampling to keep fonts sharp at higher resolutions." msgstr "دعم اختزال الخط لإبقاء الخطوط حادة بدقة أعلى." #: ../../docs/about/list_of_features.rst:146 msgid "" "Dynamic fonts support subpixel positioning to make fonts crisper at low " "sizes." msgstr "" #: ../../docs/about/list_of_features.rst:147 msgid "" "Dynamic fonts support LCD subpixel optimizations to make fonts even crisper " "at low sizes." msgstr "" #: ../../docs/about/list_of_features.rst:148 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:152 #, fuzzy msgid "" "GPU-based :ref:`particles ` with support " "for :ref:`custom particle shaders `." msgstr "" "الجسيمات القائمة على وحدة معالجة الرسومات مع دعم تظليل الجسيمات المخصص." #: ../../docs/about/list_of_features.rst:154 #: ../../docs/about/list_of_features.rst:345 #, fuzzy msgid "CPU-based particles." msgstr "جسيمات" #: ../../docs/about/list_of_features.rst:155 msgid "" "Optional :ref:`2D HDR rendering " "` for better glow " "capabilities." msgstr "" #: ../../docs/about/list_of_features.rst:159 #, fuzzy msgid "2D tools" msgstr "ادوات" #: ../../docs/about/list_of_features.rst:161 msgid ":ref:`TileMaps ` for 2D tile-based level design." msgstr "" #: ../../docs/about/list_of_features.rst:162 #, fuzzy msgid "2D camera with built-in smoothing and drag margins." msgstr "كاميرا ثنائية الأبعاد مع دعم للسلاسة وهوامش السحب." #: ../../docs/about/list_of_features.rst:163 msgid "Path2D node to represent a path in 2D space." msgstr "" #: ../../docs/about/list_of_features.rst:165 #: ../../docs/about/list_of_features.rst:406 msgid "Can be drawn in the editor or generated procedurally." msgstr "" #: ../../docs/about/list_of_features.rst:166 msgid "PathFollow2D node to make nodes follow a Path2D." msgstr "" #: ../../docs/about/list_of_features.rst:168 #, fuzzy msgid ":ref:`2D geometry helper class `." msgstr "صف class مساعد للهندسة ثنائية الأبعاد." #: ../../docs/about/list_of_features.rst:171 #, fuzzy msgid "2D physics" msgstr "الفيزياء" #: ../../docs/about/list_of_features.rst:173 #: ../../docs/about/list_of_features.rst:416 msgid "**Physics bodies:**" msgstr "" #: ../../docs/about/list_of_features.rst:175 #: ../../docs/about/list_of_features.rst:418 msgid "Static bodies." msgstr "" #: ../../docs/about/list_of_features.rst:176 #: ../../docs/about/list_of_features.rst:419 msgid "" "Animatable bodies (for objects moving only by script or animation, such as " "doors and platforms)." msgstr "" #: ../../docs/about/list_of_features.rst:177 #: ../../docs/about/list_of_features.rst:420 msgid "Rigid bodies." msgstr "" #: ../../docs/about/list_of_features.rst:178 #: ../../docs/about/list_of_features.rst:421 #, fuzzy msgid "Character bodies." msgstr "الأجسام الرخوة." #: ../../docs/about/list_of_features.rst:179 #: ../../docs/about/list_of_features.rst:423 msgid "Joints." msgstr "المفاصل." #: ../../docs/about/list_of_features.rst:180 #: ../../docs/about/list_of_features.rst:426 msgid "Areas to detect bodies entering or leaving it." msgstr "" #: ../../docs/about/list_of_features.rst:182 #: ../../docs/about/list_of_features.rst:428 #, fuzzy msgid "**Collision detection:**" msgstr "أشكال إصطدام ظاهرة" #: ../../docs/about/list_of_features.rst:184 #, fuzzy msgid "" "Built-in shapes: line, box, circle, capsule, world boundary (infinite plane)." msgstr "الأشكال المدمجة: شبيه المكعب cuboid، الكرة، الكبسولة، الأسطوانة." #: ../../docs/about/list_of_features.rst:185 msgid "" "Collision polygons (can be drawn manually or generated from a sprite in the " "editor)." msgstr "" #: ../../docs/about/list_of_features.rst:188 msgid "3D graphics" msgstr "رسوميات ثلاثية الأبعاد" #: ../../docs/about/list_of_features.rst:190 #, fuzzy msgid "HDR rendering with sRGB." msgstr "محدودية الإخراج البصري ثلاثي الأبعاد" #: ../../docs/about/list_of_features.rst:191 msgid "Perspective, orthographic and frustum-offset cameras." msgstr "" #: ../../docs/about/list_of_features.rst:192 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:194 #, fuzzy msgid "" ":ref:`doc_variable_rate_shading` on supported GPUs in Forward+ and Mobile." msgstr "جسيمات" #: ../../docs/about/list_of_features.rst:196 msgid "**Physically-based rendering (built-in material features):**" msgstr "" #: ../../docs/about/list_of_features.rst:198 msgid "Follows the Disney PBR model." msgstr "" #: ../../docs/about/list_of_features.rst:199 msgid "" "Supports Burley, Lambert, Lambert Wrap (half-Lambert) and Toon diffuse " "shading modes." msgstr "" #: ../../docs/about/list_of_features.rst:200 msgid "Supports Schlick-GGX, Toon and Disabled specular shading modes." msgstr "" #: ../../docs/about/list_of_features.rst:201 msgid "Uses a roughness-metallic workflow with support for ORM textures." msgstr "" #: ../../docs/about/list_of_features.rst:202 msgid "" "Uses horizon specular occlusion (Filament model) to improve material " "appearance." msgstr "" #: ../../docs/about/list_of_features.rst:203 #, fuzzy msgid "Normal mapping." msgstr "إنشاء المحتوى" #: ../../docs/about/list_of_features.rst:204 msgid "" "Parallax/relief mapping with automatic level of detail based on distance." msgstr "" #: ../../docs/about/list_of_features.rst:205 msgid "Detail mapping for the albedo and normal maps." msgstr "" #: ../../docs/about/list_of_features.rst:206 msgid "Sub-surface scattering and transmittance." msgstr "" #: ../../docs/about/list_of_features.rst:207 msgid "" "Screen-space refraction with support for material roughness (resulting in " "blurry refraction)." msgstr "" #: ../../docs/about/list_of_features.rst:208 msgid "Proximity fade (soft particles) and distance fade." msgstr "" #: ../../docs/about/list_of_features.rst:209 msgid "" "Distance fade can use alpha blending or dithering to avoid going through the " "transparent pipeline." msgstr "" #: ../../docs/about/list_of_features.rst:211 msgid "Dithering can be determined on a per-pixel or per-object basis." msgstr "" #: ../../docs/about/list_of_features.rst:213 msgid "**Real-time lighting:**" msgstr "" #: ../../docs/about/list_of_features.rst:215 msgid "Directional lights (sun/moon). Up to 4 per scene." msgstr "" #: ../../docs/about/list_of_features.rst:216 msgid "Omnidirectional lights." msgstr "" #: ../../docs/about/list_of_features.rst:217 msgid "Spot lights with adjustable cone angle and attenuation." msgstr "" #: ../../docs/about/list_of_features.rst:218 msgid "" "Specular, indirect light, and volumetric fog energy can be adjusted on a per-" "light basis." msgstr "" #: ../../docs/about/list_of_features.rst:219 msgid "" "Adjustable light \"size\" for fake area lights (will also make shadows " "blurrier)." msgstr "" #: ../../docs/about/list_of_features.rst:220 msgid "" "Optional distance fade system to fade distant lights and their shadows, " "improving performance." msgstr "" #: ../../docs/about/list_of_features.rst:221 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:224 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:228 msgid "**Shadow mapping:**" msgstr "" #: ../../docs/about/list_of_features.rst:230 msgid "" "*DirectionalLight:* Orthogonal (fastest), PSSM 2-split and 4-split. Supports " "blending between splits." msgstr "" #: ../../docs/about/list_of_features.rst:232 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:234 msgid "*SpotLight:* Single texture. Supports colored projector textures." msgstr "" #: ../../docs/about/list_of_features.rst:235 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:237 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:239 msgid "Adjustable shadow blur on a per-light basis." msgstr "" #: ../../docs/about/list_of_features.rst:241 msgid "**Global illumination with indirect lighting:**" msgstr "" #: ../../docs/about/list_of_features.rst:243 #, fuzzy msgid "" ":ref:`Baked lightmaps ` (fast, but can't be updated " "at runtime)." msgstr "الإضاءات الجاهزة ( سريعة ، لكن لا يمكن تحديثها في أثناء-التشغيل)" #: ../../docs/about/list_of_features.rst:245 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:248 msgid "" "Supports lighting dynamic objects using automatic and manually placed probes." msgstr "" #: ../../docs/about/list_of_features.rst:249 msgid "" "Optionally supports directional lighting and rough reflections based on " "spherical harmonics." msgstr "" #: ../../docs/about/list_of_features.rst:251 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:254 msgid "" "Supports GPU-based :ref:`denoising ` with " "JNLM, or CPU/GPU-based denoising with OIDN." msgstr "" #: ../../docs/about/list_of_features.rst:257 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:261 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:264 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:267 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:270 msgid "**Reflections:**" msgstr "**انعكاسات:**" #: ../../docs/about/list_of_features.rst:272 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:276 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:278 msgid "Screen-space reflections with support for material roughness." msgstr "" #: ../../docs/about/list_of_features.rst:279 msgid "" "Reflection techniques can be mixed together for greater accuracy or " "scalability." msgstr "" #: ../../docs/about/list_of_features.rst:280 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:283 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:287 #, fuzzy msgid "**Decals:**" msgstr "**مميزات.**" #: ../../docs/about/list_of_features.rst:289 msgid "" ":ref:`Supports albedo `, emissive, :abbr:`ORM (Occlusion " "Roughness Metallic)`, and normal mapping." msgstr "" #: ../../docs/about/list_of_features.rst:291 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:293 msgid "" "Support for normal fade to fade the decal depending on its incidence angle." msgstr "" #: ../../docs/about/list_of_features.rst:294 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:296 msgid "" "Support for nearest, bilinear, trilinear or anisotropic texture filtering " "(configured globally)." msgstr "" #: ../../docs/about/list_of_features.rst:297 msgid "" "Optional distance fade system to fade distant decals, improving performance." msgstr "" #: ../../docs/about/list_of_features.rst:298 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:301 msgid "" "When using the Mobile renderer, up to 8 decals can be displayed per mesh " "resource." msgstr "" #: ../../docs/about/list_of_features.rst:304 msgid "**Sky:**" msgstr "**سماء:**" #: ../../docs/about/list_of_features.rst:306 msgid "Panorama sky (using an HDRI)." msgstr "" #: ../../docs/about/list_of_features.rst:307 msgid "" "Procedural sky and Physically-based sky that respond to the " "DirectionalLights in the scene." msgstr "" #: ../../docs/about/list_of_features.rst:308 msgid "" "Support for :ref:`custom sky shaders `, which can be " "animated." msgstr "" #: ../../docs/about/list_of_features.rst:309 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:312 msgid "**Fog:**" msgstr "**الضباب:**" #: ../../docs/about/list_of_features.rst:314 msgid "Exponential depth fog." msgstr "" #: ../../docs/about/list_of_features.rst:315 msgid "Exponential height fog." msgstr "" #: ../../docs/about/list_of_features.rst:316 msgid "" "Support for automatic fog color depending on the sky color (aerial " "perspective)." msgstr "" #: ../../docs/about/list_of_features.rst:317 #, fuzzy msgid "Support for sun scattering in the fog." msgstr "أندرويد" #: ../../docs/about/list_of_features.rst:318 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:320 #, fuzzy msgid "Support for making specific materials ignore fog." msgstr "أندرويد" #: ../../docs/about/list_of_features.rst:322 msgid "**Volumetric fog:**" msgstr "" #: ../../docs/about/list_of_features.rst:324 msgid "" "Global :ref:`volumetric fog ` that reacts to lights and " "shadows." msgstr "" #: ../../docs/about/list_of_features.rst:325 msgid "" "Volumetric fog can take indirect light into account when using VoxelGI or " "SDFGI." msgstr "" #: ../../docs/about/list_of_features.rst:326 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:328 msgid "Each fog volume can have its own custom shader." msgstr "" #: ../../docs/about/list_of_features.rst:329 msgid "Can be used together with traditional fog." msgstr "" #: ../../docs/about/list_of_features.rst:331 msgid "**Particles:**" msgstr "جسيمات / جزئيات" #: ../../docs/about/list_of_features.rst:333 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:336 msgid "" "3D particle attractor shapes supported: box, sphere and 3D vector fields." msgstr "" #: ../../docs/about/list_of_features.rst:337 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:339 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:341 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:343 msgid "Support for custom particle shaders with manual emission." msgstr "" #: ../../docs/about/list_of_features.rst:347 #, fuzzy msgid "**Post-processing:**" msgstr "المعالجة" #: ../../docs/about/list_of_features.rst:349 msgid "Tonemapping (Linear, Reinhard, Filmic, ACES)." msgstr "" #: ../../docs/about/list_of_features.rst:350 msgid "" "Automatic exposure adjustments based on viewport brightness (and manual " "exposure override)." msgstr "" #: ../../docs/about/list_of_features.rst:351 msgid "" "Near and far depth of field with adjustable bokeh simulation (box, hexagon, " "circle)." msgstr "" #: ../../docs/about/list_of_features.rst:352 msgid "Screen-space ambient occlusion (SSAO) at half or full resolution." msgstr "" #: ../../docs/about/list_of_features.rst:353 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:355 msgid "Glow can have a colored dirt map texture, acting as a lens dirt effect." msgstr "" #: ../../docs/about/list_of_features.rst:356 msgid "" "Glow can be :ref:`used as a screen-space blur effect " "`." msgstr "" #: ../../docs/about/list_of_features.rst:357 msgid "Color correction using a one-dimensional ramp or a 3D LUT texture." msgstr "" #: ../../docs/about/list_of_features.rst:358 msgid "Roughness limiter to reduce the impact of specular aliasing." msgstr "" #: ../../docs/about/list_of_features.rst:359 msgid "Brightness, contrast and saturation adjustments." msgstr "" #: ../../docs/about/list_of_features.rst:361 msgid "**Texture filtering:**" msgstr "" #: ../../docs/about/list_of_features.rst:363 msgid "Nearest, bilinear, trilinear or anisotropic filtering." msgstr "" #: ../../docs/about/list_of_features.rst:364 msgid "" "Filtering options are defined on a per-use basis, not a per-texture basis." msgstr "" #: ../../docs/about/list_of_features.rst:366 msgid "**Texture compression:**" msgstr "" #: ../../docs/about/list_of_features.rst:368 msgid "Basis Universal (slow, but results in smaller files)." msgstr "" #: ../../docs/about/list_of_features.rst:369 msgid "BPTC for high-quality compression (not supported on macOS)." msgstr "" #: ../../docs/about/list_of_features.rst:370 msgid "ETC2 (not supported on macOS)." msgstr "" #: ../../docs/about/list_of_features.rst:371 #, fuzzy msgid "S3TC (not supported on mobile/Web platforms)." msgstr "موصى به على منصات المحمول والويب." #: ../../docs/about/list_of_features.rst:373 #, fuzzy msgid "**Antialiasing:**" msgstr "نمذجة متكررة" #: ../../docs/about/list_of_features.rst:375 msgid "Temporal :ref:`antialiasing ` (TAA)." msgstr "" #: ../../docs/about/list_of_features.rst:376 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:378 msgid "" "Multi-sample antialiasing (MSAA), for both :ref:`doc_2d_antialiasing` " "and :ref:`doc_3d_antialiasing`." msgstr "" #: ../../docs/about/list_of_features.rst:379 #, fuzzy msgid "Fast approximate antialiasing (FXAA)." msgstr "نمذجة متكررة" #: ../../docs/about/list_of_features.rst:380 msgid "" "Super-sample antialiasing (SSAA) using bilinear 3D scaling and a 3D " "resolution scale above 1.0." msgstr "" #: ../../docs/about/list_of_features.rst:381 msgid "" "Alpha antialiasing, MSAA alpha to coverage and alpha hashing on a per-" "material basis." msgstr "" #: ../../docs/about/list_of_features.rst:383 msgid "**Resolution scaling:**" msgstr "" #: ../../docs/about/list_of_features.rst:385 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:388 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:390 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:393 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:398 #, fuzzy msgid "3D tools" msgstr "ادوات" #: ../../docs/about/list_of_features.rst:400 msgid "" "Built-in meshes: cube, cylinder/cone, (hemi)sphere, prism, plane, quad, " "torus, ribbon, tube." msgstr "" #: ../../docs/about/list_of_features.rst:401 msgid ":ref:`GridMaps ` for 3D tile-based level design." msgstr "" #: ../../docs/about/list_of_features.rst:402 msgid "" ":ref:`Constructive solid geometry ` (intended for " "prototyping)." msgstr "" #: ../../docs/about/list_of_features.rst:403 #, fuzzy msgid "" "Tools for :ref:`procedural geometry generation `." msgstr "جسيمات" #: ../../docs/about/list_of_features.rst:404 msgid "Path3D node to represent a path in 3D space." msgstr "عقدة المسار ثلاثي الأبعاد Path3D تمثل المسار في الحيز ثلاثي الأبعاد." #: ../../docs/about/list_of_features.rst:407 msgid "PathFollow3D node to make nodes follow a Path3D." msgstr "" "استعمل عقدة PathFollow3D (تتبع المسار ثلاثي الأبعاد) لجعل العقد تتبع مساراً " "ثلاثي الأبعاد Path3D." #: ../../docs/about/list_of_features.rst:409 #, fuzzy msgid ":ref:`3D geometry helper class `." msgstr "صف class مساعد للهندسة ثلاثية الأبعاد." #: ../../docs/about/list_of_features.rst:410 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:414 #, fuzzy msgid "3D physics" msgstr "الفيزياء" #: ../../docs/about/list_of_features.rst:422 msgid "Vehicle bodies (intended for arcade physics, not simulation)." msgstr "أجسام المركبات (صمم لفيزياء ألعاب الأركيد arcade، وليس للمحاكاة)." #: ../../docs/about/list_of_features.rst:424 msgid "Soft bodies." msgstr "الأجسام الرخوة." #: ../../docs/about/list_of_features.rst:425 msgid "Ragdolls." msgstr "دوول." #: ../../docs/about/list_of_features.rst:430 #, fuzzy msgid "" "Built-in shapes: cuboid, sphere, capsule, cylinder, world boundary (infinite " "plane)." msgstr "الأشكال المدمجة: شبيه المكعب cuboid، الكرة، الكبسولة، الأسطوانة." #: ../../docs/about/list_of_features.rst:431 msgid "Generate triangle collision shapes for any mesh from the editor." msgstr "شكّل أشكال الاصطدام المثلثية من أي مجسم mesh باستعمال المحرر." #: ../../docs/about/list_of_features.rst:432 msgid "" "Generate one or several convex collision shapes for any mesh from the editor." msgstr "" #: ../../docs/about/list_of_features.rst:435 #: ../../docs/about/docs_changelog.rst:60 #: ../../docs/about/docs_changelog.rst:214 #: ../../docs/about/docs_changelog.rst:338 #: ../../docs/tutorials/shaders/index.rst:4 msgid "Shaders" msgstr "مُظللات" #: ../../docs/about/list_of_features.rst:437 msgid "*2D:* Custom vertex, fragment, and light shaders." msgstr "" #: ../../docs/about/list_of_features.rst:438 msgid "*3D:* Custom vertex, fragment, light, and sky shaders." msgstr "" #: ../../docs/about/list_of_features.rst:439 msgid "" "Text-based shaders using a :ref:`shader language inspired by GLSL " "`." msgstr "" "المظلل ذو الأساس النصي مستعملاً ref:`لغة المظلل المستوحاة من GLSL " "`." #: ../../docs/about/list_of_features.rst:440 #, fuzzy msgid "Visual shader editor." msgstr "أندرويد" #: ../../docs/about/list_of_features.rst:442 #, fuzzy msgid "Support for visual shader plugins." msgstr "أندرويد" #: ../../docs/about/list_of_features.rst:445 #: ../../docs/about/docs_changelog.rst:206 #: ../../docs/about/docs_changelog.rst:343 #: ../../docs/about/docs_changelog.rst:449 #: ../../docs/tutorials/scripting/index.rst:4 msgid "Scripting" msgstr "البرمجة النصية" #: ../../docs/about/list_of_features.rst:447 msgid "**General:**" msgstr "**عام:**" #: ../../docs/about/list_of_features.rst:449 msgid "Object-oriented design pattern with scripts extending nodes." msgstr "" "نمط التصميم ذو التوجه الشيئي object-oriented مع نصوص برمجية تستعير extending " "عقداً." #: ../../docs/about/list_of_features.rst:450 msgid "Signals and groups for communicating between scripts." msgstr "الإشارات والمجموعات للتواصل بين النصوص البرمجية." #: ../../docs/about/list_of_features.rst:451 #, fuzzy msgid "" "Support for :ref:`cross-language scripting `." msgstr "دعم لل :ref:`cross-language scripting `." #: ../../docs/about/list_of_features.rst:452 #, fuzzy msgid "" "Many 2D, 3D and 4D linear algebra data types such as vectors and transforms." msgstr "" "العديد من أنماط البيانات الجبرية الخطية ثنائية وثلاثية الأبعاد كالأشعة " "vectors والتحولات transforms." #: ../../docs/about/list_of_features.rst:454 #, fuzzy msgid ":ref:`GDScript: `" msgstr "صورة متحركة" #: ../../docs/about/list_of_features.rst:456 #, fuzzy msgid "" ":ref:`High-level interpreted language ` " "with :ref:`optional static typing `." msgstr "" ":ref:`لغة مفسرة بمستوى عال ` مع :ref:`إدخال نمطي اختياري " "`." #: ../../docs/about/list_of_features.rst:458 msgid "" "Syntax inspired by Python. However, GDScript is **not** based on Python." msgstr "" #: ../../docs/about/list_of_features.rst:459 msgid "Syntax highlighting is provided on GitHub." msgstr "يوجد دعم التلوين الجُملي على Github." #: ../../docs/about/list_of_features.rst:460 #, fuzzy msgid "" ":ref:`Use threads ` to perform asynchronous " "actions or make use of multiple processor cores." msgstr "" ":ref:`استعمل المجالات threads` لإجراء نشاطات غير " "متواقتة أو للاستفادة من تعدد نوى المعالجات." #: ../../docs/about/list_of_features.rst:463 #, fuzzy msgid ":ref:`C#: `" msgstr ":ref:`doc_2d_sprite_animation`" #: ../../docs/about/list_of_features.rst:465 msgid "Packaged in a separate binary to keep file sizes and dependencies down." msgstr "تم توضيبها كمكتبة منفصلة لإبقاء حجم الملفات وملفاتها صغيراً." #: ../../docs/about/list_of_features.rst:466 msgid "Supports .NET 8 and higher." msgstr "" #: ../../docs/about/list_of_features.rst:468 #, fuzzy msgid "Full support for the C# 12.0 syntax and features." msgstr "دعم كامل للغة البرمجة C# 7.0 بتركيب جملها وخصائصها." #: ../../docs/about/list_of_features.rst:470 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:472 msgid "On the iOS platform only some architectures are supported: ``arm64``." msgstr "" #: ../../docs/about/list_of_features.rst:473 msgid "" "The web platform is currently unsupported. To use C# on that platform, " "consider Godot 3 instead." msgstr "" #: ../../docs/about/list_of_features.rst:476 msgid "" "Using an external editor is recommended to benefit from IDE functionality." msgstr "ينصح باستعمال محرر خارجي للاستفادة من وظائف IDE وفوائدها." #: ../../docs/about/list_of_features.rst:478 #, fuzzy msgid "**GDExtension (C, C++, Rust, D, ...):**" msgstr "**GDNative (C, C++, Rust, D, ...):**" #: ../../docs/about/list_of_features.rst:480 msgid "" "When you need it, link to native libraries for higher performance and third-" "party integrations." msgstr "" "عندما تحتاجها، الربط بالمكتبات الأصيلة للحصول على أداء أفضل بالإضافة إلى " "إضافات الطرف الثالث." #: ../../docs/about/list_of_features.rst:482 #, fuzzy msgid "" "For scripting game logic, GDScript or C# are recommended if their " "performance is suitable." msgstr "" "لكتابة منطق النص البرمحي، ينصح باستعمال GDScript أو C# إن كان أداؤها مناسباً." #: ../../docs/about/list_of_features.rst:485 msgid "" "Official GDExtension bindings for `C `__ and `C++ `__." msgstr "" #: ../../docs/about/list_of_features.rst:488 msgid "Use any build system and language features you wish." msgstr "استعمل أي نظام بناء وأي من مزايا اللغة التي تفضلها." #: ../../docs/about/list_of_features.rst:490 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:495 #: ../../docs/about/docs_changelog.rst:370 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:150 #: ../../docs/tutorials/audio/index.rst:6 #: ../../docs/tutorials/export/exporting_for_web.rst:268 msgid "Audio" msgstr "الصوت" #: ../../docs/about/list_of_features.rst:499 msgid "Mono, stereo, 5.1 and 7.1 output." msgstr "" #: ../../docs/about/list_of_features.rst:500 msgid "Non-positional and positional playback in 2D and 3D." msgstr "" #: ../../docs/about/list_of_features.rst:502 msgid "Optional Doppler effect in 2D and 3D." msgstr "تأثير دوبلر اخيتاري في السياق ثنائي وثلاثي الأبعاد." #: ../../docs/about/list_of_features.rst:504 msgid "" "Support for re-routable :ref:`audio buses ` and effects " "with dozens of effects included." msgstr "" #: ../../docs/about/list_of_features.rst:506 msgid "" "Support for polyphony (playing several sounds from a single " "AudioStreamPlayer node)." msgstr "" #: ../../docs/about/list_of_features.rst:507 #, fuzzy msgid "Support for random volume and pitch." msgstr "أندرويد" #: ../../docs/about/list_of_features.rst:508 #, fuzzy msgid "Support for real-time pitch scaling." msgstr "أندرويد" #: ../../docs/about/list_of_features.rst:509 msgid "" "Support for sequential/random sample selection, including repetition " "prevention when using random sample selection." msgstr "" #: ../../docs/about/list_of_features.rst:511 msgid "" "Listener2D and Listener3D nodes to listen from a position different than the " "camera." msgstr "" #: ../../docs/about/list_of_features.rst:512 #, fuzzy msgid "" "Support for :ref:`procedural audio generation `." msgstr "جسيمات" #: ../../docs/about/list_of_features.rst:513 msgid "Audio input to record microphones." msgstr "" #: ../../docs/about/list_of_features.rst:514 #, fuzzy msgid "MIDI input." msgstr "إدخال" #: ../../docs/about/list_of_features.rst:516 msgid "No support for MIDI output yet." msgstr "" #: ../../docs/about/list_of_features.rst:518 msgid "**APIs used:**" msgstr "" #: ../../docs/about/list_of_features.rst:520 msgid "*Windows:* WASAPI." msgstr "" #: ../../docs/about/list_of_features.rst:521 msgid "*macOS:* CoreAudio." msgstr "" #: ../../docs/about/list_of_features.rst:522 msgid "*Linux:* PulseAudio or ALSA." msgstr "" #: ../../docs/about/list_of_features.rst:525 msgid "Import" msgstr "استيراد" #: ../../docs/about/list_of_features.rst:527 msgid "Support for :ref:`custom import plugins `." msgstr "" #: ../../docs/about/list_of_features.rst:529 msgid "**Formats:**" msgstr "** التنسيقات: **" #: ../../docs/about/list_of_features.rst:531 #, fuzzy msgid "*Images:* See :ref:`doc_importing_images`." msgstr ":ref:`التصدير`" #: ../../docs/about/list_of_features.rst:532 msgid "*Audio:*" msgstr "*الصوت:*" #: ../../docs/about/list_of_features.rst:534 msgid "WAV with optional IMA-ADPCM compression." msgstr "" #: ../../docs/about/list_of_features.rst:535 msgid "Ogg Vorbis." msgstr "" #: ../../docs/about/list_of_features.rst:536 #, fuzzy msgid "MP3." msgstr "MP3." #: ../../docs/about/list_of_features.rst:538 msgid "*3D scenes:* See :ref:`doc_importing_3d_scenes`." msgstr "" #: ../../docs/about/list_of_features.rst:540 msgid "glTF 2.0 *(recommended)*." msgstr "" #: ../../docs/about/list_of_features.rst:541 msgid "" "``.blend`` (by calling Blender's glTF export functionality transparently)." msgstr "" #: ../../docs/about/list_of_features.rst:542 msgid "" "FBX (by calling `FBX2glTF `__ " "transparently)." msgstr "" #: ../../docs/about/list_of_features.rst:543 msgid "Collada (.dae)." msgstr "" #: ../../docs/about/list_of_features.rst:544 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:546 msgid "" "Support for loading glTF 2.0 scenes at runtime, including from an exported " "project." msgstr "" #: ../../docs/about/list_of_features.rst:547 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:551 #: ../../docs/about/docs_changelog.rst:315 #: ../../docs/tutorials/rendering/viewports.rst:38 #: ../../docs/tutorials/ui/custom_gui_controls.rst:114 msgid "Input" msgstr "إدخال" #: ../../docs/about/list_of_features.rst:553 msgid "" ":ref:`Input mapping system ` using hardcoded input " "events or remappable input actions." msgstr "" #: ../../docs/about/list_of_features.rst:556 msgid "" "Axis values can be mapped to two different actions with a configurable " "deadzone." msgstr "" #: ../../docs/about/list_of_features.rst:557 msgid "Use the same code to support both keyboards and gamepads." msgstr "" #: ../../docs/about/list_of_features.rst:559 #, fuzzy msgid "Keyboard input." msgstr "تفقّد المُدخلات." #: ../../docs/about/list_of_features.rst:561 msgid "" "Keys can be mapped in \"physical\" mode to be independent of the keyboard " "layout." msgstr "" #: ../../docs/about/list_of_features.rst:563 msgid "Mouse input." msgstr "" #: ../../docs/about/list_of_features.rst:565 msgid "" "The mouse cursor can be visible, hidden, captured or confined within the " "window." msgstr "" #: ../../docs/about/list_of_features.rst:566 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:569 msgid "Gamepad input (up to 8 simultaneous controllers)." msgstr "" #: ../../docs/about/list_of_features.rst:570 msgid "Pen/tablet input with pressure support." msgstr "" #: ../../docs/about/list_of_features.rst:573 #: ../../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:121 #: ../../docs/tutorials/2d/using_tilemaps.rst:78 #: ../../docs/tutorials/navigation/index.rst:4 msgid "Navigation" msgstr "تنقل" #: ../../docs/about/list_of_features.rst:575 msgid "" "A* algorithm in :ref:`2D ` and :ref:`3D `." msgstr "" #: ../../docs/about/list_of_features.rst:576 msgid "" "Navigation meshes with dynamic obstacle avoidance in :ref:`2D " "` and :ref:`3D `." msgstr "" #: ../../docs/about/list_of_features.rst:578 msgid "" "Generate navigation meshes from the editor or at runtime (including from an " "exported project)." msgstr "" #: ../../docs/about/list_of_features.rst:581 #: ../../docs/about/docs_changelog.rst:402 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:166 #: ../../docs/tutorials/export/exporting_for_web.rst:294 #: ../../docs/tutorials/networking/index.rst:5 msgid "Networking" msgstr "التواصل" #: ../../docs/about/list_of_features.rst:583 msgid "" "Low-level TCP networking using :ref:`class_StreamPeer` " "and :ref:`class_TCPServer`." msgstr "" #: ../../docs/about/list_of_features.rst:584 msgid "" "Low-level UDP networking using :ref:`class_PacketPeer` " "and :ref:`class_UDPServer`." msgstr "" #: ../../docs/about/list_of_features.rst:585 msgid "Low-level HTTP requests using :ref:`class_HTTPClient`." msgstr "" #: ../../docs/about/list_of_features.rst:586 msgid "High-level HTTP requests using :ref:`class_HTTPRequest`." msgstr "" #: ../../docs/about/list_of_features.rst:588 msgid "Supports HTTPS out of the box using bundled certificates." msgstr "" #: ../../docs/about/list_of_features.rst:590 msgid "" ":ref:`High-level multiplayer ` API using UDP and " "ENet." msgstr "" #: ../../docs/about/list_of_features.rst:592 msgid "Automatic replication using remote procedure calls (RPCs)." msgstr "" #: ../../docs/about/list_of_features.rst:593 msgid "Supports unreliable, reliable and ordered transfers." msgstr "" #: ../../docs/about/list_of_features.rst:595 msgid "" ":ref:`WebSocket ` client and server, available on all " "platforms." msgstr "" #: ../../docs/about/list_of_features.rst:596 msgid "" ":ref:`WebRTC ` client and server, available on all platforms." msgstr "" #: ../../docs/about/list_of_features.rst:597 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:601 #: ../../docs/about/docs_changelog.rst:387 #: ../../docs/tutorials/i18n/index.rst:4 msgid "Internationalization" msgstr "التدويل (لغوي)" #: ../../docs/about/list_of_features.rst:603 msgid "Full support for Unicode including emoji." msgstr "" #: ../../docs/about/list_of_features.rst:604 msgid "" "Store localization strings using :ref:`CSV ` " "or :ref:`gettext `." msgstr "" #: ../../docs/about/list_of_features.rst:607 msgid "Support for generating gettext POT and PO files from the editor." msgstr "" #: ../../docs/about/list_of_features.rst:609 msgid "" "Use localized strings in your project automatically in GUI elements or by " "using the ``tr()`` function." msgstr "" #: ../../docs/about/list_of_features.rst:611 msgid "" "Support for pluralization and translation contexts when using gettext " "translations." msgstr "" #: ../../docs/about/list_of_features.rst:612 msgid "" "Support for :ref:`bidirectional typesetting " "`, text shaping and OpenType localized " "forms." msgstr "" #: ../../docs/about/list_of_features.rst:614 msgid "Automatic UI mirroring for right-to-left locales." msgstr "" #: ../../docs/about/list_of_features.rst:615 msgid "" "Support for pseudolocalization to test your project for i18n-friendliness." msgstr "" #: ../../docs/about/list_of_features.rst:618 msgid "Windowing and OS integration" msgstr "" #: ../../docs/about/list_of_features.rst:620 msgid "Spawn multiple independent windows within a single process." msgstr "" #: ../../docs/about/list_of_features.rst:621 msgid "Move, resize, minimize, and maximize windows spawned by the project." msgstr "" #: ../../docs/about/list_of_features.rst:622 msgid "Change the window title and icon." msgstr "" #: ../../docs/about/list_of_features.rst:623 msgid "" "Request attention (will cause the title bar to blink on most platforms)." msgstr "" #: ../../docs/about/list_of_features.rst:624 #, fuzzy msgid "Fullscreen mode." msgstr "إلغاء/تفعيل وضع الشاشة الكاملة" #: ../../docs/about/list_of_features.rst:626 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:629 msgid "Borderless windows (fullscreen or non-fullscreen)." msgstr "" #: ../../docs/about/list_of_features.rst:630 #, fuzzy msgid "Ability to keep a window always on top." msgstr "القدرة على إبقاء النافذة دائما بالمقدمة." #: ../../docs/about/list_of_features.rst:631 msgid "Global menu integration on macOS." msgstr "" #: ../../docs/about/list_of_features.rst:632 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:634 msgid "" "Open file paths and URLs using default or custom protocol handlers (if " "registered on the system)." msgstr "" #: ../../docs/about/list_of_features.rst:635 msgid "Parse custom command line arguments." msgstr "" #: ../../docs/about/list_of_features.rst:636 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:642 #: ../../docs/tutorials/3d/3d_antialiasing.rst:317 #: ../../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/contributing/development/core_and_modules/internal_rendering_architecture.rst:48 msgid "Mobile" msgstr "المتنقل (كالجوال والأجهزة اللوحية والحواسب المحمولة الضعيفة)" #: ../../docs/about/list_of_features.rst:644 msgid "" "In-app purchases on :ref:`Android ` " "and :ref:`iOS `." msgstr "" #: ../../docs/about/list_of_features.rst:646 msgid "Support for advertisements using third-party modules." msgstr "" #: ../../docs/about/list_of_features.rst:649 msgid "XR support (AR and VR)" msgstr "" #: ../../docs/about/list_of_features.rst:651 msgid "Out of the box :ref:`support for OpenXR `." msgstr "" #: ../../docs/about/list_of_features.rst:653 msgid "" "Including support for popular desktop headsets like the Valve Index, WMR " "headsets, and Quest over Link." msgstr "" #: ../../docs/about/list_of_features.rst:655 msgid "" "Support for :ref:`Android-based headsets ` using " "OpenXR through a plugin." msgstr "" #: ../../docs/about/list_of_features.rst:657 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:659 msgid "Other devices supported through an XR plugin structure." msgstr "" #: ../../docs/about/list_of_features.rst:660 msgid "" "Various advanced toolkits are available that implement common features " "required by XR applications." msgstr "" #: ../../docs/about/list_of_features.rst:663 msgid "GUI system" msgstr "" #: ../../docs/about/list_of_features.rst:665 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:668 msgid "**Nodes:**" msgstr "**العقد:**" #: ../../docs/about/list_of_features.rst:670 msgid "Buttons." msgstr "أزرار." #: ../../docs/about/list_of_features.rst:671 msgid "Checkboxes, check buttons, radio buttons." msgstr "" #: ../../docs/about/list_of_features.rst:672 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:675 msgid "" "Dropdown menus using :ref:`class_PopupMenu` and :ref:`class_OptionButton`." msgstr "" #: ../../docs/about/list_of_features.rst:676 msgid "Scrollbars." msgstr "أشرطة التمرير." #: ../../docs/about/list_of_features.rst:677 msgid "Labels." msgstr "تسميات." #: ../../docs/about/list_of_features.rst:678 msgid "" "RichTextLabel for :ref:`text formatted using BBCode " "`, with support for animated custom effects." msgstr "" #: ../../docs/about/list_of_features.rst:680 msgid "Trees (can also be used to represent tables)." msgstr "" #: ../../docs/about/list_of_features.rst:681 msgid "Color picker with RGB and HSV modes." msgstr "" #: ../../docs/about/list_of_features.rst:682 msgid "Controls can be rotated and scaled." msgstr "" #: ../../docs/about/list_of_features.rst:684 msgid "**Sizing:**" msgstr "**التحجيم:**" #: ../../docs/about/list_of_features.rst:686 msgid "Anchors to keep GUI elements in a specific corner, edge or centered." msgstr "" #: ../../docs/about/list_of_features.rst:687 msgid "Containers to place GUI elements automatically following certain rules." msgstr "" #: ../../docs/about/list_of_features.rst:689 msgid ":ref:`Stack ` layouts." msgstr "" #: ../../docs/about/list_of_features.rst:690 #, fuzzy msgid ":ref:`Grid ` layouts." msgstr "صورة متحركة" #: ../../docs/about/list_of_features.rst:691 msgid "" ":ref:`Flow ` layouts (similar to autowrapping text)." msgstr "" #: ../../docs/about/list_of_features.rst:692 msgid "" ":ref:`Margin `, :ref:`centered " "` and :ref:`aspect ratio " "` layouts." msgstr "" #: ../../docs/about/list_of_features.rst:694 msgid ":ref:`Draggable splitter ` layouts." msgstr "" #: ../../docs/about/list_of_features.rst:696 msgid "" "Scale to :ref:`multiple resolutions ` using the " "``canvas_items`` or ``viewport`` stretch modes." msgstr "" #: ../../docs/about/list_of_features.rst:698 msgid "" "Support any aspect ratio using anchors and the ``expand`` stretch aspect." msgstr "" #: ../../docs/about/list_of_features.rst:700 msgid "**Theming:**" msgstr "** السمات: **" #: ../../docs/about/list_of_features.rst:702 msgid "Built-in theme editor." msgstr "" #: ../../docs/about/list_of_features.rst:704 msgid "Generate a theme based on the current editor theme settings." msgstr "" #: ../../docs/about/list_of_features.rst:706 msgid "Procedural vector-based theming using :ref:`class_StyleBoxFlat`." msgstr "" #: ../../docs/about/list_of_features.rst:708 msgid "" "Supports rounded/beveled corners, drop shadows, per-border widths and " "antialiasing." msgstr "" #: ../../docs/about/list_of_features.rst:710 msgid "Texture-based theming using :ref:`class_StyleBoxTexture`." msgstr "" #: ../../docs/about/list_of_features.rst:712 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:716 #: ../../docs/about/docs_changelog.rst:181 #: ../../docs/about/docs_changelog.rst:244 #: ../../docs/about/docs_changelog.rst:489 #: ../../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/contributing/development/file_formats/tscn.rst:382 msgid "Animation" msgstr "التحريك" #: ../../docs/about/list_of_features.rst:718 msgid "Direct kinematics and inverse kinematics." msgstr "" #: ../../docs/about/list_of_features.rst:719 msgid "Support for animating any property with customizable interpolation." msgstr "" #: ../../docs/about/list_of_features.rst:720 msgid "Support for calling methods in animation tracks." msgstr "" #: ../../docs/about/list_of_features.rst:721 msgid "Support for playing sounds in animation tracks." msgstr "" #: ../../docs/about/list_of_features.rst:722 msgid "Support for Bézier curves in animation." msgstr "" #: ../../docs/about/list_of_features.rst:725 #, fuzzy msgid "File formats" msgstr "البنية (اللاحقة)" #: ../../docs/about/list_of_features.rst:727 msgid "" "Scenes and resources can be saved in :ref:`text-based " "` or binary formats." msgstr "" #: ../../docs/about/list_of_features.rst:729 msgid "" "Text-based formats are human-readable and more friendly to version control." msgstr "" #: ../../docs/about/list_of_features.rst:730 msgid "Binary formats are faster to save/load for large scenes/resources." msgstr "" #: ../../docs/about/list_of_features.rst:732 msgid "Read and write text or binary files using :ref:`class_FileAccess`." msgstr "" #: ../../docs/about/list_of_features.rst:734 msgid "Can optionally be compressed or encrypted." msgstr "" #: ../../docs/about/list_of_features.rst:736 msgid "Read and write :ref:`class_JSON` files." msgstr "" #: ../../docs/about/list_of_features.rst:737 msgid "" "Read and write INI-style configuration files using :ref:`class_ConfigFile`." msgstr "" #: ../../docs/about/list_of_features.rst:739 msgid "Can (de)serialize any Godot datatype, including Vector2/3, Color, ..." msgstr "" #: ../../docs/about/list_of_features.rst:741 msgid "Read XML files using :ref:`class_XMLParser`." msgstr "" #: ../../docs/about/list_of_features.rst:742 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:744 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:746 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:750 #: ../../docs/about/docs_changelog.rst:541 msgid "Miscellaneous" msgstr "متنوع" #: ../../docs/about/list_of_features.rst:752 msgid "" ":ref:`Video playback ` with built-in support for Ogg " "Theora." msgstr "" #: ../../docs/about/list_of_features.rst:753 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:755 msgid "" ":ref:`Low-level access to servers ` which allows " "bypassing the scene tree's overhead when needed." msgstr "" #: ../../docs/about/list_of_features.rst:757 msgid "" ":ref:`Command line interface ` for automation." msgstr "" #: ../../docs/about/list_of_features.rst:759 msgid "Export and deploy projects using continuous integration platforms." msgstr "" #: ../../docs/about/list_of_features.rst:760 msgid "" "`Shell completion scripts `__ are available for Bash, zsh and fish." msgstr "" #: ../../docs/about/list_of_features.rst:762 msgid "" "Print colored text to standard output on all platforms " "using :ref:`print_rich `." msgstr "" #: ../../docs/about/list_of_features.rst:765 msgid "" "Support for :ref:`C++ modules ` statically linked " "into the engine binary." msgstr "" #: ../../docs/about/list_of_features.rst:767 msgid "Engine and editor written in C++17." msgstr "" #: ../../docs/about/list_of_features.rst:769 msgid "" "Can be :ref:`compiled ` using GCC, " "Clang and MSVC. MinGW is also supported." msgstr "" #: ../../docs/about/list_of_features.rst:771 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:775 msgid "Licensed under the permissive MIT license." msgstr "" #: ../../docs/about/list_of_features.rst:777 msgid "" "Open development process with :ref:`contributions welcome " "`." msgstr "" #: ../../docs/about/list_of_features.rst:781 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 "تنظيم المشروع" #: ../../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:203 msgid "Desktop or laptop PC - Minimum" msgstr "" #: ../../docs/about/system_requirements.rst:26 #: ../../docs/about/system_requirements.rst:78 #: ../../docs/about/system_requirements.rst:115 #: ../../docs/about/system_requirements.rst:153 #: ../../docs/about/system_requirements.rst:210 #: ../../docs/about/system_requirements.rst:265 #: ../../docs/about/system_requirements.rst:307 #: ../../docs/about/system_requirements.rst:347 msgid "**CPU**" msgstr "" #: ../../docs/about/system_requirements.rst:26 msgid "**Windows:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv8 CPU" msgstr "" #: ../../docs/about/system_requirements.rst:28 #: ../../docs/about/system_requirements.rst:212 msgid "" "*Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300, Snapdragon X Elite*" msgstr "" #: ../../docs/about/system_requirements.rst:30 #: ../../docs/about/system_requirements.rst:119 #: ../../docs/about/system_requirements.rst:214 #: ../../docs/about/system_requirements.rst:311 msgid "**macOS:** x86_64 or ARM CPU (Apple Silicon)" msgstr "" #: ../../docs/about/system_requirements.rst:32 #: ../../docs/about/system_requirements.rst:216 msgid "*Example: Intel Core 2 Duo SU9400, Apple M1*" msgstr "" #: ../../docs/about/system_requirements.rst:34 #: ../../docs/about/system_requirements.rst:123 #: ../../docs/about/system_requirements.rst:218 #: ../../docs/about/system_requirements.rst:315 msgid "" "**Linux:** x86_32 CPU with SSE2 instructions, x86_64 CPU, ARMv7 or ARMv8 CPU" msgstr "" #: ../../docs/about/system_requirements.rst:36 #: ../../docs/about/system_requirements.rst:220 msgid "" "*Example: Intel Core 2 Duo E8200, AMD Athlon XE BE-2300, Raspberry Pi 4*" msgstr "" #: ../../docs/about/system_requirements.rst:38 #: ../../docs/about/system_requirements.rst:84 #: ../../docs/about/system_requirements.rst:127 #: ../../docs/about/system_requirements.rst:159 #: ../../docs/about/system_requirements.rst:222 #: ../../docs/about/system_requirements.rst:273 #: ../../docs/about/system_requirements.rst:319 #: ../../docs/about/system_requirements.rst:355 msgid "**GPU**" msgstr "" #: ../../docs/about/system_requirements.rst:38 msgid "**Forward+ renderer:** Integrated graphics with full Vulkan 1.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:40 #: ../../docs/about/system_requirements.rst:44 #: ../../docs/about/system_requirements.rst:225 #: ../../docs/about/system_requirements.rst:230 msgid "" "*Example: Intel HD Graphics 5500 (Broadwell), AMD Radeon R5 Graphics " "(Kaveri)*" msgstr "" #: ../../docs/about/system_requirements.rst:42 msgid "**Mobile renderer:** Integrated graphics with full Vulkan 1.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:46 msgid "" "**Compatibility renderer:** Integrated graphics with full OpenGL 3.3 support" msgstr "" #: ../../docs/about/system_requirements.rst:48 #: ../../docs/about/system_requirements.rst:235 msgid "" "*Example: Intel HD Graphics 2500 (Ivy Bridge), AMD Radeon R5 Graphics " "(Kaveri)*" msgstr "" #: ../../docs/about/system_requirements.rst:50 #: ../../docs/about/system_requirements.rst:96 #: ../../docs/about/system_requirements.rst:139 #: ../../docs/about/system_requirements.rst:171 #: ../../docs/about/system_requirements.rst:237 #: ../../docs/about/system_requirements.rst:289 #: ../../docs/about/system_requirements.rst:333 #: ../../docs/about/system_requirements.rst:369 msgid "**RAM**" msgstr "" #: ../../docs/about/system_requirements.rst:50 #, fuzzy msgid "**Native editor:** 4 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:51 #: ../../docs/about/system_requirements.rst:172 #, fuzzy msgid "**Web editor:** 8 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:53 #: ../../docs/about/system_requirements.rst:99 #: ../../docs/about/system_requirements.rst:142 #: ../../docs/about/system_requirements.rst:174 #: ../../docs/about/system_requirements.rst:240 #: ../../docs/about/system_requirements.rst:292 #: ../../docs/about/system_requirements.rst:336 #: ../../docs/about/system_requirements.rst:372 #, fuzzy msgid "**Storage**" msgstr "التخزين" #: ../../docs/about/system_requirements.rst:53 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:57 #: ../../docs/about/system_requirements.rst:103 #: ../../docs/about/system_requirements.rst:144 #: ../../docs/about/system_requirements.rst:176 #: ../../docs/about/system_requirements.rst:242 #: ../../docs/about/system_requirements.rst:294 #: ../../docs/about/system_requirements.rst:338 #: ../../docs/about/system_requirements.rst:374 #, fuzzy msgid "**Operating system**" msgstr "**المشغل**" #: ../../docs/about/system_requirements.rst:57 msgid "" "**Native editor:** Windows 7, macOS 10.13 (Compatibility) or macOS 10.15 " "(Forward+/Mobile), Linux distribution released after 2016" msgstr "" #: ../../docs/about/system_requirements.rst:59 msgid "**Web editor:** Firefox 79, Chrome 68, Edge 79, Safari 15.2, Opera 64" msgstr "" #: ../../docs/about/system_requirements.rst:64 #: ../../docs/about/system_requirements.rst:251 msgid "" "Windows 7/8/8.1 are supported on a best-effort basis. These versions are not " "regularly tested and some features may be missing (such as " "colored :ref:`print_rich ` console " "output). Support for Windows 7/8/8.1 may be removed in a :ref:`future Godot " "4.x release `." msgstr "" #: ../../docs/about/system_requirements.rst:70 #: ../../docs/about/system_requirements.rst:257 msgid "" "Vulkan drivers for these Windows versions are known to have issues with " "memory leaks. As a result, it's recommended to stick to the Compatibility " "renderer when running Godot on a Windows version older than 10." msgstr "" #: ../../docs/about/system_requirements.rst:75 #: ../../docs/about/system_requirements.rst:262 msgid "Mobile device (smartphone/tablet) - Minimum" msgstr "" #: ../../docs/about/system_requirements.rst:78 #: ../../docs/about/system_requirements.rst:265 msgid "**Android:** SoC with any 32-bit or 64-bit ARM or x86 CPU" msgstr "" #: ../../docs/about/system_requirements.rst:80 #: ../../docs/about/system_requirements.rst:267 msgid "*Example: Qualcomm Snapdragon 430, Samsung Exynos 5 Octa 5430*" msgstr "" #: ../../docs/about/system_requirements.rst:82 #: ../../docs/about/system_requirements.rst:157 #, fuzzy msgid "**iOS:** *Cannot run the editor*" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:84 msgid "**Forward+ renderer:** SoC featuring GPU with full Vulkan 1.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:86 #: ../../docs/about/system_requirements.rst:90 msgid "*Example: Qualcomm Adreno 505, Mali-G71 MP2*" msgstr "" #: ../../docs/about/system_requirements.rst:88 msgid "**Mobile renderer:** SoC featuring GPU with full Vulkan 1.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:92 #: ../../docs/about/system_requirements.rst:285 msgid "" "**Compatibility renderer:** SoC featuring GPU with full OpenGL ES 3.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:94 msgid "*Example: Qualcomm Adreno 306, Mali-T628 MP6*" msgstr "" #: ../../docs/about/system_requirements.rst:96 #, fuzzy msgid "**Native editor:** 3 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:97 #, fuzzy msgid "**Web editor:** 6 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:99 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:103 msgid "" "**Native editor:** Android 6.0 (Compatibility) or Android 9.0 (Forward+/" "Mobile)" msgstr "" #: ../../docs/about/system_requirements.rst:104 msgid "" "**Web editor:** Firefox 79, Chrome 88, Edge 79, Safari 15.2, Opera 64, " "Samsung Internet 15" msgstr "" #: ../../docs/about/system_requirements.rst:108 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:112 #: ../../docs/about/system_requirements.rst:304 msgid "Desktop or laptop PC - Recommended" msgstr "" #: ../../docs/about/system_requirements.rst:115 #: ../../docs/about/system_requirements.rst:307 msgid "" "**Windows:** x86_64 CPU with SSE4.2 instructions, with 4 physical cores or " "more, ARMv8 CPU" msgstr "" #: ../../docs/about/system_requirements.rst:117 #: ../../docs/about/system_requirements.rst:309 msgid "*Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Snapdragon X Elite*" msgstr "" #: ../../docs/about/system_requirements.rst:121 #: ../../docs/about/system_requirements.rst:313 msgid "*Example: Intel Core i5-8500, Apple M1*" msgstr "" #: ../../docs/about/system_requirements.rst:125 #: ../../docs/about/system_requirements.rst:317 msgid "" "*Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Raspberry Pi 5 with " "overclocking*" msgstr "" #: ../../docs/about/system_requirements.rst:127 msgid "**Forward+ renderer:** Dedicated graphics with full Vulkan 1.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:129 #: ../../docs/about/system_requirements.rst:133 #: ../../docs/about/system_requirements.rst:322 #: ../../docs/about/system_requirements.rst:327 msgid "" "*Example: NVIDIA GeForce GTX 1050 (Pascal), AMD Radeon RX 460 (GCN 4.0)*" msgstr "" #: ../../docs/about/system_requirements.rst:131 msgid "**Mobile renderer:** Dedicated graphics with full Vulkan 1.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:135 #: ../../docs/about/system_requirements.rst:329 msgid "" "**Compatibility renderer:** Dedicated graphics with full OpenGL 4.6 support" msgstr "" #: ../../docs/about/system_requirements.rst:137 #: ../../docs/about/system_requirements.rst:331 msgid "" "*Example: NVIDIA GeForce GTX 650 (Kepler), AMD Radeon HD 7750 (GCN 1.0)*" msgstr "" #: ../../docs/about/system_requirements.rst:139 #, fuzzy msgid "**Native editor:** 8 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:140 #, fuzzy msgid "**Web editor:** 12 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:142 #: ../../docs/about/system_requirements.rst:174 msgid "" "1.5 GB (used for the executable, project files, all export templates and " "cache)" msgstr "" #: ../../docs/about/system_requirements.rst:144 msgid "" "**Native editor:** Windows 10, macOS 10.15, Linux distribution released " "after 2020" msgstr "" #: ../../docs/about/system_requirements.rst:146 msgid "**Web editor:** Latest version of Firefox, Chrome, Edge, Safari, Opera" msgstr "" #: ../../docs/about/system_requirements.rst:150 #: ../../docs/about/system_requirements.rst:344 msgid "Mobile device (smartphone/tablet) - Recommended" msgstr "" #: ../../docs/about/system_requirements.rst:153 #: ../../docs/about/system_requirements.rst:347 msgid "" "**Android:** SoC with 64-bit ARM or x86 CPU, with 3 \"performance\" cores or " "more" msgstr "" #: ../../docs/about/system_requirements.rst:155 #: ../../docs/about/system_requirements.rst:349 msgid "*Example: Qualcomm Snapdragon 845, Samsung Exynos 9810*" msgstr "" #: ../../docs/about/system_requirements.rst:159 msgid "**Forward+ renderer:** SoC featuring GPU with full Vulkan 1.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:161 #: ../../docs/about/system_requirements.rst:165 #: ../../docs/about/system_requirements.rst:169 msgid "*Example: Qualcomm Adreno 630, Mali-G72 MP18*" msgstr "" #: ../../docs/about/system_requirements.rst:163 msgid "**Mobile renderer:** SoC featuring GPU with full Vulkan 1.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:167 #: ../../docs/about/system_requirements.rst:365 msgid "" "**Compatibility renderer:** SoC featuring GPU with full OpenGL ES 3.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:171 #, fuzzy msgid "**Native editor:** 6 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:176 #, fuzzy msgid "**Native editor:** Android 9.0" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:177 msgid "" "**Web editor:** Latest version of Firefox, Chrome, Edge, Safari, Opera, " "Samsung Internet" msgstr "" #: ../../docs/about/system_requirements.rst:182 #, fuzzy msgid "Exported Godot project" msgstr "إنشاء المحتوى" #: ../../docs/about/system_requirements.rst:186 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:193 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:199 msgid "" "These are the **minimum** specifications required to run a simple 2D or 3D " "project exported with Godot:" msgstr "" #: ../../docs/about/system_requirements.rst:210 msgid "" "**Windows:** x86_32 CPU with SSE2 instructions, any x86_64 CPU, ARMv8 CPU" msgstr "" #: ../../docs/about/system_requirements.rst:222 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:227 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:232 msgid "" "**Compatibility renderer:** Integrated graphics with full OpenGL 3.3 support " "or Direct3D 11 support (Windows)." msgstr "" #: ../../docs/about/system_requirements.rst:237 #: ../../docs/about/system_requirements.rst:369 #, fuzzy msgid "**For native exports:** 2 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:238 #: ../../docs/about/system_requirements.rst:370 #, fuzzy msgid "**For web exports:** 4 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:240 #: ../../docs/about/system_requirements.rst:292 #: ../../docs/about/system_requirements.rst:336 #: ../../docs/about/system_requirements.rst:372 msgid "150 MB (used for the executable, project files and cache)" msgstr "" #: ../../docs/about/system_requirements.rst:242 msgid "" "**For native exports:** Windows 7 (Compatibility and Forward+/Mobile, " "Vulkan), Windows 10 (Forward+/Mobile, Direct3D 12), macOS 10.13 " "(Compatibility), macOS 10.15 (Forward+/Mobile, Vulkan), macOS 13.0 (Forward+/" "Mobile, Metal), Linux distribution released after 2016" msgstr "" #: ../../docs/about/system_requirements.rst:246 msgid "" "**For web exports:** Firefox 79, Chrome 68, Edge 79, Safari 15.2, Opera 64" msgstr "" #: ../../docs/about/system_requirements.rst:269 msgid "**iOS:** SoC with any 64-bit ARM CPU" msgstr "" #: ../../docs/about/system_requirements.rst:271 msgid "*Example: Apple A7 (iPhone 5S)*" msgstr "" #: ../../docs/about/system_requirements.rst:273 msgid "" "**Forward+ renderer:** SoC featuring GPU with full Vulkan 1.0 support, or " "Metal 3 support (iOS/iPadOS)" msgstr "" #: ../../docs/about/system_requirements.rst:276 #: ../../docs/about/system_requirements.rst:282 msgid "" "*Example (Vulkan): Qualcomm Adreno 505, Mali-G71 MP2, Apple A12 (iPhone XR/" "XS)*" msgstr "" #: ../../docs/about/system_requirements.rst:277 #: ../../docs/about/system_requirements.rst:283 msgid "*Example (Metal): Apple A11 (iPhone 8/X)*" msgstr "" #: ../../docs/about/system_requirements.rst:279 msgid "" "**Mobile renderer:** SoC featuring GPU with full Vulkan 1.0 support, or " "Metal 3 support (iOS/iPadOS)" msgstr "" #: ../../docs/about/system_requirements.rst:287 msgid "*Example: Qualcomm Adreno 306, Mali-T628 MP6, Apple A7 (iPhone 5S)*" msgstr "" #: ../../docs/about/system_requirements.rst:289 #, fuzzy msgid "**For native exports:** 1 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:290 #, fuzzy msgid "**For web exports:** 2 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:294 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:296 msgid "" "**For web exports:** Firefox 79, Chrome 88, Edge 79, Safari 15.2, Opera 64, " "Samsung Internet 15" msgstr "" #: ../../docs/about/system_requirements.rst:300 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:319 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:324 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:333 #, fuzzy msgid "**For native exports:** 4 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:334 #, fuzzy msgid "**For web exports:** 8 GB" msgstr "**للمحرر:**" #: ../../docs/about/system_requirements.rst:338 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:340 msgid "" "**For web exports:** Latest version of Firefox, Chrome, Edge, Safari, Opera" msgstr "" #: ../../docs/about/system_requirements.rst:351 msgid "**iOS:** SoC with 64-bit ARM CPU" msgstr "" #: ../../docs/about/system_requirements.rst:353 msgid "*Example: Apple A14 (iPhone 12)*" msgstr "" #: ../../docs/about/system_requirements.rst:355 msgid "" "**Forward+ renderer:** SoC featuring GPU with full Vulkan 1.2 support, or " "Metal 3 support (iOS/iPadOS)" msgstr "" #: ../../docs/about/system_requirements.rst:358 #: ../../docs/about/system_requirements.rst:363 #: ../../docs/about/system_requirements.rst:367 msgid "*Example: Qualcomm Adreno 630, Mali-G72 MP18, Apple A14 (iPhone 12)*" msgstr "" #: ../../docs/about/system_requirements.rst:360 msgid "" "**Mobile renderer:** SoC featuring GPU with full Vulkan 1.2 support, or " "Metal 3 support (iOS/iPadOS)" msgstr "" #: ../../docs/about/system_requirements.rst:374 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:376 msgid "" "**For web exports:** Latest version of Firefox, Chrome, Edge, Safari, Opera, " "Samsung Internet" msgstr "" #: ../../docs/about/system_requirements.rst:382 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 #, fuzzy 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 "" "قودوت هو برنامج مجاني ومفتوح المصدر وتم اصداره بموجب ترخيص إم آي تي MIT" #: ../../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 #, fuzzy 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 "" "جميع المحتويات تحت رخصة المُشاع الإبداعي 3.0 (`CC-BY 3.0 `_) license، مع ذكر والنسب ل \"خوان " "لينتيسكي، ارييل منزور ومجتمع محرك غودو.\"" #: ../../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 #, fuzzy 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 "" "لمزيد من التفاصيل ، طالع ملفات `COPYRIGHT.txt `_ وكذلك `LICENSE.txt `_ و `LOGO_LICENSE.txt " "`_ في " "مستودع غودو." #: ../../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:77 #: ../../docs/tutorials/ui/gui_using_fonts.rst:787 #: ../../docs/contributing/development/debugging/vulkan/vulkan_validation_layers.rst:16 #: ../../docs/contributing/documentation/building_the_manual.rst:29 #: ../../docs/contributing/documentation/building_the_manual.rst:45 #: ../../docs/contributing/documentation/building_the_manual.rst:61 #: ../../docs/contributing/documentation/building_the_manual.rst:145 msgid "Windows" msgstr "مايكروسوفت ويندوز(windows )" #: ../../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:338 #: ../../docs/tutorials/editor/default_key_mapping.rst:385 #: ../../docs/tutorials/editor/default_key_mapping.rst:396 #: ../../docs/tutorials/editor/default_key_mapping.rst:409 #: ../../docs/tutorials/editor/default_key_mapping.rst:440 #: ../../docs/tutorials/editor/default_key_mapping.rst:453 #: ../../docs/tutorials/editor/default_key_mapping.rst:476 #: ../../docs/tutorials/editor/default_key_mapping.rst:493 #: ../../docs/tutorials/editor/default_key_mapping.rst:532 #: ../../docs/tutorials/editor/default_key_mapping.rst:559 #: ../../docs/tutorials/rendering/jitter_stutter.rst:131 #: ../../docs/contributing/development/debugging/vulkan/vulkan_validation_layers.rst:30 msgid "macOS" msgstr "ماك أو إس(macos)" #: ../../docs/about/faq.rst:46 ../../docs/about/faq.rst:54 #: ../../docs/contributing/development/debugging/vulkan/vulkan_validation_layers.rst:58 #, fuzzy msgid "Linux, \\*BSD" msgstr "إكس 11 (لينكس \\ * بيركلي)" #: ../../docs/about/faq.rst:47 msgid "Android (experimental)" msgstr "اندوريد (تجريبي) (andriod )" #: ../../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:183 #: ../../docs/tutorials/export/one-click_deploy.rst:105 #: ../../docs/tutorials/platform/android/index.rst:4 #: ../../docs/tutorials/rendering/jitter_stutter.rst:138 #: ../../docs/tutorials/ui/gui_using_fonts.rst:787 #: ../../docs/contributing/development/debugging/vulkan/vulkan_validation_layers.rst:135 msgid "Android" msgstr "أندرويد(andriod)" #: ../../docs/about/faq.rst:56 #: ../../docs/tutorials/rendering/jitter_stutter.rst:145 #: ../../docs/contributing/development/debugging/vulkan/vulkan_validation_layers.rst:141 msgid "iOS" msgstr "اي او اس(IOS)" #: ../../docs/about/faq.rst:57 #: ../../docs/tutorials/export/one-click_deploy.rst:126 #: ../../docs/tutorials/platform/web/index.rst:7 #: ../../docs/tutorials/rendering/renderers.rst:158 #: ../../docs/contributing/development/compiling/optimizing_for_size.rst:306 #: ../../docs/contributing/development/debugging/using_sanitizers.rst:200 #: ../../docs/contributing/development/debugging/vulkan/vulkan_validation_layers.rst:146 msgid "Web" msgstr "الويب(web)" #: ../../docs/about/faq.rst:59 #, fuzzy 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 "كلًا من 32 و 64 بت مدعوم حيثما يكون ذلك متوفر، مع وجود 64 بت كافتراضي." #: ../../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 "" "بعض المستخدمين أيضا يخبرون أن تم بناء واستخدام جودوت بنجاح على النظم القائمة " "على بنية إيه آر إم (ARM) مع لينكس، مثل راسبري باي (raspberry pi)." #: ../../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 "" "لمعرفة المزيد حول هذا الموضوع، راجع الأقسام الموجودة في :ref: \"التصدير \" و :ref: \"بناء جودوت بنفسك \"." #: ../../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 #, fuzzy msgid "" "The officially supported languages for Godot are GDScript, C#, and C++. See " "the subcategories for each language in the :ref:`scripting ` section." msgstr "" "اللغات البرمجية المُعتمدة رسمياً لمحرك الألعاب غودوت هي GDScript و البرمجة " "المرئية و C# و كذلك C++. يمكنك الاطلاع على العناوين الجانبية لكل لغة برمجية " "في قسم :ref:`البرمجة `" #: ../../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 "" "إن كنت قد شرعت بالعمل في جودوت أو برمجة الألعاب عموماً، فإننا ننصحك بتعلم لغة " "GDScript كونها سهلة التعلم واللغة الرسمية لمحرك الألعاب جودوت. في حين أن " "لغات البرمجة العالية المستوى تميل لأن تكون أقل أداءً من اللغات البرمجية " "المنخفضة المستوى على المدى الطويل سواء أكان لأجل صنع نموذج مبدئي أو تطوير " "منتج ذو حد أدنى قابل للتطوير فيما بعد (MVPs)، أو حتى التركيز على الوقت-لبلوغ-" "السوق (TTM)، فإن لغة البرمجة GDScript ستؤمن حلاً سريعاً وسهل الاستعمال وفي " "الوقت ذاته قادر على تطوير اللعبة الخاصة بك." #: ../../docs/about/faq.rst:93 #, fuzzy 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 "" "ضع في الحسبان أن دعم لغة البرمجة #C ما زال حديث العهد، وبالتالي قد تصادف بعض " "المشكلات والعقبات في طريق العمل بهذه اللغة، ولكن مجتمعنا اللطيف والدؤوب على " "العمل مستعد لمساعدتك في حل مشاكلك حالما تظهر بالنسبة لك، ولكن بما أن المشروع " "مفتوح المصدر، نفضل أن تقوم ببعض الأمور بنفسك. البحث في المناقشات والمشكلات " "السابقة في open issues `_ هي " "أفضل طريقة لحل المشكلات والعقبات التي تواجهك." #: ../../docs/about/faq.rst:102 #, fuzzy 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 "" "بالنسبة للغات البرمجة الجديدة، فإن الدعم متوافر من خلال برمجيات الطرف الثالث " "كاستخدام GDNative / NativeScript / PluginScript وخدماتها. (اطلع على السؤال " "عن الإضافات بالإسفل). جارٍ العمل حالياً، على سبيل المثال، يدعم محرك الألعاب " "غدوت بصورة غير رسمية لغة البرمجة `بايثون `، وكذلك لغة البرمجة `نيم `_." #: ../../docs/about/faq.rst:109 msgid "What is GDScript and why should I use it?" msgstr "ما هو GDScript ولماذا يجب أن أستعمله ؟" #: ../../docs/about/faq.rst:111 #, fuzzy 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 "" "GDScript هي لغة المحرك غودوت المُدمجة. لقد تم بناء هذه اللغة من الصفر " "لاستحصال الإمكانيات القصوى للمحرك بأقل أسطر برمجية ممكنة، لتمكين المطورين " "الجدد وكذلك أولئك المحترفين من الإستفادة من نقاط القوة الخاصة بغودوت بأسرع " "شكل ممكن. إن سبق لك كتابة أي شيء بلغة برمجية مثل بايثون من قبل فإن لغة " "GDscript مشابة لها. للاطلاع على الأمثلة، تاريخ اللغة والنظرة الشاملة عن " "الإمكانيات وما تقدمه هذه اللغة يمكنك الاطلاع على:ref:`دليل البرمجة ب " "GDScript `." #: ../../docs/about/faq.rst:118 #, fuzzy msgid "" "There are several reasons to use GDScript, but the most salient reason is " "the overall **reduction of complexity**." msgstr "" "هنالك العديد من الأسباب تدفعك لاستخدام اللغة البرمجية GDScript، خصوصاً عندما " "تعمل على نماذج بدائية، كما في المرحلة ألفا/بيتا من مشروعك، أو إن لم تكن تعمل " "على اللعبة الكبيرة التالية، ولكن في نهاية المطاف يبقى السبب الأهم والأسمى هو " "السهولة والبُعد عن التعقيد ." #: ../../docs/about/faq.rst:121 #, fuzzy 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 #, fuzzy 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 "" "بما أن غودوت هو مشروع مفتوح المصدر، كان من الأولوية والضرورات تأمين تجربة " "استخدام شاملة وسلسلة قبل التركيز على جذب مزيد من المستخدمين عن طريق دعم لغات " "برمجية أخرى، خصوصاً عندما كان تأمين هذا الدعم سيؤمن تجربة استخدام أسوء. نحن " "نتفهم رغبتك في إستخدام لغة برمجية أخرى في غودوت (اطلع على اللغات المدعومة " "أعلاه). وخلاصة القول، إن لم تعط GDScript فرصة، جربها فقط **ثلاثة أيام**. كما " "هو المحرك بذاته، بمجرد أن ترى كم هي سرعةو فعالية هذه اللغة، حتماً سوف تُعجبك." #: ../../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 "" "للمزيد من المعلومات لكي تصبح أكثر ارتياحاً مع اللغة البرمجية GDScript أو " "غيرها من اللغات البرمجية الفعالة يمكنك مراجعة الدرس " "التعليمي :ref:`doc_gdscript_more_efficiently`." #: ../../docs/about/faq.rst:142 msgid "What were the motivations behind creating GDScript?" msgstr "ماهي الدوافع التي أدت الى إنشاء لغة GDScript ؟" #: ../../docs/about/faq.rst:144 #, fuzzy 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 "" "الدعم الضعيف للخيوط الحاسوبية (Threads) في معظم لغات البرمجة النصية لنظم " "الذاكرة الافتراضية المفتوحة (VMs)، في حين أن جودوت يستخدم الخيوط الحاسوبية " "(كما في لغات البرمجة لوا، بايثون، جافا سكريبت، Squirrel،أكشن سكربت، إلخ.)." #: ../../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 "" "الدعم الضعيف للتوسع الصفي (class-extending) في الكود البرمجي للغات نظام " "الذاكرة الافتراضية المفتوح (VMs)، والتأقلم مع الطريقة التي يعمل بها جودوت " "وسيلة غير فعالة (لوا، بايثون، جافا سكربت)." #: ../../docs/about/faq.rst:156 #, fuzzy 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 "" "العديد من اللغات البرمجية الحالية (لوا ، بايثون، Squirrel، إلخ) لديها واجهات " "سيّئة للرّبط ب ++C، ممّا يؤدّي إلى كمية كبيرة من الأسطر البرمجية، الأخطاء، " "الجهد، ونقص الفعالية بشكل عام. لذا قمنا بالتركيز علي إنشاء مُحرّك ممتاز، وليس " "عدد كبير من الإضافات والتضمينات." #: ../../docs/about/faq.rst:160 #, fuzzy msgid "" "No native vector types (Vector3, Transform3D, etc.), resulting in highly " "reduced performance when using custom types (Lua, Python, Squirrel, " "JavaScript, ActionScript, etc.)." msgstr "" "لايوجد دعم محلي لأنواع المُتجهات (مثل vector3، matrix4، إلخ..)، الأمر الذي " "يسبب أداء أقل بكثير عند استخدام الأنواع المخصصة (لوا، بايثون، Squirrel، جافا " "سكربت، أكشن سكربت، إلخ)." #: ../../docs/about/faq.rst:163 msgid "" "Garbage collector results in stalls or unnecessarily large memory usage " "(Lua, Python, JavaScript, ActionScript, etc.)." msgstr "" "جامع النفايات أو المهملات (Garbage collector) يسبب التوقف أو يستهلك كميات " "كبيرة من الذاكرة العشوائية ( لوا، بايثون، جافا سكربت، أكشن سكربت، إلخ)." #: ../../docs/about/faq.rst:165 #, fuzzy msgid "" "Difficulty integrating with the code editor for providing code completion, " "live editing, etc. (all of them)." msgstr "" "صعوبة الدمج مع محرر النصوص البرمجية لتأمين التتمة التلقائية، أو التحرير " "اللحظي، إلخ.. هذه الخصائص مدعومة بشكل جيد بواسطة لغة البرمجة GDScript." #: ../../docs/about/faq.rst:168 msgid "GDScript was designed to curtail the issues above, and more." msgstr "تم تصميم GDScript من أجل حل المشاكل المذكورة بالأعلى و غيرها كثيرا." #: ../../docs/about/faq.rst:173 #, fuzzy 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 #, fuzzy msgid "What 3D model formats does Godot support?" msgstr "ماهي أنواع الملفات 3D التي يدعمها غودوت؟" #: ../../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 "" "هل [إدخال حزمة تطوير برمجية (SDK) مُغلقة المصدر مثل FMOD أو GameWorks " "إلخ .. ] ستكون مدعومة في جودوت؟" #: ../../docs/about/faq.rst:212 #, fuzzy 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 "" "إن الهدف من محرك الألعاب غودوت كان خلق محرك ألعاب مجاني، مفتوج المصدر وتحت " "الرخصة MIT بحيث يكون مطاوعاً للتعديلات وقابلاً للتوسع، ولا يوجد أي نوايا لدى " "مجتمع تطوير لُب المحرك على دعم أي من الحزم والمكاتب البرمجية من الطرف الثالث " "مغلقة المصدر أو المملوكة \"الخاصة\" كمكونات إضافية للمحرك لأنها تتعارض مع " "جملة المبادئ والروح الخاصة بالمحرك." #: ../../docs/about/faq.rst:217 #, fuzzy 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 "" "لمعرفة ما الآلية التي ما زالت بالإمكان دعم حزم أدوات البرمجة (SDK) الخاصة " "بك. اطلع على سؤال الإضافات أدناه." #: ../../docs/about/faq.rst:224 #, fuzzy 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 "" "لكي توسع جودوت، أي صناعة إضافات وملحقات لجودوت أو إضافة دعم للغات برمجية " "أخرى، اطلع على :ref:`EditorPlugins ` وأدوات النصوص " "البرمجية النصية." #: ../../docs/about/faq.rst:236 #, fuzzy msgid "" "Also, see the official blog post on GDExtension, a way to develop native " "extensions for Godot:" msgstr "" "كذلك، اطلع على التدوينات المختلفة حول هذه المواضيع على المدونة الرسمية:" #: ../../docs/about/faq.rst:238 #, fuzzy msgid "" "`Introducing GDNative's successor, GDExtension `_" msgstr "`GDNative هنا!! `_" #: ../../docs/about/faq.rst:240 #, fuzzy 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 "" "يمكنك أيضاً الإطلاع على تضفيرات لغة البرمجة النصية GDScript، إضافات محرك " "الألعاب غودوت، كذلك أيضاً `الدعم غير الرسمي للغة البرمجة بايثون `_ ، وستكون هذه نقطة بداية جيدة للاطلاع " "على الآلية التي تتضافر بها مكتبات الطرف الثالث مع غودوت." #: ../../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 "" "بما أنك لا تحتاج لأن تقوم بتثبيت جودوت على نظامك لتشغيله , هذا يعني أنه لن " "يتكامل مع سطح المكتب بشكل تلقائي. هناك طريقتان لتتجاوز هذا. يمكنك تثبيت " "جودوت من متجر `Steam `__ (كل أنظمة التشغيل), `Scoop `__ (ويندوز-windows) , " "`Homebrew `__ (ماك او اس -macos) أو `Flathub `__ (لينكس-linux) . و هكذا " "سوف تتم خطوات الدمج مع سطح المكتب بشكل بلقائي." #: ../../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 #, fuzzy 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 "" "قم بنقل الاختصار الناتج إلى ``%LOCALAPPDATA%\\Microsoft\\Windows\\Start " "Menu\\Programs``. هذا هو موقع الاختصارات الخاصة بالمستخدم و التي ستظهر في " "قائمة ابدأ. بإمكانك أيضا تثبيت التطبيق على شريط المهام بالأسفل بالنقر بزر " "الفأرة اليميني على أيقونة تطبيق غودوت و اختيار **تثبيت على شريط المهام**." #: ../../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 "" "قم بسحب مجلد التطبيق الذي قمت بفك ضغطه إلى ``/Applications/Godot.app``, ثم " "اسحبه إلى شريط الأيقونات إذا رغبت. سيقوم سبوتلايت بايجاد جودوت طالما أنه في " "``/Applications`` أو ``~/Applications``." #: ../../docs/about/faq.rst:277 #: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:345 #: ../../docs/tutorials/rendering/jitter_stutter.rst:112 #: ../../docs/tutorials/ui/gui_using_fonts.rst:787 msgid "Linux" msgstr "لينكس(Linux)" #: ../../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 "" "قم بتغيير اسم ملف جودوت التنفيذي و انقله إلى مكان موجود في متغير البيئة " "``PATH`` . عادة في ``/usr/local/bin/godot`` أو ``/usr/bin/godot``. و هذا " "يتطلب صلاحيات مدير النظام, لكنه يمكنك من :ref:`تشغيل محرر جودوت من سطر " "الأوامر ` عن طريق إدخال ``godot``." #: ../../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 "" "إذا كنت لا تستطيع نقل الملف التنفيذي لمحرر جودوت إلى مكان محمي, بإمكانك وضعه " "في مجلد المستخدم, و تعديل سطر ``Path=`` في ملف ``.desktop`` المرفق في الأسفل " "ليتضمن المسار *المطلق* لملف جودوت التنفيذي." #: ../../docs/about/faq.rst:292 #, fuzzy 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 "" "قم بحفظ `ملف .desktop `__ في ``$HOME/.local/" "share/applications/``. و بإمكانك أيضا إذا كنت تملك صلاحيات مسؤول النظام , أن " "تقوم بحفظ ملف ``.desktop`` في ``/usr/local/share/applications`` لجعل اختصار " "التطبيق متاح لجميع المستخدمين." #: ../../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 "" "لكن ملفات الإعدادات سيتم كتابتها في مجلد الإعدادات أو البيانات الخاصة " "بالمستخدم. و هذا عادة أمر جيد , و لكنه يعني أن ملفات الإعدادات لن يتم نقلها " "إلى الأجهزة الأخرى إذا قمت بنقل المجلد الذي يحوي ملف جودوت التنفيذي. " "راجع :ref:`doc_data_paths` للمزيد من المعلومات." #: ../../docs/about/faq.rst:309 #, fuzzy 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 "" "إذا كنت ترغب بعملية نقل كاملة *حقيقية* (على قرص USB على سبيل المثال), اتبع " "الخطوات في :ref:`doc_data_paths_self_contained_mode`." #: ../../docs/about/faq.rst:313 #, fuzzy msgid "Why does Godot prioritize Vulkan and OpenGL over Direct3D?" msgstr "لماذا يستخدم جودوت Vulkan او OpenGL بدل Direct3D؟" #: ../../docs/about/faq.rst:315 #, fuzzy msgid "" "Godot aims for cross-platform compatibility and open standards first and " "foremost. OpenGL and Vulkan are the technologies that are both open and " "available on (nearly) all platforms. Thanks to this design decision, a " "project developed with Godot on Windows will run out of the box on Linux, " "macOS, and more." msgstr "" "يهدف غودوت على توافق عبر منصات ومعايير مفتوحة اولا وقبل كل شيء. OpenGL و " "Vulkan كلاهما تقنيات مفتوحة ومتوفرة (تقريبا) على جميع المنصات. بفضل قرار " "التصميم هذا, أي مشروع تم تصميمه بواسطة جودوت في ويندوز سوف يعمل على لينكس و " "ماك أو إس و أكثر." #: ../../docs/about/faq.rst:321 msgid "" "While Vulkan and OpenGL remain our primary focus for their open standard and " "cross-platform benefits, Godot 4.3 introduced experimental support for " "Direct3D 12. This addition aims to enhance performance and compatibility on " "platforms where Direct3D 12 is prevalent, such as Windows and Xbox. However, " "Vulkan and OpenGL will continue as the default rendering drivers on all " "platforms, including Windows." msgstr "" #: ../../docs/about/faq.rst:328 msgid "Why does Godot aim to keep its core feature set small?" msgstr "لماذا يهدف جودوت على ابقاء مجموعة ميزات اساسه صغيرة؟" #: ../../docs/about/faq.rst:330 #, fuzzy 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:334 msgid "There are several reasons for this:" msgstr "هناك عدة اسباب لذلك:" #: ../../docs/about/faq.rst:336 #, fuzzy 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 "" "**صيانة النص البرمجي والتحري عن الكبوات البرمجية**. في كل مرة نقبل بها نصاً " "برمجياً جديداً في تجميعة غودوت، تقع مسؤولية تدبير هذا النص على المساهمين " "الحاليين. ولا يطل بعض المساهمين البقاء طويلاً بعد أن يتم دمج النص البرمجي " "الخاص بهم، وبالتالي يصعب علينا عملية الصيانة والمتابعة، حيث يؤدي ذلك على " "المدى الطويل إلى مزايا مدعومة بشكل ضعيف وكبوات برمجية لا يتم إصلاحها إطلاقاً، " "علاوة على كل ذلك فإن \"واجهة التعامل البرمجية السطحية API surface\" بحاجة " "لأن يتم تجريبها والتحقق من فعاليتها بمرور الوقت." #: ../../docs/about/faq.rst:344 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:349 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:354 #, fuzzy 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:361 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 "" "تبعاً لجميع الأسباب أعلاه، ينبغي أن نكون إنتقائيين عند قبول إضافة وظيفية " "جديدة على متن المحرك. لأجل ذلك نهدف إلى تحويل بعض الوظائف الجوهرية للمحرك " "إلى إضافات مدعومة رسمية في الإصدارات المستقبلية من جودوت. بالنسبة لحجم " "الملفات، فإن ذلك يمنحك القدرة لأن تدفع بمقدار ما تستعمل في مشروعك. (بالوقت " "الحالي يمكنك ref:`تركيب قوالب تصدير مخصصة بإزالة المزايا غير المرغوبة " "` لتحسين حجم التصدير الخاص بمشروعك.)" #: ../../docs/about/faq.rst:370 msgid "" "How should assets be created to handle multiple resolutions and aspect " "ratios?" msgstr "" "ما آلية صناعة الملحقات البصرية \"assets \" بحيث تتعامل مع الدقات ونسب العرض " "المختلفة؟" #: ../../docs/about/faq.rst:372 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 "" "هذا السؤال كثيراً ما يُطرح، وغالباً تعود جذور المشكلة للفهم الخاطئ الذي سببته " "شركة أبل (Apple) عندما قامت بمضاعفة دقة الأجهزة الخاصة بها، وبهذه الطريقة " "جعلت الأشخاص يعتقدون بأن امتلاك ذات الملحقات البصرية بدقات مختلفة لهو أمرٌ " "جيد، لذا الكثير اتبعوا هذا النهج، وهذه الطريقة ظلت ناجعة لنقطة معينة وفقط " "لأجهزة أبل، ولكن ظهرت فيما بعد العديد من أجهزة الأندرويد وكذلك أجهزة أبل " "مختلفة الدقة ونسبة العرض والأبعاد وبمجال كبير من الأبعاد ودقات الشاشات." #: ../../docs/about/faq.rst:380 #, fuzzy 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 "" "إن أفضل طريقة وأكثرها فعالية هي صناعة دقة أساسية واحدة للعبة التي تعمل عليها " "بحيث تتعامل مع نسبة عرض الشاشات بدلاً من صناعة جيش من الملحقات البصرية، وهذا " "الأمر أساسي بالنسبة لألعاب البعد الثنائي 2D و الألعاب ثلاثية الأبعاد هي مجرد " "قضية مجال رؤية الكاميرا على المحورين X وY ." #: ../../docs/about/faq.rst:385 #, fuzzy 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 "" "اختر دقة أساسية للعبتك، حتى وإن كان هنالك أجهزة تصل دقتها إلى 2K وكذلك أجهزة " "دقتها 400 بيكسل، عادة ما يقوم العتاد الخاص بجهازك بالاعتناء بهذه القضية " "بعملية مكلفة بصورة طفيفة أو حتى غير معتبرة حيث تقوم بعملية التناسب. أغلب " "المطورين غالباً ما يختارون دقة قريبة من 1080p أي (1080 × 1920) أو 720p أي " "(720 × 1280)، ولكن ضع بالحسبان أنه هناك تناسب طردي بين زيادة الدقة وحجم " "الملحقات البصرية والأهم من ذلك مقدار الذاكرة الذي ستأخذه وبالتالي المزيد من " "الوقت لكي تتمكن من التحميل." #: ../../docs/about/faq.rst:393 #, fuzzy 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 "" "اسخدم خاصية التمدد في محرك الألعاب غدوت؛ التمدد ثنائي البعد سيحافظ على نسبة " "الطول للعرض بشكل أفضل. اطلع على التعليمات المتعلقة بكيفية تحقيق ذلك: " "ref:`doc_multiple_resolutions`." #: ../../docs/about/faq.rst:397 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 "" "حدد الدقة الدنيا من ثم يمكنك تحديد ما إن كنت ترغب في تمدد اللعبة الخاصة بك " "عمودياً أو أفقياً تبعاً لمختلف نسب الطول للعرض أو إن كانت هناك نسبة طول لعرض " "محددة ترغب أن تظهر فيها مستطيلات سوداء بدلاً من ذلك، يمكنك التحقق من ذلك عن " "طريق: :ref:`doc_multiple_resolutions`." #: ../../docs/about/faq.rst:402 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 "" "لأجل واجهات المستخدم يمكنك استخدام :ref:`anchoring ` " "لتحدد موقع وإمكانية تحرك عناصر التحكم، وإن كانت واجهات المستخدم الخاصة بك " "أكثر تعقيداً، ضع في الحسبان التعلم عن الحاويات Containers." #: ../../docs/about/faq.rst:406 msgid "And that's it! Your game should work in multiple resolutions." msgstr "" "حسناً، لقد انتهينا هذا كل شيء!! الآن لعبتك يمكنها أن تدعم العديد من نِسب العرض." #: ../../docs/about/faq.rst:409 msgid "When is the next release of Godot out?" msgstr "متى تصدر النسخة الجديدة من جودوت؟" #: ../../docs/about/faq.rst:411 msgid "" "When it's ready! See :ref:`doc_release_policy_when_is_next_release_out` for " "more information." msgstr "" "عندما تكون جاهزة! اطلع " "على :ref:`doc_release_policy_when_is_next_release_out` for more information. " "للمزيد من المعلومات." #: ../../docs/about/faq.rst:415 #, fuzzy msgid "Which Godot version should I use for a new project?" msgstr "إنشاء المحتوى" #: ../../docs/about/faq.rst:417 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:422 msgid "Should I upgrade my project to use new Godot versions?" msgstr "" #: ../../docs/about/faq.rst:424 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:429 msgid "Should I use the Forward+, Mobile, or Compatibility renderer?" msgstr "" #: ../../docs/about/faq.rst:431 msgid "" "You can find a detailed comparison of the renderers in :ref:`doc_renderers`." msgstr "" #: ../../docs/about/faq.rst:434 msgid "I would like to contribute! How can I get started?" msgstr "أنا أرغب بالمساهمة!! كيف يمكنني البدء؟" #: ../../docs/about/faq.rst:436 #, fuzzy 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:439 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:445 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:450 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 :ref:`documentation for contributors `." msgstr "" #: ../../docs/about/faq.rst:454 msgid "I have a great idea for Godot. How can I share it?" msgstr "أملك فكرة رائعة لـ جودوت. كيف يمكنني مشاركتها؟" #: ../../docs/about/faq.rst:456 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:461 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:467 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:473 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:478 msgid "" "Please, read the `readme `_ document before creating a proposal to learn more " "about the process." msgstr "" #: ../../docs/about/faq.rst:484 msgid "Is it possible to use Godot to create non-game applications?" msgstr "هل من الممكن استخدام جودوت لصنع التطبيقات وليس الألعاب؟" #: ../../docs/about/faq.rst:486 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 "" "نعم! يتميز جودوت بنظام واجهة مستخدم مدمجة بشكل كامل مع المحرك ، ولأنه يتميز " "بتصدير صغير الحجم فإنه قد يكون بديلاً مناسب لأطر العمل مثل إلكترون(electron) " "و كيو تي(Qt)." #: ../../docs/about/faq.rst:489 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 "" "عندما تنشئ تطبيق وليس لعبة ، تأكد من تفعيل خيار :ref:`وضع الحوسبة المنخفض " "` " "بإعدادات المشروع للتقليل من استعمال موارد وحدة المعالجة المركزية CPU وكذلك " "وحدة المعالجة الرسومية GPU." #: ../../docs/about/faq.rst:493 msgid "" "Check out `Material Maker `__ " "and `Pixelorama `__ for " "examples of open source applications made with Godot." msgstr "" "اطلع على `Material Maker `__ " "وكذلك `Pixelorama `__ " "كنماذج لمشاريع مفتوحة المصدر تم إنشاؤها باستعمال جودوت." #: ../../docs/about/faq.rst:500 msgid "Is it possible to use Godot as a library?" msgstr "هل من الممكن استخدام جودوت كمكتبة؟" #: ../../docs/about/faq.rst:502 msgid "" "Godot is meant 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. There are no plans to " "make Godot usable as a library, as it would make the rest of the engine more " "convoluted and difficult to use for casual users." msgstr "" "جودوت طوّر ليستعمل باستعمال المحرر، حيث ننصحك بتجربته فهو غالباً ما سيوفر عليك " "كثيراً من الوقت على المدى الطويل. لا يوجد خطط لتحويل جودوت إلى مكتبة، الأمر " "الذي سيجعل من بقية المحرك أكثر تعقيداً وصعباً للاستعمال بالنسبة للمستخدمين " "العاديين." #: ../../docs/about/faq.rst:507 msgid "" "If you want to use a rendering library, look into using an established " "rendering engine instead. Keep in mind rendering engines usually have " "smaller communities compared to Godot. This will make it more difficult to " "find answers to your questions." msgstr "" "إن رغبت باستعمال مكتبة عرض بصري، فإنه من الأفضل التوجه لاستعمال محركات " "العروض البصرية بدلا من ذلك . ضع بالحسبان أن محركات العروض البصرية عادة ما " "تمتلك مجتمعاً أصغر مقارنة بـ جودوت، مما يعني صعوبة أكبر لإيجاد حلول لأسئلتك." #: ../../docs/about/faq.rst:513 msgid "What user interface toolkit does Godot use?" msgstr "أي من حزم واجهات المستخدم يستعملها جودوت؟" #: ../../docs/about/faq.rst:515 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, rendered using OpenGL ES or Vulkan. 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 "" "لا يستعمل غدوت حزم واجهات المستخدم الاعتيادية GUI :abbr:`GUI (Graphical User " "Interface واجهة المستخدم البصرية)` مثل GTK، أو Qt أو wxWidgets. بدلاً من ذلك " "فإن غدوت يستعمل حزمته الخاصة لتطوير واجهة المستعمل، فيتم التصدير البصري " "بستعمال OpenGl ES أو Vulkan. تجسد حزمة تطوير الواجهة هذه على شكل مجموعة من " "عُقد التحكم Control nodes، وهي التي تم استعمالها لإخراج المحرر (الذي كتب بلغة " "البرمجة ++C). هذه العقد يمكن توظيفها باستعمال أي من اللغات البرمجية النصية " "المدعومة من قبل غدوت." #: ../../docs/about/faq.rst:522 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 "" "تسمح حزمة التطوير المخصصة هذه بالاستفادة من تسارع الأجهزة بالإضافة إلى " "المحافظة على مظهر موحد على جميع المنصات، وعلاوة على لك فإنها غير مضطرة " "للتعامل معتحفظات تراخيص LGPL المرفقة مع GTK أو Qt. أخيراً، يعني هذا الأمر أنه " "غدوت \"تأكل مما تزرع\" بما أن المحرر بحد ذاته موظف هذه الحزمة في تطوير واحد " "من أكثر الواجهات تعقيداً." #: ../../docs/about/faq.rst:528 msgid "" "This custom UI toolkit :ref:`can't be used as a library " "`, but you can still :ref:`use Godot to create " "non-game applications by using the editor `." msgstr "" "حزمة تطوير واجهة المستخدم المخصصة :ref:`لا يمكن استعمالها كمكتبة " "`، ولكن ما زال بإمكانك :ref:`استعمال غدوت لصنع " "تطبيقات غير ألعاب مستعملاً المحرر نفسه `." #: ../../docs/about/faq.rst:535 #, fuzzy msgid "Why does Godot use the SCons build system?" msgstr "لماذا لا يقوم غودوت ببعض الاستثناءات؟" #: ../../docs/about/faq.rst:537 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:541 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:543 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:547 msgid "" "SCons will *never* break a build no matter how many changes, configurations, " "additions, removals etc." msgstr "" #: ../../docs/about/faq.rst:549 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:554 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:558 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:564 msgid "Why does Godot not use STL (Standard Template Library)?" msgstr "لماذا لا يستخدم جودت مكتبة القوالب المعيارية STL؟" #: ../../docs/about/faq.rst:566 #, fuzzy 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 "" "كما في كثير من المكتبات (Qt على سبيل المثال)، إن غودوت لا يستخدم مكتبة " "القوالب المعيارية، حيث أننا نعتقد أن مكتبة القوالب الميعارية مكتبة واسعة " "الطيف والإمكانيات، ولكننا في غودوت لدينا متطلبات معينة." #: ../../docs/about/faq.rst:570 msgid "" "STL templates create very large symbols, which results in huge debug " "binaries. We use few templates with very short names instead." msgstr "" "مكتبة القوالب المعيارية تخلق رموز كبيرة جداً، الأمر الذي يولد في النهاية " "معاناة في إصلاح الأخطاء البرمجية huge debug binaries، بدلاً عن ذلك نستخدم " "قوالب مع أسماء قصيرة جداً." #: ../../docs/about/faq.rst:572 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 "" "معظم حاوياتنا تؤمن احتياجات خاصة , مثلا Vector , و الذي يستخدم النسخ عند " "الكتابة و الذي نستخدمه لنقل البيانات, أو نظام RID , و الذي يتطلب وقت استرجاع " "O(1) . كما أن طريقة عمل ال hash map الخاصة بنا مصممة لتتكامل بشكل جيد مع " "أنواع البيانات الموجودة في المحرك." #: ../../docs/about/faq.rst:576 msgid "" "Our containers have memory tracking built-in, which helps better track " "memory usage." msgstr "" "الحاويات الخاصة بنا تملك متعقب لاستخدام الذاكرة مدمجًا فيها، الأمر الذي يساعد " "في تتبع استخدام الذاكرة بصورة أفضل." #: ../../docs/about/faq.rst:577 msgid "" "For large arrays, we use pooled memory, which can be mapped to either a " "preallocated buffer or virtual memory." msgstr "" "بالنسبة للمصفوفات الكبيرة نستعمل الذاكرة المجمعة pooled memory، والتي يمكن " "تعيينها لدارئ محدد مسبقاً preallocated buffer أو لذاكرة افتراضية." #: ../../docs/about/faq.rst:579 msgid "" "We use our custom String type, as the one provided by STL is too basic and " "lacks proper internationalization support." msgstr "" "نستخدم أنواع نصية خاصة بنا custom String type، لأن تلك التي تقدمها مكتبات " "القوالب المعياري STL أساسية جداً وتفتقر إلى دعم العولمة اللغوية." #: ../../docs/about/faq.rst:583 msgid "Why does Godot not use exceptions?" msgstr "لماذا لا يقوم غودوت ببعض الاستثناءات؟" #: ../../docs/about/faq.rst:585 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:590 #, fuzzy msgid "" "Additionally, exceptions significantly increase the binary size for the " "executable and result in increased compile times." msgstr "" "بالإضافة إلى ذلك، تزيد الاستثناءات بشكل واضح من الحجم الرقمي binary size " "للملفات المنفذة." #: ../../docs/about/faq.rst:594 msgid "Does Godot use an ECS (Entity Component System)?" msgstr "" #: ../../docs/about/faq.rst:596 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:600 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:604 msgid "" "More information about Godot's design choices can be found in `this article " "`__." msgstr "" #: ../../docs/about/faq.rst:608 #, fuzzy msgid "Why does Godot not force users to implement DOD (Data-Oriented Design)?" msgstr "" "لماذا لا يجبر غودوت المستخدمين على استعمال نهج DoD (التصميم الموجه بالبيانات " "Data oriented Design)؟" #: ../../docs/about/faq.rst:610 #, fuzzy 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 "" "في حين أن Godot داخليا لكثير من مهام الأداء الثقيلة يحاول استخدام تماسك " "ذاكرة التخزين المؤقت قدر الإمكان ، نعتقد أن معظم المستخدمين لا يحتاجون حقا " "إلى إجبارهم على استخدام ممارسات التصميم المُوجه بالبيانات." #: ../../docs/about/faq.rst:613 #, fuzzy 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:620 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:623 #, fuzzy 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 "" "إن كانت اللعبة الخاصة بك تحتاج إلى معالجة كميات كبيرة من الأشياء objects، " "نقترح أن تستخدم لغة البرمجة ++C و GDNative للأجزاء ذات الأداء العالي، بينما " "يمكنك استخدام GDScript (أو #C) لبقية أجزاء اللعبة." #: ../../docs/about/faq.rst:628 msgid "How can I support Godot development or contribute?" msgstr "كيف يمكنني أن أدعم غدوت، أو أشارك بالمساهمة؟" #: ../../docs/about/faq.rst:630 msgid "See :ref:`doc_ways_to_contribute`." msgstr "اطلع على :ref:`doc_ways_to_contribute`." #: ../../docs/about/faq.rst:633 msgid "Who is working on Godot? How can I contact you?" msgstr "من يعمل على محرك الألعاب غدوت؟ كيف يمكنني التواصل معك؟" #: ../../docs/about/faq.rst:635 msgid "" "See the corresponding page on the `Godot website `_." msgstr "" "اطلع على صفحة المقابلة على موقع غدوت `Godot website `_." #: ../../docs/about/complying_with_licenses.rst:6 #, fuzzy 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 :ref:`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/contributing/development/compiling/compiling_for_windows.rst:14 #: ../../docs/contributing/development/compiling/compiling_for_linuxbsd.rst:14 #: ../../docs/contributing/development/compiling/compiling_for_macos.rst:14 #: ../../docs/contributing/development/compiling/compiling_for_android.rst:25 #: ../../docs/contributing/development/compiling/compiling_for_ios.rst:14 #: ../../docs/contributing/development/compiling/cross-compiling_for_ios_on_linux.rst:25 #: ../../docs/contributing/development/compiling/compiling_for_web.rst:14 #: ../../docs/contributing/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 #, fuzzy msgid "This text reads as follows::" msgstr "خيارات الاستيراد متنوعة:" #: ../../docs/about/complying_with_licenses.rst:70 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:75 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:80 msgid "Inclusion" msgstr "" #: ../../docs/about/complying_with_licenses.rst:82 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:87 msgid "Credits screen" msgstr "" #: ../../docs/about/complying_with_licenses.rst:89 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:94 #, fuzzy msgid "Licenses screen" msgstr "الرخصة" #: ../../docs/about/complying_with_licenses.rst:96 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:101 msgid "Output log" msgstr "" #: ../../docs/about/complying_with_licenses.rst:103 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:108 msgid "Accompanying file" msgstr "" #: ../../docs/about/complying_with_licenses.rst:110 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:114 msgid "Printed manual" msgstr "" #: ../../docs/about/complying_with_licenses.rst:116 msgid "" "If the game includes a printed manual, the license text can be included " "there." msgstr "" #: ../../docs/about/complying_with_licenses.rst:119 #, fuzzy msgid "Link to the license" msgstr "إنشاء المحتوى" #: ../../docs/about/complying_with_licenses.rst:121 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:127 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:132 msgid "For the engine itself:" msgstr "" #: ../../docs/about/complying_with_licenses.rst:134 msgid ":ref:`Engine.get_license_text`" msgstr "" #: ../../docs/about/complying_with_licenses.rst:136 msgid "For third-party components used by the engine:" msgstr "" #: ../../docs/about/complying_with_licenses.rst:138 msgid ":ref:`Engine.get_license_info`" msgstr "" #: ../../docs/about/complying_with_licenses.rst:139 msgid ":ref:`Engine.get_copyright_info`" msgstr "" #: ../../docs/about/complying_with_licenses.rst:144 msgid "Third-party licenses" msgstr "" #: ../../docs/about/complying_with_licenses.rst:146 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:150 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:154 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:159 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 #, fuzzy msgid "Godot 4.5 (`master`)" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:87 msgid "Q3 2025 (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:132 #, fuzzy msgid "unstable" msgstr "تفعيل" #: ../../docs/about/release_policy.rst:90 #, fuzzy msgid "Godot 4.4" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:90 msgid "March 2025" msgstr "" #: ../../docs/about/release_policy.rst:90 #: ../../docs/about/release_policy.rst:93 #: ../../docs/about/release_policy.rst:105 msgid "" "|supported| Receives fixes for bugs and security issues, as well as patches " "that enable platform support." msgstr "" #: ../../docs/about/release_policy.rst:129 #, fuzzy msgid "supported" msgstr "منصات محددة" #: ../../docs/about/release_policy.rst:93 #, fuzzy msgid "Godot 4.3" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:93 msgid "August 2024" msgstr "" #: ../../docs/about/release_policy.rst:96 #, fuzzy msgid "Godot 4.2" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:96 msgid "November 2023" msgstr "" #: ../../docs/about/release_policy.rst:96 #: ../../docs/about/release_policy.rst:108 msgid "|partial| Receives fixes for security and platform support issues only." msgstr "" #: ../../docs/about/release_policy.rst:130 #, fuzzy msgid "partial" msgstr "Spatial" #: ../../docs/about/release_policy.rst:98 #, fuzzy msgid "Godot 4.1" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:98 msgid "July 2023" msgstr "" #: ../../docs/about/release_policy.rst:98 msgid "|eol| No longer supported (last update: 4.1.4)." msgstr "" #: ../../docs/about/release_policy.rst:131 msgid "eol" msgstr "" #: ../../docs/about/release_policy.rst:100 #, fuzzy msgid "Godot 4.0" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:100 msgid "March 2023" msgstr "" #: ../../docs/about/release_policy.rst:100 msgid "|eol| No longer supported (last update: 4.0.4)." msgstr "" #: ../../docs/about/release_policy.rst:102 #, fuzzy msgid "Godot 3.7 (`3.x`)" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:102 msgid "No ETA for now" msgstr "" #: ../../docs/about/release_policy.rst:102 msgid "" "|supported| *Beta.* Receives new features, usability and performance " "improvements, as well as bug fixes, while under development." msgstr "" #: ../../docs/about/release_policy.rst:105 #, fuzzy msgid "Godot 3.6" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:105 msgid "September 2024" msgstr "" #: ../../docs/about/release_policy.rst:108 #, fuzzy msgid "Godot 3.5" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:108 msgid "August 2022" msgstr "" #: ../../docs/about/release_policy.rst:110 #, fuzzy msgid "Godot 3.4" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:110 msgid "November 2021" msgstr "" #: ../../docs/about/release_policy.rst:110 msgid "|eol| No longer supported (last update: 3.4.5)." msgstr "" #: ../../docs/about/release_policy.rst:112 #, fuzzy msgid "Godot 3.3" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:112 msgid "April 2021" msgstr "" #: ../../docs/about/release_policy.rst:112 msgid "|eol| No longer supported (last update: 3.3.4)." msgstr "" #: ../../docs/about/release_policy.rst:114 #, fuzzy msgid "Godot 3.2" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:114 msgid "January 2020" msgstr "" #: ../../docs/about/release_policy.rst:114 msgid "|eol| No longer supported (last update: 3.2.3)." msgstr "" #: ../../docs/about/release_policy.rst:116 #, fuzzy msgid "Godot 3.1" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:116 msgid "March 2019" msgstr "" #: ../../docs/about/release_policy.rst:116 msgid "|eol| No longer supported (last update: 3.1.2)." msgstr "" #: ../../docs/about/release_policy.rst:118 #, fuzzy msgid "Godot 3.0" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:118 msgid "January 2018" msgstr "" #: ../../docs/about/release_policy.rst:118 msgid "|eol| No longer supported (last update: 3.0.6)." msgstr "" #: ../../docs/about/release_policy.rst:120 #, fuzzy msgid "Godot 2.1" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:120 msgid "July 2016" msgstr "" #: ../../docs/about/release_policy.rst:120 msgid "|eol| No longer supported (last update: 2.1.6)." msgstr "" #: ../../docs/about/release_policy.rst:122 #, fuzzy msgid "Godot 2.0" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:122 msgid "February 2016" msgstr "" #: ../../docs/about/release_policy.rst:122 msgid "|eol| No longer supported (last update: 2.0.4.1)." msgstr "" #: ../../docs/about/release_policy.rst:124 #, fuzzy msgid "Godot 1.1" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:124 msgid "May 2015" msgstr "" #: ../../docs/about/release_policy.rst:124 #: ../../docs/about/release_policy.rst:126 msgid "|eol| No longer supported." msgstr "" #: ../../docs/about/release_policy.rst:126 #, fuzzy msgid "Godot 1.0" msgstr "في غودوت ذو الإصدار 3.1:" #: ../../docs/about/release_policy.rst:126 msgid "December 2014" msgstr "" #: ../../docs/about/release_policy.rst:134 msgid "" "**Legend:** |supported| Full support – |partial| Partial support – |eol| No " "support (end of life) – |unstable| Development version" msgstr "" #: ../../docs/about/release_policy.rst:140 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:145 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:151 #, fuzzy msgid "Which version should I use for a new project?" msgstr "ما هي GDScript ولماذا استعملها ؟" #: ../../docs/about/release_policy.rst:153 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:161 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:167 msgid "Should I upgrade my project to use new engine versions?" msgstr "" #: ../../docs/about/release_policy.rst:171 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:176 msgid "" "That said, we do our best to keep minor and especially patch releases " "compatible with existing projects." msgstr "" #: ../../docs/about/release_policy.rst:179 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:185 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:193 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:205 msgid "When is the next release out?" msgstr "" #: ../../docs/about/release_policy.rst:209 msgid "" "While Godot contributors aren't working under any deadlines, we strive to " "publish minor releases relatively frequently." msgstr "" #: ../../docs/about/release_policy.rst:212 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:216 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:221 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:225 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:231 msgid "What are the criteria for compatibility across engine versions?" msgstr "" #: ../../docs/about/release_policy.rst:235 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:239 msgid "The following changes are acceptable in patch releases:" msgstr "" #: ../../docs/about/release_policy.rst:241 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:246 msgid "Adding a new optional parameter to a method." msgstr "" #: ../../docs/about/release_policy.rst:247 msgid "Small-scale editor usability tweaks." msgstr "" #: ../../docs/about/release_policy.rst:249 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:253 msgid "" "The following changes are acceptable in minor releases, but not patch " "releases:" msgstr "" #: ../../docs/about/release_policy.rst:255 #, fuzzy msgid "Significant new features." msgstr "المزايا" #: ../../docs/about/release_policy.rst:256 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:258 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:262 msgid "Changes that affect the default project theme's visuals." msgstr "" #: ../../docs/about/release_policy.rst:263 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:267 msgid "Performance optimizations that result in visual changes." msgstr "" #: ../../docs/about/release_policy.rst:269 msgid "" "The following changes are considered **compatibility-breaking** and can only " "be performed in a new major release:" msgstr "" #: ../../docs/about/release_policy.rst:272 msgid "Renaming or removing a method, member variable, or class." msgstr "" #: ../../docs/about/release_policy.rst:273 msgid "" "Modifying a node's inheritance tree by making it inherit from a different " "class." msgstr "" #: ../../docs/about/release_policy.rst:274 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:278 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:283 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 #, fuzzy 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 "" "المستندات تخضع لعملية تطوير مستمرة، إن إصدار النسخة 3.1 تتضمن تعليمات جديدة " "والعديد من إصلاحات الأخطاء والتحديثات لتعليمات سابقة، والكثير من التحديثات " "بالنسبة لمرجعيات الأصناف Class reference. أدناه قائمة بالتعليمات الجديدة منذ " "النسخة 3.0." #: ../../docs/about/docs_changelog.rst:13 #, fuzzy 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:17 #, fuzzy msgid "New pages since version 4.3" msgstr "التعليمات الجديدة منذ الإصدار 3.0" #: ../../docs/about/docs_changelog.rst:20 #: ../../docs/about/docs_changelog.rst:73 #: ../../docs/about/docs_changelog.rst:161 #: ../../docs/about/docs_changelog.rst:365 #: ../../docs/about/docs_changelog.rst:470 ../../docs/tutorials/2d/index.rst:13 msgid "2D" msgstr "الثنائي" #: ../../docs/about/docs_changelog.rst:22 #, fuzzy msgid ":ref:`doc_introduction_to_2d`" msgstr ":ref:`doc_introduction_to_shaders`" #: ../../docs/about/docs_changelog.rst:25 #: ../../docs/about/docs_changelog.rst:166 #: ../../docs/about/docs_changelog.rst:239 #: ../../docs/about/docs_changelog.rst:270 #: ../../docs/about/docs_changelog.rst:476 ../../docs/tutorials/3d/index.rst:4 #: ../../docs/tutorials/performance/index.rst:75 msgid "3D" msgstr "الثلاثي" #: ../../docs/about/docs_changelog.rst:27 #, fuzzy msgid ":ref:`doc_spring_arm`" msgstr ":ref:`الإشارات `" #: ../../docs/about/docs_changelog.rst:30 #: ../../docs/tutorials/scripting/debug/index.rst:4 msgid "Debug" msgstr "تصحيح الأخطاء" #: ../../docs/about/docs_changelog.rst:32 #, fuzzy msgid ":ref:`doc_output_panel`" msgstr "GDScript :ref:`منقح الأخطاء البرمجية `." #: ../../docs/about/docs_changelog.rst:37 #, fuzzy msgid ":ref:`doc_using_the_xr_editor`" msgstr ":ref:`Web `" #: ../../docs/about/docs_changelog.rst:40 #: ../../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:42 #, fuzzy msgid ":ref:`doc_pipeline_compilations`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:45 #: ../../docs/about/docs_changelog.rst:153 #: ../../docs/about/docs_changelog.rst:201 #: ../../docs/about/docs_changelog.rst:332 #: ../../docs/about/docs_changelog.rst:483 #: ../../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:75 #: ../../docs/tutorials/2d/using_tilemaps.rst:70 #: ../../docs/tutorials/performance/cpu_optimization.rst:246 #: ../../docs/tutorials/physics/index.rst:6 msgid "Physics" msgstr "الفيزياء" #: ../../docs/about/docs_changelog.rst:47 #, fuzzy msgid ":ref:`doc_physics_interpolation`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:48 #, fuzzy msgid ":ref:`doc_physics_interpolation_quick_start_guide`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:49 #, fuzzy msgid ":ref:`doc_physics_interpolation_introduction`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:50 #, fuzzy msgid ":ref:`doc_using_physics_interpolation`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:51 #, fuzzy msgid ":ref:`doc_advanced_physics_interpolation`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:52 #, fuzzy msgid ":ref:`doc_2d_and_3d_physics_interpolation`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:57 #, fuzzy msgid ":ref:`doc_renderers`" msgstr ":ref:`استخدام المُخدمات`" #: ../../docs/about/docs_changelog.rst:62 #, fuzzy msgid ":ref:`doc_shader_functions`" msgstr ":ref:`الهيكل الفقري ثنائي الأبعاد`" #: ../../docs/about/docs_changelog.rst:65 #, fuzzy msgid "New pages since version 4.2" msgstr "التعليمات الجديدة منذ الإصدار 3.0" #: ../../docs/about/docs_changelog.rst:70 #, fuzzy msgid ":ref:`doc_system_requirements`" msgstr ":ref:`مستند_أمثلة_الإدخال`" #: ../../docs/about/docs_changelog.rst:75 #, fuzzy msgid ":ref:`doc_2d_parallax`" msgstr ":ref:`doc_2d_sprite_animation`" #: ../../docs/about/docs_changelog.rst:80 #, fuzzy msgid ":ref:`doc_handling_compatibility_breakages`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:81 #, fuzzy msgid ":ref:`doc_ways_to_contribute`" msgstr "اطلع على :ref:`doc_ways_to_contribute`." #: ../../docs/about/docs_changelog.rst:84 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:25 #: ../../docs/tutorials/scripting/gdextension/index.rst:4 #: ../../docs/contributing/development/compiling/compiling_for_web.rst:71 msgid "GDExtension" msgstr "" #: ../../docs/about/docs_changelog.rst:86 #, fuzzy msgid ":ref:`doc_gdextension_file`" msgstr ":ref:`الهيكل الفقري ثنائي الأبعاد`" #: ../../docs/about/docs_changelog.rst:87 #, fuzzy msgid ":ref:`doc_gdextension_docs_system`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:90 #: ../../docs/about/docs_changelog.rst:124 #: ../../docs/about/docs_changelog.rst:148 #: ../../docs/about/docs_changelog.rst:196 #, fuzzy msgid "Migrating" msgstr "إنشاء المحتوى" #: ../../docs/about/docs_changelog.rst:92 #, fuzzy msgid ":ref:`doc_upgrading_to_godot_4.3`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:97 #, fuzzy msgid ":ref:`doc_compositor`" msgstr ":ref:`مستند_حاويات_واجهة_المستخدم`" #: ../../docs/about/docs_changelog.rst:100 #: ../../docs/about/docs_changelog.rst:224 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.2.rst:216 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:198 #: ../../docs/tutorials/rendering/renderers.rst:154 #: ../../docs/tutorials/xr/index.rst:4 msgid "XR" msgstr "" #: ../../docs/about/docs_changelog.rst:102 #, fuzzy msgid ":ref:`doc_a_better_xr_start_script`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:103 #, fuzzy msgid ":ref:`doc_openxr_passthrough`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:104 #, fuzzy msgid ":ref:`doc_xr_next_steps`" msgstr ":ref:`السطوح ثنائية الأبعاد `" #: ../../docs/about/docs_changelog.rst:105 #, fuzzy msgid ":ref:`doc_openxr_settings`" msgstr ":ref:`الهيكل الفقري ثنائي الأبعاد`" #: ../../docs/about/docs_changelog.rst:106 #, fuzzy msgid ":ref:`doc_openxr_composition_layers`" msgstr ":ref:`شجرة الرسومات المتحركة `" #: ../../docs/about/docs_changelog.rst:107 #, fuzzy msgid ":ref:`doc_openxr_body_tracking`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:111 #, fuzzy msgid "New pages since version 4.1" msgstr "التعليمات الجديدة منذ الإصدار 3.0" #: ../../docs/about/docs_changelog.rst:114 #: ../../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:399 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:508 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:593 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:604 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:622 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:659 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:675 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:690 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:707 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:719 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:727 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:740 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:748 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:761 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:795 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:803 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:811 #: ../../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 "C#" #: ../../docs/about/docs_changelog.rst:116 #, fuzzy msgid ":ref:`doc_c_sharp_diagnostics`" msgstr ":ref:`doc_2d_sprite_animation`" #: ../../docs/about/docs_changelog.rst:119 #: ../../docs/about/docs_changelog.rst:142 #: ../../docs/about/docs_changelog.rst:191 #: ../../docs/about/docs_changelog.rst:294 msgid "Development" msgstr "التطوير" #: ../../docs/about/docs_changelog.rst:121 #, fuzzy msgid ":ref:`doc_2d_coordinate_systems`" msgstr ":ref:`واجهة مستخدم غودوت`" #: ../../docs/about/docs_changelog.rst:126 #, fuzzy msgid ":ref:`doc_upgrading_to_godot_4.2`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:129 msgid "I/O" msgstr "" #: ../../docs/about/docs_changelog.rst:131 #, fuzzy msgid ":ref:`doc_runtime_loading_and_saving`" msgstr ":ref:`التصدير`" #: ../../docs/about/docs_changelog.rst:134 #: ../../docs/about/docs_changelog.rst:325 #: ../../docs/about/docs_changelog.rst:526 #: ../../docs/tutorials/platform/index.rst:4 msgid "Platform-specific" msgstr "منصات محددة" #: ../../docs/about/docs_changelog.rst:136 #, fuzzy msgid ":ref:`doc_android_library`" msgstr ":ref:`مستند_إضافة_الأندرويد`" #: ../../docs/about/docs_changelog.rst:139 #, fuzzy msgid "New pages since version 4.0" msgstr "التعليمات الجديدة منذ الإصدار 3.0" #: ../../docs/about/docs_changelog.rst:144 #, fuzzy msgid ":ref:`doc_internal_rendering_architecture`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:145 #, fuzzy msgid ":ref:`doc_using_sanitizers`" msgstr ":ref:`استخدام المُخدمات`" #: ../../docs/about/docs_changelog.rst:150 #, fuzzy msgid ":ref:`doc_upgrading_to_godot_4.1`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:155 #, fuzzy msgid ":ref:`doc_troubleshooting_physics_issues`" msgstr ":ref:`التصدير`" #: ../../docs/about/docs_changelog.rst:158 #, fuzzy msgid "New pages since version 3.6" msgstr "التعليمات الجديدة منذ النسخة 3.1" #: ../../docs/about/docs_changelog.rst:163 #, fuzzy msgid ":ref:`doc_2d_antialiasing`" msgstr ":ref:`doc_2d_sprite_animation`" #: ../../docs/about/docs_changelog.rst:168 #, fuzzy msgid ":ref:`doc_3d_antialiasing`" msgstr ":ref:`إشعارات غودوت `" #: ../../docs/about/docs_changelog.rst:169 #, fuzzy msgid ":ref:`doc_faking_global_illumination`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:170 #, fuzzy msgid ":ref:`doc_introduction_to_global_illumination`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:171 #, fuzzy msgid ":ref:`doc_mesh_lod`" msgstr ":ref:`السطوح ثنائية الأبعاد `" #: ../../docs/about/docs_changelog.rst:172 #, fuzzy msgid ":ref:`doc_occlusion_culling`" msgstr ":ref:`مستند_التوطين_باستخدام_gettext`" #: ../../docs/about/docs_changelog.rst:173 #, fuzzy msgid ":ref:`doc_using_sdfgi`" msgstr ":ref:`استخدام المُخدمات`" #: ../../docs/about/docs_changelog.rst:174 #, fuzzy msgid ":ref:`doc_using_decals`" msgstr ":ref:`الإشارات `" #: ../../docs/about/docs_changelog.rst:175 #, fuzzy msgid ":ref:`doc_visibility_ranges`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:176 #, fuzzy msgid ":ref:`doc_volumetric_fog`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:177 #, fuzzy msgid ":ref:`doc_variable_rate_shading`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:178 #, fuzzy msgid ":ref:`doc_physical_light_and_camera_units`" msgstr ":ref:`الضوء والظل ثنائي الأبعاد`" #: ../../docs/about/docs_changelog.rst:183 #, fuzzy msgid ":ref:`doc_creating_movies`" msgstr ":ref:`استخدام المُخدمات`" #: ../../docs/about/docs_changelog.rst:186 #: ../../docs/tutorials/assets_pipeline/index.rst:4 msgid "Assets pipeline" msgstr "" #: ../../docs/about/docs_changelog.rst:188 #, fuzzy msgid ":ref:`doc_retargeting_3d_skeletons`" msgstr ":ref:`الهيكل الفقري ثنائي الأبعاد`" #: ../../docs/about/docs_changelog.rst:193 #, fuzzy msgid ":ref:`doc_custom_platform_ports`" msgstr ":ref:`doc_android_custom_build`" #: ../../docs/about/docs_changelog.rst:198 #, fuzzy msgid ":ref:`doc_upgrading_to_godot_4`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:203 #, fuzzy msgid ":ref:`doc_large_world_coordinates`" msgstr ":ref:`واجهة مستخدم غودوت`" #: ../../docs/about/docs_changelog.rst:208 #, fuzzy msgid ":ref:`doc_custom_performance_monitors`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:209 #, fuzzy msgid ":ref:`doc_c_sharp_collections`" msgstr ":ref:`الهيكل الفقري ثنائي الأبعاد`" #: ../../docs/about/docs_changelog.rst:210 #, fuzzy msgid ":ref:`doc_c_sharp_global_classes`" msgstr ":ref:`الإشارات `" #: ../../docs/about/docs_changelog.rst:211 #, fuzzy msgid ":ref:`doc_c_sharp_variant`" msgstr ":ref:`doc_2d_sprite_animation`" #: ../../docs/about/docs_changelog.rst:216 #, fuzzy msgid ":ref:`doc_compute_shaders`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:219 msgid "Workflow" msgstr "" #: ../../docs/about/docs_changelog.rst:221 #, fuzzy msgid ":ref:`doc_pr_review_guidelines`" msgstr ":ref:`مستند_حاويات_واجهة_المستخدم`" #: ../../docs/about/docs_changelog.rst:226 #, fuzzy msgid ":ref:`doc_introducing_xr_tools`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:227 #, fuzzy msgid ":ref:`doc_xr_action_map`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:228 #, fuzzy msgid ":ref:`doc_deploying_to_android`" msgstr ":ref:`التصدير`" #: ../../docs/about/docs_changelog.rst:231 #, fuzzy msgid "New pages since version 3.5" msgstr "التعليمات الجديدة منذ النسخة 3.1" #: ../../docs/about/docs_changelog.rst:233 msgid "None." msgstr "" #: ../../docs/about/docs_changelog.rst:236 #, fuzzy msgid "New pages since version 3.4" msgstr "التعليمات الجديدة منذ النسخة 3.1" #: ../../docs/about/docs_changelog.rst:241 #, fuzzy msgid ":ref:`doc_3d_text`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:246 #, fuzzy msgid ":ref:`doc_playing_videos`" msgstr ":ref:`استخدام المُخدمات`" #: ../../docs/about/docs_changelog.rst:251 #, fuzzy msgid ":ref:`doc_managing_editor_features`" msgstr "المزايا" #: ../../docs/about/docs_changelog.rst:254 #, fuzzy msgid "New pages since version 3.3" msgstr "التعليمات الجديدة منذ النسخة 3.1" #: ../../docs/about/docs_changelog.rst:257 #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:33 #: ../../docs/tutorials/performance/cpu_optimization.rst:195 msgid "C++" msgstr "" #: ../../docs/about/docs_changelog.rst:259 #, fuzzy msgid ":ref:`doc_cpp_usage_guidelines`" msgstr ":ref:`استخدام المُخدمات`" #: ../../docs/about/docs_changelog.rst:262 #: ../../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:399 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:508 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:593 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:604 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:622 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:659 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:675 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:690 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:707 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:719 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:727 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:740 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:748 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:761 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:795 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:803 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:811 #: ../../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/contributing/development/core_and_modules/scripting_development.rst:7 msgid "GDScript" msgstr "لغة جي دي" #: ../../docs/about/docs_changelog.rst:264 #, fuzzy msgid ":ref:`doc_gdscript_documentation_comments`" msgstr ":ref:`مستند_حاويات_واجهة_المستخدم`" #: ../../docs/about/docs_changelog.rst:267 #, fuzzy msgid "New pages since version 3.2" msgstr "التعليمات الجديدة منذ النسخة 3.1" #: ../../docs/about/docs_changelog.rst:272 #, fuzzy msgid ":ref:`doc_3d_rendering_limitations`" msgstr "محدودية الإخراج البصري ثلاثي الأبعاد" #: ../../docs/about/docs_changelog.rst:277 #, fuzzy msgid ":ref:`doc_troubleshooting`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:278 #, fuzzy msgid ":ref:`doc_list_of_features`" msgstr ":ref:`مستند_أمثلة_الإدخال`" #: ../../docs/about/docs_changelog.rst:279 #, fuzzy msgid ":ref:`doc_release_policy`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:282 #: ../../docs/tutorials/best_practices/index.rst:4 #: ../../docs/tutorials/assets_pipeline/importing_images.rst:554 #: ../../docs/tutorials/assets_pipeline/importing_audio_samples.rst:274 #: ../../docs/tutorials/audio/text_to_speech.rst:94 msgid "Best practices" msgstr "" #: ../../docs/about/docs_changelog.rst:284 #, fuzzy msgid ":ref:`doc_version_control_systems`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:289 #, fuzzy msgid ":ref:`doc_best_practices_for_engine_contributors`" msgstr "اطلع على :ref:`doc_ways_to_contribute`." #: ../../docs/about/docs_changelog.rst:290 #, fuzzy msgid ":ref:`doc_bisecting_regressions`" msgstr ":ref:`استخدام المُخدمات`" #: ../../docs/about/docs_changelog.rst:291 #, fuzzy msgid ":ref:`doc_editor_and_docs_localization`" msgstr "صورة متحركة" #: ../../docs/about/docs_changelog.rst:296 #, fuzzy msgid ":ref:`doc_introduction_to_editor_development`" msgstr "المقدمة" #: ../../docs/about/docs_changelog.rst:297 #, fuzzy msgid ":ref:`doc_editor_style_guide`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:298 #, fuzzy msgid ":ref:`doc_common_engine_methods_and_macros`" msgstr ":ref:`مستند_التحكم_بآلاف_الأسماك`" #: ../../docs/about/docs_changelog.rst:299 #, fuzzy msgid ":ref:`doc_vulkan_validation_layers`" msgstr ":ref:`شجرة الرسومات المتحركة `" #: ../../docs/about/docs_changelog.rst:300 #, fuzzy msgid ":ref:`doc_gdscript_grammar`" msgstr ":ref:`doc_2d_sprite_animation`" #: ../../docs/about/docs_changelog.rst:301 msgid "Configuring an IDE: :ref:`doc_configuring_an_ide_code_blocks`" msgstr "" #: ../../docs/about/docs_changelog.rst:306 #, fuzzy msgid ":ref:`doc_default_key_mapping`" msgstr ":ref:`بدائل العُقد `" #: ../../docs/about/docs_changelog.rst:307 #, fuzzy msgid ":ref:`doc_using_the_web_editor`" msgstr ":ref:`Web `" #: ../../docs/about/docs_changelog.rst:310 #: ../../docs/tutorials/export/index.rst:6 msgid "Export" msgstr "تصدير" #: ../../docs/about/docs_changelog.rst:312 #, fuzzy msgid ":ref:`doc_exporting_for_dedicated_servers`" msgstr "" ":ref:`مخدمات لينوكس و ماكنتوش معدومة الرأس " "`." #: ../../docs/about/docs_changelog.rst:317 #, fuzzy msgid ":ref:`doc_controllers_gamepads_joysticks`" msgstr ":ref:`مستند_التحكم_بآلاف_الأسماك`" #: ../../docs/about/docs_changelog.rst:320 #: ../../docs/about/docs_changelog.rst:376 #: ../../docs/tutorials/math/index.rst:4 msgid "Math" msgstr "الرياضيات" #: ../../docs/about/docs_changelog.rst:322 #, fuzzy msgid ":ref:`doc_random_number_generation`" msgstr ":ref:`مستند_إضافة_الأندرويد`" #: ../../docs/about/docs_changelog.rst:327 #, fuzzy msgid ":ref:`doc_plugins_for_ios`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:328 #, fuzzy msgid ":ref:`doc_ios_plugin`" msgstr ":ref:`مستند_إضافة_الأندرويد`" #: ../../docs/about/docs_changelog.rst:329 #, fuzzy msgid ":ref:`doc_html5_shell_classref`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:334 #, fuzzy msgid ":ref:`doc_collision_shapes_2d`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:335 #, fuzzy msgid ":ref:`doc_collision_shapes_3d`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:340 #, fuzzy msgid ":ref:`doc_shaders_style_guide`" msgstr ":ref:`doc_android_custom_build`" #: ../../docs/about/docs_changelog.rst:345 #, fuzzy msgid ":ref:`doc_debugger_panel`" msgstr "GDScript :ref:`منقح الأخطاء البرمجية `." #: ../../docs/about/docs_changelog.rst:346 #, fuzzy msgid ":ref:`doc_creating_script_templates`" msgstr "إنشاء المحتوى" #: ../../docs/about/docs_changelog.rst:347 #, fuzzy msgid ":ref:`doc_evaluating_expressions`" msgstr "تقييم الاختيار" #: ../../docs/about/docs_changelog.rst:348 #, fuzzy msgid ":ref:`doc_what_is_gdextension`" msgstr ":ref:`الهيكل الفقري ثنائي الأبعاد`" #: ../../docs/about/docs_changelog.rst:349 msgid "" ":ref:`doc_gdscript_warning_system` (split " "from :ref:`doc_gdscript_static_typing`)" msgstr "" #: ../../docs/about/docs_changelog.rst:352 #, fuzzy msgid "User Interface (UI)" msgstr "عدّل واجهة المستخدم" #: ../../docs/about/docs_changelog.rst:354 #, fuzzy msgid ":ref:`doc_control_node_gallery`" msgstr ":ref:`بدائل العُقد `" #: ../../docs/about/docs_changelog.rst:357 #, fuzzy msgid "New pages since version 3.1" msgstr "التعليمات الجديدة منذ النسخة 3.1" #: ../../docs/about/docs_changelog.rst:360 #: ../../docs/about/docs_changelog.rst:454 msgid "Project workflow" msgstr "سير عمل المشروع" #: ../../docs/about/docs_changelog.rst:362 #, fuzzy msgid ":ref:`doc_android_gradle_build`" msgstr ":ref:`doc_android_custom_build`" #: ../../docs/about/docs_changelog.rst:367 msgid ":ref:`doc_2d_sprite_animation`" msgstr ":ref:`doc_2d_sprite_animation`" #: ../../docs/about/docs_changelog.rst:372 #, fuzzy msgid ":ref:`doc_recording_with_microphone`" msgstr ":ref:`مستند_المزامنة_مع_الصوت`" #: ../../docs/about/docs_changelog.rst:373 msgid ":ref:`doc_sync_with_audio`" msgstr ":ref:`مستند_المزامنة_مع_الصوت`" #: ../../docs/about/docs_changelog.rst:378 #, fuzzy msgid ":ref:`doc_beziers_and_curves`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:379 msgid ":ref:`doc_interpolation`" msgstr ":ref:`مستند_الاستيفاء`" #: ../../docs/about/docs_changelog.rst:382 msgid "Inputs" msgstr "المُدخلات" #: ../../docs/about/docs_changelog.rst:384 msgid ":ref:`doc_input_examples`" msgstr ":ref:`مستند_أمثلة_الإدخال`" #: ../../docs/about/docs_changelog.rst:389 msgid ":ref:`doc_localization_using_gettext`" msgstr ":ref:`مستند_التوطين_باستخدام_gettext`" #: ../../docs/about/docs_changelog.rst:392 #: ../../docs/about/docs_changelog.rst:506 #: ../../docs/tutorials/3d/standard_material_3d.rst:242 msgid "Shading" msgstr "التظليل" #: ../../docs/about/docs_changelog.rst:394 msgid "Your First Shader Series:" msgstr "سلسلة الظلال الأولى بالنسبة لك:" #: ../../docs/about/docs_changelog.rst:395 #: ../../docs/about/docs_changelog.rst:513 msgid ":ref:`doc_introduction_to_shaders`" msgstr ":ref:`doc_introduction_to_shaders`" #: ../../docs/about/docs_changelog.rst:396 msgid ":ref:`doc_your_first_canvasitem_shader`" msgstr ":ref:`مستند_أول_ظل_لعنصر_اللوحة`" #: ../../docs/about/docs_changelog.rst:397 msgid ":ref:`doc_your_first_spatial_shader`" msgstr ":ref:`مستند_الظل_الفراغي_الأول_لك`" #: ../../docs/about/docs_changelog.rst:398 msgid ":ref:`doc_your_second_spatial_shader`" msgstr ":ref:`مستند_الظل_الفراغي_الثاني_لك`" #: ../../docs/about/docs_changelog.rst:399 msgid ":ref:`doc_visual_shaders`" msgstr ":ref:`مستند_الظلال_المرئية`" #: ../../docs/about/docs_changelog.rst:404 msgid ":ref:`doc_webrtc`" msgstr ":ref:`doc_webrtc`" #: ../../docs/about/docs_changelog.rst:407 #: ../../docs/about/docs_changelog.rst:520 #: ../../docs/tutorials/plugins/index.rst:4 msgid "Plugins" msgstr "إضافات" #: ../../docs/about/docs_changelog.rst:409 #, fuzzy msgid ":ref:`doc_android_plugin`" msgstr ":ref:`مستند_إضافة_الأندرويد`" #: ../../docs/about/docs_changelog.rst:410 #, fuzzy msgid ":ref:`doc_inspector_plugins`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:411 #, fuzzy msgid ":ref:`doc_visual_shader_plugins`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:414 #: ../../docs/about/docs_changelog.rst:531 msgid "Multi-threading" msgstr "تعدد العمليات (السردات المتعددة)" #: ../../docs/about/docs_changelog.rst:416 #, fuzzy msgid ":ref:`doc_using_multiple_threads`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:419 #: ../../docs/about/docs_changelog.rst:536 msgid "Creating content" msgstr "إنشاء المحتوى" #: ../../docs/about/docs_changelog.rst:421 msgid "Procedural geometry series:" msgstr "سلسلة الهندسة الرياضية الإجرائية:" #: ../../docs/about/docs_changelog.rst:422 #, fuzzy msgid ":ref:`Procedural geometry `" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:423 #, fuzzy msgid ":ref:`doc_arraymesh`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:424 #, fuzzy msgid ":ref:`doc_surfacetool`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:425 #, fuzzy msgid ":ref:`doc_meshdatatool`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:426 #, fuzzy msgid ":ref:`doc_immediatemesh`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:429 ../../docs/tutorials/3d/index.rst:37 msgid "Optimization" msgstr "التحسينات" #: ../../docs/about/docs_changelog.rst:431 msgid ":ref:`doc_using_multimesh`" msgstr "" #: ../../docs/about/docs_changelog.rst:432 msgid ":ref:`doc_using_servers`" msgstr ":ref:`استخدام المُخدمات`" #: ../../docs/about/docs_changelog.rst:435 msgid "Legal" msgstr "قانوني" #: ../../docs/about/docs_changelog.rst:437 msgid ":ref:`doc_complying_with_licenses`" msgstr "" #: ../../docs/about/docs_changelog.rst:440 msgid "New pages since version 3.0" msgstr "التعليمات الجديدة منذ الإصدار 3.0" #: ../../docs/about/docs_changelog.rst:443 #: ../../docs/getting_started/step_by_step/index.rst:6 #: ../../docs/contributing/development/compiling/compiling_with_script_encryption_key.rst:32 msgid "Step by step" msgstr "خطوة بخطوة" #: ../../docs/about/docs_changelog.rst:445 msgid ":ref:`doc_signals`" msgstr ":ref:`الإشارات `" #: ../../docs/about/docs_changelog.rst:446 #: ../../docs/tutorials/editor/command_line_tutorial.rst:389 msgid "Exporting" msgstr "التصدير" #: ../../docs/about/docs_changelog.rst:451 msgid ":ref:`doc_gdscript_static_typing`" msgstr "" #: ../../docs/about/docs_changelog.rst:456 msgid "Best Practices:" msgstr "أفضل الإجراءات:" #: ../../docs/about/docs_changelog.rst:458 #, fuzzy msgid ":ref:`doc_introduction_best_practices`" msgstr "" "مرجع مستندات \n" "مقدمة عن افضل برتكلز" #: ../../docs/about/docs_changelog.rst:459 msgid ":ref:`doc_what_are_godot_classes`" msgstr "" "مرجع مستندات\n" "فص_ما_هو_جودوت" #: ../../docs/about/docs_changelog.rst:460 #, fuzzy msgid ":ref:`doc_scene_organization`" msgstr "صورة متحركة" #: ../../docs/about/docs_changelog.rst:461 msgid ":ref:`doc_scenes_versus_scripts`" msgstr "" #: ../../docs/about/docs_changelog.rst:462 msgid ":ref:`doc_autoloads_versus_internal_nodes`" msgstr "" #: ../../docs/about/docs_changelog.rst:463 msgid ":ref:`doc_node_alternatives`" msgstr ":ref:`بدائل العُقد `" #: ../../docs/about/docs_changelog.rst:464 msgid ":ref:`doc_godot_interfaces`" msgstr ":ref:`واجهة مستخدم غودوت`" #: ../../docs/about/docs_changelog.rst:465 msgid ":ref:`doc_godot_notifications`" msgstr ":ref:`إشعارات غودوت `" #: ../../docs/about/docs_changelog.rst:466 msgid ":ref:`doc_data_preferences`" msgstr "" #: ../../docs/about/docs_changelog.rst:467 msgid ":ref:`doc_logic_preferences`" msgstr "" #: ../../docs/about/docs_changelog.rst:472 msgid ":ref:`doc_2d_lights_and_shadows`" msgstr ":ref:`الضوء والظل ثنائي الأبعاد`" #: ../../docs/about/docs_changelog.rst:473 msgid ":ref:`doc_2d_meshes`" msgstr ":ref:`السطوح ثنائية الأبعاد `" #: ../../docs/about/docs_changelog.rst:478 msgid ":ref:`doc_csg_tools`" msgstr "" #: ../../docs/about/docs_changelog.rst:479 msgid ":ref:`doc_animating_thousands_of_fish`" msgstr ":ref:`مستند_تحريك_آلاف_الأسماك`" #: ../../docs/about/docs_changelog.rst:480 #, fuzzy msgid ":ref:`doc_controlling_thousands_of_fish`" msgstr ":ref:`مستند_التحكم_بآلاف_الأسماك`" #: ../../docs/about/docs_changelog.rst:485 msgid ":ref:`doc_ragdoll_system`" msgstr "" #: ../../docs/about/docs_changelog.rst:486 msgid ":ref:`doc_soft_body`" msgstr "" #: ../../docs/about/docs_changelog.rst:491 msgid ":ref:`doc_2d_skeletons`" msgstr ":ref:`الهيكل الفقري ثنائي الأبعاد`" #: ../../docs/about/docs_changelog.rst:492 msgid ":ref:`doc_animation_tree`" msgstr ":ref:`شجرة الرسومات المتحركة `" #: ../../docs/about/docs_changelog.rst:495 msgid "GUI" msgstr "الواجهة الرسومية" #: ../../docs/about/docs_changelog.rst:497 msgid ":ref:`doc_gui_containers`" msgstr ":ref:`مستند_حاويات_واجهة_المستخدم`" #: ../../docs/about/docs_changelog.rst:500 msgid "Viewports" msgstr "ساحات الرؤية" #: ../../docs/about/docs_changelog.rst:502 msgid ":ref:`doc_viewport_as_texture`" msgstr "" #: ../../docs/about/docs_changelog.rst:503 msgid ":ref:`doc_custom_postprocessing`" msgstr "" #: ../../docs/about/docs_changelog.rst:508 #, fuzzy msgid ":ref:`doc_converting_glsl_to_godot_shaders`" msgstr "أندرويد" #: ../../docs/about/docs_changelog.rst:509 msgid ":ref:`doc_advanced_postprocessing`" msgstr "" #: ../../docs/about/docs_changelog.rst:511 msgid "Shading Reference:" msgstr "مرجعية الظلال:" #: ../../docs/about/docs_changelog.rst:514 msgid ":ref:`doc_shading_language`" msgstr "" #: ../../docs/about/docs_changelog.rst:515 msgid ":ref:`doc_spatial_shader`" msgstr "" #: ../../docs/about/docs_changelog.rst:516 msgid ":ref:`doc_canvas_item_shader`" msgstr "" #: ../../docs/about/docs_changelog.rst:517 #, fuzzy msgid ":ref:`doc_particle_shader`" msgstr "جسيمات" #: ../../docs/about/docs_changelog.rst:522 #, fuzzy msgid ":ref:`doc_making_main_screen_plugins`" msgstr "إنشاء المحتوى" #: ../../docs/about/docs_changelog.rst:523 #, fuzzy msgid ":ref:`doc_3d_gizmo_plugins`" msgstr ":ref:`مستند_إضافة_الأندرويد`" #: ../../docs/about/docs_changelog.rst:528 msgid ":ref:`doc_customizing_html5_shell`" msgstr "" #: ../../docs/about/docs_changelog.rst:533 msgid ":ref:`doc_thread_safe_apis`" msgstr "" #: ../../docs/about/docs_changelog.rst:538 msgid ":ref:`doc_making_trees`" msgstr "" #: ../../docs/about/docs_changelog.rst:543 msgid ":ref:`doc_jitter_stutter`" msgstr "" #: ../../docs/about/docs_changelog.rst:544 msgid ":ref:`doc_running_code_in_the_editor`" msgstr "" #: ../../docs/about/docs_changelog.rst:545 msgid ":ref:`doc_change_scenes_manually`" msgstr "" #: ../../docs/about/docs_changelog.rst:548 #: ../../docs/contributing/development/compiling/compiling_for_windows.rst:110 #: ../../docs/contributing/development/compiling/compiling_for_linuxbsd.rst:248 #: ../../docs/contributing/development/compiling/compiling_for_macos.rst:48 #: ../../docs/contributing/development/compiling/compiling_for_ios.rst:47 msgid "Compiling" msgstr "التجميع" #: ../../docs/about/docs_changelog.rst:550 msgid ":ref:`doc_optimizing_for_size`" msgstr "" #: ../../docs/about/docs_changelog.rst:551 msgid ":ref:`doc_compiling_with_script_encryption_key`" msgstr "" #: ../../docs/about/docs_changelog.rst:554 #: ../../docs/contributing/development/index.rst:6 msgid "Engine development" msgstr "تطوير المحرك" #: ../../docs/about/docs_changelog.rst:556 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 "المقدمة" #: ../../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 #, fuzzy 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 #, fuzzy 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 GDExtension technology, you can also write gameplay or high-" "performance algorithms in C or C++ 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:97 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:103 msgid "What do I need to know to use Godot?" msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:105 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:110 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:113 msgid "" "If you are entirely new to programming, we recommend following the `CS50 " "open courseware`_ from Harvard University. It's a great free course that " "will teach you everything you need to know to be off to a good start. It " "will save you countless hours and hurdles learning any game engine afterward." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:118 msgid "" "In CS50, you will learn multiple programming languages. Don't be afraid of " "that: programming languages have many similarities. The skills you learn " "with one language transfer well to others." msgstr "" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:122 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:125 #: ../../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:250 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_exports.rst:306 #: ../../docs/contributing/development/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/contributing/development/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:2339 #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:659 #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:722 #: ../../docs/tutorials/scripting/gdextension/gdextension_cpp_example.rst:613 #: ../../docs/tutorials/scripting/how_to_read_the_godot_api.rst:103 #: ../../docs/contributing/development/core_and_modules/object_class.rst:223 msgid "Signals" msgstr "الإشارات" #: ../../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 #, fuzzy msgid "" "Signals are Godot's version of the *observer* pattern. You can read more " "about it here: https://gameprogrammingpatterns.com/observer.html" msgstr "" "يمكنك قراءة المزيد عن أسلوب ونمط \"المُراقب\" هنا: http://" "gameprogrammingpatterns.com/observer.html" #: ../../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:231 #: ../../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:548 #: ../../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:138 #: ../../docs/tutorials/scripting/gdscript/static_typing.rst:505 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 #, fuzzy 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 #, fuzzy msgid "The Project Manager" msgstr "مُدير المشروع" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:21 #, fuzzy 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 "" "عندما تشغل المحرك، أول نافذة ستراها هي مُدير المشارع، وبما أنك لا تملك أي " "منها ستلاحظ نافذة منبثقة ستسألك فيما إذا رغبت في فتح قائمة الملحقات الإضافية " "Asset library، اضغط على إلغاء لأننا سنتطرق إليها لاحقاً." #: ../../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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 "" "**اللوحة السفلية** هي مكان عارض الكبوات البرمجية Debug console، وكذلك محرر " "تحريك الرسوميات، وأيضاً خالط الأصوات.... كل من هذه العناصر الثلاثة لديها " "الكثير من العناصر الثمينة والهامة التي تأخذ حيزاً كبيراً، لذلك تكون مرتبة ضمن " "مجلدات بصورة افتراضية." #: ../../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 #, fuzzy msgid "The five main screens" msgstr "إنشاء المحتوى" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:124 #, fuzzy msgid "" "There are five main screen buttons centered at the top of the editor: 2D, " "3D, Script, Game and Asset Library." msgstr "" "يمكنك أن تلاحظ أربع أزرار لمساحات العمل في أعلى الشاشة: ثنائية الُبعد 2D، " "ثلاثية البُعد 3D، لغة البرمجة النصية Script ، مكتبة الملحقات AssetLib." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:127 #, fuzzy 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 "" "ستسخدم **مساحة العمل ثنائية البعد** لجميع أنواع الألعاب التي ستعمل عليها، " "بالإضافة إلى الألعاب ثنائية البعد فإن هذه المساحة ستبني واجهات المستخدم " "الخاصة بك، اضغط على :kbd:`F1` أو :kbd:`Alt + 1` على أجهزة ماك للوصول إليها." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:132 #, fuzzy msgid "" "In the **3D screen**, you can work with meshes, lights, and design levels " "for 3D games." msgstr "" "في **مساحة العمل ثلاثية الأبعاد** يمكنك العمل على السطوح والمجسمات، والإنارة " "وتصميم المراحل للألعاب ثلاثية الأبعاد. اضغط على :kbd:`F2` (أو :kbd:`Alt + " "2` لنظام تشغيل ماك) لتفعيله." #: ../../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 #, fuzzy 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 "مرجعية الظلال" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:165 #, fuzzy 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 #, fuzzy 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 "" "Harvard university offers a free courseware to learn to program, `CS50 " "`_. It will teach you programming fundamentals, " "how code works, and how to think like a programmer. These skills are " "essential to become a game developer and learn any game engine efficiently. " "You can see this course as an investment that will save you time and trouble " "when you learn to create games." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:76 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:80 msgid "Learning with the community" msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:82 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:87 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:95 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:99 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:104 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:109 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:115 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:121 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:127 msgid "" "Alternatively, you can use a program like `ShareX `_ " "on Windows, or `FlameShot `_ on Linux." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:130 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:135 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:138 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:142 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:146 #, fuzzy msgid "Community tutorials" msgstr "المجتمع" #: ../../docs/getting_started/introduction/learning_new_features.rst:148 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 "|الصورة0|" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:174 #: ../../docs/getting_started/first_2d_game/index.rst:79 #: ../../docs/getting_started/first_3d_game/index.rst:72 #: ../../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:348 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:370 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:514 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:618 #: ../../docs/community/asset_library/using_assetlib.rst:186 #: ../../docs/community/asset_library/submitting_to_assetlib.rst:218 #, fuzzy msgid "image0" msgstr "|الصورة0|" #: ../../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 #, fuzzy msgid "|image1|" msgstr "|image1|" #: ../../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:349 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:371 #: ../../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:619 #: ../../docs/community/asset_library/using_assetlib.rst:187 #, fuzzy msgid "image1" msgstr "|image1|" #: ../../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 "|image2|" #: ../../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:350 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:372 #: ../../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:620 #: ../../docs/community/asset_library/using_assetlib.rst:188 #, fuzzy msgid "image2" msgstr "|image2|" #: ../../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 #, fuzzy 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 #, fuzzy msgid "All nodes have the following characteristics:" msgstr "المستند الرئيسي لهذا الموقع منظم في الأقسام التالية:" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:24 #, fuzzy msgid "A name." msgstr "الفعل" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:25 #, fuzzy msgid "Editable properties." msgstr "تملك خصائص قابلة للتعديل." #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:26 #, fuzzy msgid "They receive callbacks to update every frame." msgstr "بإمكانها تلقي رسالة للتعامل مع كل إطار." #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:27 #, fuzzy msgid "You can extend them with new properties and functions." msgstr "من الممكن توسيعها (منحها المزيد من الوظائف)." #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:28 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy msgid "" "In an empty scene, the Scene dock on the left shows several options to add a " "root node quickly. \"2D Scene\" adds a :ref:`Node2D ` node, " "\"3D Scene\" adds a :ref:`Node3D ` node, and \"User " "Interface\" adds a :ref:`Control ` node. These presets are " "here for convenience; they are not mandatory. \"Other Node\" lets you select " "any node to be the root node. In an empty scene, \"Other Node\" is " "equivalent to pressing the \"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 "" "في مشهد فارغ (من دون عقدة رئيسة) إن ميناء المشهد سيتضمن عدداً من الخيارات " "لسهولة إضافة عُقد إلى المشهد الخاص بك. \"مشهد ثنائي البُعد\" يضيف عقدة-ثنائية " "البعد Node2D ، بينما \"مشهد ثلاثي البُعد\" يضيف عُقدة فراغية Spatial ، \"واجهة " "المستخدم\" يضيف عقدة تحكم Control، و\"عُقدة مخصصة\" تتيح لك حرية الاختيار لأي " "عقدة (لذا هي مكافئة لضغط زر \"إضافة عُقدة جديدة\"). بإمكانك كلك ضغط الزر " "الشبيه بالنجمة لإظهار المفضلين بالنسبة لديك." #: ../../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 \"Add Child Node\" button or \"Other Node\" to create a root node." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:92 #, fuzzy msgid "The Create Node dialog opens, showing the long list of available nodes." msgstr "" "هذا سيفتح نافذة إضافة العُقد، وستظهر هذه النافذة قائمة طويلة بكل العُقد التي " "يمكنك إضافتها:" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:96 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:100 msgid "" "Click on the Label node to select it and click the Create button at the " "bottom of the window." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:105 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:111 #, fuzzy msgid "Changing a node's properties" msgstr "إنشاء المحتوى" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:113 #, fuzzy msgid "" "The next step is to change the Label's \"Text\" property. Let's change it to " "\"Hello World\"." msgstr "" "الخطوة التالية ستكون هي تعديل خاصية \"النص Text\" التابعة للصاقة التعريفية، " "دعنا نعدلها إلى \"مرحباً\":" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:116 msgid "" "Head to the Inspector dock on the right of the viewport. Click inside the " "field below the Text property and type \"Hello World\"." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:121 msgid "You will see the text draw in the viewport as you type." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:123 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:127 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:132 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:138 #, fuzzy msgid "Running the scene" msgstr "إنشاء المحتوى" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:140 #, fuzzy msgid "" "Everything's ready to run the scene! Press the **Run Current Scene** button " "in the top-right of the screen or press :kbd:`F6` (:kbd:`Cmd + R` on macOS)." msgstr "" "حسناً، كل شيء جاهز لتشغيل المشهد! اضغط على زر تشغيل المشهد في الشريط العلوي " "للبرنامج (أو اضغط :kbd:`F6`):" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:145 msgid "" "A popup invites you to save the scene, which is required to run it. Click " "the Save button in the file browser to save it as ``label.tscn``." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:150 msgid "" "The 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:156 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:160 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:163 #, fuzzy msgid "Setting the main scene" msgstr "إنشاء المحتوى" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:165 msgid "" "To run our test scene, we used the **Run Current Scene** button. Another " "button next to it, **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:171 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:175 msgid "A popup window appears and invites you to select the main scene." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:179 msgid "" "Click the 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:184 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:187 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 \"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:193 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 "تحرير النماذج" #: ../../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 #, fuzzy msgid "In practice" msgstr "أفضل الإجراءات:" #: ../../docs/getting_started/step_by_step/instancing.rst:50 #, fuzzy 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 "" "لمعرفة آلية عمل النمذجة، دعنا نبدأ بتحميل مشروع " "بسيط: :download:`instancing.zip `." #: ../../docs/getting_started/step_by_step/instancing.rst:54 msgid "" "Extract the archive on your computer. To import it, you need the Project " "Manager. The Project Manager is accessed by opening Godot, or if you already " "have Godot opened, click on *Project -> Quit to Project List* (:kbd:`Ctrl + " "Shift + Q`, :kbd:`Ctrl + Option + Cmd + Q` on macOS)" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:57 #, fuzzy msgid "" "In the Project Manager, click the *Import* button to import the project." msgstr "" "فك ضغط المشروع أينما شئت، ثم افتح محرك الألعاب غودوت وضف هذا المشروع عن طريق " "زر \"استيراد\" في مدير المشاريع:" #: ../../docs/getting_started/step_by_step/instancing.rst:61 msgid "" "In the pop-up that appears navigate to the folder you extracted. Double-" "click the ``project.godot`` file to open it." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:66 msgid "Finally, click the Import & Edit button." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:70 #: ../../docs/tutorials/scripting/singletons_autoload.rst:135 msgid "" "A window notifying you that the project was last opened in an older Godot " "version may appear, that's not an issue. Click *Ok* to open the project." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:73 msgid "" "The project contains two packed scenes: ``main.tscn``, containing walls " "against which the ball collides, and ``ball.tscn``. The Main scene should " "open automatically. If you're seeing an empty 3D scene instead of the main " "scene, click the 2D button at the top of the screen." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:81 msgid "" "Let's add a ball as a child of the Main node. In the Scene dock, select the " "Main node. Then, click the link icon at the top of the scene dock. This " "button allows you to add an instance of a scene as a child of the currently " "selected node." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:87 msgid "Double-click the ball scene to instance it." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:91 msgid "The ball appears in the top-left corner of the viewport." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:95 msgid "Click on it and drag it towards the center of the view." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:99 #, fuzzy msgid "" "Play the game by pressing :kbd:`F5` (:kbd:`Cmd + B` on macOS). You should " "see it fall." msgstr "" "احفظ المشهد. اضغط على مَشهد > حفظ، أو بإمكانك أن تضغط على :kbd:`Ctrl + S` إن " "كان نظام التشغيل ويندوز/لينكس أو :kbd:`Cmd + S` في حالة كنت تستخدم نظام " "التشغيل ماك." #: ../../docs/getting_started/step_by_step/instancing.rst:101 msgid "" "Now, we want to create more instances of the Ball node. With the ball still " "selected, press :kbd:`Ctrl + D` (:kbd:`Cmd + D` on macOS) to call the " "duplicate command. Click and drag to move the new ball to a different " "location." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:107 msgid "You can repeat this process until you have several in the scene." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:111 msgid "" "Play the game again. You should now see every ball fall independently from " "one another. This is what instances do. Each is an independent reproduction " "of a template scene." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:116 #, fuzzy msgid "Editing scenes and instances" msgstr "تحرير النماذج" #: ../../docs/getting_started/step_by_step/instancing.rst:118 msgid "There is more to instances. With this feature, you can:" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:120 msgid "" "Change the properties of one ball without affecting the others using the " "Inspector." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:122 msgid "" "Change the default properties of every Ball by opening the ``ball.tscn`` " "scene and making a change to the Ball node there. Upon saving, all instances " "of the Ball in the project will see their values update." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:126 msgid "" "Changing a property on an instance always overrides values from the " "corresponding packed scene." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:129 msgid "" "Let's try this. Double-click ``ball.tscn`` in the FileSystem to open it." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:133 msgid "" "In the Scene dock on the left, select the Ball node. Then, in the Inspector " "on the right, click on the PhysicsMaterial property to expand it." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:138 msgid "" "Set its Bounce property to ``0.5`` by clicking on the number field, typing " "``0.5``, and pressing :kbd:`Enter`." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:143 msgid "" "Play the game by pressing :kbd:`F5` (:kbd:`Cmd + B` on macOS) and notice how " "all balls now bounce a lot more. As the Ball scene is a template for all " "instances, modifying it and saving causes all instances to update " "accordingly." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:147 msgid "" "Let's now adjust an individual instance. Head back to the Main scene by " "clicking on the corresponding tab above the viewport." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:152 msgid "" "Select one of the instanced Ball nodes and, in the Inspector, set its " "Gravity Scale value to ``10``." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:157 msgid "A grey \"revert\" button appears next to the adjusted property." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:161 #, fuzzy msgid "" "This icon indicates you are overriding a value from the source packed scene. " "Even if you modify the property in the original scene, the value override " "will be preserved in the instance. Clicking the revert icon will restore the " "property to the value in the saved scene." msgstr "" "لاحظ أن زر \"إعادة الضبط\" سيظهر بجانب القيمة المعدّلة، عندما ظاهراً فإنه يعني " "أنك قمت بتعديل قيمة في هذا المشهد المنمذج لتجاوز القيمة الأساسية في المشهد " "المحفوظ، وحتى إن عُدلت القيمة الأساسية في المشهد الأساسي، ستبقى هذه القيمة " "المعدلة على حالها، وبالضغط على زر \"إعادة الضبط\" فإنه سيرجع قيمة الخاصية " "لقيمة المشهد الأساسي المحفوظ." #: ../../docs/getting_started/step_by_step/instancing.rst:166 msgid "" "Rerun the game and notice how this ball now falls much faster than the " "others." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:170 msgid "" "You may notice you are unable to change the values of the PhysicsMaterial of " "the ball. This is because PhysicsMaterial is a *resource*, and needs to be " "made unique before you can edit it in a scene that is linking to its " "original scene. To make a resource unique for one instance, right-click on " "the **Physics Material** property in the Inspector and click **Make Unique** " "in the context menu." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:177 msgid "" "Resources are another essential building block of Godot games we will cover " "in a later lesson." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:181 msgid "Scene instances as a design language" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:183 msgid "" "Instances and scenes in Godot offer an excellent design language, setting " "the engine apart from others out there. We designed Godot around this " "concept from the ground up." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:187 msgid "" "We recommend dismissing architectural code patterns when making games with " "Godot, such as Model-View-Controller (MVC) or Entity-Relationship diagrams. " "Instead, you can start by imagining the elements players will see in your " "game and structure your code around them." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:192 #, fuzzy msgid "For example, you could break down a shooter game like so:" msgstr "على سبيل المثال، هنا نمثل آلية تخيل لعبة إطلاق نار:" #: ../../docs/getting_started/step_by_step/instancing.rst:196 #, fuzzy msgid "" "You can come up with a diagram like this for almost any type of game. Each " "rectangle represents an entity that's visible in the game from the player's " "perspective. The arrows point towards the instantiator of each scene." msgstr "" "يمكنك أن تبدع مخطط مثل هذا في لأي نمط من الألعاب، اكتب الأجزاء المرئية من " "اللعبة، ثم ضع أسهم وعلاقات ربط يمكنها أن تمثل ملكية عنصر لعنصر آخر." #: ../../docs/getting_started/step_by_step/instancing.rst:200 #, fuzzy msgid "" "Once you have a diagram, we recommend creating a scene for each element " "listed in it to develop your game. You'll use instancing, either by code or " "directly in the editor, to build your tree of scenes." msgstr "" "حالما يصبح لديك مخطط مثل هذا، ننصح عند صناعة اللعبة أن تقوم بصناعة مشهد لكل " "عنصر مذكور في المخطط، وستسخدم النمذجة (سواء أكان ذلك عن طريق البرمجة أم " "المحرر) لتضع ملكية العناصر للعناصر الأخرى." #: ../../docs/getting_started/step_by_step/instancing.rst:204 #, fuzzy msgid "" "Programmers tend to spend a lot of time designing abstract architectures and " "trying to fit components into it. Designing based on scenes makes " "development faster and more straightforward, allowing you to focus on the " "game logic itself. Because most game components map directly to a scene, " "using a design based on scene instantiation means you need little other " "architectural code." msgstr "" "الكثير من الوقت المستغرق في برمجة الألعاب (أو البرمجة بشكل عام)، يصرف على " "الآلية والمعمارية التي تناسب عناصر اللعبة وهيكليتها، التصميم بناء على " "المشاهد يتسبدل ذلك النهج ويجعل من تجربة البرمجة أسلس واسرع وأسهل، بطريقة " "تسمح لك بالتركيز على منطق اللعبة بحد ذاتها، لأن مخطط مكونات اللعبة يستند على " "فكرة المشهد، فإن اعتماد لغة تصميم مبنية على نمذجة المشاهد سيعني أيضاً عناء " "أقل فيما يتعلق بهيكلية النص البرمجي الضرورية." #: ../../docs/getting_started/step_by_step/instancing.rst:210 #, fuzzy msgid "" "Here's the example of a scene diagram for an open-world game with tons of " "assets and nested elements:" msgstr "" "دعنا نلق نظرة، ولتكن نظرة أكثر تعقيداً، على لعبة من نمط العالم المفتوح مع " "الكثير من المُلحقات والعناصر المتداخلة:" #: ../../docs/getting_started/step_by_step/instancing.rst:215 msgid "" "Imagine we started by creating the room. We could make a couple of different " "room scenes, with unique arrangements of furniture in them. Later, we could " "make a house scene that uses multiple room instances for the interior. We " "would create a citadel out of many instanced houses and a large terrain on " "which we would place the citadel. Each of these would be a scene instancing " "one or more sub-scenes." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:221 #, fuzzy 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 "" "لاحقاً يمكننا أن نضيف مشاهد تمثل الحُرّاس (شخصيات لا يلعب بلها المستخدم NPCs) " "إلى مشهد القلعة، وبهذه الطريقة وبصورة غير مباشرة نكون قد خلقنا كامل عالم " "اللعبة." #: ../../docs/getting_started/step_by_step/instancing.rst:224 #, fuzzy 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:233 msgid "" "Instancing, the process of producing an object from a blueprint, has many " "handy uses. With scenes, it gives you:" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:236 #, fuzzy msgid "The ability to divide your game into reusable components." msgstr "" "القدرة على تقسيم المشاهد إلى أقسام أصغر وبذات الوقت أسهل للإدارة والتدبير." #: ../../docs/getting_started/step_by_step/instancing.rst:237 msgid "A tool to structure and encapsulate complex systems." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:238 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 #, fuzzy 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 #, fuzzy msgid "Which language should I use?" msgstr "ما هي GDScript ولماذا استعملها ؟" #: ../../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 #, fuzzy 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 #, fuzzy msgid "" "Built-in vector and transform types, making it efficient for heavy use of " "linear algebra, a must for games." msgstr "" "يتضمن دعم ضمني لأنماط الموجهات Vectors (مثل Vectors، المحتولات transforms " "إلخ) الأمر الذي يجعله فعال جداً لاستخدامات الجبر الخطي." #: ../../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 ".NET / C#" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:103 #, fuzzy 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 "" "ولأن ميكروسوفت #C هي المفضلة بين مطوري الألعاب , فقد أضفنا دعما رسميا لها ، " "#C لغة مكتملة و هنالك الكثير من الاكواد المكتوبة خصيصا لها وقد تمت اضافة " "الدعم مع الشكر لعطاء ميكروسوفت السخي." #: ../../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 #, fuzzy 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 Scene " "dock, click the **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 Scene tab should now only have a Sprite2D node." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:58 msgid "" "A Sprite2D node needs a texture to display. In the Inspector on the right, " "you can see that the **Texture** property says ````. 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 #, fuzzy msgid "Creating a new script" msgstr "إنشاء المحتوى" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:77 msgid "" "To create and attach a new script to our node, right-click on Sprite2D in " "the Scene dock and select **Attach Script**." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:82 #, fuzzy msgid "" "The **Attach Node Script** window appears. It allows you to select the " "script's language and file path, among other options." msgstr "" "ستنبثق نافذة إنشاء النص البرمجي، وهذه النافذة تتيح لك حرية اختيار اللغة " "البرمجية التي ترغب بها، اسم الصف class، وغيرها من الخيارات ذات الصلة." #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:85 msgid "" "Change the **Template** field from ``Node: Default`` to ``Object: Empty`` to " "start with a clean file. Leave the other options set to their default values " "and click the **Create** button to create the script." 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 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 Inspector dock, " "like our node's ``texture``." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:128 msgid "" "By default, the Inspector displays a node's properties in \"Title Case\", " "with capitalized words separated by a space. In GDScript code, these " "properties are in \"snake_case\", which is lowercase with words separated by " "an underscore." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:132 msgid "" "You can hover over any property's name in the Inspector to see a description " "and its identifier in code." 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 **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 "الذهاب للأمام" #: ../../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:368 #, fuzzy 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 Project -> " "Project Settings and clicking on the 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 players' 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:76 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:599 #: ../../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 "الإشارات" #: ../../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 #, fuzzy 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 "" "يمكنك قراءة المزيد عن أسلوب ونمط \"المُراقب\" هنا: http://" "gameprogrammingpatterns.com/observer.html" #: ../../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 "" "**GDScript**: الصفوف (العُقد) تتبع قاعدة سنام الجمل PascalCase، بينما " "المتحولات والوظائف ستستخدم قاعدة الأفعى snake_case، وفي النهاية الثوابت " "ستتبع قاعدة تكبير الحروف جميعها ALL_CAPS، اطلع " "على :ref:`مستند_ضابطة_برمجة_غودوت`" #: ../../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 #, fuzzy 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 "" "**C#**: الصفوف، المتحولات المُصدرة والطرائق Methods تتبع قاعدة PascalCase، " "بينما الحقول الخاصة تتبع قاعدة _camelCase، المتحولات المحلية والمعاملات " "Parameters تستخدم قاعدة camelCase (اطلع " "على :ref:`مستند_ضابطة_أسلوب_كتابة_C`. كن حذراً في القاعدة التي تتبعها في " "تسمية الطرائق عندما تصل بين الإشارات." #: ../../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 #, fuzzy 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 "" "لإضافة زر للعبتنا، يجب إنشاء مشهد \"رئيسي\" جديد الذي يحوي زر ومشهد " "``Sprite.tscn`` الذي برمجناه في دروس سابقة." #: ../../docs/getting_started/step_by_step/signals.rst:61 msgid "Create a new scene by going to the menu Scene -> New Scene." msgstr "إنشاء مشهد جديد عن طريق الذهاب لقائمة مشهد -> مشهد جديد." #: ../../docs/getting_started/step_by_step/signals.rst:65 #, fuzzy msgid "" "In the Scene dock, click the 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 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 Text property in the " "Inspector. Enter ``Toggle motion``." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:100 #, fuzzy 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 #, fuzzy 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 Node dock. Select the Button node and, on the " "right side of the editor, click on the tab named \"Node\" next to the " "Inspector." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:122 msgid "The dock displays a list of signals available on the selected node." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:126 msgid "Double-click the \"pressed\" signal to open the node connection window." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:130 msgid "" "There, you can connect the signal to the Sprite2D node. The node needs a " "receiver method, a function that Godot will call when the Button emits the " "signal. The editor generates one for you. By convention, we name these " "callback methods \"_on_node_name_signal_name\". Here, it'll be " "\"_on_button_pressed\"." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:137 msgid "" "When connecting signals via the editor's Node dock, you can use two modes. " "The simple one only allows you to connect to nodes that have a script " "attached to them and creates a new callback function on them." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:143 msgid "" "The advanced view lets you connect to any node and any built-in function, " "add arguments to the callback, and set options. You can toggle the mode in " "the window's bottom-right by clicking the Advanced button." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:150 msgid "" "If you are using an external editor (such as VS Code), this automatic code " "generation might not work. In this case, you need to connect the signal via " "code as explained in the next section." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:154 msgid "" "Click the Connect button to complete the signal connection and jump to the " "Script workspace. You should see the new method with a connection icon in " "the left margin." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:160 msgid "" "If you click the icon, a window pops up and displays information about the " "connection. This feature is only available when connecting nodes in the " "editor." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:165 msgid "" "Let's replace the line with the ``pass`` keyword with code that'll toggle " "the node's motion." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:168 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:188 msgid "" "This function will toggle processing and, in turn, the icon's motion on and " "off upon pressing the button." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:191 msgid "" "Before trying the game, we need to simplify our ``_process()`` function to " "move the node automatically and not wait for user input. Replace it with the " "following code, which we saw two lessons ago:" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:212 #, fuzzy msgid "Your complete ``sprite_2d.gd`` code should look like the following." msgstr "شجرة المشاهد الخاصة بك، ينبغي أن تكون على الشكال التالي:" #: ../../docs/getting_started/step_by_step/signals.rst:255 #, fuzzy msgid "" "Run the current scene by pressing :kbd:`F6` (:kbd:`Cmd + R` on macOS), and " "click the button to see the sprite start and stop." msgstr "شغل المشهد واضغط على الزر، ينبغي أن تحصل على النتيجة التالية:" #: ../../docs/getting_started/step_by_step/signals.rst:259 #, fuzzy msgid "Connecting a signal via code" msgstr "وصل الإشارات باستخدام النص البرمجي" #: ../../docs/getting_started/step_by_step/signals.rst:261 msgid "" "You can connect signals via code instead of using the editor. This is " "necessary when you create nodes or instantiate scenes inside of a script." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:264 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:267 #, fuzzy 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 "" "في **مساحة العمل ثلاثية الأبعاد** يمكنك العمل على السطوح والمجسمات، والإنارة " "وتصميم المراحل للألعاب ثلاثية الأبعاد. اضغط على :kbd:`F2` (أو :kbd:`Alt + " "2` لنظام تشغيل ماك) لتفعيله." #: ../../docs/getting_started/step_by_step/signals.rst:270 msgid "" "In the Scene dock, right-click on the Sprite2D node and add a new child " "node. Search for Timer and add the corresponding node. Your scene should now " "look like this." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:276 msgid "" "With the Timer node selected, go to the Inspector and enable the " "**Autostart** property." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:281 msgid "" "Click the script icon next to Sprite2D to jump back to the scripting " "workspace." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:285 msgid "We need to do two operations to connect the nodes via code:" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:287 msgid "Get a reference to the Timer from the Sprite2D." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:288 msgid "Call the ``connect()`` method on the Timer's \"timeout\" signal." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:290 msgid "" "To connect to a signal via code, you need to call the ``connect()`` method " "of the signal you want to listen to. In this case, we want to listen to the " "Timer's \"timeout\" signal." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:294 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:298 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:315 msgid "" "The function ``get_node()`` looks at the Sprite2D's children and gets nodes " "by their name. For example, if you renamed the Timer node to " "\"BlinkingTimer\" in the editor, you would have to change the call to " "``get_node(\"BlinkingTimer\")``." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:321 msgid "" "We can now connect the Timer to the Sprite2D in the ``_ready()`` function." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:338 msgid "" "The line reads like so: we connect the Timer's \"timeout\" signal to the " "node to which the script is attached. When the Timer emits ``timeout``, we " "want to call the function ``_on_timer_timeout()``, that we need to define. " "Let's add it at the bottom of our script and use it to toggle our sprite's " "visibility." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:343 msgid "" "By convention, we name these callback methods in GDScript as " "\"_on_node_name_signal_name\" and in C# as \"OnNodeNameSignalName\". Here, " "it'll be \"_on_timer_timeout\" for GDScript and OnTimerTimeout() for C#." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:360 msgid "" "The ``visible`` property is a boolean that controls the visibility of our " "node. The line ``visible = not visible`` toggles the value. If ``visible`` " "is ``true``, it becomes ``false``, and vice-versa." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:364 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:370 msgid "" "That's it for our little moving and blinking Godot icon demo! Here is the " "complete ``sprite_2d.gd`` file for reference." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:435 msgid "Custom signals" msgstr "إشارات مخصصة" #: ../../docs/getting_started/step_by_step/signals.rst:437 msgid "" "This section is a reference on how to define and use your own signals, and " "does not build upon the project created in previous lessons." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:440 msgid "" "You can define custom signals in a script. Say, for example, that you want " "to show a game over screen when the player's health reaches zero. To do so, " "you could define a signal named \"died\" or \"health_depleted\" when their " "health reaches 0." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:466 msgid "" "As signals represent events that just occurred, we generally use an action " "verb in the past tense in their names." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:469 msgid "" "Your signals work the same way as built-in ones: they appear in the Node tab " "and you can connect to them like any other." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:474 #, fuzzy msgid "To emit a signal in your scripts, call ``emit()`` on the signal." msgstr "" "لبعث إشارة عن طريق النص البرمجي، استخدم الوظيفة البرمجية ``emit_signal`` أي " "\"ابعث_إشارة\":" #: ../../docs/getting_started/step_by_step/signals.rst:496 #, fuzzy msgid "" "A signal can optionally declare one or more arguments. Specify the argument " "names between parentheses:" msgstr "" "يمكن لإشارة أن تصرح عن معامل واحد أو أكثر اختيارياً، ويمكنك تحديد أسماء هذه " "المعاملات عن طريق وضعها بين قوسين:" #: ../../docs/getting_started/step_by_step/signals.rst:522 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 "" "معاملات الإشارة ستظهر في ميناء العُقد في المحرر، وغودوت سيتسخدمها ليولد وظائف " "استدعاء برمجية callback functions من أجلك، وما زال بمقدورك أن تبعث أي عدد من " "المعاملات عندما تبعث الإشارة، ولكن الأمر عائد إليك لتبعث بالقيم الصحيحة أو " "المناسبة." #: ../../docs/getting_started/step_by_step/signals.rst:527 #, fuzzy msgid "" "To emit values along with the signal, add them as extra arguments to the " "``emit()`` function:" msgstr "" "لتمرر أي قيمة، قم بإضافتها إلى المعامل الثاني second argument في الوظيفة " "البرمجية ``emit_signal`:" #: ../../docs/getting_started/step_by_step/signals.rst:550 msgid "" "Any node in Godot emits signals when something specific happens to them, " "like a button being pressed. Other nodes can connect to individual signals " "and react to selected events." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:554 msgid "" "Signals have many uses. With them, you can react to a node entering or " "exiting the game world, to a collision, to a character entering or leaving " "an area, to an element of the interface changing size, and much more." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:558 #, fuzzy 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 "" "معظم عُقد غودوت تؤمن مجموعة من الإشارات لتحديد وقوع مجموعة من الأحداث، فعلى " "سبيل المثال :ref:`Area2D مساحة_ثنائية_البُعد ` ممثلة بقطعة " "نقدية في اللعبة يمكنها أن بعث إشارة``ولوج_جسم body_entered`` في أي وقت الجسم " "الفيزيائي للاعب يدخل حيز التصادم الخاص بها، الأمر الذي يجعلك على دارية متى " "التقط اللاعب هذه القطعة النقدية." #: ../../docs/getting_started/step_by_step/signals.rst:562 #, fuzzy 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 "" "في القسم التالي :ref:` اللعبة الأولى لك`، سنقوم بإنشاء " "لعبة متكاملة متضمنة استخدامات مختلفة من الإشارات لوصلها بين عناصر اللعبة " "المختلفة." #: ../../docs/getting_started/first_2d_game/index.rst:6 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 "" "هذا المشروع هو توطئة إلى محرك الألعاب غودوت، وبالتالي نحن نفترض بأنك تملك " "بعضاً من الخبرة البرمجية السابقة، فإن كنت جديداً على البرمجة تماماً، ينبغي أن " "تبدأ هنا: :ref:`doc_scripting`." #: ../../docs/getting_started/first_2d_game/index.rst:21 #, fuzzy msgid "" "The game is called \"Dodge the Creeps!\". Your character must move and avoid " "the enemies for as long as possible." msgstr "" "تسمى هذه اللعبة \"Dodge the Creeps!\" أي راوغ الزواحف!، حيث أن الهدف من " "شخصيتك هو الحركة وتجنب الأعداء لأطول فترة ممكنة. هنا نظرة عن النتيجة " "النهائية:" #: ../../docs/getting_started/first_2d_game/index.rst:24 #: ../../docs/getting_started/first_3d_game/index.rst:19 #, fuzzy 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 #, fuzzy 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 "" "https://github.com/godotengine/godot-demo-projects/tree/master/2d/" "dodge_the_creeps" msgstr "https://github.com/godotengine/godot-demo-projects" #: ../../docs/getting_started/first_2d_game/index.rst:48 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_basics.rst:34 msgid "Prerequisites" msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:50 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:53 #, fuzzy 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:57 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:60 msgid "You can download them by clicking the link below." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:62 msgid "" "`dodge_the_creeps_2d_assets.zip `_." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:65 #: ../../docs/getting_started/first_3d_game/index.rst:55 #, fuzzy msgid "Contents" msgstr "التعليقات" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:4 #: ../../docs/tutorials/scripting/gdextension/gdextension_cpp_example.rst:18 #: ../../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 #, fuzzy 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 #, fuzzy 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 "" "شغل غودوت وأنشئ مشروعاً جديداً، ثم قم بتحميل download:`dodge_assets.zip ` ، توجد الملحقات البصرية والصوتية التي سنحتاجها في صناعة " "اللعبة لذا قم بفك ضغط هذه الملفات إلى الملف الخاص بالمشروع." #: ../../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: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 #, fuzzy msgid "Your project folder should look like this." msgstr "شجرة المشاهد الخاصة بك، ينبغي أن تكون على الشكال التالي:" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:41 #, fuzzy 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 "" "هذه اللعبة ستكون بالوضعية العمودية Portrait mode، لذا سنعدل الإعدادات " "المتعلقة بحجم نافذة اللعبة، توجه إلى المشروع > إعدادات المشروع > العَرض > " "النافذة ؛ ضع \"العرض\" إلى ``480`` \"والارتفاع\" ``720``." #: ../../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 #, fuzzy 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 "" "في هذا المشروع ستقوم بإنشاء ثلاثة مشاهد مستقلة ``اللاعب`` و ``الوحش`` وكذلك " "`` عناصر معلومات المستخدم HUD``، وهذه المشاهد الثلاثة سنضفرها بالمشهد " "``الرئيس``. في المشاريع الكبيرة، يُفضل أن تقوم بإنشاء مجلدات مختلفة للمشاهد " "المتنوعة والنصوص البرمجية الخاصة بها، لوكن تبعاً لصغر حجم هذه اللعبة نسبياً، " "بإمكانك حفظ المشاهد والنصوص البرمجية الخاصة بها إلى ملف المشروع الأساسي، أي " "المشار إليه عن طريق ``res://``. يمكنك أن تشاهد جميع ملفات المشروع في ميناء " "الملفات FileSystem Dock في الزاوية السفلية اليسرى من الشاشة:" #: ../../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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 "" "باستخدام ``المساحة-ثنائية-البُعد Area2D`` يمكننا تحديد فيما إذا تقاطع جسمان " "أو اصطدم جسم ما باللاعب، قم بتغيير اسم العُقدة إلى ``اللاعب`` وذلك عن طريق " "الضغط على اسم العُقدة، وهذه العقدة في العُقدة الرئيسة لهذا المشهد، بإمكانك " "إضافة المزيد من العُقد إلى اللاعب لإعطاء المزيد الخصائص الوظيفية." #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:39 #, fuzzy 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 #, fuzzy 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 "" "احفظ المشهد. اضغط على مَشهد > حفظ، أو بإمكانك أن تضغط على :kbd:`Ctrl + S` إن " "كان نظام التشغيل ويندوز/لينكس أو :kbd:`Cmd + S` في حالة كنت تستخدم نظام " "التشغيل ماك." #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:63 #, fuzzy msgid "Sprite animation" msgstr "الرسوميات Sprite المتحركة" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:65 #, fuzzy 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 "" "اضغط على عُقدة ``اللاعب`` وضف :ref:`AnimatedSprite رسومية-متحركة " "`كعُقدة بنت للعقدة الأساسية. عُقدة ``رسومية-متحركة " "AnimatedSprite`` ستتولى الاهتمام بالشكل والصورة المتحركة للاعب الخاص بنا. " "لاحظ أنه هنالك أيقونة إنذار بجانب هذه العُقدة، لأن عُقدة ``رسومية-متحركة " "AnimatedSprite`` تتطلب مورد :ref:`SpriteFrames إطارات-الرسومية " "`، والتي تضع في قوائم الرسومات المتحركة التي بالمقدور " "عرضها. لصناعة واحدة، ابحث عن خاصية ``الإطارات Frames`` في ميناء المستكشف " "Inspector واضغط على: \"[خالية] -> إطار-رسوميات جديد\"، الأمر الي سيفتح لوحة " "إطارات-الرسوميات بصورة تلقائية." #: ../../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 #, fuzzy 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 "" "على اليسار ستشاهد قائمة بالرسوميات المتحركة. اضغط على \"الافتراضية\" وقم " "بإعادة تسميتها إلى \"اليمين right\"، ومن ثمَّ اضغط على زر \"إضافة\" لإنشاء " "رسومية متحركة جديدة اسمها \"أعلى up\". اسحب الصورتين الخاصتين بكل من " "الرسوميات المتحركة المسماة `playerGrey_up[1/2]`` وكذلك " "``playerGrey_walk[1/2]`` إلى جانب \"إطارات الرسوميات المتحركة\" من اللوحة:" #: ../../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 #, fuzzy 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 "" "صورة اللاعب كبيرة قليلاً بالنسبة لنافذة اللعبة، لذا سنقوم بتحجيمها للحجم " "الأصغر. اضغط على عُقدة ``رسومية-متحركة AnimatedSprite`` وقم بتغيير قيمة " "الخاصية ``Scale`` إلى القيم ``(0.5, 0.5)``، بإمكانك إيجاداها في ميناء " "المُتفحص تحت ترويسة `` العقدة-ثنائية-البُعد Node2D``." #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:100 #, fuzzy 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 "" "أخيراً، أضف عُقدة :ref:`CollisionShape2D جسم-تصادم-ثنائي-" "البُعد` كعقدة بنت لـ ``Player``، وهذه العُقدة ستحدد " "\"صندوق الفعالية Hitbox\" أو حدود منطقة التصادم. لأجل هذه الشخصية إن " "عقدة``شكل-محفظي-ثنائي-البُعد CapsuleShape2D``ستفي بالغرض، لذا إلى جانب " "\"الشكل\" في ميناء المتفحص اضغط على \"[فارغ] -> \"شكل-محفظي-ثنائي-البُعد " "جديد\". باستخدام المقابض الثنائية، قم بتعديل حجم الشكل ليناسب الرسومية " "Sprite بالصورة المُثلى:" #: ../../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 #, fuzzy 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 #, fuzzy 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 "" "الآن علينا إضافة بعض الوظائف التي يس بالمقدور الحصول عليها من العُقد المبنية " "سلفاً، لذا سنقوم بذلك عن طريق إضافة نص برمجي. اضغط على عُقدة ``Player`` " "\"اللاعب\" واضغط على زر \"إضافة نص برمجي\":" #: ../../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 "" "إن كنت تستخدم نص برمجي بلغة #C أو أي لغة برمجية أخرى، اخترها من القائمة " "المنسدلة `اللغة` قبل أن تضغط إنشاء." #: ../../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 "" "ابدأ بالتعريف عن عناصر المحتولات التي سوف نحتاجها في هذا الموضوع object:" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:48 #, fuzzy 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 "" "باستخدام الكلمة ``export`` \"تصدير\" مع المتحول الأول ``speed`` أي " "\"السرعة\" يمكننا أن نعدل قيمة هذا المتحول من المُتفحص، وهذا الأمر سيكون " "مفيداً عندما تملك قيماً ترغب في تعديلها بذات الطريقة التي تُعدل فيها خصائص " "المبنية سلفاً للعُقد. اضغط على عُقدة ``Player`` أي اللاعب، وسترى الخصائص تظهر " "في قسم \"متحولات النص البرمجي\" في المُتفحص. تذكر أنك إن غيرت القيمة هنا، " "فإنها ستتجاوز القيمة الموجودة في النص البرمجي." #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:57 #, fuzzy 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 "" "إن كنت تستخدم لغة البرمجة #C، أنت بحاجة (لإعادة) بناء تجميعات المشروع " "project assemblies لكي ترى القيم أو الإشارات الجديدة المُصدرة، وهذا البناء " "يمكن أن يتم يدوياً عن طريق الضغط على كلمة \"Mono\" في أسفل نافذة المحرر وذلك " "لإظهار لوحة Mono، ومن ثمَّ الضغط على زر \"بناء المشروع\"." #: ../../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 "" "تستدعى الوظيفة البرمجية ``_ready()`` في كل مرة تدخل عُقدة معينة إلى شجرة " "المشاهد، أي أنه الوقت المناسب لمعرفة أبعاد نافذة اللعبة:" #: ../../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 "" "الآن يمكننا استخدام الوظيفة البرمجية ``_process()`` لتحديد ما الذي سيفعله " "اللاعب. إن هذه الوظيفة ستسدعى مع كل إطار لذا سنستخدمها لتحديث العناصر في " "اللعبة الخاص بنا خاصة تلك التي نتوقع تغيرها باستمرار، من أجل اللاعب علينا " "القيام بالتالي:" #: ../../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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 "" "يمكن التأكد فيما إذا تم ضغط زر معين باستخدام ``Input.is_action_pressed()``، " "والذي سيرجع ``true`` أي \"نعم\" إن تم ضغط الزر، أو ``false`` أي \"كلا\" إن " "لم يتم ضغطه." #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:199 #, fuzzy 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 "" "سبندأ بجعل قيمة \"السرعة\" ``velocity`` لتكون ``(0, 0)`` (لأنه بصورة عامة لا " "ينبغي للاعب أن يتحرك). ومن ثمَّ نتحقق من كل مُدخل من المدخلات فنُضيف ونطرح إلى " "قيمة \"السرعة\" ``velocity`` للحصول على التوجيه النهائي. على سبيل المثال إن " "ما بقيت ضاغطاً على \"اليمين\" ``right`` و\"الأسفل\" ``down`` بذات الوقت إن " "مُركب vector \"السرعة\" ``velocity`` سيكون ``(1, 1)``. في هذه الحالة نحن نضيف " "حركة أفقية وحركة شاقولية لذا فإن اللاعب سيتحرك بصورة *أسرع* من تحركه بمنحى " "أفقية فقط." #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:206 #, fuzzy 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 "" "يمكنا منع ذاك السلوك عن طريق *تطبيع normalize* السُرعة، الأمر الذي يعني جعل " "قيمة *الطول* الخاصة بالسرعة ``1`` ومن ثم ضربها بالسرعة المُختارة. بهذه " "الطريقة نمنع السرعات الإضافية عند التحرك بصورة قطرية." #: ../../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 "" "إن لم تستخدم حسابات المُتجهات من قبل، أو احتجت لإنعاش المعلومات المتعلقة بها، " "يمكن الاطلاع على شرح استخدامها في غودوت في :ref:`doc_vector_math`. من المفيد " "معرفة تلك المعلومات ولكنها ليست ذات صلة ببقية هذه التعليمات." #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:214 #, fuzzy 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 #, fuzzy msgid "" "``$`` is shorthand for ``get_node()``. So in the code above, " "``$AnimatedSprite2D.play()`` is the same as " "``get_node(\"AnimatedSprite2D\").play()``." msgstr "" "إن الرمز ``$`` ما هو إلا اختصار ``get_node()`` أي \"جلب_العُقدة\" باللغة " "العربية، لذا في النص البرمجي أعلاه إن ``$AnimatedSprite.play()`` هي مشابهة " "تماماً لـ``get_node(\"AnimatedSprite\").play()``." #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:221 #, fuzzy 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 "" "في لغة البرمجة النصية GDScript إن الرمز ``$`` يعطينا العُقد في المسار النسبي " "بالنسبة للعُقدة الحالية، أو يرجع \"لا شيء\" ``null`` إن لم يجد أي عُقدة. وبما " "أن عُقدة الرسومية-المتحركة AnimatedSprite هي عُقدة بنت للعُقدة الحالية؛ يمكننا " "استخدام ``$AnimatedSprite``." #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:226 #, fuzzy 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 "" "والآن بما أننا نمتلك اتجاه حركةـ يمكننا تعديل موقع اللاعب. وكذلك يمكننا " "استخدام الوظيفة البرمجية ``clamp()`` - ترجمتها \"التشبث\" - من أجل منع شخصية " "اللاعب من مغادرة الشاشة. *التشبث بقيمة* يعني أنه يحصر قيمتها في مجال معين. " "ضف التالي إلى أسفل الوظيفة البرمجية ``_process``:" #: ../../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 "" "إن المَعلم `delta` في الوظيفة البرمجية ‍`_process()` يشير إلى *مدة الإطار* - " "أي الوقت الذي استغرقه الإطار السابق ليحمل بصورة كاملة. باستخدام هذه القيمة " "يمكننا أن نضمن أن الحركة ستبقى ذاتها متناسقة بغض النظر عن الهبوط أو الزيادة " "في معدل الإطارات." #: ../../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 #, fuzzy 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 "" "لاحظ أن إشارة \"الضربة hit\" الخاصة بنا هناك أيضاً! وبما أن أعداؤنا سيكونون " "عُقد``RigidBody2D`` \"أجسام ساكنة ثنائية البُعد\"، فإننا بأن تكون إشارة " "``body_entered( Object body )``؛ وهذه الإشارة ستبعث عندما يحدث تماس ما بين " "اللاعب وأي جسم كان. اضغط على زر \"الوصل..\" ومن ثمَّ \"الوصل\" مرة أخرى في " "نافذة \"وصل الإشارات\". نحن لسنا بحاجة لتعديل أي من هذه الإعدادات - يتكفل " "غودوت بمهمة إنشاء وظيفة برمجية في النص البرمجي للاعب الخاص بك بصورة تلقائية. " "ستستدعى الوظيفة البرمجية في أي وقت تُبعث فيها الإشارة- لكونها *تتكفل وتدبر* " "أمر الإشارة." #: ../../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 "" "في كل مرة يصطدم فيها عدو مع اللاعب، يتم بعث إشارة معينة، لذا نحن بحاجة إلى " "تعطيل تضارب (تصادم) اللاعب بحيث لا نثير أكثر من إشارة ``hit`` ضربة واحدة في " "كل مرة." #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:423 #, fuzzy 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 "" "إن تعطيل شكل التصادر الخاص بمنطقة ما قد يسبب خطأ إن ما حدث في خضم عمليات " "معالجة التصادمات في المحرك، لذا باستخدام الوظيفة البرمجية " "``set_deferred()``يكون بالمقدور جعل غودوت يقوم بتعليق عملية تعطيل الشكل حتى " "يصبح الوقت آمناً للقيام بذلك." #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:428 #, fuzzy 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 #, fuzzy msgid "Creating the enemy" msgstr "إنشاء المحتوى" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:6 #, fuzzy 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 #, fuzzy msgid "" "We'll create a ``Mob`` scene, which we can then *instance* to create any " "number of independent mobs in the game." msgstr "" "سنقوم بإنشاء كل هذا في مشهد``Mob``الوحش، ومن ثم بإمكاننا *نمذجة* هذا المشهد " "لإنشاء أنواع مستقلة من هذه الوحوش في اللعبة." #: ../../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 #, fuzzy 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 ":ref:`RigidBody2D ` (مسماة:``Mob``)" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:20 #, fuzzy msgid ":ref:`AnimatedSprite2D `" msgstr ":ref:`AnimatedSpriteالرسومية_المتحركة `" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:21 msgid ":ref:`CollisionShape2D `" msgstr ":ref:`CollisionShape2D شكل تصادم ثنائي البُعد`" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:22 #, fuzzy msgid ":ref:`VisibleOnScreenNotifier2D `" msgstr "" ":ref:`VisibilityNotifier2D منبه البصري ثنائي " "الأبعاد` (المسماة``Visibility``)" #: ../../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." msgstr "لا تنس بأن تجعل الأبناء غير قابلين للاختيار، كما فعلت في مشهد اللاعب." #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:27 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:32 #, fuzzy 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 "" "في خصائص :ref:`RigidBody2Dالجسم الساكن ثنائي البُعد ` حدد " "قيمة ``مقياس الجاذبية Gravity Scale`` إلى ``0``؛ بحيث لا تسقط الوحوش إلى " "الأسفل، بالإضافة إلى ذلك تحت قسم ``فيزياء الجسم ثنائي الأبعاد " "PhysicsBody2D`` اضغط على خاصية ``القناع Mask`` وأزل تحديد المربع الأول، وهذا " "بدوره سيضمن عدم تصادم الوحوش مع بعضها بعضاً." #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:40 #, fuzzy 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 "" "قم بتجهيز :ref:`AnimatedSprite الرسم المتحرك ` كما " "فعلت مع اللاعب، ولكن في هذه المرة لدينا 3 أنواع من الرسومات المتحركة " "``الطيران fly``و ``السباحة swim`` وكذلك ``المشي walk``، ضع خاصية ``التشغيل " "Playing`` في المُتصفح على \"تشغيل\" وعدل إعداد \"السرعة (عدد الإطارات في " "الثانية)\" كما في الصورة أدناه. سنقوم باختيار واحدة من هذه الرسوميات " "المتحركة عشوائياً بحيث تكون الوحوش متنوعاً نوعاً ما." #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:44 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:48 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:50 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:53 #, fuzzy 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 "" "كما في صورة اللاعب، صور هذه الوحوش بحاجة لإعادة التحجيم وتصغيرها. حدد قيمة " "الخاصية ``القياس Scale`` التابع لِ ``الرسومية المتحركة AnimatedSprite`` إلى " "``(0.75, 0.75)``." #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:56 #, fuzzy 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 "" "كما في مشهد اللاعب ``Player``، قم بإضافة شكل محفظي ثنائي الأبعاد " "``CapsuleShape2D`` لأجل التصادمات. من أجل المحاذاة مع الصورة، ستكون بحاجة " "إلى تحديد الخاصية ``درجات التدوير`` إلى ``90`` تحت عنوان العُقدة ثنائية البُعد " "``Node2D``." #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:60 #, fuzzy msgid "Save the scene." msgstr "حفظ المشهد" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:63 msgid "Enemy script" msgstr "النص البرمجي للعدو" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:65 #, fuzzy msgid "Add a script to the ``Mob`` like this:" msgstr "" "قم بإضافة نص برمجي إلى ``Mob`` ومن ثمَّ قم بإضافة عناصر المتحولات التالية:" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:81 #, fuzzy 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 "" "الآن دعنا نلق نظرة على بقية النص البرمجي. في الوظيفة البرمجية ``_ready()`` " "سنختار واحدة من هذه الأنواع الثلاثة للرسوميات المتحركة عشوائياً:" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:101 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:105 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:110 msgid "Finally, we call ``play()`` to start playing the chosen animation." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:112 #, fuzzy 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 "" "آخر جزء من هذه التحفة هو جعل الوحوش تحذف نفسها عندما تغادر حدود الشاشة. صل " "إشارة ``screen_exited()`` من عُقدة الوضوح ``Visibility`` وقم بإضافة التالي " "إلى النص البرمجي:" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:130 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:132 msgid "This completes the `Mob` scene." msgstr "مشهد الوحش `Mob` المكتمل." #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:134 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 #, fuzzy 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 #, fuzzy 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 "" "حان الوقت لجمع جميع تلك الأجزاء سويّةً. أنشئ مشهداً جديداً وأضف " "إليه :ref:`عُقدة` وسمها \"ألرئيس\" ``Main``. اضغط على زر النمذجة " "واختر المشهد المحفوظ ``Player.tscn``." #: ../../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 "" ":ref:`Timer ` (المسمى``StartTimer``) - لإعطاء نوع من التأخير " "قبل البدء" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:25 #, fuzzy msgid "" ":ref:`Marker2D ` (named ``StartPosition``) - to indicate the " "player's start position" msgstr "" ":ref:`Position2D توضع ثنائي الأبعاد ` " "(المسمى``StartPosition``) - لتحديد مكان بدء اللاعب" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:28 #, fuzzy msgid "" "Set the ``Wait Time`` property of each of the ``Timer`` nodes as follows " "(values are in seconds):" msgstr "" "حدد خاصية ``وقت الانتظار Wait Time`` لكل من عُقد ``المؤقت Timer`` كما يلي:" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:30 msgid "``MobTimer``: ``0.5``" msgstr "``MobTimer مؤقت الوحش``: ``0.5``" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:31 msgid "``ScoreTimer``: ``1``" msgstr "``ScoreTimerمؤقت التسجيل والنتيجة ``: ``1``" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:32 msgid "``StartTimer``: ``2``" msgstr "``StartTimer مؤقت البدء``: ``2``" #: ../../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 "" "بالإضافة إلى ذلك، حدد خاصية ``مرّة واحدة One Shot`` التابعة لمؤقت البدء`` " "StartTimer`` بحيث تكون \"شغّال On\" كما يحب أن تحدد قيمة خاصية ``الموقع " "Position`` التابع لعُقدة ``موقع البداية StartPosition`` بحيث تكون (240, " "450)``." #: ../../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 #, fuzzy 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 "" "العُقدة الرئيسة ستقوم بخلق وحوش جديدة، ونرغب بإن تكون تلك العملية في مواقع " "عشوائية على إطار الشاشة. قم بإضافة عُقدة :ref:`Path2D مسار ثنائي " "البُعد` وسمها ``مسار الوحش MobPath`` بحيث تكون عُقدة بنت للعُقدة " "الرئيسة ``MobPath``. عندما تختار عُقدة ``المسار ثنائي البُعد Path2D`` حيث أنك " "سترى حفنة جديدة من الأزارار في القسم العلوي من المُحرر:" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:47 #, fuzzy 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 "" "بعد توضيع النقطة ``4`` في الصورة أدناه، اضغط على زر \"إغلاق المنحنى\" " "وبالتالي سيكون إنشاء المنحنى قد تم." #: ../../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 "" "بما أنه قد تم تحديد المسار، قم بإضافة عُقدة بنت للعُقدة ``MobPath`` بحيث " "تكون :ref:`PathFollow2Dتتبع المسار ثنائي البُعد ` وسمها " "``موقع خلق الوحوش MobSpawnLocation``، ما أن تتحرك هذه العُقدة حتى تقوم " "بالإدارة وتتبع المسار، لذا يمكننا استخدامها لاختيار موقع وتوجه عشوائي على " "طول المسار." #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:68 #, fuzzy 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 #, fuzzy 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 "" "قم بإضافة نص برمجي للعُقدة الرئيسة``Main``. في أعلى النص البرمجي نستخدم " "``export (PackedScene)`` أي يُصدر (المشهد الموضب) ليسمح لنا باختيار مشهد " "الوحش الذي نرغب في نمذجته." #: ../../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 #, fuzzy msgid "" "Drag ``mob.tscn`` from the \"FileSystem\" dock and drop it in the **Mob " "Scene** property." msgstr "" "اسحب مشهد ``Mob.tscn``من لوحة \"ملفات النظام\" وأسقطها تحت خاصية ``Mob`` تحت " "متحولات النص البرمجي للعُقدة الرئيسة ``Main``." #: ../../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 #, fuzzy 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 #, fuzzy 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 "" "تالياً، اضغط على اللاعب وصل إشارة الضربة ``hit`، نرغب في إنشا وظيفة برمجية " "اسمها \"انتهت اللعبة\" ``game_over`` والتي ستتولى العمليات المترتبة على " "إنتهاء اللعبة. اكتب \"game_over\" في الحقل الخاص من أجل \"الدالة المستمعة\" " "في أسفل نافذة \"إنشاء الوصلات\". ضف النص البرمجي التالي بالإضافة إلى الوظيفة " "البرمجية \"لعبة_جديدة\" ``new_game`` لكي يكون كل شيء جاهزاً من أجل جولة جديدة:" #: ../../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 #, fuzzy 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 "" "الآن دعنا نصل إشارة انتهاء الوقت ``timeout()`` من كل عُقدة مؤقت (``StartTimer " "مؤقت البدء ``, ``ScoreTimer مؤقت النتيجة`` ,و`` مؤقت الوحش MobTimer``) إلى " "النص البرمجي الرئيس. إن مؤقت البدء``StartTimer`` هو الذي سيبدأ المؤقتين " "الآخرين. إن مؤقت النتيجة ``ScoreTimer``سيضف 1 إلى قيمة النتيجة." #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:199 #, fuzzy 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 "" "في الوظيفة البرمجية ``_on_MobTimer_timeout()`` سنقوم بإنشائ نمذجة للوحش " "واختيار موقع عشوائي على طول ``المسار ثنائي البُعد Path2D`` ومن ثم جعل الوحش " "متحركاً. عُقدة تتبع المسار ثنائي البُعد ``PathFollow2D`` تلتف وتتبع المسار " "بصورة تلقائية، لذا من الممكن استخدامها لتحديد توجيه الوحش وكذلك موقعه." #: ../../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 "" "لاحظ بأنه ينبغي إضافة النمذجة الجديدة للمشهد باستخدام الوظيفة البرمجية " "``add_child()``." #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:267 #, fuzzy 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 "" "في الوظائف البرمجية التي تطلب درجات فإن GDScript يستخدم *الراديان radians* " "وليس الدرجات العادية. لذا إن كنت مرتاحاً أكثر بالعمل مع الدرجات يمكنك استخدام " "الوظيفة البرمجية ``deg2rad()`` و ``rad2deg()`` للتحويل بينهما." #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:275 #, fuzzy 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 #, fuzzy 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 "" "آخر جزء تحتاجه لعبتنا هو عناصر واجهة المستخدم UI: أي واجهة تعرض التفاصيل مثل " "النتيجة ورسالة \"انتهت اللعبة\"، وزر إعادة التشغيل مثلاً. أنشئ مشهداً جديداً " "وقم بإضافة عُقدة :ref:`CanvasLayer ` وسمها ``HUD``، إن " "\"HUD\" يعني \"heads-up display\" أي العناصر المرئية التي تمدنا بمعلومات " "وتكون ظاهرة بصورة فوقية على باقي عناصر اللعبة." #: ../../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 "ScoreLabel" #: ../../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 "رسالة" #: ../../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 "StartButton زر_البدء" #: ../../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 #, fuzzy 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 #, fuzzy 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: `Squash the Creep source code `__." msgstr "" "بالإضافة لهذه المستندات، ربما تود أيضا أن تلقي نظرة على النماذج المتنوعة من " "`مشاريع غودو الجاهزة `_." #: ../../docs/getting_started/first_3d_game/index.rst:40 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:45 #, fuzzy 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:49 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 #, fuzzy 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 #, fuzzy 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 "" "لمعرفة آلية عمل النمذجة، دعنا نبدأ بتحميل مشروع " "بسيط: :download:`instancing.zip `." #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:13 #, fuzzy 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 #, fuzzy msgid "Click *Import* to open the project in the editor." msgstr "" "اضغط على الثلاث نقاص الموجودة في الزوية أعلى اليسار, و اختار **بيانات " "محلية**." #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:29 msgid "" "A window notifying you that the project was generated by an older Godot " "version may appear. Click *Convert Full Project* to convert the project to " "your current Godot version." 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 #, fuzzy 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 #, fuzzy msgid "" "Save the scene as ``main.tscn`` by pressing :kbd:`Ctrl + S` (:kbd:`Cmd + S` " "on macOS)." msgstr "" "احفظ المشهد. اضغط على مَشهد > حفظ، أو بإمكانك أن تضغط على :kbd:`Ctrl + S` إن " "كان نظام التشغيل ويندوز/لينكس أو :kbd:`Cmd + S` في حالة كنت تستخدم نظام " "التشغيل ماك." #: ../../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 #, fuzzy 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 -> Enabled* by clicking the checkbox." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:154 #, fuzzy 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 #, fuzzy 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 #, fuzzy msgid "Save the scene as ``player.tscn``." msgstr "أخيراً، احفظ المشهد باسم ``sayhello.tscn``." #: ../../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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 "|image3|" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:454 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:351 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:373 #: ../../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:621 #: ../../docs/community/asset_library/using_assetlib.rst:189 #, fuzzy msgid "image3" msgstr "|image3|" #: ../../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 "|image4|" #: ../../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:352 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:374 #: ../../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:622 #: ../../docs/community/asset_library/using_assetlib.rst:190 #, fuzzy msgid "image4" msgstr "|image4|" #: ../../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:93 #: ../../docs/community/asset_library/using_assetlib.rst:164 msgid "|image11|" msgstr "|image11|" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:462 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:359 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:459 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:629 #: ../../docs/community/asset_library/using_assetlib.rst:197 #, fuzzy msgid "image11" msgstr "|image11|" #: ../../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 "|image5|" #: ../../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:353 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:375 #: ../../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:623 #: ../../docs/community/asset_library/using_assetlib.rst:191 #, fuzzy msgid "image5" msgstr "|image5|" #: ../../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:354 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:376 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:454 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:624 #: ../../docs/community/asset_library/using_assetlib.rst:192 #, fuzzy msgid "image6" msgstr "|image1|" #: ../../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:189 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:72 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:59 #: ../../docs/community/asset_library/using_assetlib.rst:124 msgid "|image7|" msgstr "|image7|" #: ../../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:355 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:377 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:455 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:625 #: ../../docs/community/asset_library/using_assetlib.rst:193 #, fuzzy msgid "image7" msgstr "|image7|" #: ../../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:194 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:106 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:64 #: ../../docs/community/asset_library/using_assetlib.rst:132 msgid "|image8|" msgstr "|image8|" #: ../../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:356 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:378 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:456 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:626 #: ../../docs/community/asset_library/using_assetlib.rst:194 #, fuzzy msgid "image8" msgstr "|image8|" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:417 msgid "" "You can run the scene by pressing :kbd:`F6` 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/08.score_and_replay.rst:167 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:69 #: ../../docs/community/asset_library/using_assetlib.rst:153 msgid "|image9|" msgstr "|image9|" #: ../../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:357 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:457 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:627 #: ../../docs/community/asset_library/using_assetlib.rst:195 #, fuzzy msgid "image9" msgstr "|image9|" #: ../../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/08.score_and_replay.rst:191 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:85 #: ../../docs/community/asset_library/using_assetlib.rst:159 msgid "|image10|" msgstr "|image10|" #: ../../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:358 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:458 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:628 #: ../../docs/community/asset_library/using_assetlib.rst:196 #, fuzzy msgid "image10" msgstr "|image10|" #: ../../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 #, fuzzy 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 #, fuzzy msgid "Add a :ref:`CollisionShape3D `." msgstr ":ref:`CollisionShape2D شكل تصادم ثنائي البُعد`" #: ../../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 #, fuzzy msgid "Attach a script to the ``Mob``." msgstr "" "قم بإضافة نص برمجي إلى ``Mob`` ومن ثمَّ قم بإضافة عناصر المتحولات التالية:" #: ../../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 #, fuzzy 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 #, fuzzy 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 "" "في **مساحة العمل ثلاثية الأبعاد** يمكنك العمل على السطوح والمجسمات، والإنارة " "وتصميم المراحل للألعاب ثلاثية الأبعاد. اضغط على :kbd:`F2` (أو :kbd:`Alt + " "2` لنظام تشغيل ماك) لتفعيله." #: ../../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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 *Width* to ``720`` and the *Height* to ``540``." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:29 #, fuzzy 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 #, fuzzy msgid "Adding placeholder cylinders" msgstr "أنواع النوّاب Placeholder types" #: ../../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:98 #: ../../docs/community/asset_library/using_assetlib.rst:172 msgid "|image12|" msgstr "|image12|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:360 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:460 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:630 #: ../../docs/community/asset_library/using_assetlib.rst:198 #, fuzzy msgid "image12" msgstr "|image12|" #: ../../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:111 #: ../../docs/community/asset_library/using_assetlib.rst:179 msgid "|image13|" msgstr "|image13|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:361 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:461 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:631 #: ../../docs/community/asset_library/using_assetlib.rst:199 #, fuzzy msgid "image13" msgstr "|image13|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:111 msgid "" "Click the sphere icon to open the material resource. You get a preview of " "the material and a long list of sections filled with properties. You can use " "these to create all sorts of surfaces, from metal to rock or water." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:115 msgid "Expand the *Albedo* section." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:119 msgid "" "Set the color to something that contrasts with the background, like a bright " "orange." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:122 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:221 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:120 #: ../../docs/community/asset_library/using_assetlib.rst:126 msgid "|image14|" msgstr "|image14|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:362 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:462 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:632 #: ../../docs/community/asset_library/using_assetlib.rst:200 #, fuzzy msgid "image14" msgstr "|image14|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:124 msgid "" "We can now use the cylinders as guides. Fold them in the *Scene* dock by " "clicking the grey arrow next to them. Moving forward, you can also toggle " "their visibility by clicking the eye icon next to *Cylinders*." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:128 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:310 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:139 #, fuzzy msgid "|image15|" msgstr "|image1|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:363 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:463 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:633 #, fuzzy msgid "image15" msgstr "|image1|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:130 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:133 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:315 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:150 #, fuzzy msgid "|image16|" msgstr "|image1|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:364 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:464 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:634 #, fuzzy msgid "image16" msgstr "|image1|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:135 msgid "You can hover any icon to see a tooltip describing the tool." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:137 msgid "" "Click in the center of each cylinder to create a point. Then, click the " "*Close Curve* icon in the toolbar to close the path. If any point is a bit " "off, you can click and drag on it to reposition it." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:141 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:322 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:155 #, fuzzy msgid "|image17|" msgstr "|image1|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:365 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:465 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:635 #, fuzzy msgid "image17" msgstr "|image1|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:143 #, fuzzy msgid "Your path should look like this." msgstr "شجرة المشاهد الخاصة بك، ينبغي أن تكون على الشكال التالي:" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:145 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:333 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:161 #, fuzzy msgid "|image18|" msgstr "|image1|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:366 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:466 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:636 #, fuzzy msgid "image18" msgstr "|image1|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:147 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:151 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:342 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:168 #, fuzzy msgid "|image19|" msgstr "|image1|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:367 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:467 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:637 #, fuzzy msgid "image19" msgstr "|image1|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:153 msgid "With that, we're ready to code the spawn mechanism." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:156 #, fuzzy msgid "Spawning monsters randomly" msgstr "خلق الوحوش" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:158 #, fuzzy msgid "Right-click on the ``Main`` node and attach a new script to it." msgstr "" "اضغط بالزر الأيمن على عُقدة اللوحة ومن ثمَّ اختر \"إضافة نص برمجي\" من القائمة:" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:160 msgid "" "We first export a variable to the *Inspector* so that we can assign " "``mob.tscn`` or any other monster to it." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:182 msgid "" "We want to spawn mobs at regular time intervals. To do this, we need to go " "back to the scene and add a timer. Before that, though, we need to assign " "the ``mob.tscn`` file to the ``mob_scene`` property above (otherwise it's " "null!)" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:186 msgid "" "Head back to the 3D screen and select the ``Main`` node. Drag ``mob.tscn`` " "from the *FileSystem* dock to the *Mob Scene* slot in the *Inspector*." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:189 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:348 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:172 #, fuzzy msgid "|image20|" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:368 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:468 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:638 #, fuzzy msgid "image20" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:191 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:193 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:176 #, fuzzy msgid "|image21|" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:369 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:639 #, fuzzy msgid "image21" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:195 msgid "" "In the *Inspector*, set its *Wait Time* to ``0.5`` seconds and turn on " "*Autostart* so it automatically starts when we run the game." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:198 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:200 #, fuzzy msgid "|image22|" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:370 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:640 #, fuzzy msgid "image22" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:200 msgid "" "Timers emit a ``timeout`` signal every time they reach the end of their " "*Wait Time*. By default, they restart automatically, emitting the signal in " "a cycle. We can connect to this signal from the *Main* node to spawn " "monsters every ``0.5`` seconds." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:205 msgid "" "With the *MobTimer* still selected, head to the *Node* dock on the right, " "and double-click the ``timeout`` signal." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:208 #, fuzzy msgid "|image23|" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:371 #, fuzzy msgid "image23" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:210 msgid "Connect it to the *Main* node." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:212 #, fuzzy msgid "|image24|" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:372 #, fuzzy msgid "image24" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:214 msgid "" "This will take you back to the script, with a new empty " "``_on_mob_timer_timeout()`` function." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:217 msgid "Let's code the mob spawning logic. We're going to:" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:219 #, fuzzy msgid "Instantiate the mob scene." msgstr "حفظ المشهد" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:220 msgid "Sample a random position on the spawn path." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:221 msgid "Get the player's position." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:222 msgid "" "Call the mob's ``initialize()`` method, passing it the random position and " "the player's position." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:224 msgid "Add the mob as a child of the *Main* node." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:266 msgid "" "Above, ``randf()`` produces a random value between ``0`` and ``1``, which is " "what the *PathFollow* node's ``progress_ratio`` expects: 0 is the start of " "the path, 1 is the end of the path. The path we have set is around the " "camera's viewport, so any random value between 0 and 1 is a random position " "alongside the edges of the viewport!" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:272 msgid "" "Note that if you remove the ``Player`` from the main scene, the following " "line" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:284 msgid "gives an error because there is no $Player!" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:286 msgid "Here is the complete ``main.gd`` script so far, for reference." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:340 msgid "" "You can test the scene by pressing :kbd:`F6`. You should see the monsters " "spawn and move in a straight line." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:343 #, fuzzy msgid "|image25|" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:373 #, fuzzy msgid "image25" msgstr "|image2|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:345 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:186 msgid "" "Click on it to reveal a field where you can write a tag name. Enter \"mob\" " "in the field and click the *Add* button." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:191 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:196 msgid "" "We can now use the group from the code to distinguish collisions with " "monsters from collisions with the floor." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:200 msgid "Coding the squash mechanic" msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:202 msgid "Head back to the *Player* script to code the squash and bounce." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:204 msgid "" "At the top of the script, we need another property, ``bounce_impulse``. When " "squashing an enemy, we don't necessarily want the character to go as high up " "as when jumping." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:223 msgid "" "Then, after the **Jumping** codeblock we added above in " "``_physics_process()``, add the following loop. With ``move_and_slide()``, " "Godot makes the body move sometimes multiple times in a row to smooth out " "the character's motion. So we have to loop over all collisions that may have " "happened." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:228 msgid "" "In every iteration of the loop, we check if we landed on a mob. If so, we " "kill it and bounce." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:231 msgid "" "With this code, if no collisions occurred on a given frame, the loop won't " "run." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:293 msgid "That's a lot of new functions. Here's some more information about them." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:295 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:299 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:307 msgid "" "The method ``is_in_group()`` is available on every :ref:`Node`." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:309 msgid "" "To check that we are landing on the monster, we use the vector dot product: " "``Vector3.UP.dot(collision.get_normal()) > 0.1``. The collision normal is a " "3D vector that is perpendicular to the plane where the collision occurred. " "The dot product allows us to compare it to the up direction." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:314 msgid "" "With dot products, when the result is greater than ``0``, the two vectors " "are at an angle of fewer than 90 degrees. A value higher than ``0.1`` tells " "us that we are roughly above the monster." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:318 msgid "" "After handling the squash and bounce logic, we terminate the loop early via " "the ``break`` statement to prevent further duplicate calls to " "``mob.squash()``, which may otherwise result in unintended bugs such as " "counting the score multiple times for one kill." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:322 msgid "" "We are calling one undefined function, ``mob.squash()``, so we have to add " "it to the Mob class." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:325 msgid "" "Open the script ``mob.gd`` by double-clicking on it in the *FileSystem* " "dock. At the top of the script, we want to define a new signal named " "``squashed``. And at the bottom, you can add the squash function, where we " "emit the signal and destroy the mob." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:361 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:363 msgid "We will use the signal to add points to the score in the next lesson." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:365 msgid "" "With that, you should be able to kill monsters by jumping on them. You can " "press :kbd:`F5` to try the game and set ``main.tscn`` as your project's main " "scene." msgstr "" #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:368 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy msgid "Score and replay" msgstr "ScoreLabel" #: ../../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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy msgid "Save the scene as ``music_player.tscn``." msgstr "أخيراً، احفظ المشهد باسم ``sayhello.tscn``." #: ../../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 #, fuzzy msgid "Character animation" msgstr "الرسوميات Sprite المتحركة" #: ../../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 #, fuzzy 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 "مكتبة المُلحقات" #: ../../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:644 #, fuzzy msgid "Autoplay" msgstr "تحميل تلقائي" #: ../../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:61 msgid "" "You should see the gray ribbon widen a bit. It shows you the start and end " "of your animation and the vertical blue line is your time cursor." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:66 msgid "" "You can click and drag the slider in the bottom-right to zoom in and out of " "the timeline." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:72 #, fuzzy msgid "The float animation" msgstr "تشغيل الرسم المتحرك المناسب." #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:74 msgid "" "With the animation player node, you can animate most properties on as many " "nodes as you need. Notice the key icon next to properties in the " "*Inspector*. You can click any of them to create a keyframe, a time and " "value pair for the corresponding property. The keyframe gets inserted where " "your time cursor is in the timeline." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:80 msgid "" "Let's insert our first keys. Here, we will animate both the position and the " "rotation of the ``Character`` node." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:83 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:89 msgid "" "For this tutorial, just create RESET Track(s) which is the default choice" msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:91 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:95 msgid "" "You can click and drag on the diamonds to move them in time. Move the " "position key to ``0.3`` seconds and the rotation key to ``0.1`` seconds." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:100 msgid "" "Move the time cursor to ``0.5`` seconds by clicking and dragging on the gray " "timeline." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:103 msgid "|timeline_05_click|" msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:643 msgid "timeline_05_click" msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:105 msgid "" "In the *Inspector*, set the *Position*'s *Y* axis to ``0.65`` meters and the " "*Rotation*' *X* axis to ``8``." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:108 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:113 msgid "Create a keyframe for both properties" msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:115 msgid "|second_keys_both|" msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:642 msgid "second_keys_both" msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:117 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:124 msgid "" "A lecture on the principles of animation is beyond the scope of this " "tutorial. Just note that you don't want to time and space everything evenly. " "Instead, animators play with timing and spacing, two core animation " "principles. You want to offset and contrast in your character's motion to " "make them feel alive." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:130 msgid "" "Move the time cursor to the end of the animation, at ``1.2`` seconds. Set " "the Y position to about ``0.35`` and the X rotation to ``-9`` degrees. Once " "again, create a key for both properties." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:134 msgid "|animation_final_keyframes|" msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:641 msgid "animation_final_keyframes" msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:136 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:141 msgid "" "You can see that the engine interpolates between your keyframes to produce a " "continuous animation. At the moment, though, the motion feels very robotic. " "This is because the default interpolation is linear, causing constant " "transitions, unlike how living things move in the real world." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:146 msgid "We can control the transition between keyframes using easing curves." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:148 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:152 msgid "" "You can edit the properties of both keys simultaneously in the *Inspector*, " "where you can see an *Easing* property." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:157 msgid "" "Click and drag on the curve, pulling it towards the left. This will make it " "ease-out, that is to say, transition fast initially and slow down as the " "time cursor reaches the next keyframe." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:163 msgid "" "Play the animation again to see the difference. The first half should " "already feel a bit bouncier." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:166 msgid "Apply an ease-out to the second keyframe in the rotation track." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:170 msgid "" "Do the opposite for the second position keyframe, dragging it to the right." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:174 #, fuzzy msgid "Your animation should look something like this." msgstr "شجرة المشاهد الخاصة بك، ينبغي أن تكون على الشكال التالي:" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:180 msgid "" "Animations update the properties of the animated nodes every frame, " "overriding initial values. If we directly animated the *Player* node, it " "would prevent us from moving it in code. This is where the *Pivot* node " "comes in handy: even though we animated the *Character*, we can still move " "and rotate the *Pivot* and layer changes on top of the animation in a script." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:187 msgid "If you play the game, the player's creature will now float!" msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:189 msgid "" "If the creature is a little too close to the floor, you can move the " "``Pivot`` up to offset it." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:193 #, fuzzy msgid "Controlling the animation in code" msgstr "إنشاء المحتوى" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:195 msgid "" "We can use code to control the animation playback based on the player's " "input. Let's change the animation speed when the character is moving." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:198 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:202 msgid "" "In ``_physics_process()``, after the line where we check the ``direction`` " "vector, add the following code." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:232 msgid "" "This code makes it so when the player moves, we multiply the playback speed " "by ``4``. When they stop, we reset it to normal." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:235 msgid "" "We mentioned that the ``Pivot`` could layer transforms on top of the " "animation. We can make the character arc when jumping using the following " "line of code. Add it at the end of ``_physics_process()``." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:256 #, fuzzy msgid "Animating the mobs" msgstr "صورة متحركة" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:258 msgid "" "Here's another nice trick with animations in Godot: as long as you use a " "similar node structure, you can copy them to different scenes." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:261 msgid "" "For example, both the ``Mob`` and the ``Player`` scenes have a ``Pivot`` and " "a ``Character`` node, so we can reuse animations between them." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:264 msgid "" "Open the *Player* scene, select the AnimationPlayer node and then click on " "**Animation > Manage Animations...**. Click the *Copy animation to " "clipboard* button (two small squares) alongside the *float* animation. Click " "OK to close the window." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:268 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:274 msgid "" "Next, make sure that the autoplay button (|Autoplay|) and the looping arrows " "(Animation looping) are also turned on in the animation editor in the bottom " "panel. That's it; all monsters will now play the float animation." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:278 msgid "" "We can change the playback speed based on the creature's ``random_speed``. " "Open the *Mob*'s script and at the end of the ``initialize()`` function, add " "the following line." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:296 msgid "And with that, you finished coding your first complete 3D game." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:298 msgid "**Congratulations**!" msgstr "**تهانينا**!" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:300 msgid "" "In the next part, we'll quickly recap what you learned and give you some " "links to keep learning more. But for now, here are the complete " "``player.gd`` and ``mob.gd`` so you can check your code against them." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:304 msgid "Here's the *Player* script." msgstr "" #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:519 msgid "And the *Mob*'s script." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:4 #, fuzzy 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 "" "بالإضافة لهذه المستندات، ربما تود أيضًا أن تلقي نظرة على النماذج المتنوعة من " "`مشاريع غودوت الجاهزة `_." #: ../../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 #, fuzzy 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 #, fuzzy msgid "Constants." msgstr "الثوابت" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:32 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 "إنشاء المحتوى" #: ../../docs/tutorials/best_practices/scene_organization.rst:431 #, fuzzy 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 behaviour 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 #, fuzzy 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:2151 #: ../../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:211 msgid "_init vs. initialization vs. export" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:213 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:218 msgid "The C# equivalent to GDScript's ``_init()`` method is the constructor." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:220 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:224 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:227 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:230 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:302 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:306 msgid "_ready vs. _enter_tree vs. NOTIFICATION_PARENTED" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:308 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:315 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:320 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 an ``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 for it. To distinguish these situations, there are a few things one can " "consider:" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:127 msgid "" "If one cannot determine when the script might load, then preloading a " "resource, especially a scene or script, could result in further 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:132 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:136 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:140 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:144 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 properties, then one " "can set them to ``null`` and remove all references to the resource entirely " "(which, as a :ref:`RefCounted `-extending type, will cause " "the resources to delete themselves from memory)." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:155 msgid "Large levels: static vs. dynamic" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:157 msgid "" "If one is creating a large level, which circumstances are most appropriate? " "Should they create the level as one static space? Or should they load the " "level in pieces and shift the world's content as needed?" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:161 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:165 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:170 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:176 msgid "" "On the flip side, coding a dynamic system is more complex, i.e. 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:181 msgid "As such, the best options would be..." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:183 msgid "To use a static level for smaller games." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:185 msgid "" "If one has the time/resources on a medium/large game, create a library or " "plugin that can code the management of nodes and resources. 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:190 msgid "" "Code the 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:195 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:124 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 #, fuzzy 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 July 2023, 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 #, fuzzy msgid "" "Documentation on how to use the Git plugin can be found on its `wiki " "`__." msgstr "" "اطلع على صفحة المقابلة على موقع غدوت `Godot website `_." #: ../../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.5`` 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/troubleshooting.rst:4 #: ../../docs/tutorials/3d/particles/collision.rst:176 #: ../../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_for_ios.rst:133 #: ../../docs/tutorials/export/one-click_deploy.rst:102 #: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:275 #: ../../docs/contributing/development/compiling/compiling_for_windows.rst:411 #: ../../docs/contributing/development/compiling/compiling_for_macos.rst:220 #: ../../docs/contributing/development/compiling/compiling_for_android.rst:261 #: ../../docs/contributing/development/compiling/compiling_for_ios.rst:91 #: ../../docs/contributing/development/compiling/compiling_with_script_encryption_key.rst:83 #: ../../docs/contributing/development/editor/creating_icons.rst:77 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 #, fuzzy msgid "" "See :ref:`doc_using_the_web_editor` for caveats specific to the Web version " "of the Godot editor." msgstr "" "راجع :ref:`doc_using_the_web_editor` للحالات الخاصة بإصدار HTML5 من محرر " "غودوت." #: ../../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 #, fuzzy 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 #, fuzzy msgid "The editor or project takes a very long time to start" msgstr "يستغرق المحرر أو المشروع وقتاً طويلاً للغاية حتى يشرع بالبدء." #: ../../docs/tutorials/troubleshooting.rst:63 msgid "" "When using one of the Vulkan-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 #, fuzzy 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 "" "هذا `خطأ برمجي معروف `__ " "في ويندوز عندما يكون لديك أجهزة USB معينة متصلة. بالتحديد برمجية Corsair's " "iCUE يبدو أنها تسبب هذا الخظأ. قم بتحديث تعاريف أجهزة USB إلى اخر إصدار. إذا " "استمر الخطأ, يجب فصل الجهاز المسبب للخطأ قبل فتح المحرر. ثم بإمكانك إعادة " "وصله مرة ثانية." #: ../../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 #, fuzzy msgid "The Godot editor appears frozen after clicking the system console" msgstr "يبدو محرر غدوت وكأنه قد تجمد عند الضغط على وحدة النظام system console." #: ../../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 "" "عند تشغيل Godot على Windows مع تمكين وحدة تحكم النظام ، يمكنك تمكين * وضع " "التحديد * عن طريق الخطأ بالنقر داخل نافذة الأوامر. يقوم هذا السلوك الخاص ب " "Windows بإيقاف التطبيق مؤقتا للسماح لك بتحديد نص داخل وحدة تحكم النظام. لا " "يمكن لغودوت تجاوز هذا السلوك الخاص بالنظام." #: ../../docs/tutorials/troubleshooting.rst:99 msgid "" "To solve this, select the system console window and press Enter to leave " "selection mode." msgstr "" "لحل هذه المكشلة، اختر نافذة وحدة النظام system console window واضغط Enter " "للخروج من وضع التحديد." #: ../../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 #, fuzzy msgid "" "Some text such as \"NO DC\" appears in the top-left corner of the Project " "Manager and editor window" msgstr "" "تظهر بعض النصوص مثل \"NO DC\" في الزاوية العلوية اليسرى على شاشة المحرر " "وكذلك مدير المشاريع." #: ../../docs/tutorials/troubleshooting.rst:122 msgid "" "This is caused by the NVIDIA graphics driver injecting an overlay to display " "information." msgstr "" "تنجم هذه المكشلة عن معرّف الرسوميات الخاصة ب NVIDIA لأنه يضيف طبقة إضافية " "لعرض المعلومات." #: ../../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 "" "لإزالة هذه النافذة العائمة على نظام ويندوز, قم بإعادة ضبط إعدادات NVIDIA في " "لوحة التحكم الخاصة بها إلى القيم الافتراضية." #: ../../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 "" "لإزالة هذه النافذة العائمة في نظام لينوكس, افتح ``nvidia-settings`` و اذهب " "إلى **X Screen 0 > OpenGL Settings** ثم ألغي تفعيل زر **Enable Graphics API " "Visual Indicator**." #: ../../docs/tutorials/troubleshooting.rst:131 #, fuzzy msgid "" "A microphone or \"refresh\" icon appears in the bottom-right corner of the " "Project Manager and editor window" msgstr "" "تظهر بعض النصوص مثل \"NO DC\" في الزاوية العلوية اليسرى على شاشة المحرر " "وكذلك مدير المشاريع." #: ../../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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 "" "يحدث هذا عادة بسبب نسيانك لتحديد فلتر للملفات التي هي ليست ملفات موارد في " "نافذة التصدير. افتراضيا, سيقوم غودوت بتضمين ملفات *الموارد\" فقط في ملف PCK. " "بعض الملفات الشائع استخدامها مثل ملفات JSON, لا تعتبر ملفات موارد. على سبيل " "المثال , إذا قمت بتحميل ``test.json`` في المشروع المصدّر, يجب أن تحدد " "``*.json`` في فلتر الملفات من غير الموارد. " "راجع :ref:`doc_exporting_projects_export_mode` للمزيد من المعلومات." #: ../../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 "" "على نظام ويندوز , يمكن أن يكون هذا بسبب مشاكل :ref:`حالة الأحرف " "`. إذا قمت بالإشارة لملف مواردفي " "نصك البرمجي بحالة أحرف مخالفة لاسم الملف على القرص, سيفشل التحميل عند تصدير " "المشروع. وذلك لأن نظام الملفات الافتراضي ل PCK حساس لحالة الأحرف, بينما نظام " "ملفات ويندوز ليس حساسا لها افتراضيا." #: ../../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 "المُعدل" #: ../../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 #, fuzzy 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' " "interface in other sections where appropriate. For example, " "the :ref:`animation editor `." msgstr "" #: ../../docs/tutorials/editor/index.rst:32 #, fuzzy msgid "XR editor" msgstr "المحرّر" #: ../../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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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:86 #: ../../docs/tutorials/editor/managing_editor_features.rst:6 #, fuzzy msgid "Managing editor features" msgstr "المزايا" #: ../../docs/tutorials/editor/index.rst:88 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 #, fuzzy msgid "Using the Project Manager" msgstr "مُدير المشروع" #: ../../docs/tutorials/editor/project_manager.rst:6 #, fuzzy 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 "" "عندما تشغل المحرك، أول نافذة ستراها هي مُدير المشارع، وبما أنك لا تملك أي " "منها ستلاحظ نافذة منبثقة ستسألك فيما إذا رغبت في فتح قائمة الملحقات الإضافية " "Asset library، اضغط على إلغاء لأننا سنتطرق إليها لاحقاً." #: ../../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 "إنشاء المحتوى" #: ../../docs/tutorials/editor/project_manager.rst:33 #, fuzzy msgid "To create a new project:" msgstr "إنشاء المحتوى" #: ../../docs/tutorials/editor/project_manager.rst:35 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 "وضع التحريك" #: ../../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 #, fuzzy 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:133 #: ../../docs/tutorials/plugins/editor/index.rst:4 msgid "Editor plugins" msgstr "" #: ../../docs/tutorials/editor/project_manager.rst:167 #, fuzzy msgid "GDExtension addons" msgstr "التطوير" #: ../../docs/tutorials/editor/project_manager.rst:168 #, fuzzy msgid "Automatic scene restoring" msgstr "إعادة استيراد تلقائي" #: ../../docs/tutorials/editor/project_manager.rst:169 #, fuzzy msgid "Running the project" msgstr "تنظيم المشروع" #: ../../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:6 #, fuzzy msgid "The Inspector" msgstr "الفاحص عن بعد." #: ../../docs/tutorials/editor/inspector_dock.rst:8 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:10 msgid "This page is a work-in-progress." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:13 msgid "Overview of the interface" msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:15 msgid "Let's start by looking at the dock's main parts." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:19 msgid "At the top are the file and navigation buttons." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:23 msgid "" "Below it, you can find the selected node's name, its type, and the tools " "menu on the right side." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:27 msgid "" "If you click the tool menu icon, a drop-down menu offers some view and edit " "options." msgstr "" #: ../../docs/tutorials/editor/inspector_dock.rst:31 msgid "" "Then comes the search bar. Type anything in it to filter displayed " "properties. Delete the text to clear the search." 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 #, fuzzy 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 "أختبار" #: ../../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 #, fuzzy 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 #, fuzzy 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 #, fuzzy msgid "Manually editing project.godot" msgstr "project.godot" #: ../../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 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 #, fuzzy msgid "Advanced project settings" msgstr "أختبار" #: ../../docs/tutorials/editor/project_settings.rst:135 #, fuzzy 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 "محرر النص البرمجي" #: ../../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 "**مميزات.**" #: ../../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 #, fuzzy msgid "Syntax highlighting support for GDScript and JSON files." msgstr "يوجد دعم التلوين الجُملي على Github." #: ../../docs/tutorials/editor/script_editor.rst:34 msgid "Syntax checking for GDScript and JSON files." msgstr "" #: ../../docs/tutorials/editor/script_editor.rst:35 #, fuzzy msgid "Bookmark and breakpoint support." msgstr "منصات محددة" #: ../../docs/tutorials/editor/script_editor.rst:36 #, fuzzy msgid "Automatic indentation." msgstr "‏حول هذه ‏‏الوثائق‏" #: ../../docs/tutorials/editor/script_editor.rst:37 #, fuzzy 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: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 msgid "Usage" 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 "تحديد التبويب البرمجي" #: ../../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 "الوصف" #: ../../docs/tutorials/editor/script_editor.rst:112 #, fuzzy msgid "scriptcsharp" msgstr "الوصف" #: ../../docs/tutorials/editor/script_editor.rst:113 #, fuzzy msgid "documentation" msgstr "الوثائق دون اتصال بإنترنت" #: ../../docs/tutorials/editor/script_editor.rst:114 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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:338 #: ../../docs/tutorials/editor/default_key_mapping.rst:385 #: ../../docs/tutorials/editor/default_key_mapping.rst:396 #: ../../docs/tutorials/editor/default_key_mapping.rst:409 #: ../../docs/tutorials/editor/default_key_mapping.rst:440 #: ../../docs/tutorials/editor/default_key_mapping.rst:453 #: ../../docs/tutorials/editor/default_key_mapping.rst:476 #: ../../docs/tutorials/editor/default_key_mapping.rst:493 #: ../../docs/tutorials/editor/default_key_mapping.rst:532 #: ../../docs/tutorials/editor/default_key_mapping.rst:559 #, fuzzy 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:338 #: ../../docs/tutorials/editor/default_key_mapping.rst:385 #: ../../docs/tutorials/editor/default_key_mapping.rst:396 #: ../../docs/tutorials/editor/default_key_mapping.rst:409 #: ../../docs/tutorials/editor/default_key_mapping.rst:440 #: ../../docs/tutorials/editor/default_key_mapping.rst:453 #: ../../docs/tutorials/editor/default_key_mapping.rst:476 #: ../../docs/tutorials/editor/default_key_mapping.rst:493 #: ../../docs/tutorials/editor/default_key_mapping.rst:532 #: ../../docs/tutorials/editor/default_key_mapping.rst:559 #, fuzzy 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:338 #: ../../docs/tutorials/editor/default_key_mapping.rst:385 #: ../../docs/tutorials/editor/default_key_mapping.rst:396 #: ../../docs/tutorials/editor/default_key_mapping.rst:409 #: ../../docs/tutorials/editor/default_key_mapping.rst:440 #: ../../docs/tutorials/editor/default_key_mapping.rst:453 #: ../../docs/tutorials/editor/default_key_mapping.rst:476 #: ../../docs/tutorials/editor/default_key_mapping.rst:493 #: ../../docs/tutorials/editor/default_key_mapping.rst:532 #: ../../docs/tutorials/editor/default_key_mapping.rst:559 #, fuzzy msgid "Editor setting" msgstr "المُعدل" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 msgid "Open 2D Editor" msgstr "فتح المُحرر 2D" #: ../../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 Editor" msgstr "فتح المُحرر 3D" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 #: ../../docs/tutorials/editor/default_key_mapping.rst:457 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 msgid ":kbd:`Cmd + Ctrl + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:42 msgid "``editor/distraction_free_mode``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:44 #, fuzzy 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 #, fuzzy 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:368 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:356 msgid ":kbd:`Ctrl + Shift + T`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:54 #: ../../docs/tutorials/editor/default_key_mapping.rst:356 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:565 msgid ":kbd:`Ctrl + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:56 #: ../../docs/tutorials/editor/default_key_mapping.rst:565 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 #, fuzzy 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:360 msgid ":kbd:`Ctrl + Shift + Alt + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:60 #: ../../docs/tutorials/editor/default_key_mapping.rst:360 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:417 msgid ":kbd:`F5`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:80 #: ../../docs/tutorials/editor/default_key_mapping.rst:315 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:327 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:569 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:362 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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:421 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 #, fuzzy 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 #, fuzzy 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 #, fuzzy msgid "2D / CanvasItem editor" msgstr "ثنائي الأبعاد 2D/ محرر عنصر اللوحة Canvas" #: ../../docs/tutorials/editor/default_key_mapping.rst:125 #: ../../docs/tutorials/editor/default_key_mapping.rst:374 msgid "Zoom In" msgstr "تكبير" #: ../../docs/tutorials/editor/default_key_mapping.rst:125 #: ../../docs/tutorials/editor/default_key_mapping.rst:374 msgid ":kbd:`Ctrl + =`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:125 #: ../../docs/tutorials/editor/default_key_mapping.rst:374 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:376 msgid "Zoom Out" msgstr "تصغير" #: ../../docs/tutorials/editor/default_key_mapping.rst:127 #: ../../docs/tutorials/editor/default_key_mapping.rst:376 msgid ":kbd:`Ctrl + -`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:127 #: ../../docs/tutorials/editor/default_key_mapping.rst:376 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:378 msgid ":kbd:`Ctrl + 0`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:129 #: ../../docs/tutorials/editor/default_key_mapping.rst:378 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:517 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:495 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 "وضع المسطرة" #: ../../docs/tutorials/editor/default_key_mapping.rst:141 #: ../../docs/tutorials/editor/default_key_mapping.rst:204 #: ../../docs/tutorials/editor/default_key_mapping.rst:511 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 "ضاعف خطوة الشبكة ب 2" #: ../../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 "قسم خطوة الشبكة ب 2" #: ../../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 "إظهار تحجيم اللوحة Canvas" #: ../../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 "أدخل مفتاح" #: ../../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:317 msgid ":kbd:`Ctrl + Shift + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:167 #: ../../docs/tutorials/editor/default_key_mapping.rst:317 #: ../../docs/tutorials/editor/default_key_mapping.rst:323 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 #, fuzzy msgid "3D / Spatial editor" msgstr "3D/ المحرر الفراغي" #: ../../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 "الرؤية الحُرة Freelook يساراً" #: ../../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 "الرؤية الحرة Freelook يميناً" #: ../../docs/tutorials/editor/default_key_mapping.rst:184 #: ../../docs/tutorials/editor/default_key_mapping.rst:507 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 "الرؤية الحرة Freelook قُدماً" #: ../../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 "الرؤية الحُرة Freelook تراجعياً" #: ../../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 "الرؤية الحُرة Freelook للأعلى" #: ../../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:534 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 "التبديل بين الرؤية المنظورية / الإسقاطية Orthogonal" #: ../../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:319 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 "ساحتان للرؤية (Alt)" #: ../../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 "3 ساحات للرؤية" #: ../../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 "3 ساحات للرؤية (Alt)" #: ../../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 "4 ساحات للرؤية" #: ../../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 "محرر النصوص" #: ../../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:497 msgid ":kbd:`Ctrl + X`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:257 #: ../../docs/tutorials/editor/default_key_mapping.rst:497 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 "نسخ" #: ../../docs/tutorials/editor/default_key_mapping.rst:259 #: ../../docs/tutorials/editor/default_key_mapping.rst:387 #: ../../docs/tutorials/editor/default_key_mapping.rst:442 #: ../../docs/tutorials/editor/default_key_mapping.rst:499 msgid ":kbd:`Ctrl + C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:259 #: ../../docs/tutorials/editor/default_key_mapping.rst:387 #: ../../docs/tutorials/editor/default_key_mapping.rst:442 #: ../../docs/tutorials/editor/default_key_mapping.rst:499 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:501 msgid ":kbd:`Ctrl + V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:261 #: ../../docs/tutorials/editor/default_key_mapping.rst:501 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:455 msgid ":kbd:`Ctrl + A`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:263 #: ../../docs/tutorials/editor/default_key_mapping.rst:455 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:340 msgid "Find" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:265 #: ../../docs/tutorials/editor/default_key_mapping.rst:340 msgid ":kbd:`Ctrl + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:265 #: ../../docs/tutorials/editor/default_key_mapping.rst:340 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:342 msgid "Find Next" msgstr "إيجاد التالي" #: ../../docs/tutorials/editor/default_key_mapping.rst:267 #: ../../docs/tutorials/editor/default_key_mapping.rst:342 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:344 msgid "Find Previous" msgstr "إيجاد السابق" #: ../../docs/tutorials/editor/default_key_mapping.rst:269 #: ../../docs/tutorials/editor/default_key_mapping.rst:344 msgid ":kbd:`Shift + F3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:269 #: ../../docs/tutorials/editor/default_key_mapping.rst:429 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:346 msgid "Find in Files" msgstr "البحث في الملفات" #: ../../docs/tutorials/editor/default_key_mapping.rst:271 #: ../../docs/tutorials/editor/default_key_mapping.rst:346 msgid ":kbd:`Ctrl + Shift + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:271 #: ../../docs/tutorials/editor/default_key_mapping.rst:346 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 "استبدال" #: ../../docs/tutorials/editor/default_key_mapping.rst:273 #: ../../docs/tutorials/editor/default_key_mapping.rst:569 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:362 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:348 #: ../../docs/tutorials/editor/default_key_mapping.rst:467 msgid "Move Up" msgstr "تحريك لأعلى" #: ../../docs/tutorials/editor/default_key_mapping.rst:281 #: ../../docs/tutorials/editor/default_key_mapping.rst:415 msgid ":kbd:`Alt + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:281 #: ../../docs/tutorials/editor/default_key_mapping.rst:415 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:350 #: ../../docs/tutorials/editor/default_key_mapping.rst:469 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:389 msgid ":kbd:`Ctrl + Shift + K`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:285 #: ../../docs/tutorials/editor/default_key_mapping.rst:389 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 "تفعيل Toggle التعليقات" #: ../../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 "مضاعفة" #: ../../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:478 msgid "Duplicate Selection" msgstr "مضاعفة المحدد" #: ../../docs/tutorials/editor/default_key_mapping.rst:293 #: ../../docs/tutorials/editor/default_key_mapping.rst:480 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 msgid "Complete Symbol" msgstr "رمز التمام" #: ../../docs/tutorials/editor/default_key_mapping.rst:295 msgid ":kbd:`Ctrl + Space`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:295 msgid "``script_text_editor/complete_symbol``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 msgid "Evaluate Selection" msgstr "تقييم الاختيار" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 msgid ":kbd:`Ctrl + Shift + E`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 msgid ":kbd:`Cmd + Shift + E`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 msgid "``script_text_editor/evaluate_selection``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:299 msgid "Trim Trailing Whitespace" msgstr "تشذيب الفراغات البيضاء الزائدة" #: ../../docs/tutorials/editor/default_key_mapping.rst:299 msgid ":kbd:`Ctrl + Alt + T`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:299 msgid ":kbd:`Opt + Cmd + T`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:299 msgid "``script_text_editor/trim_trailing_whitespace``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:301 msgid "Uppercase" msgstr "الأحرف الكبيرة (Uppercase)" #: ../../docs/tutorials/editor/default_key_mapping.rst:301 msgid ":kbd:`Shift + F4`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:301 msgid "``script_text_editor/convert_to_uppercase``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:303 msgid "Lowercase" msgstr "الأحرف الصغيرة (Lowercase)" #: ../../docs/tutorials/editor/default_key_mapping.rst:303 msgid ":kbd:`Shift + F5`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:303 msgid "``script_text_editor/convert_to_lowercase``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:305 msgid "Capitalize" msgstr "تكبير الحروف Capitalize" #: ../../docs/tutorials/editor/default_key_mapping.rst:305 msgid ":kbd:`Shift + F6`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:305 msgid "``script_text_editor/capitalize``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:307 msgid "Convert Indent to Spaces" msgstr "تحويل التصدُّر إلى مسافات" #: ../../docs/tutorials/editor/default_key_mapping.rst:307 msgid ":kbd:`Ctrl + Shift + Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:307 msgid ":kbd:`Cmd + Shift + Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:307 msgid "``script_text_editor/convert_indent_to_spaces``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:309 msgid "Convert Indent to Tabs" msgstr "تحويل التصدُّر إلى قفزات" #: ../../docs/tutorials/editor/default_key_mapping.rst:309 msgid ":kbd:`Ctrl + Shift + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:309 msgid ":kbd:`Cmd + Shift + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:309 msgid "``script_text_editor/convert_indent_to_tabs``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:311 msgid "Auto Indent" msgstr "تصدُّر تلقائي" #: ../../docs/tutorials/editor/default_key_mapping.rst:311 #: ../../docs/tutorials/editor/default_key_mapping.rst:563 msgid ":kbd:`Ctrl + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:311 #: ../../docs/tutorials/editor/default_key_mapping.rst:563 msgid ":kbd:`Cmd + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:311 msgid "``script_text_editor/auto_indent``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid "Toggle Bookmark" msgstr "تبديل العلامة المرجعية" #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid ":kbd:`Ctrl + Alt + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid ":kbd:`Opt + Cmd + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid "``script_text_editor/toggle_bookmark``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:315 msgid "Go to Next Bookmark" msgstr "الانتقال إلى العلامة المرجعية التالية" #: ../../docs/tutorials/editor/default_key_mapping.rst:315 msgid ":kbd:`Ctrl + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:315 msgid "``script_text_editor/goto_next_bookmark``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:317 msgid "Go to Previous Bookmark" msgstr "الانتقال إلى العلامة المرجعية السابقة" #: ../../docs/tutorials/editor/default_key_mapping.rst:317 msgid "``script_text_editor/goto_previous_bookmark``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:319 msgid "Go to Function" msgstr "انتقل الى الوظيفة البرمجية" #: ../../docs/tutorials/editor/default_key_mapping.rst:319 msgid ":kbd:`Ctrl + Cmd + J`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:319 msgid "``script_text_editor/goto_function``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:321 msgid "Go to Line" msgstr "اذهب إلى السطر" #: ../../docs/tutorials/editor/default_key_mapping.rst:321 #: ../../docs/tutorials/editor/default_key_mapping.rst:429 msgid ":kbd:`Ctrl + L`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:321 msgid ":kbd:`Cmd + L`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:321 msgid "``script_text_editor/goto_line``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:323 msgid "Toggle Breakpoint" msgstr "تفعيل/إلغاء تفعيل نقطة التكسّر" #: ../../docs/tutorials/editor/default_key_mapping.rst:323 msgid ":kbd:`F9`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:323 msgid "``script_text_editor/toggle_breakpoint``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid "Remove All Breakpoints" msgstr "إزالة جميع نقاط التكسّر" #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid ":kbd:`Ctrl + Shift + F9`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid ":kbd:`Cmd + Shift + F9`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid "``script_text_editor/remove_all_breakpoints``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:327 msgid "Go to Next Breakpoint" msgstr "الذهاب إلى نقطة التكسّر التالية" #: ../../docs/tutorials/editor/default_key_mapping.rst:327 msgid ":kbd:`Ctrl + .`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:327 msgid "``script_text_editor/goto_next_breakpoint``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:329 msgid "Go to Previous Breakpoint" msgstr "الذهاب إلى نقطة التكسّر السابقة" #: ../../docs/tutorials/editor/default_key_mapping.rst:329 msgid ":kbd:`Ctrl + ,`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:329 msgid ":kbd:`Cmd + ,`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:329 msgid "``script_text_editor/goto_previous_breakpoint``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:331 msgid "Contextual Help" msgstr "مساعدة سياقية" #: ../../docs/tutorials/editor/default_key_mapping.rst:331 msgid ":kbd:`Alt + F1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:331 msgid ":kbd:`Opt + Shift + Space`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:331 msgid "``script_text_editor/contextual_help``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:335 #, fuzzy msgid "Script editor" msgstr "محرر النص البرمجي" #: ../../docs/tutorials/editor/default_key_mapping.rst:340 msgid "``script_editor/find``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:342 msgid "``script_editor/find_next``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:344 msgid "``script_editor/find_previous``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:346 msgid "``script_editor/find_in_files``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:348 msgid ":kbd:`Shift + Alt + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:348 msgid ":kbd:`Shift + Opt + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:348 msgid "``script_editor/window_move_up``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:350 msgid ":kbd:`Shift + Alt + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:350 msgid ":kbd:`Shift + Opt + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:350 msgid "``script_editor/window_move_down``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:352 msgid "Next Script" msgstr "النص البرمجي التالي" #: ../../docs/tutorials/editor/default_key_mapping.rst:352 msgid ":kbd:`Ctrl + Shift + .`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:352 msgid ":kbd:`Cmd + Shift + .`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:352 msgid "``script_editor/next_script``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:354 msgid "Previous Script" msgstr "النص البرمجي السابق" #: ../../docs/tutorials/editor/default_key_mapping.rst:354 msgid ":kbd:`Ctrl + Shift + ,`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:354 msgid ":kbd:`Cmd + Shift + ,`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:354 msgid "``script_editor/prev_script``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:356 msgid "Reopen Closed Script" msgstr "إعادة فتح النص البرمجي المُغلق" #: ../../docs/tutorials/editor/default_key_mapping.rst:356 msgid "``script_editor/reopen_closed_script``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:358 msgid "Save" msgstr "حفظ" #: ../../docs/tutorials/editor/default_key_mapping.rst:358 msgid ":kbd:`Ctrl + Alt + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:358 msgid ":kbd:`Opt + Cmd + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:358 msgid "``script_editor/save``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:360 msgid "Save All" msgstr "حفظ الكل" #: ../../docs/tutorials/editor/default_key_mapping.rst:360 msgid "``script_editor/save_all``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:362 msgid "Soft Reload Script" msgstr "إعادة تحميل النص البرمجي بلطف" #: ../../docs/tutorials/editor/default_key_mapping.rst:362 msgid "``script_editor/reload_script_soft``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 msgid "History Previous" msgstr "التاريخ السابق" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 #: ../../docs/tutorials/editor/default_key_mapping.rst:411 msgid ":kbd:`Alt + Left Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 #: ../../docs/tutorials/editor/default_key_mapping.rst:411 msgid ":kbd:`Opt + Left Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 msgid "``script_editor/history_previous``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:366 msgid "History Next" msgstr "التاريخ التالي" #: ../../docs/tutorials/editor/default_key_mapping.rst:366 #: ../../docs/tutorials/editor/default_key_mapping.rst:413 msgid ":kbd:`Alt + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:366 #: ../../docs/tutorials/editor/default_key_mapping.rst:413 msgid ":kbd:`Opt + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:366 msgid "``script_editor/history_next``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:368 msgid "Close" msgstr "إغلاق" #: ../../docs/tutorials/editor/default_key_mapping.rst:368 msgid ":kbd:`Ctrl + W`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:368 msgid "``script_editor/close_file``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 #: ../../docs/contributing/development/compiling/compiling_for_ios.rst:85 msgid "Run" msgstr "تشغيل" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 msgid ":kbd:`Ctrl + Shift + X`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 msgid ":kbd:`Cmd + Shift + X`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 msgid "``script_editor/run_file``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:372 msgid "Toggle Scripts Panel" msgstr "تحديد التبويب البرمجي" #: ../../docs/tutorials/editor/default_key_mapping.rst:372 msgid ":kbd:`Ctrl + \\\\`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:372 msgid ":kbd:`Cmd + \\\\`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:372 msgid "``script_editor/toggle_scripts_panel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:374 msgid "``script_editor/zoom_in``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:376 msgid "``script_editor/zoom_out``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:378 msgid "Reset Zoom" msgstr "إرجاع التكبير" #: ../../docs/tutorials/editor/default_key_mapping.rst:378 msgid "``script_editor/reset_zoom``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:382 #, fuzzy msgid "Editor output" msgstr "المُعدل" #: ../../docs/tutorials/editor/default_key_mapping.rst:387 #: ../../docs/tutorials/editor/default_key_mapping.rst:499 msgid "Copy Selection" msgstr "نسخ المُحدد" #: ../../docs/tutorials/editor/default_key_mapping.rst:387 msgid "``editor/copy_output``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:389 msgid "Clear Output" msgstr "مسح المُخرجات" #: ../../docs/tutorials/editor/default_key_mapping.rst:389 msgid "``editor/clear_output``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:393 msgid "Debugger" msgstr "مُنقح الأخطاء" #: ../../docs/tutorials/editor/default_key_mapping.rst:398 msgid "Step Into" msgstr "اخط خطوة ضمن" #: ../../docs/tutorials/editor/default_key_mapping.rst:398 msgid ":kbd:`F11`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:398 msgid "``debugger/step_into``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:400 msgid "Step Over" msgstr "اخط خطوة متجاوزة" #: ../../docs/tutorials/editor/default_key_mapping.rst:400 msgid ":kbd:`F10`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:400 msgid "``debugger/step_over``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:402 msgid "Continue" msgstr "إكمال" #: ../../docs/tutorials/editor/default_key_mapping.rst:402 msgid ":kbd:`F12`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:402 msgid "``debugger/continue``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:406 #, fuzzy msgid "File dialog" msgstr "النص البرمجي للعدو" #: ../../docs/tutorials/editor/default_key_mapping.rst:411 msgid "Go Back" msgstr "الرجوع للخلف" #: ../../docs/tutorials/editor/default_key_mapping.rst:411 msgid "``file_dialog/go_back``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:413 msgid "Go Forward" msgstr "الذهاب للأمام" #: ../../docs/tutorials/editor/default_key_mapping.rst:413 msgid "``file_dialog/go_forward``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:415 msgid "Go Up" msgstr "إذهب للأعلى" #: ../../docs/tutorials/editor/default_key_mapping.rst:415 msgid "``file_dialog/go_up``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:417 msgid "Refresh" msgstr "إعادة التحديث" #: ../../docs/tutorials/editor/default_key_mapping.rst:417 msgid "``file_dialog/refresh``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:419 msgid "Toggle Hidden Files" msgstr "أظهر الملفات المخفية" #: ../../docs/tutorials/editor/default_key_mapping.rst:419 msgid ":kbd:`Ctrl + H`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:419 msgid ":kbd:`Cmd + H`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:419 msgid "``file_dialog/toggle_hidden_files``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:421 msgid "Toggle Favorite" msgstr "أظهر المُفضلة" #: ../../docs/tutorials/editor/default_key_mapping.rst:421 msgid ":kbd:`Opt + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:421 msgid "``file_dialog/toggle_favorite``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:423 msgid "Toggle Mode" msgstr "أظهر الوضع" #: ../../docs/tutorials/editor/default_key_mapping.rst:423 msgid ":kbd:`Alt + V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:423 msgid ":kbd:`Opt + V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:423 msgid "``file_dialog/toggle_mode``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 msgid "Create Folder" msgstr "أنشئ مجلد" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 #: ../../docs/tutorials/editor/default_key_mapping.rst:561 msgid ":kbd:`Ctrl + N`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 #: ../../docs/tutorials/editor/default_key_mapping.rst:561 msgid ":kbd:`Cmd + N`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 msgid "``file_dialog/create_folder``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:427 #: ../../docs/tutorials/editor/default_key_mapping.rst:446 #: ../../docs/tutorials/editor/default_key_mapping.rst:461 msgid "Delete" msgstr "حذف" #: ../../docs/tutorials/editor/default_key_mapping.rst:427 #: ../../docs/tutorials/editor/default_key_mapping.rst:446 #: ../../docs/tutorials/editor/default_key_mapping.rst:461 #: ../../docs/tutorials/editor/default_key_mapping.rst:482 #: ../../docs/tutorials/editor/default_key_mapping.rst:503 msgid ":kbd:`Del`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:427 #: ../../docs/tutorials/editor/default_key_mapping.rst:446 #: ../../docs/tutorials/editor/default_key_mapping.rst:461 #: ../../docs/tutorials/editor/default_key_mapping.rst:482 #: ../../docs/tutorials/editor/default_key_mapping.rst:503 #: ../../docs/tutorials/editor/default_key_mapping.rst:573 msgid ":kbd:`Cmd + BkSp`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:427 msgid "``file_dialog/delete``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:429 msgid "Focus Path" msgstr "مسار التركيز" #: ../../docs/tutorials/editor/default_key_mapping.rst:429 msgid "``file_dialog/focus_path``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 msgid "Move Favorite Up" msgstr "حرك المُفضلة للأعلى" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 #: ../../docs/tutorials/editor/default_key_mapping.rst:467 msgid ":kbd:`Ctrl + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 #: ../../docs/tutorials/editor/default_key_mapping.rst:467 msgid ":kbd:`Cmd + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 msgid "``file_dialog/move_favorite_up``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:433 msgid "Move Favorite Down" msgstr "حرك المُفضلة للأسفل" #: ../../docs/tutorials/editor/default_key_mapping.rst:433 #: ../../docs/tutorials/editor/default_key_mapping.rst:469 msgid ":kbd:`Ctrl + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:433 #: ../../docs/tutorials/editor/default_key_mapping.rst:469 msgid ":kbd:`Cmd + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:433 msgid "``file_dialog/move_favorite_down``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:437 #, fuzzy msgid "FileSystem dock" msgstr "رصيف نظام الملفات" #: ../../docs/tutorials/editor/default_key_mapping.rst:442 msgid "Copy Path" msgstr "نسخ المسار" #: ../../docs/tutorials/editor/default_key_mapping.rst:442 msgid "``filesystem_dock/copy_path``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:444 #: ../../docs/tutorials/editor/default_key_mapping.rst:465 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:130 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:219 msgid "Duplicate" msgstr "مضاعفة" #: ../../docs/tutorials/editor/default_key_mapping.rst:444 #: ../../docs/tutorials/editor/default_key_mapping.rst:465 #: ../../docs/tutorials/editor/default_key_mapping.rst:478 msgid ":kbd:`Ctrl + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:444 #: ../../docs/tutorials/editor/default_key_mapping.rst:465 #: ../../docs/tutorials/editor/default_key_mapping.rst:478 msgid ":kbd:`Cmd + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:444 msgid "``filesystem_dock/duplicate``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:446 msgid "``filesystem_dock/delete``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:450 #, fuzzy msgid "Scene tree dock" msgstr "محرر شجرة المشهد." #: ../../docs/tutorials/editor/default_key_mapping.rst:455 msgid "Add Child Node" msgstr "إضافة عُقدة فرعية" #: ../../docs/tutorials/editor/default_key_mapping.rst:455 msgid "``scene_tree/add_child_node``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:457 msgid "Batch Rename" msgstr "إعادة تسمية الدفعة" #: ../../docs/tutorials/editor/default_key_mapping.rst:457 msgid ":kbd:`Cmd + F2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:457 msgid "``scene_tree/batch_rename``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:459 msgid "Copy Node Path" msgstr "نسخ مسار العُقدة" #: ../../docs/tutorials/editor/default_key_mapping.rst:459 msgid ":kbd:`Ctrl + Shift + C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:459 msgid ":kbd:`Cmd + Shift + C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:459 msgid "``scene_tree/copy_node_path``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:461 msgid "``scene_tree/delete``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:463 msgid "Force Delete" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:463 msgid ":kbd:`Shift + Del`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:463 msgid "``scene_tree/delete_no_confirm``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:465 msgid "``scene_tree/duplicate``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:467 msgid "``scene_tree/move_up``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:469 msgid "``scene_tree/move_down``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:473 #, fuzzy msgid "Animation track editor" msgstr "مسارات التحريك" #: ../../docs/tutorials/editor/default_key_mapping.rst:478 msgid "``animation_editor/duplicate_selection``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:480 msgid "Duplicate Transposed" msgstr "نقل مكرر" #: ../../docs/tutorials/editor/default_key_mapping.rst:480 msgid ":kbd:`Cmd + Shift + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:480 msgid "``animation_editor/duplicate_selection_transposed``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:482 #: ../../docs/tutorials/editor/default_key_mapping.rst:503 msgid "Delete Selection" msgstr "احذف المختار" #: ../../docs/tutorials/editor/default_key_mapping.rst:482 msgid "``animation_editor/delete_selection``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid "Go to Next Step" msgstr "اذهب إلى الخطوة التالية" #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid ":kbd:`Ctrl + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid ":kbd:`Cmd + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid "``animation_editor/goto_next_step``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:486 msgid "Go to Previous Step" msgstr "عُد إلى الخطوة السابقة" #: ../../docs/tutorials/editor/default_key_mapping.rst:486 msgid ":kbd:`Ctrl + Left Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:486 msgid ":kbd:`Cmd + Left Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:486 msgid "``animation_editor/goto_prev_step``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:490 #, fuzzy msgid "TileMap editor" msgstr "المُعدل" #: ../../docs/tutorials/editor/default_key_mapping.rst:495 msgid "Select" msgstr "حدد" #: ../../docs/tutorials/editor/default_key_mapping.rst:495 msgid "``tiles_editor/selection_tool``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:497 msgid "Cut Selection" msgstr "قص المُحدد" #: ../../docs/tutorials/editor/default_key_mapping.rst:497 msgid "``tiles_editor/cut``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:499 msgid "``tiles_editor/copy``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:501 #, fuzzy msgid "Paste Selection" msgstr "إزالة عملية الاختيار" #: ../../docs/tutorials/editor/default_key_mapping.rst:501 msgid "``tiles_editor/paste``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:503 msgid "``tiles_editor/delete``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:505 msgid "Cancel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:505 msgid ":kbd:`Esc`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:505 msgid "``tiles_editor/cancel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:507 #: ../../docs/tutorials/2d/using_tilemaps.rst:224 msgid "Paint" msgstr "طلاء" #: ../../docs/tutorials/editor/default_key_mapping.rst:507 msgid "``tiles_editor/paint_tool``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:509 #: ../../docs/tutorials/2d/using_tilemaps.rst:253 msgid "Line" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:509 msgid ":kbd:`L`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:509 msgid "``tiles_editor/line_tool``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:511 msgid "Rect" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:511 msgid "``tiles_editor/rect_tool``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:513 #, fuzzy msgid "Bucket" msgstr "وعاء التعبئة" #: ../../docs/tutorials/editor/default_key_mapping.rst:513 msgid ":kbd:`B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:513 msgid "``tiles_editor/bucket_tool``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:515 #: ../../docs/tutorials/2d/using_tilemaps.rst:316 #, fuzzy msgid "Picker" msgstr "اللون" #: ../../docs/tutorials/editor/default_key_mapping.rst:515 msgid ":kbd:`P`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:515 msgid "``tiles_editor/picker``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:517 #: ../../docs/tutorials/2d/using_tilemaps.rst:328 msgid "Eraser" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:517 msgid "``tiles_editor/eraser``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:519 msgid "Flip Horizontally" msgstr "القلب أفقياً" #: ../../docs/tutorials/editor/default_key_mapping.rst:519 msgid ":kbd:`C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:519 msgid "``tiles_editor/flip_tile_horizontal``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:521 msgid "Flip Vertically" msgstr "القلب عموديًا" #: ../../docs/tutorials/editor/default_key_mapping.rst:521 msgid ":kbd:`V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:521 msgid "``tiles_editor/flip_tile_vertical``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:523 msgid "Rotate Left" msgstr "تدوير لليسار" #: ../../docs/tutorials/editor/default_key_mapping.rst:523 msgid ":kbd:`Z`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:523 msgid "``tiles_editor/rotate_tile_left``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:525 msgid "Rotate Right" msgstr "تدوير لليمين" #: ../../docs/tutorials/editor/default_key_mapping.rst:525 msgid ":kbd:`X`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:525 msgid "``tiles_editor/rotate_tile_right``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:529 #, fuzzy msgid "TileSet Editor" msgstr "المُعدل" #: ../../docs/tutorials/editor/default_key_mapping.rst:534 msgid "Next Coordinate" msgstr "الإحداثيات التالية" #: ../../docs/tutorials/editor/default_key_mapping.rst:534 msgid "``tileset_editor/next_shape``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:536 msgid "Previous Coordinate" msgstr "الإحداثيات السابقة" #: ../../docs/tutorials/editor/default_key_mapping.rst:536 msgid ":kbd:`PgUp`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:536 msgid "``tileset_editor/previous_shape``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:538 msgid "Region Mode" msgstr "وضع الأقليم" #: ../../docs/tutorials/editor/default_key_mapping.rst:538 msgid ":kbd:`1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:538 msgid "``tileset_editor/editmode_region``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:540 msgid "Collision Mode" msgstr "وضع التصادم" #: ../../docs/tutorials/editor/default_key_mapping.rst:540 msgid ":kbd:`2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:540 msgid "``tileset_editor/editmode_collision``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:542 msgid "Occlusion Mode" msgstr "وضع الإطباق" #: ../../docs/tutorials/editor/default_key_mapping.rst:542 msgid ":kbd:`3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:542 msgid "``tileset_editor/editmode_occlusion``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:544 msgid "Navigation Mode" msgstr "وضع التنقل" #: ../../docs/tutorials/editor/default_key_mapping.rst:544 msgid ":kbd:`4`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:544 msgid "``tileset_editor/editmode_navigation``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:546 msgid "Bitmask Mode" msgstr "وضع قناع-البِت" #: ../../docs/tutorials/editor/default_key_mapping.rst:546 msgid ":kbd:`5`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:546 msgid "``tileset_editor/editmode_bitmask``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:548 msgid "Priority Mode" msgstr "وضع الأولية" #: ../../docs/tutorials/editor/default_key_mapping.rst:548 msgid ":kbd:`6`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:548 msgid "``tileset_editor/editmode_priority``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:550 msgid "Icon Mode" msgstr "وضع الأيقونة" #: ../../docs/tutorials/editor/default_key_mapping.rst:550 msgid ":kbd:`7`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:550 msgid "``tileset_editor/editmode_icon``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:552 msgid "Z Index Mode" msgstr "وضع ترتيبية المحور Z" #: ../../docs/tutorials/editor/default_key_mapping.rst:552 msgid ":kbd:`8`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:552 msgid "``tileset_editor/editmode_z_index``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:556 #, fuzzy msgid "Project manager" msgstr "مُدير المشروع" #: ../../docs/tutorials/editor/default_key_mapping.rst:561 #, fuzzy msgid "New Project" msgstr "إنشاء المحتوى" #: ../../docs/tutorials/editor/default_key_mapping.rst:561 msgid "``project_manager/new_project``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:563 #, fuzzy msgid "Import Project" msgstr "إنشاء المحتوى" #: ../../docs/tutorials/editor/default_key_mapping.rst:563 msgid "``project_manager/import_project``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:565 msgid "Scan for Projects" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:565 msgid "``project_manager/scan_projects``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:567 #, fuzzy msgid "Edit Project" msgstr "مُتجه" #: ../../docs/tutorials/editor/default_key_mapping.rst:567 msgid ":kbd:`Ctrl + E`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:567 msgid ":kbd:`Cmd + E`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:567 msgid "``project_manager/edit_project``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:569 #, fuzzy msgid "Run Project" msgstr "مُتجه" #: ../../docs/tutorials/editor/default_key_mapping.rst:569 msgid "``project_manager/run_project``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:571 #, fuzzy msgid "Rename Project" msgstr "إنشاء المحتوى" #: ../../docs/tutorials/editor/default_key_mapping.rst:571 msgid ":kbd:`F2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:571 msgid ":kbd:`Enter`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:571 msgid "``project_manager/rename_project``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:573 #, fuzzy msgid "Remove Project" msgstr "إنشاء المحتوى" #: ../../docs/tutorials/editor/default_key_mapping.rst:573 #, fuzzy msgid ":kbd:`Delete`" msgstr "حذف" #: ../../docs/tutorials/editor/default_key_mapping.rst:573 msgid "``project_manager/remove_project``" msgstr "" #: ../../docs/tutorials/editor/customizing_editor.rst:4 #, fuzzy msgid "Customizing the interface" msgstr "إنشاء المحتوى" #: ../../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 #, fuzzy 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 #, fuzzy 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 #, fuzzy 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 "الذهاب للأمام" #: ../../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' position and size, 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 #, fuzzy 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 #, fuzzy 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 "مكتبة المُلحقات" #: ../../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 #, fuzzy 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 #, fuzzy 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 "الخصائص" #: ../../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 #, fuzzy 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 #: ../../docs/tutorials/editor/using_the_android_editor.rst:75 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 "مكتبة المُلحقات" #: ../../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 #, fuzzy 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: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 #, fuzzy 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 #, fuzzy 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/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:214 #: ../../docs/tutorials/performance/general_optimization.rst:76 #: ../../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 #, fuzzy 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 #, fuzzy 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 an " "``.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 #, fuzzy 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 #, fuzzy 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:61 #: ../../docs/tutorials/editor/command_line_tutorial.rst:116 #: ../../docs/tutorials/editor/command_line_tutorial.rst:140 #: ../../docs/tutorials/editor/command_line_tutorial.rst:189 #: ../../docs/contributing/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:61 #: ../../docs/tutorials/editor/command_line_tutorial.rst:116 #: ../../docs/tutorials/editor/command_line_tutorial.rst:140 #: ../../docs/tutorials/editor/command_line_tutorial.rst:189 #: ../../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:120 #: ../../docs/tutorials/io/binary_serialization_api.rst:131 #: ../../docs/tutorials/io/binary_serialization_api.rst:140 #: ../../docs/tutorials/io/binary_serialization_api.rst:151 #: ../../docs/tutorials/io/binary_serialization_api.rst:160 #: ../../docs/tutorials/io/binary_serialization_api.rst:169 #: ../../docs/tutorials/io/binary_serialization_api.rst:182 #: ../../docs/tutorials/io/binary_serialization_api.rst:193 #: ../../docs/tutorials/io/binary_serialization_api.rst:208 #: ../../docs/tutorials/io/binary_serialization_api.rst:221 #: ../../docs/tutorials/io/binary_serialization_api.rst:240 #: ../../docs/tutorials/io/binary_serialization_api.rst:255 #: ../../docs/tutorials/io/binary_serialization_api.rst:270 #: ../../docs/tutorials/io/binary_serialization_api.rst:289 #: ../../docs/tutorials/io/binary_serialization_api.rst:314 #: ../../docs/tutorials/io/binary_serialization_api.rst:345 #: ../../docs/tutorials/io/binary_serialization_api.rst:360 #: ../../docs/tutorials/io/binary_serialization_api.rst:369 #: ../../docs/tutorials/io/binary_serialization_api.rst:380 #: ../../docs/tutorials/io/binary_serialization_api.rst:390 #: ../../docs/tutorials/io/binary_serialization_api.rst:412 #: ../../docs/tutorials/io/binary_serialization_api.rst:421 #: ../../docs/tutorials/io/binary_serialization_api.rst:430 #: ../../docs/tutorials/io/binary_serialization_api.rst:442 #: ../../docs/tutorials/io/binary_serialization_api.rst:466 #: ../../docs/tutorials/io/binary_serialization_api.rst:478 #: ../../docs/tutorials/io/binary_serialization_api.rst:490 #: ../../docs/tutorials/io/binary_serialization_api.rst:503 #: ../../docs/tutorials/io/binary_serialization_api.rst:514 #: ../../docs/tutorials/io/binary_serialization_api.rst:525 #: ../../docs/tutorials/io/binary_serialization_api.rst:536 #: ../../docs/tutorials/io/binary_serialization_api.rst:547 #: ../../docs/tutorials/io/binary_serialization_api.rst:555 #: ../../docs/tutorials/io/binary_serialization_api.rst:568 #: ../../docs/tutorials/io/binary_serialization_api.rst:581 #: ../../docs/tutorials/io/binary_serialization_api.rst:596 #: ../../docs/tutorials/inputs/inputevent.rst:159 #: ../../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:92 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:18 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:75 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:98 #: ../../docs/tutorials/scripting/gdextension/gdextension_file.rst:111 #: ../../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:810 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:868 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:16 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:110 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:178 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:286 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:474 #: ../../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:292 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:352 #: ../../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:35 #: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:64 #: ../../docs/tutorials/shaders/visual_shaders.rst:127 #: ../../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/contributing/development/core_and_modules/unit_testing.rst:298 msgid "Description" msgstr "الوصف" #: ../../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:58 msgid "**Run options**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:63 msgid "``--``, ``++``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:63 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:65 msgid "``-e``, ``--editor``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:65 msgid "|editor| Start the editor instead of running the scene." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:67 msgid "``-p``, ``--project-manager``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:67 msgid "|editor| Start the Project Manager, even if a project is auto-detected." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:69 msgid "``--debug-server ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:69 msgid "" "|editor| Start the editor debug server (``://[:]``, " "e.g. ``tcp://127.0.0.1:6007``)" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:71 msgid "``--quit``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:71 msgid "|release| Quit after the first iteration." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:73 msgid "``--quit-after``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:73 msgid "" "|release| Quit after the given number of iterations. Set to 0 to disable." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:75 msgid "``-l``, ``--language ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:75 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:78 msgid "``--path ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:78 msgid "" "|release| Path to a project (```` must contain a 'project.godot' " "file)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:80 msgid "``-u``, ``--upwards``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:80 msgid "|release| Scan folders upwards for 'project.godot' file." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:82 msgid "``--main-pack ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:82 msgid "|release| Path to a pack (.pck) file to load." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:84 msgid "``--render-thread ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:84 msgid "" "|release| Render thread mode ('unsafe', 'safe', 'separate'). " "See :ref:`Thread Model ` for more details." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:87 msgid "``--remote-fs
``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:87 msgid "|release| Remote filesystem (``[:]`` address)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:89 msgid "``--remote-fs-password ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:89 msgid "|release| Password for remote filesystem." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:91 msgid "``--audio-driver ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:91 msgid "" "|release| Audio driver. Use ``--help`` first to display the list of " "available drivers." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:93 msgid "``--display-driver ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:93 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:95 msgid "``--rendering-method ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:95 msgid "|release| Renderer name. Requires driver support." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:97 msgid "``--rendering-driver ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:97 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:99 msgid "``--gpu-index ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:99 msgid "" "|release| Use a specific GPU (run with ``--verbose`` to get available device " "list)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:101 msgid "``--text-driver ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:101 msgid "|release| Text driver (Fonts, BiDi, shaping)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:103 msgid "``--tablet-driver ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:103 msgid "|release| Pen tablet input driver." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:105 msgid "``--headless``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:105 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:107 msgid "``--write-movie ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:107 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:113 msgid "**Display options**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:118 msgid "``-f``, ``--fullscreen``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:118 #, fuzzy msgid "|release| Request fullscreen mode." msgstr "إلغاء/تفعيل وضع الشاشة الكاملة" #: ../../docs/tutorials/editor/command_line_tutorial.rst:120 msgid "``-m``, ``--maximized``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:120 msgid "|release| Request a maximized window." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:122 msgid "``-w``, ``--windowed``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:122 msgid "|release| Request windowed mode." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:124 msgid "``-t``, ``--always-on-top``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:124 msgid "|release| Request an always-on-top window." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:126 msgid "``--resolution x``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:126 msgid "|release| Request window resolution." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:128 msgid "``--position ,``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:128 msgid "|release| Request window position." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:130 msgid "``--screen ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:130 msgid "|release| Request window screen." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:132 msgid "``--single-window``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:132 msgid "|release| Use a single window (no separate subwindows)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:134 msgid "``--xr-mode ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:134 msgid "|release| Select XR mode ('default', 'off', 'on')." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:137 msgid "**Debug options**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:142 msgid "``-d``, ``--debug``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:142 msgid "|release| Debug (local stdout debugger)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:144 msgid "``-b``, ``--breakpoints``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:144 msgid "" "|release| Breakpoint list as source::line comma-separated pairs, no spaces " "(use ``%20`` instead)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:146 msgid "``--profiling``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:146 msgid "|release| Enable profiling in the script debugger." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:148 msgid "``--gpu-profile``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:148 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:150 msgid "``--gpu-validation``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:150 msgid "" "|release| Enable graphics API :ref:`validation layers " "` for debugging." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:152 msgid "``--gpu-abort``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:152 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:154 msgid "``--remote-debug ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:154 msgid "" "|release| Remote debug (``://[:]``, e.g. ``tcp://" "127.0.0.1:6007``)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:156 msgid "``--single-threaded-scene``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:156 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:158 msgid "``--debug-collisions``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:158 msgid "|debug| Show collision shapes when running the scene." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:160 msgid "``--debug-paths``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:160 msgid "|debug| Show path lines when running the scene." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:162 msgid "``--debug-navigation``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:162 msgid "|debug| Show navigation polygons when running the scene." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:164 msgid "``--debug-avoidance``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:164 msgid "|debug| Show navigation avoidance debug visuals when running the scene." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:166 msgid "``--debug-stringnames``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:166 msgid "" "|debug| Print all StringName allocations to stdout when the engine quits." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:168 msgid "``--frame-delay ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:168 msgid "" "|release| Simulate high CPU load (delay each frame by milliseconds)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:170 msgid "``--time-scale ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:170 msgid "" "|release| Force time scale (higher values are faster, 1.0 is normal speed)." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:172 msgid "``--disable-vsync``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:172 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:175 msgid "``--disable-render-loop``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:175 msgid "" "|release| Disable render loop so rendering only occurs when called " "explicitly from script." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:177 msgid "``--disable-crash-handler``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:177 msgid "|release| Disable crash handler when supported by the platform code." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:179 msgid "``--fixed-fps ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:179 msgid "" "|release| Force a fixed number of frames per second. This setting disables " "real-time synchronization." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:181 msgid "``--delta-smoothing ``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:181 msgid "" "|release| Enable or disable frame delta smoothing ('enable', 'disable')." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:183 msgid "``--print-fps``" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:183 msgid "|release| Print the frames per second to the stdout." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:186 msgid "**Standalone tools**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:191 msgid "``-s``, ``--script