# Godot Engine Documentation in Persian # Copyright (C) 2014-2022, 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. # # abolfazl daimekar , 2023. # Ahmad Maftoun , 2020, 2022. # Ali Almasi , 2022. # Ali Jafari , 2022. # Ali Khomami P , 2019. # Alireza Firouzi , 2019. # Amir Hossein Mafi , 2018. # Aryan Shamsinejad , 2020. # Dante Marshal , 2018, 2020. # duniyal ras , 2021. # Farshad Faemiyi , 2020. # Focus , 2019-2020. # Giga hertz , 2022. # hdteav , 2019. # ihaveapiece , 2020. # Ilia Abbasi , 2023, 2024. # ItzMiad44909858f5774b6d , 2020. # John Smith , 2022-2023, 2024. # Kianoosh Safapour , 2019. # Kiarash Bahrami , 2019-2020. # LordProfo (Nima) , 2022-2023. # Mahdi , 2018. # M , 2023. # M.bagher Ansari , 2020. # Mitsuha Miamizu , 2022. # mohamad por , 2020. # MohammadSaleh Kamyab , 2023. # MoriExplain , 2020. # MSKF , 2020. # Pikhosh , 2020. # Reza Shokri , 2020. # Saee Shamspour , 2018. # salman arab ameri , 2018. # sepehr , 2019. # Seyed Fazel Alavi , 2022. # Shahab Baradaran Dilmaghani (bdshahab) , 2023. # Tetra Homer , 2020. # محمد ایرانی , 2023. # Amirhossein Basirat , 2023. # Arshia , 2023. # "LordProfo (Nima)" , 2023. # theBSH , 2023. # یونس اسحاقی , 2023. # Hussein Alipoor , 2023. # Amirreza H , 2024. # Hossein Taj Teymori , 2024. # saeed dashti , 2024. # Nader , 2024. # HOSSIEN , 2024. # Atur Aseman , 2024, 2025. # Atomic8oy , 2024. # saman balahang , 2024. # Reza Maanijou , 2024. # Mohammadreza Mohammadi , 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-02-07 13:19+0100\n" "PO-Revision-Date: 2025-02-01 15:30+0000\n" "Last-Translator: Atur \n" "Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 5.10-dev\n" #: ../../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:20 #: ../../docs/about/docs_changelog.rst:227 #: ../../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/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:30 msgid "Contributing" msgstr "مشارکت" #: ../../docs/index.rst:140 ../../docs/about/docs_changelog.rst:239 msgid "Community" msgstr "‬جامعه" #: ../../docs/index.rst:151 msgid "Class reference" msgstr "کلاس منبع" #: ../../docs/index.rst:4 #, fuzzy msgid "Godot Docs – *4.3* branch" msgstr "مستندات گودوت - شاخهٔ *master*" #: ../../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 "" "یک issue یا pull request را در `مخزن گیت‌هاب `_ ثبت کنید، به ما در `ترجمه و ترازبانش مستندات `_ به زبان خودتان یاری رسانید، یا در " "کانال ``documentation#`` درون `گپ یاری‌رسانان گودوت `_ با ما سخن بگویید!" #: ../../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 (هر دوشنبه به‌روز " "می‌رسد) را بارگیری کنید: `پایدار `__ ، " "`تازه‌ترین `__ ، `نسخهٔ ۳.۶ " "`__ ، بایگانی 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 "" "برای گوشی‌ها یا کتابخوان‌های رایانه‌ای، می‌توانید یک روگرفت ePub (هر دوشنبه " "به‌روز می‌رسد): `پایدار `__ ، `تازه‌ترین " "`__ ، `نسخهٔ ۳.۶ `__ ، بایگانی ZIP را استخراج کرده و سپس پروندهٔ ``GodotEngine." "epub`` را درون یک برنامهٔ کتابخوان رایانه‌ای بگشایید." #: ../../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/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:9 #: ../../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_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/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/scripting/c_sharp/c_sharp_basics.rst:7 #: ../../docs/tutorials/scripting/gdextension/what_is_gdextension.rst:7 #: ../../docs/tutorials/scripting/gdextension/gdextension_cpp_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/shader_materials.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:13 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:18 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:23 msgid "Before you start" msgstr "پیش از آغاز کردن" #: ../../docs/about/introduction.rst:25 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 "" "برگهٔ : ref:`آموزش و بنمایه‌ها ` آموزش‌های ویدیویی را " "که به دست انجمن ساخته شده است را فهرست می‌کند. اگر آموزش ویدیویی را به " "نوشتاری ترجیح می‌دهید نگاهی به آن بیندازید. وگرنه برگهٔ :ref:`آغاز کردن` جای خوبی برای... آغاز کردن است." #: ../../docs/about/introduction.rst:30 #, fuzzy 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 "" "اگر مشکلی در رابطه با یکی از آموزش ها یا پروژه های خود دارید، میتوانید در :" "ref:`کانال های انجمن ` کمک بگیرید. خصوصا در انجمن " "`دیسکورد` گودو و `پرسش و پاسخ `_." #: ../../docs/about/introduction.rst:36 msgid "About Godot Engine" msgstr "دربارهٔ موتور گودوت" #: ../../docs/about/introduction.rst:38 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:42 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 "" "موتور گودوت یک موتور بازی‌سازی پرکارایی و کراس‌پلتفرم برای ساخت بازی‌های دوبعدی " "و سه‌بعدی از یک میانای یکدست است. این موتور مجموعه‌ای جامع از ابزارهای همگانی " "را فراهم می‌کند، تا کاربران بتوانند بجای «دوباره نوآفریدن چرخ» روی بازی‌سازی " "تمرکز کنند. کاربران می‌توانند با یک کلیک برای چندین سکو همچون سکوهای مهم " "دسکتاپ (لینوکس، ویندوز، مکینتاش)، گوشی (اندروید، آی‌.او‌.اس)، وب و کنسول از " "بازی‌های خود برون‌برد بگیرند." #: ../../docs/about/introduction.rst:49 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 "" "گودوت کاملا رایگان و متن‌باز بوده و زیر :ref:`مجوز آسانگیر ام.آی.تی " "` کار می‌کند. بی چون و چرا، بی حق امتیاز، هیچی. " "بازی‌های کاربران تا آخرین خط کد برای خودشان است. توسعهٔ گودوت کاملا ناوابسته و " "انجمن‌رانده می‌باشد، تا کاربران بتوانند در رساندن موتورشان به چشمداشت‌های خود " "کمک کنند. این موتور زیر پشتیبانی `بنیاد گودوت `_ " "که ناسودبَر است می‌باشد." #: ../../docs/about/introduction.rst:59 msgid "Organization of the documentation" msgstr "سازمان‌دهی مستندات" #: ../../docs/about/introduction.rst:61 msgid "This documentation is organized into several sections:" msgstr "این مستندات به چند بخش ساماندهی شده‌اند:" #: ../../docs/about/introduction.rst:63 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:66 msgid "" "**Getting Started** contains all necessary information on using the engine " "to make games. It starts with the :ref:`Step by step ` tutorial which should be the entry point for all new users. " "**This is the best place to start if you're new!**" msgstr "" "**آغاز کردن** دارای همهٔ اطلاعات نیاز برای بکارگیری موتور برای ساخت بازی " "می‌باشد. که با آموزش :ref:`گام به گام ` آغاز شده و " "بهتر است نقطهٔ آغازین همهٔ کاربران نو باشد. **اگر ناآشنا هستید اینجا بهترین جا " "برای آغاز است**" #: ../../docs/about/introduction.rst:70 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:72 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:78 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:82 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:86 msgid "" "In addition to this documentation, you may also want to take a look at the " "various `Godot demo projects `_." msgstr "" "افزون بر این مستندات، شاید بخواهید به `پروژه‌های دمو‌ی گودوت `_ نیز نگاهی بیندازید." #: ../../docs/about/introduction.rst:90 msgid "About this documentation" msgstr "دربارهٔ این مستندات" #: ../../docs/about/introduction.rst:92 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 "" "عضوهای انجمن موتور گودوت، پی‌درپی این مستندات را بهسازی و ویرایش کرده و به آن " "می‌افزایند. ما همیشه به دنبال کمک‌های بیشتر هستیم. شما هم می‌توانید با ترازبانش " "و ترجمهٔ مستندات به زبان خود یا با گشودن «issue» در گیت‌هاب مشارکت کنید. اگر " "می‌خواهید کمک کنید :ref:`راه‌های مشارکت ` و :ref:" "`نوشتن مستندات ` را بخوانید، یا با " "`گروه مستندات `_ در `گپ " "مشارکت‌کنندگان گودوت ` در ارتباط باشید." #: ../../docs/about/introduction.rst:100 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 ۳.۰ " "(`CC BY ۳.۰ `_)، با انتساب به " "«*Juan Linietsky (خوآن لینیِتْسْکْی)، Ariel Manzur (آریِل مانزور)، و انجمن موتور " "گودوت*»،‌ کار می‌کند؛ تا زمانی که جز آن یاد شود." #: ../../docs/about/introduction.rst:105 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 #, fuzzy 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 را نمایش می دهد. " "`\" __ " "بعضی از این ویژگی ها ممکن است در در نسخه پایدار بعدی(LTS) در دسترس نباشد." #: ../../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 #, fuzzy msgid "Windows (x86 and ARM, 64-bit and 32-bit)." msgstr "لينوكس (x۸۶ و ARM)،(۳۲ بیتی و ۶۴ بیتی)." #: ../../docs/about/list_of_features.rst:26 msgid "macOS (x86 and ARM, 64-bit only)." msgstr "مک(X86 و 64بیت فقط)" #: ../../docs/about/list_of_features.rst:27 msgid "Linux (x86 and ARM, 64-bit and 32-bit)." msgstr "لينوكس (x۸۶ و ARM)،(۳۲ بیتی و ۶۴ بیتی)." #: ../../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 "" "باینری های رسمی با استفاده از buildroot موتور Godot کامپایل می شوند `__,اجازه دادن به باینری هایی که در توزیع " "های رایج لینوکس (از جمله انواع LTS) کار می کنند." #: ../../docs/about/list_of_features.rst:35 msgid "Android (editor support is experimental)." msgstr "اندروید (پشتیبانی از ویراستار آزمایشی‌ست)" #: ../../docs/about/list_of_features.rst:36 msgid "" ":ref:`Web browsers `. Experimental in 4.0, using " "Godot 3.x is recommended instead when targeting HTML5." msgstr "" ":ref:`مرورگرها `. در ۴.۰ آزمایشی است، برای برون‌برد " "به اچ.تی.ام.ال ۵ به جای آن گودوت ‌۳.x پیشنهاد می‌شود." #: ../../docs/about/list_of_features.rst:39 msgid "**Runs exported projects:**" msgstr "** پروژه های صادر شده را اجرا می کند: **" #: ../../docs/about/list_of_features.rst:41 msgid "iOS." msgstr "سیستم عامل IOS" #: ../../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 "" "پروژه های نوشته شده در سی شارپ با استفاده از Godot 4 در حال حاضر نمی توانند " "برای پلتفرم وب خروجی دهند. میتوانید Godot 3 را برای آن پلتفرم در نظر بگیرید. " "پشتیبانی از پلتفرم Android و IOS از Godot 4.2 در دسترس است، اما آزمایشی و :" "ref:`برخی محدودیت ها اعمال می شود `." #: ../../docs/about/list_of_features.rst:55 #: ../../docs/about/docs_changelog.rst:201 #: ../../docs/about/docs_changelog.rst:256 #: ../../docs/tutorials/editor/external_editor.rst:43 #: ../../docs/contributing/development/compiling/compiling_with_dotnet.rst:189 msgid "Editor" msgstr "ویراستار" #: ../../docs/about/list_of_features.rst:57 #: ../../docs/about/list_of_features.rst:495 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 ":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 "مشخصات بصری با نشانه های زمان CPU و GPU برای هر مرحله از خط لوله رندر." #: ../../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:`asset " "library ` دریافت کنید." #: ../../docs/about/list_of_features.rst:90 #, fuzzy msgid "" ":ref:`Create your own plugins ` using GDScript to add " "new features or speed up your workflow." msgstr "" "برای افزودن ویژگی‌های جدید یا سرعت بخشیدن به گردش کار خود، با استفاده از جی " "دی اسکریپت پلاگین‌های خود را ایجاد کنید." #: ../../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 "" "پروژه‌ها را از asset library از داخل project manager مستقیم دریافت کنید." #: ../../docs/about/list_of_features.rst:96 #: ../../docs/about/docs_changelog.rst:47 #: ../../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/2d/index.rst:17 #: ../../docs/tutorials/2d/using_tilemaps.rst:58 #: ../../docs/tutorials/3d/index.rst:18 #: ../../docs/tutorials/performance/thread_safe_apis.rst:55 #: ../../docs/tutorials/rendering/index.rst:4 #: ../../docs/tutorials/rendering/viewports.rst:202 msgid "Rendering" msgstr "رندر کردن" #: ../../docs/about/list_of_features.rst:98 msgid "" "3 rendering *methods* (running over 2 rendering *drivers*) are available:" msgstr "" #: ../../docs/about/list_of_features.rst:100 msgid "" "**Forward+**, running over Vulkan 1.0 (with optional Vulkan 1.1 and 1.2 " "features). The most advanced graphics backend, suited for desktop platforms " "only. Used by default on desktop platforms." msgstr "" #: ../../docs/about/list_of_features.rst:103 msgid "" "**Forward Mobile**, running over Vulkan 1.0 (with optional Vulkan 1.1 and " "1.2 features). Less features, but renders simple scenes faster. Suited for " "mobile and desktop platforms. Used by default on mobile platforms." msgstr "" #: ../../docs/about/list_of_features.rst:106 msgid "" "**Compatibility**, running over OpenGL 3.3 / OpenGL ES 3.0 / WebGL 2.0. The " "least advanced graphics backend, suited for low-end desktop and mobile " "platforms. Used by default on the web platform." msgstr "" #: ../../docs/about/list_of_features.rst:111 msgid "2D graphics" msgstr "گرافیک‌های دو بعدی" #: ../../docs/about/list_of_features.rst:113 msgid "Sprite, polygon and line rendering." msgstr "رندر کردن اسپرایت، چند ضلعی و خط." #: ../../docs/about/list_of_features.rst:115 #, 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:118 #, fuzzy msgid "AnimatedSprite2D as a helper for creating animated sprites." msgstr "AnimatedSprite به عنوان کمک کننده برای ایجاد اسپرایت‌های متحرک." #: ../../docs/about/list_of_features.rst:119 msgid "Parallax layers." msgstr "لایه‌های اختلاف‌دید (پارالاکس)." #: ../../docs/about/list_of_features.rst:121 msgid "Pseudo-3D support including preview in the editor." msgstr "" #: ../../docs/about/list_of_features.rst:123 msgid "" ":ref:`2D lighting ` with normal maps and specular " "maps." msgstr "" #: ../../docs/about/list_of_features.rst:125 #, fuzzy msgid "Point (omni/spot) and directional 2D lights." msgstr "نورهای چند سویه." #: ../../docs/about/list_of_features.rst:126 #, fuzzy msgid "Hard or soft shadows (adjustable on a per-light basis)." msgstr "" "تکنیک Dithering (ترکیب نقطه هاى رنگارنگ براى یک رنگ جدید) می تواند توسط هر " "پیکسل یا توسط هر شی (object) پیاده سازی شود." #: ../../docs/about/list_of_features.rst:127 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:131 msgid "" ":ref:`Font rendering ` using bitmaps, rasterization " "using FreeType or multi-channel signed distance fields (MSDF)." msgstr "" #: ../../docs/about/list_of_features.rst:134 #, 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:136 #, fuzzy msgid "" "Dynamic fonts support monochrome fonts as well as colored fonts (e.g. for " "emoji). Supported formats are TTF, OTF, WOFF1 and WOFF2." msgstr "" "DynamicFont، هم از فونت‌های تک‌رنگ و هم از فونت‌های رنگی پشتیبانی می‌کند. OTF و " "TTF فرمت‌فایل‌های پشتیبانی شده می‌باشند." #: ../../docs/about/list_of_features.rst:138 #, fuzzy msgid "" "Dynamic fonts support optional font outlines with adjustable width and color." msgstr "" "DynamicFont از گزینه اختیاری خطوط بیرونی با ضخامت و رنگ قابل تعیین پشتیبانی " "می کند." #: ../../docs/about/list_of_features.rst:139 msgid "" "Dynamic fonts support variable fonts and OpenType features including " "ligatures." msgstr "" #: ../../docs/about/list_of_features.rst:140 msgid "" "Dynamic fonts support simulated bold and italic when the font file lacks " "those styles." msgstr "" #: ../../docs/about/list_of_features.rst:142 #, fuzzy msgid "" "Dynamic fonts support oversampling to keep fonts sharp at higher resolutions." msgstr "" "پشتیبانی از font oversampling برای تیز نگه داشتن فونت ها در رزولوشن های " "بالاتر." #: ../../docs/about/list_of_features.rst:143 msgid "" "Dynamic fonts support subpixel positioning to make fonts crisper at low " "sizes." msgstr "" #: ../../docs/about/list_of_features.rst:144 msgid "" "Dynamic fonts support LCD subpixel optimizations to make fonts even crisper " "at low sizes." msgstr "" #: ../../docs/about/list_of_features.rst:145 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:149 #, fuzzy msgid "" "GPU-based :ref:`particles ` with support for :ref:" "`custom particle shaders `." msgstr "ذرات بر پایه پردازنده گرافیکی، با پشتیبانی از shader‌های ذرات." #: ../../docs/about/list_of_features.rst:151 #: ../../docs/about/list_of_features.rst:341 msgid "CPU-based particles." msgstr "ذرات مبتنی بر CPU." #: ../../docs/about/list_of_features.rst:152 msgid "" "Optional :ref:`2D HDR rendering " "` for better glow " "capabilities." msgstr "" #: ../../docs/about/list_of_features.rst:156 msgid "2D tools" msgstr "ابزارهای دو بعدی" #: ../../docs/about/list_of_features.rst:158 msgid ":ref:`TileMaps ` for 2D tile-based level design." msgstr "" #: ../../docs/about/list_of_features.rst:159 msgid "2D camera with built-in smoothing and drag margins." msgstr "دوربین دوبعدی با قابلیت لرزه گیری و کشیدن حاشیه ها." #: ../../docs/about/list_of_features.rst:160 msgid "Path2D node to represent a path in 2D space." msgstr "گره Path2D برای نشان دادن یک مسیر در فضای دوبعدی." #: ../../docs/about/list_of_features.rst:162 #: ../../docs/about/list_of_features.rst:402 msgid "Can be drawn in the editor or generated procedurally." msgstr "" "که می تواند در ویرایشگر کشیده شود یا توسط روش های مرسوم دیگر ایجاد شود." #: ../../docs/about/list_of_features.rst:163 msgid "PathFollow2D node to make nodes follow a Path2D." msgstr "گره PathFollow2D برای دنبال کردن Path2D توسط سایر گره ها." #: ../../docs/about/list_of_features.rst:165 msgid ":ref:`2D geometry helper class `." msgstr ":ref:`2D geometry helper class `." #: ../../docs/about/list_of_features.rst:168 msgid "2D physics" msgstr "فیزیک دو بعدی" #: ../../docs/about/list_of_features.rst:170 #: ../../docs/about/list_of_features.rst:412 msgid "**Physics bodies:**" msgstr "**اجسام فیزیکی:**" #: ../../docs/about/list_of_features.rst:172 #: ../../docs/about/list_of_features.rst:414 msgid "Static bodies." msgstr "اجسام ایستا و بدون حرکت(Static bodies)." #: ../../docs/about/list_of_features.rst:173 #: ../../docs/about/list_of_features.rst:415 msgid "" "Animatable bodies (for objects moving only by script or animation, such as " "doors and platforms)." msgstr "" "اجسام قابل متحرک (برای اشیایی که فقط با فیلمنامه یا انیمیشن حرکت می کنند، " "مانند درها و سکوها)." #: ../../docs/about/list_of_features.rst:174 #: ../../docs/about/list_of_features.rst:416 msgid "Rigid bodies." msgstr "اجسام سخت (Rigid bodies)." #: ../../docs/about/list_of_features.rst:175 #: ../../docs/about/list_of_features.rst:417 msgid "Character bodies." msgstr "بدن شخصیت." #: ../../docs/about/list_of_features.rst:176 #: ../../docs/about/list_of_features.rst:419 msgid "Joints." msgstr "مفصل ها (Joints)." #: ../../docs/about/list_of_features.rst:177 #: ../../docs/about/list_of_features.rst:422 msgid "Areas to detect bodies entering or leaving it." msgstr "محیط هایی که تشخیص می دهند اجسام به آن ها وارد یا خارج می شوند." #: ../../docs/about/list_of_features.rst:179 #: ../../docs/about/list_of_features.rst:424 msgid "**Collision detection:**" msgstr "**ردیابی برخورد:**" #: ../../docs/about/list_of_features.rst:181 #, fuzzy msgid "" "Built-in shapes: line, box, circle, capsule, world boundary (infinite plane)." msgstr "اشکال تعبیه شده: خط، جعبه، دایره، کپسول." #: ../../docs/about/list_of_features.rst:182 msgid "" "Collision polygons (can be drawn manually or generated from a sprite in the " "editor)." msgstr "" "چندضلعی های برخورد (که می توان به صورت دستی کشید یا آن را از یک Sprite در " "ویرایشگر تولید کرد)." #: ../../docs/about/list_of_features.rst:185 msgid "3D graphics" msgstr "گرافیک سه بعدی" #: ../../docs/about/list_of_features.rst:187 #, fuzzy msgid "HDR rendering with sRGB." msgstr "انجام HDR rendering توسط sRGB." #: ../../docs/about/list_of_features.rst:188 msgid "Perspective, orthographic and frustum-offset cameras." msgstr "دوربین های Perspectiv، orthographic و frustum-offset." #: ../../docs/about/list_of_features.rst:189 #, fuzzy msgid "" "When using the Forward+ backend, a depth prepass is used to improve " "performance in complex scenes by reducing the cost of overdraw." msgstr "" "هنگام استفاده از Forward+ backend,یک پیش گذر عمق برای بهبود عملکرد در صحنه " "های پیچیده با کاهش هزینه اضافه برداشت استفاده می شود" #: ../../docs/about/list_of_features.rst:191 msgid "" ":ref:`doc_variable_rate_shading` on supported GPUs in Forward+ and Forward " "Mobile." msgstr "" #: ../../docs/about/list_of_features.rst:193 #, fuzzy msgid "**Physically-based rendering (built-in material features):**" msgstr "**rendering برای اساس فیزیک (Physically-based rendering):**" #: ../../docs/about/list_of_features.rst:195 msgid "Follows the Disney PBR model." msgstr "مدل Disney PBR را دنبال می کند." #: ../../docs/about/list_of_features.rst:196 msgid "" "Supports Burley, Lambert, Lambert Wrap (half-Lambert) and Toon diffuse " "shading modes." msgstr "" #: ../../docs/about/list_of_features.rst:197 msgid "Supports Schlick-GGX, Toon and Disabled specular shading modes." msgstr "" #: ../../docs/about/list_of_features.rst:198 msgid "Uses a roughness-metallic workflow with support for ORM textures." msgstr "" "از سیستم کاری roughness-metallic استفاده می کند که پشتیبانی از طرح های ORM " "را ممکن می سازد." #: ../../docs/about/list_of_features.rst:199 msgid "" "Uses horizon specular occlusion (Filament model) to improve material " "appearance." msgstr "از انسداد چشمی افق (مدل فیلامنت) برای بهبود ظاهر مواد استفاده می کند." #: ../../docs/about/list_of_features.rst:200 msgid "Normal mapping." msgstr "نقشه برداری عادی." #: ../../docs/about/list_of_features.rst:201 #, fuzzy msgid "" "Parallax/relief mapping with automatic level of detail based on distance." msgstr "" "*GLES3:* مطابقت توسط Parallax/relief که میزان جزییات را براساس فاصله به صورت " "خودکار تنظیم می کند." #: ../../docs/about/list_of_features.rst:202 msgid "Detail mapping for the albedo and normal maps." msgstr "" #: ../../docs/about/list_of_features.rst:203 #, fuzzy msgid "Sub-surface scattering and transmittance." msgstr "*GLES3:*پراکندگی زیرسطح و سرایت." #: ../../docs/about/list_of_features.rst:204 msgid "" "Screen-space refraction with support for material roughness (resulting in " "blurry refraction)." msgstr "" #: ../../docs/about/list_of_features.rst:205 #, fuzzy msgid "Proximity fade (soft particles) and distance fade." msgstr "*GLES3:*ناپدید شدن در نزدیکی (گرد و غبار ملایم)." #: ../../docs/about/list_of_features.rst:206 #, fuzzy msgid "" "Distance fade can use alpha blending or dithering to avoid going through the " "transparent pipeline." msgstr "" "شفاف شدن در فاصله که میتوان از مخلوط کردن alpha یا از تکنیک dithering برای " "جلوگیری از عبور از میان کانال ارتباطی شفاف استفاده کرد." #: ../../docs/about/list_of_features.rst:208 msgid "Dithering can be determined on a per-pixel or per-object basis." msgstr "" "تکنیک Dithering (ترکیب نقطه هاى رنگارنگ براى یک رنگ جدید) می تواند توسط هر " "پیکسل یا توسط هر شی (object) پیاده سازی شود." #: ../../docs/about/list_of_features.rst:210 msgid "**Real-time lighting:**" msgstr "**نورپردازی زنده:**" #: ../../docs/about/list_of_features.rst:212 msgid "Directional lights (sun/moon). Up to 4 per scene." msgstr "نورهای جهت دار (خورشید/ماه). تا ۴ عدد برای هر صحنه." #: ../../docs/about/list_of_features.rst:213 msgid "Omnidirectional lights." msgstr "نورهای چند سویه." #: ../../docs/about/list_of_features.rst:214 msgid "Spot lights with adjustable cone angle and attenuation." msgstr "نورهای نقطه ای با زاویه مخروطی و قدرت قابل تعیین." #: ../../docs/about/list_of_features.rst:215 #, fuzzy msgid "" "Specular, indirect light, and volumetric fog energy can be adjusted on a per-" "light basis." msgstr "" "تکنیک Dithering (ترکیب نقطه هاى رنگارنگ براى یک رنگ جدید) می تواند توسط هر " "پیکسل یا توسط هر شی (object) پیاده سازی شود." #: ../../docs/about/list_of_features.rst:216 msgid "" "Adjustable light \"size\" for fake area lights (will also make shadows " "blurrier)." msgstr "" "نور قابل تنظیم \"اندازه\" برای چراغ های تقلبی منطقه (همچنین سایه ها را محوتر " "می کند)" #: ../../docs/about/list_of_features.rst:217 msgid "" "Optional distance fade system to fade distant lights and their shadows, " "improving performance." msgstr "" #: ../../docs/about/list_of_features.rst:218 msgid "" "When using the Forward+ backend (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:221 msgid "" "When using the Forward Mobile backend, 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:225 msgid "**Shadow mapping:**" msgstr "**سایه زنی:**" #: ../../docs/about/list_of_features.rst:227 msgid "" "*DirectionalLight:* Orthogonal (fastest), PSSM 2-split and 4-split. Supports " "blending between splits." msgstr "" "*DirectionalLight:*Orthogonal (سریعترین)، PSSM دوشکافه و چهارشکافه. مخلوط " "کردن بین شکاف ها هم پشتیبانی می شود." #: ../../docs/about/list_of_features.rst:229 msgid "" "*OmniLight:* Dual paraboloid (fast) or cubemap (slower but more accurate). " "Supports colored projector textures in the form of panoramas." msgstr "" "*OmniLight:* به صورت سهمی دوتایی(سریع) یا انطباق مکعبی(cubemap) که البته " "کندتر است ولی دقت بالاتری دارد. از طرح های رنگی پروژکتور به صورت پاناروما " "پشتیبانی می شود." #: ../../docs/about/list_of_features.rst:231 #, fuzzy msgid "*SpotLight:* Single texture. Supports colored projector textures." msgstr "*SpotLight:* طرح تکی." #: ../../docs/about/list_of_features.rst:232 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:234 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:236 #, fuzzy msgid "Adjustable shadow blur on a per-light basis." msgstr "" "تکنیک Dithering (ترکیب نقطه هاى رنگارنگ براى یک رنگ جدید) می تواند توسط هر " "پیکسل یا توسط هر شی (object) پیاده سازی شود." #: ../../docs/about/list_of_features.rst:238 msgid "**Global illumination with indirect lighting:**" msgstr "**روشنایی سراسری با نورپردازی غیرمستقیم:**" #: ../../docs/about/list_of_features.rst:240 #, fuzzy msgid "" ":ref:`Baked lightmaps ` (fast, but can't be updated " "at run-time)." msgstr "" "نقشه های نوری پخته ( سریع اما قابلیت بروزرسانی در زمان اجرا را ندارند)." #: ../../docs/about/list_of_features.rst:242 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:245 msgid "" "Supports lighting dynamic objects using automatic and manually placed probes." msgstr "" #: ../../docs/about/list_of_features.rst:246 msgid "" "Optionally supports directional lighting and rough reflections based on " "spherical harmonics." msgstr "" #: ../../docs/about/list_of_features.rst:248 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:251 msgid "" "Supports GPU-based :ref:`denoising ` with " "JNLM, or CPU/GPU-based denoising with OIDN." msgstr "" #: ../../docs/about/list_of_features.rst:254 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 run-time (including " "from an exported project)." msgstr "" #: ../../docs/about/list_of_features.rst:258 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:261 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:264 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:267 msgid "**Reflections:**" msgstr "**بازتاب‌ها:**" #: ../../docs/about/list_of_features.rst:269 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:273 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:275 msgid "Screen-space reflections with support for material roughness." msgstr "" #: ../../docs/about/list_of_features.rst:276 msgid "" "Reflection techniques can be mixed together for greater accuracy or " "scalability." msgstr "" #: ../../docs/about/list_of_features.rst:277 msgid "" "When using the Forward+ backend (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:280 msgid "" "When using the Forward Mobile backend, up to 8 reflection probes can be " "displayed per mesh resource." msgstr "" #: ../../docs/about/list_of_features.rst:283 #, fuzzy msgid "**Decals:**" msgstr "**قابلیت ها:**" #: ../../docs/about/list_of_features.rst:285 msgid "" ":ref:`Supports albedo `, emissive, :abbr:`ORM (Occlusion " "Roughness Metallic)`, and normal mapping." msgstr "" #: ../../docs/about/list_of_features.rst:287 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:289 msgid "" "Support for normal fade to fade the decal depending on its incidence angle." msgstr "" #: ../../docs/about/list_of_features.rst:290 msgid "" "Does not rely on run-time 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:292 #, fuzzy msgid "" "Support for nearest, bilinear, trilinear or anisotropic texture filtering " "(configured globally)." msgstr "فیلترکردن نزدیکترین، دوخطی، سه‌خطی یا ناهمسانگرد." #: ../../docs/about/list_of_features.rst:293 msgid "" "Optional distance fade system to fade distant decals, improving performance." msgstr "" #: ../../docs/about/list_of_features.rst:294 msgid "" "When using the Forward+ backend (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:297 msgid "" "When using the Forward Mobile backend, up to 8 decals can be displayed per " "mesh resource." msgstr "" #: ../../docs/about/list_of_features.rst:300 msgid "**Sky:**" msgstr "**آسمان:**" #: ../../docs/about/list_of_features.rst:302 msgid "Panorama sky (using an HDRI)." msgstr "آسمان پانورما (با استفاده از یک HDRI)." #: ../../docs/about/list_of_features.rst:303 msgid "" "Procedural sky and Physically-based sky that respond to the " "DirectionalLights in the scene." msgstr "" #: ../../docs/about/list_of_features.rst:304 msgid "" "Support for :ref:`custom sky shaders `, which can be " "animated." msgstr "" #: ../../docs/about/list_of_features.rst:305 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:308 msgid "**Fog:**" msgstr "**مِه:**" #: ../../docs/about/list_of_features.rst:310 msgid "Exponential depth fog." msgstr "" #: ../../docs/about/list_of_features.rst:311 msgid "Exponential height fog." msgstr "" #: ../../docs/about/list_of_features.rst:312 msgid "" "Support for automatic fog color depending on the sky color (aerial " "perspective)." msgstr "" #: ../../docs/about/list_of_features.rst:313 #, fuzzy msgid "Support for sun scattering in the fog." msgstr "شرط" #: ../../docs/about/list_of_features.rst:314 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:316 #, fuzzy msgid "Support for making specific materials ignore fog." msgstr "شرط" #: ../../docs/about/list_of_features.rst:318 msgid "**Volumetric fog:**" msgstr "" #: ../../docs/about/list_of_features.rst:320 msgid "" "Global :ref:`volumetric fog ` that reacts to lights and " "shadows." msgstr "" #: ../../docs/about/list_of_features.rst:321 msgid "" "Volumetric fog can take indirect light into account when using VoxelGI or " "SDFGI." msgstr "" #: ../../docs/about/list_of_features.rst:322 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:324 msgid "Each fog volume can have its own custom shader." msgstr "" #: ../../docs/about/list_of_features.rst:325 msgid "Can be used together with traditional fog." msgstr "" #: ../../docs/about/list_of_features.rst:327 msgid "**Particles:**" msgstr "**ذرات:**" #: ../../docs/about/list_of_features.rst:329 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:332 msgid "" "3D particle attractor shapes supported: box, sphere and 3D vector fields." msgstr "" #: ../../docs/about/list_of_features.rst:333 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:335 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:337 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:339 msgid "Support for custom particle shaders with manual emission." msgstr "" #: ../../docs/about/list_of_features.rst:343 msgid "**Post-processing:**" msgstr "**پسا-پردازش:**" #: ../../docs/about/list_of_features.rst:345 msgid "Tonemapping (Linear, Reinhard, Filmic, ACES)." msgstr "" #: ../../docs/about/list_of_features.rst:346 msgid "" "Automatic exposure adjustments based on viewport brightness (and manual " "exposure override)." msgstr "" #: ../../docs/about/list_of_features.rst:347 msgid "" "Near and far depth of field with adjustable bokeh simulation (box, hexagon, " "circle)." msgstr "" #: ../../docs/about/list_of_features.rst:348 msgid "Screen-space ambient occlusion (SSAO) at half or full resolution." msgstr "" #: ../../docs/about/list_of_features.rst:349 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:351 msgid "Glow can have a colored dirt map texture, acting as a lens dirt effect." msgstr "" #: ../../docs/about/list_of_features.rst:352 msgid "" "Glow can be :ref:`used as a screen-space blur effect " "`." msgstr "" #: ../../docs/about/list_of_features.rst:353 msgid "Color correction using a one-dimensional ramp or a 3D LUT texture." msgstr "" #: ../../docs/about/list_of_features.rst:354 msgid "Roughness limiter to reduce the impact of specular aliasing." msgstr "" #: ../../docs/about/list_of_features.rst:355 msgid "Brightness, contrast and saturation adjustments." msgstr "" #: ../../docs/about/list_of_features.rst:357 msgid "**Texture filtering:**" msgstr "**فیلترکردن تکسچر:**" #: ../../docs/about/list_of_features.rst:359 msgid "Nearest, bilinear, trilinear or anisotropic filtering." msgstr "فیلترکردن نزدیکترین، دوخطی، سه‌خطی یا ناهمسانگرد." #: ../../docs/about/list_of_features.rst:360 #, fuzzy msgid "" "Filtering options are defined on a per-use basis, not a per-texture basis." msgstr "" "تکنیک Dithering (ترکیب نقطه هاى رنگارنگ براى یک رنگ جدید) می تواند توسط هر " "پیکسل یا توسط هر شی (object) پیاده سازی شود." #: ../../docs/about/list_of_features.rst:362 msgid "**Texture compression:**" msgstr "**فشرده‌سازی تکسچر:**" #: ../../docs/about/list_of_features.rst:364 msgid "Basis Universal (slow, but results in smaller files)." msgstr "" #: ../../docs/about/list_of_features.rst:365 msgid "BPTC for high-quality compression (not supported on macOS)." msgstr "" #: ../../docs/about/list_of_features.rst:366 #, fuzzy msgid "ETC2 (not supported on macOS)." msgstr "گرافیک‌های بالا. برای پلتفرم‌های دسکتاپ توصیه می‌شود." #: ../../docs/about/list_of_features.rst:367 #, fuzzy msgid "S3TC (not supported on mobile/Web platforms)." msgstr "گرافیک‌های بالا. برای پلتفرم‌های دسکتاپ توصیه می‌شود." #: ../../docs/about/list_of_features.rst:369 #, fuzzy msgid "**Antialiasing:**" msgstr "**ضد پلگی:**" #: ../../docs/about/list_of_features.rst:371 msgid "Temporal :ref:`antialiasing ` (TAA)." msgstr "" #: ../../docs/about/list_of_features.rst:372 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:374 msgid "" "Multi-sample antialiasing (MSAA), for both :ref:`doc_2d_antialiasing` and :" "ref:`doc_3d_antialiasing`." msgstr "" #: ../../docs/about/list_of_features.rst:375 msgid "Fast approximate antialiasing (FXAA)." msgstr "" #: ../../docs/about/list_of_features.rst:376 msgid "" "Super-sample antialiasing (SSAA) using bilinear 3D scaling and a 3D " "resolution scale above 1.0." msgstr "" #: ../../docs/about/list_of_features.rst:377 msgid "" "Alpha antialiasing, MSAA alpha to coverage and alpha hashing on a per-" "material basis." msgstr "" #: ../../docs/about/list_of_features.rst:379 #, fuzzy msgid "**Resolution scaling:**" msgstr "**بازتاب‌ها:**" #: ../../docs/about/list_of_features.rst:381 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:384 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:386 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:389 #, fuzzy 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:394 msgid "3D tools" msgstr "ابزارهای سه بعدی" #: ../../docs/about/list_of_features.rst:396 #, fuzzy msgid "" "Built-in meshes: cube, cylinder/cone, (hemi)sphere, prism, plane, quad, " "torus, ribbon, tube." msgstr "مش‌های داخلی: مکعب، سیلندر/مخروط، نیمکره، منشور، صفحه، چهارضلعی." #: ../../docs/about/list_of_features.rst:397 msgid ":ref:`GridMaps ` for 3D tile-based level design." msgstr "" #: ../../docs/about/list_of_features.rst:398 msgid "" ":ref:`Constructive solid geometry ` (intended for " "prototyping)." msgstr "" #: ../../docs/about/list_of_features.rst:399 msgid "" "Tools for :ref:`procedural geometry generation `." msgstr "" "ابزارهایی برای :ref:`procedural geometry generation " "` ." #: ../../docs/about/list_of_features.rst:400 msgid "Path3D node to represent a path in 3D space." msgstr "" #: ../../docs/about/list_of_features.rst:403 msgid "PathFollow3D node to make nodes follow a Path3D." msgstr "" #: ../../docs/about/list_of_features.rst:405 msgid ":ref:`3D geometry helper class `." msgstr ":ref:`3D geometry helper class `." #: ../../docs/about/list_of_features.rst:406 msgid "" "Support for exporting the current scene as a glTF 2.0 file, both from the " "editor and at run-time from an exported project." msgstr "" #: ../../docs/about/list_of_features.rst:410 msgid "3D physics" msgstr "فیزیک سه بعدی" #: ../../docs/about/list_of_features.rst:418 msgid "Vehicle bodies (intended for arcade physics, not simulation)." msgstr "بدنه خودرو (برای فیزیک آرکید در نظر گرفته شده است، نه شبیه‌سازی)." #: ../../docs/about/list_of_features.rst:420 msgid "Soft bodies." msgstr "بدن‌های نرم." #: ../../docs/about/list_of_features.rst:421 msgid "Ragdolls." msgstr "رگدال‌ها." #: ../../docs/about/list_of_features.rst:426 #, fuzzy msgid "" "Built-in shapes: cuboid, sphere, capsule, cylinder, world boundary (infinite " "plane)." msgstr "شکل‌های داخلی: مکعب، کره، کپسول، استوانه." #: ../../docs/about/list_of_features.rst:427 msgid "Generate triangle collision shapes for any mesh from the editor." msgstr "" #: ../../docs/about/list_of_features.rst:428 msgid "" "Generate one or several convex collision shapes for any mesh from the editor." msgstr "" #: ../../docs/about/list_of_features.rst:431 #: ../../docs/about/docs_changelog.rst:166 #: ../../docs/about/docs_changelog.rst:290 #: ../../docs/tutorials/shaders/index.rst:4 msgid "Shaders" msgstr "سایه‌زن‌ها" #: ../../docs/about/list_of_features.rst:433 msgid "*2D:* Custom vertex, fragment, and light shaders." msgstr "" #: ../../docs/about/list_of_features.rst:434 msgid "*3D:* Custom vertex, fragment, light, and sky shaders." msgstr "" #: ../../docs/about/list_of_features.rst:435 msgid "" "Text-based shaders using a :ref:`shader language inspired by GLSL " "`." msgstr "" #: ../../docs/about/list_of_features.rst:436 msgid "Visual shader editor." msgstr "" #: ../../docs/about/list_of_features.rst:438 msgid "Support for visual shader plugins." msgstr "" #: ../../docs/about/list_of_features.rst:441 #: ../../docs/about/docs_changelog.rst:158 #: ../../docs/about/docs_changelog.rst:295 #: ../../docs/about/docs_changelog.rst:401 #: ../../docs/tutorials/scripting/index.rst:4 msgid "Scripting" msgstr "اسکریپت نویسی" #: ../../docs/about/list_of_features.rst:443 msgid "**General:**" msgstr "**کلیات:**" #: ../../docs/about/list_of_features.rst:445 msgid "Object-oriented design pattern with scripts extending nodes." msgstr "" #: ../../docs/about/list_of_features.rst:446 msgid "Signals and groups for communicating between scripts." msgstr "" #: ../../docs/about/list_of_features.rst:447 msgid "" "Support for :ref:`cross-language scripting `." msgstr "" "پشتیبانی برای :ref:`cross-language scripting " "` ." #: ../../docs/about/list_of_features.rst:448 msgid "" "Many 2D, 3D and 4D linear algebra data types such as vectors and transforms." msgstr "" #: ../../docs/about/list_of_features.rst:450 msgid ":ref:`GDScript: `" msgstr ":ref:`GDScript: `" #: ../../docs/about/list_of_features.rst:452 msgid "" ":ref:`High-level interpreted language ` with :ref:`optional " "static typing `." msgstr "" #: ../../docs/about/list_of_features.rst:454 msgid "" "Syntax inspired by Python. However, GDScript is **not** based on Python." msgstr "" #: ../../docs/about/list_of_features.rst:455 msgid "Syntax highlighting is provided on GitHub." msgstr "" #: ../../docs/about/list_of_features.rst:456 msgid "" ":ref:`Use threads ` to perform asynchronous " "actions or make use of multiple processor cores." msgstr "" #: ../../docs/about/list_of_features.rst:459 msgid ":ref:`C#: `" msgstr ":ref:`C#: `" #: ../../docs/about/list_of_features.rst:461 msgid "Packaged in a separate binary to keep file sizes and dependencies down." msgstr "" #: ../../docs/about/list_of_features.rst:462 msgid "Supports .NET 6 and higher." msgstr "" #: ../../docs/about/list_of_features.rst:464 msgid "Full support for the C# 10.0 syntax and features." msgstr "" #: ../../docs/about/list_of_features.rst:466 msgid "" "Supports Windows, Linux, and macOS. As of 4.2 experimental support for " "Android and iOS is also available (requires a .NET 7.0 project for Android " "and 8.0 for iOS)." msgstr "" #: ../../docs/about/list_of_features.rst:469 msgid "" "On the Android platform only some architectures are supported: ``arm64`` and " "``x64``." msgstr "" #: ../../docs/about/list_of_features.rst:470 msgid "On the iOS platform only some architectures are supported: ``arm64``." msgstr "" #: ../../docs/about/list_of_features.rst:471 msgid "" "The web platform is currently unsupported. To use C# on that platform, " "consider Godot 3 instead." msgstr "" #: ../../docs/about/list_of_features.rst:474 msgid "" "Using an external editor is recommended to benefit from IDE functionality." msgstr "" #: ../../docs/about/list_of_features.rst:476 msgid "**GDExtension (C, C++, Rust, D, ...):**" msgstr "" #: ../../docs/about/list_of_features.rst:478 msgid "" "When you need it, link to native libraries for higher performance and third-" "party integrations." msgstr "" #: ../../docs/about/list_of_features.rst:480 msgid "" "For scripting game logic, GDScript or C# are recommended if their " "performance is suitable." msgstr "" #: ../../docs/about/list_of_features.rst:483 msgid "" "Official GDExtension bindings for `C `__ and `C++ `__." msgstr "" #: ../../docs/about/list_of_features.rst:486 msgid "Use any build system and language features you wish." msgstr "" #: ../../docs/about/list_of_features.rst:488 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:493 #: ../../docs/about/docs_changelog.rst:322 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:150 #: ../../docs/tutorials/audio/index.rst:6 #: ../../docs/tutorials/export/exporting_for_web.rst:221 msgid "Audio" msgstr "صدا" #: ../../docs/about/list_of_features.rst:497 msgid "Mono, stereo, 5.1 and 7.1 output." msgstr "" #: ../../docs/about/list_of_features.rst:498 msgid "Non-positional and positional playback in 2D and 3D." msgstr "" #: ../../docs/about/list_of_features.rst:500 msgid "Optional Doppler effect in 2D and 3D." msgstr "" #: ../../docs/about/list_of_features.rst:502 msgid "" "Support for re-routable :ref:`audio buses ` and effects " "with dozens of effects included." msgstr "" #: ../../docs/about/list_of_features.rst:504 msgid "" "Support for polyphony (playing several sounds from a single " "AudioStreamPlayer node)." msgstr "" #: ../../docs/about/list_of_features.rst:505 msgid "Support for random volume and pitch." msgstr "" #: ../../docs/about/list_of_features.rst:506 msgid "Support for real-time pitch scaling." msgstr "" #: ../../docs/about/list_of_features.rst:507 msgid "" "Support for sequential/random sample selection, including repetition " "prevention when using random sample selection." msgstr "" #: ../../docs/about/list_of_features.rst:509 msgid "" "Listener2D and Listener3D nodes to listen from a position different than the " "camera." msgstr "" #: ../../docs/about/list_of_features.rst:510 msgid "" "Support for :ref:`procedural audio generation `." msgstr "" "پشتیبانی برای :ref:`procedural audio generation " "` ." #: ../../docs/about/list_of_features.rst:511 msgid "Audio input to record microphones." msgstr "" #: ../../docs/about/list_of_features.rst:512 msgid "MIDI input." msgstr "" #: ../../docs/about/list_of_features.rst:514 msgid "No support for MIDI output yet." msgstr "" #: ../../docs/about/list_of_features.rst:516 msgid "**APIs used:**" msgstr "" #: ../../docs/about/list_of_features.rst:518 msgid "*Windows:* WASAPI." msgstr "" #: ../../docs/about/list_of_features.rst:519 msgid "*macOS:* CoreAudio." msgstr "" #: ../../docs/about/list_of_features.rst:520 msgid "*Linux:* PulseAudio or ALSA." msgstr "" #: ../../docs/about/list_of_features.rst:523 msgid "Import" msgstr "درون‌برد" #: ../../docs/about/list_of_features.rst:525 msgid "Support for :ref:`custom import plugins `." msgstr "پشتیبانی برای :ref:`custom import plugins ` ." #: ../../docs/about/list_of_features.rst:527 msgid "**Formats:**" msgstr "**چارچوب‌ها:**" #: ../../docs/about/list_of_features.rst:529 #, fuzzy msgid "*Images:* See :ref:`doc_importing_images`." msgstr ":ref:`doc_exporting`" #: ../../docs/about/list_of_features.rst:530 msgid "*Audio:*" msgstr "*صدا:*" #: ../../docs/about/list_of_features.rst:532 msgid "WAV with optional IMA-ADPCM compression." msgstr "" #: ../../docs/about/list_of_features.rst:533 msgid "Ogg Vorbis." msgstr "" #: ../../docs/about/list_of_features.rst:534 msgid "MP3." msgstr "MP3." #: ../../docs/about/list_of_features.rst:536 msgid "*3D scenes:* See :ref:`doc_importing_3d_scenes`." msgstr "" #: ../../docs/about/list_of_features.rst:538 msgid "glTF 2.0 *(recommended)*." msgstr "" #: ../../docs/about/list_of_features.rst:539 msgid "" "``.blend`` (by calling Blender's glTF export functionality transparently)." msgstr "" #: ../../docs/about/list_of_features.rst:540 msgid "" "FBX (by calling `FBX2glTF `__ " "transparently)." msgstr "" #: ../../docs/about/list_of_features.rst:541 msgid "Collada (.dae)." msgstr "" #: ../../docs/about/list_of_features.rst:542 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:544 msgid "" "Support for loading glTF 2.0 scenes at run-time, including from an exported " "project." msgstr "" #: ../../docs/about/list_of_features.rst:545 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:549 #: ../../docs/about/docs_changelog.rst:267 #: ../../docs/tutorials/rendering/viewports.rst:38 #: ../../docs/tutorials/ui/custom_gui_controls.rst:114 msgid "Input" msgstr "درونداد" #: ../../docs/about/list_of_features.rst:551 msgid "" ":ref:`Input mapping system ` using hardcoded input " "events or remappable input actions." msgstr "" #: ../../docs/about/list_of_features.rst:554 msgid "" "Axis values can be mapped to two different actions with a configurable " "deadzone." msgstr "" #: ../../docs/about/list_of_features.rst:555 msgid "Use the same code to support both keyboards and gamepads." msgstr "" #: ../../docs/about/list_of_features.rst:557 msgid "Keyboard input." msgstr "درونداد تخته‌کلید." #: ../../docs/about/list_of_features.rst:559 msgid "" "Keys can be mapped in \"physical\" mode to be independent of the keyboard " "layout." msgstr "" #: ../../docs/about/list_of_features.rst:561 msgid "Mouse input." msgstr "ورودی ماوس." #: ../../docs/about/list_of_features.rst:563 msgid "" "The mouse cursor can be visible, hidden, captured or confined within the " "window." msgstr "" #: ../../docs/about/list_of_features.rst:564 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:567 msgid "Gamepad input (up to 8 simultaneous controllers)." msgstr "" #: ../../docs/about/list_of_features.rst:568 msgid "Pen/tablet input with pressure support." msgstr "" #: ../../docs/about/list_of_features.rst:571 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:136 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:160 #: ../../docs/tutorials/2d/using_tilemaps.rst:78 #: ../../docs/tutorials/navigation/index.rst:4 msgid "Navigation" msgstr "رهیابی" #: ../../docs/about/list_of_features.rst:573 msgid "" "A* algorithm in :ref:`2D ` and :ref:`3D `." msgstr "" #: ../../docs/about/list_of_features.rst:574 msgid "" "Navigation meshes with dynamic obstacle avoidance in :ref:`2D " "` and :ref:`3D `." msgstr "" #: ../../docs/about/list_of_features.rst:576 msgid "" "Generate navigation meshes from the editor or at run-time (including from an " "exported project)." msgstr "" #: ../../docs/about/list_of_features.rst:579 #: ../../docs/about/docs_changelog.rst:354 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:166 #: ../../docs/tutorials/export/exporting_for_web.rst:236 #: ../../docs/tutorials/networking/index.rst:5 msgid "Networking" msgstr "شبکه سازی" #: ../../docs/about/list_of_features.rst:581 msgid "" "Low-level TCP networking using :ref:`class_StreamPeer` and :ref:" "`class_TCPServer`." msgstr "" #: ../../docs/about/list_of_features.rst:582 msgid "" "Low-level UDP networking using :ref:`class_PacketPeer` and :ref:" "`class_UDPServer`." msgstr "" #: ../../docs/about/list_of_features.rst:583 msgid "Low-level HTTP requests using :ref:`class_HTTPClient`." msgstr "" #: ../../docs/about/list_of_features.rst:584 msgid "High-level HTTP requests using :ref:`class_HTTPRequest`." msgstr "" #: ../../docs/about/list_of_features.rst:586 msgid "Supports HTTPS out of the box using bundled certificates." msgstr "" #: ../../docs/about/list_of_features.rst:588 msgid "" ":ref:`High-level multiplayer ` API using UDP and " "ENet." msgstr "" #: ../../docs/about/list_of_features.rst:590 msgid "Automatic replication using remote procedure calls (RPCs)." msgstr "" #: ../../docs/about/list_of_features.rst:591 msgid "Supports unreliable, reliable and ordered transfers." msgstr "" #: ../../docs/about/list_of_features.rst:593 msgid "" ":ref:`WebSocket ` client and server, available on all " "platforms." msgstr "" #: ../../docs/about/list_of_features.rst:594 msgid "" ":ref:`WebRTC ` client and server, available on all platforms." msgstr "" #: ../../docs/about/list_of_features.rst:595 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:599 #: ../../docs/about/docs_changelog.rst:339 #: ../../docs/tutorials/i18n/index.rst:4 msgid "Internationalization" msgstr "بین‌المللی‌ساختن" #: ../../docs/about/list_of_features.rst:601 msgid "Full support for Unicode including emoji." msgstr "" #: ../../docs/about/list_of_features.rst:602 msgid "" "Store localization strings using :ref:`CSV ` " "or :ref:`gettext `." msgstr "" #: ../../docs/about/list_of_features.rst:605 msgid "Support for generating gettext POT and PO files from the editor." msgstr "" #: ../../docs/about/list_of_features.rst:607 msgid "" "Use localized strings in your project automatically in GUI elements or by " "using the ``tr()`` function." msgstr "" #: ../../docs/about/list_of_features.rst:609 msgid "" "Support for pluralization and translation contexts when using gettext " "translations." msgstr "" #: ../../docs/about/list_of_features.rst:610 msgid "" "Support for :ref:`bidirectional typesetting " "`, text shaping and OpenType localized " "forms." msgstr "" #: ../../docs/about/list_of_features.rst:612 msgid "Automatic UI mirroring for right-to-left locales." msgstr "" #: ../../docs/about/list_of_features.rst:613 msgid "" "Support for pseudolocalization to test your project for i18n-friendliness." msgstr "" #: ../../docs/about/list_of_features.rst:616 msgid "Windowing and OS integration" msgstr "" #: ../../docs/about/list_of_features.rst:618 msgid "Spawn multiple independent windows within a single process." msgstr "" #: ../../docs/about/list_of_features.rst:619 msgid "Move, resize, minimize, and maximize windows spawned by the project." msgstr "" #: ../../docs/about/list_of_features.rst:620 msgid "Change the window title and icon." msgstr "" #: ../../docs/about/list_of_features.rst:621 msgid "" "Request attention (will cause the title bar to blink on most platforms)." msgstr "" #: ../../docs/about/list_of_features.rst:622 msgid "Fullscreen mode." msgstr "" #: ../../docs/about/list_of_features.rst:624 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:627 msgid "Borderless windows (fullscreen or non-fullscreen)." msgstr "" #: ../../docs/about/list_of_features.rst:628 msgid "Ability to keep a window always on top." msgstr "" #: ../../docs/about/list_of_features.rst:629 msgid "Global menu integration on macOS." msgstr "" #: ../../docs/about/list_of_features.rst:630 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:632 msgid "" "Open file paths and URLs using default or custom protocol handlers (if " "registered on the system)." msgstr "" #: ../../docs/about/list_of_features.rst:633 msgid "Parse custom command line arguments." msgstr "" #: ../../docs/about/list_of_features.rst:634 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:640 msgid "Mobile" msgstr "موبایل" #: ../../docs/about/list_of_features.rst:642 msgid "" "In-app purchases on :ref:`Android ` and :ref:" "`iOS `." msgstr "" #: ../../docs/about/list_of_features.rst:644 msgid "Support for advertisements using third-party modules." msgstr "" #: ../../docs/about/list_of_features.rst:647 msgid "XR support (AR and VR)" msgstr "" #: ../../docs/about/list_of_features.rst:649 msgid "Out of the box :ref:`support for OpenXR `." msgstr "" #: ../../docs/about/list_of_features.rst:651 msgid "" "Including support for popular desktop headsets like the Valve Index, WMR " "headsets, and Quest over Link." msgstr "" #: ../../docs/about/list_of_features.rst:653 msgid "" "Support for :ref:`Android based headsets ` using " "OpenXR through a plugin." msgstr "" #: ../../docs/about/list_of_features.rst:655 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:657 msgid "Other devices supported through an XR plugin structure." msgstr "" #: ../../docs/about/list_of_features.rst:658 msgid "" "Various advanced toolkits are available that implement common features " "required by XR applications." msgstr "" #: ../../docs/about/list_of_features.rst:661 msgid "GUI system" msgstr "سامانهٔ GUI" #: ../../docs/about/list_of_features.rst:663 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:666 msgid "**Nodes:**" msgstr "**گره‌ها:**" #: ../../docs/about/list_of_features.rst:668 msgid "Buttons." msgstr "" #: ../../docs/about/list_of_features.rst:669 msgid "Checkboxes, check buttons, radio buttons." msgstr "" #: ../../docs/about/list_of_features.rst:670 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:673 msgid "" "Dropdown menus using :ref:`class_PopupMenu` and :ref:`class_OptionButton`." msgstr "" #: ../../docs/about/list_of_features.rst:674 msgid "Scrollbars." msgstr "" #: ../../docs/about/list_of_features.rst:675 msgid "Labels." msgstr "" #: ../../docs/about/list_of_features.rst:676 msgid "" "RichTextLabel for :ref:`text formatted using BBCode " "`, with support for animated custom effects." msgstr "" #: ../../docs/about/list_of_features.rst:678 msgid "Trees (can also be used to represent tables)." msgstr "" #: ../../docs/about/list_of_features.rst:679 msgid "Color picker with RGB and HSV modes." msgstr "" #: ../../docs/about/list_of_features.rst:680 msgid "Controls can be rotated and scaled." msgstr "" #: ../../docs/about/list_of_features.rst:682 msgid "**Sizing:**" msgstr "" #: ../../docs/about/list_of_features.rst:684 msgid "Anchors to keep GUI elements in a specific corner, edge or centered." msgstr "" #: ../../docs/about/list_of_features.rst:685 msgid "Containers to place GUI elements automatically following certain rules." msgstr "" #: ../../docs/about/list_of_features.rst:687 msgid ":ref:`Stack ` layouts." msgstr ":ref:`Stack ` چیدمان‌ها." #: ../../docs/about/list_of_features.rst:688 msgid ":ref:`Grid ` layouts." msgstr ":ref:`Grid ` چیدمان‌ها." #: ../../docs/about/list_of_features.rst:689 msgid "" ":ref:`Flow ` layouts (similar to autowrapping text)." msgstr "" #: ../../docs/about/list_of_features.rst:690 msgid "" ":ref:`Margin `, :ref:`centered " "` and :ref:`aspect ratio " "` layouts." msgstr "" #: ../../docs/about/list_of_features.rst:692 msgid ":ref:`Draggable splitter ` layouts." msgstr "چیدمان‌های :ref:`Draggable splitter ` ." #: ../../docs/about/list_of_features.rst:694 msgid "" "Scale to :ref:`multiple resolutions ` using the " "``canvas_items`` or ``viewport`` stretch modes." msgstr "" #: ../../docs/about/list_of_features.rst:696 msgid "" "Support any aspect ratio using anchors and the ``expand`` stretch aspect." msgstr "" #: ../../docs/about/list_of_features.rst:698 msgid "**Theming:**" msgstr "" #: ../../docs/about/list_of_features.rst:700 msgid "Built-in theme editor." msgstr "" #: ../../docs/about/list_of_features.rst:702 msgid "Generate a theme based on the current editor theme settings." msgstr "" #: ../../docs/about/list_of_features.rst:704 msgid "Procedural vector-based theming using :ref:`class_StyleBoxFlat`." msgstr "" #: ../../docs/about/list_of_features.rst:706 msgid "" "Supports rounded/beveled corners, drop shadows, per-border widths and " "antialiasing." msgstr "" #: ../../docs/about/list_of_features.rst:708 msgid "Texture-based theming using :ref:`class_StyleBoxTexture`." msgstr "" #: ../../docs/about/list_of_features.rst:710 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:714 #: ../../docs/about/docs_changelog.rst:133 #: ../../docs/about/docs_changelog.rst:196 #: ../../docs/about/docs_changelog.rst:441 #: ../../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_systems_2d.rst:380 #: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:713 #: ../../docs/tutorials/3d/particles/process_material_properties.rst:318 #: ../../docs/tutorials/animation/index.rst:4 #: ../../docs/tutorials/assets_pipeline/escn_exporter/animation.rst:2 #: ../../docs/contributing/development/file_formats/tscn.rst:382 msgid "Animation" msgstr "پویانمایی" #: ../../docs/about/list_of_features.rst:716 msgid "Direct kinematics and inverse kinematics." msgstr "" #: ../../docs/about/list_of_features.rst:717 msgid "Support for animating any property with customizable interpolation." msgstr "" #: ../../docs/about/list_of_features.rst:718 msgid "Support for calling methods in animation tracks." msgstr "" #: ../../docs/about/list_of_features.rst:719 msgid "Support for playing sounds in animation tracks." msgstr "" #: ../../docs/about/list_of_features.rst:720 msgid "Support for Bézier curves in animation." msgstr "" #: ../../docs/about/list_of_features.rst:723 #, fuzzy msgid "File formats" msgstr "فرمت‌ها" #: ../../docs/about/list_of_features.rst:725 msgid "" "Scenes and resources can be saved in :ref:`text-based " "` or binary formats." msgstr "" #: ../../docs/about/list_of_features.rst:727 msgid "" "Text-based formats are human-readable and more friendly to version control." msgstr "" #: ../../docs/about/list_of_features.rst:728 msgid "Binary formats are faster to save/load for large scenes/resources." msgstr "" #: ../../docs/about/list_of_features.rst:730 msgid "Read and write text or binary files using :ref:`class_FileAccess`." msgstr "" #: ../../docs/about/list_of_features.rst:732 msgid "Can optionally be compressed or encrypted." msgstr "" #: ../../docs/about/list_of_features.rst:734 msgid "Read and write :ref:`class_JSON` files." msgstr "پرونده‌های :ref:`class_JSON` را بخوان و بنویس." #: ../../docs/about/list_of_features.rst:735 msgid "" "Read and write INI-style configuration files using :ref:`class_ConfigFile`." msgstr "" #: ../../docs/about/list_of_features.rst:737 msgid "Can (de)serialize any Godot datatype, including Vector2/3, Color, ..." msgstr "" #: ../../docs/about/list_of_features.rst:739 msgid "Read XML files using :ref:`class_XMLParser`." msgstr "" #: ../../docs/about/list_of_features.rst:740 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:742 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:744 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:748 #: ../../docs/about/docs_changelog.rst:493 msgid "Miscellaneous" msgstr "متفرقه" #: ../../docs/about/list_of_features.rst:750 msgid "" ":ref:`Video playback ` with built-in support for Ogg " "Theora." msgstr "" #: ../../docs/about/list_of_features.rst:751 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:753 msgid "" ":ref:`Low-level access to servers ` which allows " "bypassing the scene tree's overhead when needed." msgstr "" #: ../../docs/about/list_of_features.rst:755 msgid "" ":ref:`Command line interface ` for automation." msgstr "" "برای خودکارسازی :ref:`Command line interface `." #: ../../docs/about/list_of_features.rst:757 msgid "Export and deploy projects using continuous integration platforms." msgstr "" #: ../../docs/about/list_of_features.rst:758 msgid "" "`Shell completion scripts `__ are available for Bash, zsh and fish." msgstr "" #: ../../docs/about/list_of_features.rst:760 msgid "" "Print colored text to standard output on all platforms using :ref:" "`print_rich `." msgstr "" #: ../../docs/about/list_of_features.rst:763 msgid "" "Support for :ref:`C++ modules ` statically linked " "into the engine binary." msgstr "" #: ../../docs/about/list_of_features.rst:765 msgid "Engine and editor written in C++17." msgstr "" #: ../../docs/about/list_of_features.rst:767 msgid "" "Can be :ref:`compiled ` using GCC, " "Clang and MSVC. MinGW is also supported." msgstr "" #: ../../docs/about/list_of_features.rst:769 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:773 msgid "Licensed under the permissive MIT license." msgstr "" #: ../../docs/about/list_of_features.rst:775 msgid "" "Open development process with :ref:`contributions welcome " "`." msgstr "" #: ../../docs/about/list_of_features.rst:779 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 #, fuzzy 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:260 #: ../../docs/about/system_requirements.rst:298 #: ../../docs/about/system_requirements.rst:336 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:302 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:306 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:268 #: ../../docs/about/system_requirements.rst:310 #: ../../docs/about/system_requirements.rst:344 msgid "**GPU**" msgstr "**کارت گرافیک**" #: ../../docs/about/system_requirements.rst:38 #: ../../docs/about/system_requirements.rst:222 msgid "" "**Forward+ rendering method:** 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:224 #: ../../docs/about/system_requirements.rst:228 msgid "" "*Example: Intel HD Graphics 5500 (Broadwell), AMD Radeon R5 Graphics " "(Kaveri)*" msgstr "" #: ../../docs/about/system_requirements.rst:42 #: ../../docs/about/system_requirements.rst:226 msgid "" "**Mobile rendering method:** Integrated graphics with full Vulkan 1.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:46 #: ../../docs/about/system_requirements.rst:230 msgid "" "**Compatibility rendering method:** Integrated graphics with full OpenGL 3.3 " "support" msgstr "" #: ../../docs/about/system_requirements.rst:48 #: ../../docs/about/system_requirements.rst:232 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:234 #: ../../docs/about/system_requirements.rst:280 #: ../../docs/about/system_requirements.rst:322 #: ../../docs/about/system_requirements.rst:356 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:237 #: ../../docs/about/system_requirements.rst:283 #: ../../docs/about/system_requirements.rst:325 #: ../../docs/about/system_requirements.rst:359 #, fuzzy msgid "**Storage**" msgstr "Storage" #: ../../docs/about/system_requirements.rst:53 #: ../../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:57 #: ../../docs/about/system_requirements.rst:103 #: ../../docs/about/system_requirements.rst:144 #: ../../docs/about/system_requirements.rst:176 #: ../../docs/about/system_requirements.rst:239 #: ../../docs/about/system_requirements.rst:285 #: ../../docs/about/system_requirements.rst:327 #: ../../docs/about/system_requirements.rst:361 #, 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:246 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:252 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 " "rendering method when running Godot on a Windows version older than 10." msgstr "" #: ../../docs/about/system_requirements.rst:75 #: ../../docs/about/system_requirements.rst:257 msgid "Mobile device (smartphone/tablet) - Minimum" msgstr "" #: ../../docs/about/system_requirements.rst:78 #: ../../docs/about/system_requirements.rst:260 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:262 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 #: ../../docs/about/system_requirements.rst:268 msgid "" "**Forward+ rendering method:** 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 #: ../../docs/about/system_requirements.rst:272 msgid "" "**Mobile rendering method:** SoC featuring GPU with full Vulkan 1.0 support" msgstr "" #: ../../docs/about/system_requirements.rst:92 #: ../../docs/about/system_requirements.rst:276 msgid "" "**Compatibility rendering method:** 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: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:295 msgid "Desktop or laptop PC - Recommended" msgstr "" #: ../../docs/about/system_requirements.rst:115 #: ../../docs/about/system_requirements.rst:298 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:300 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:304 msgid "*Example: Intel Core i5-8500, Apple M1*" msgstr "" #: ../../docs/about/system_requirements.rst:125 #: ../../docs/about/system_requirements.rst:308 msgid "" "*Example: Intel Core i5-6600K, AMD Ryzen 5 1600, Raspberry Pi 5 with " "overclocking*" msgstr "" #: ../../docs/about/system_requirements.rst:127 #: ../../docs/about/system_requirements.rst:310 msgid "" "**Forward+ rendering method:** 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:312 #: ../../docs/about/system_requirements.rst:316 msgid "" "*Example: NVIDIA GeForce GTX 1050 (Pascal), AMD Radeon RX 460 (GCN 4.0)*" msgstr "" #: ../../docs/about/system_requirements.rst:131 #: ../../docs/about/system_requirements.rst:314 msgid "" "**Mobile rendering method:** Dedicated graphics with full Vulkan 1.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:135 #: ../../docs/about/system_requirements.rst:318 msgid "" "**Compatibility rendering method:** Dedicated graphics with full OpenGL 4.6 " "support" msgstr "" #: ../../docs/about/system_requirements.rst:137 #: ../../docs/about/system_requirements.rst:320 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:333 msgid "Mobile device (smartphone/tablet) - Recommended" msgstr "" #: ../../docs/about/system_requirements.rst:153 #: ../../docs/about/system_requirements.rst:336 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:338 msgid "*Example: Qualcomm Snapdragon 845, Samsung Exynos 9810*" msgstr "" #: ../../docs/about/system_requirements.rst:159 #: ../../docs/about/system_requirements.rst:344 msgid "" "**Forward+ rendering method:** 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 #: ../../docs/about/system_requirements.rst:348 msgid "" "**Mobile rendering method:** SoC featuring GPU with full Vulkan 1.2 support" msgstr "" #: ../../docs/about/system_requirements.rst:167 #: ../../docs/about/system_requirements.rst:352 msgid "" "**Compatibility rendering method:** 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 " "rendering method, 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:234 #: ../../docs/about/system_requirements.rst:356 #, fuzzy msgid "**For native exports:** 2 GB" msgstr "**برای ویرایشگر:**" #: ../../docs/about/system_requirements.rst:235 #: ../../docs/about/system_requirements.rst:357 #, fuzzy msgid "**For web exports:** 4 GB" msgstr "**برای ویرایشگر:**" #: ../../docs/about/system_requirements.rst:237 #: ../../docs/about/system_requirements.rst:283 #: ../../docs/about/system_requirements.rst:325 #: ../../docs/about/system_requirements.rst:359 msgid "150 MB (used for the executable, project files and cache)" msgstr "" #: ../../docs/about/system_requirements.rst:239 msgid "" "**For native exports:** Windows 7, macOS 10.13 (Compatibility) or macOS " "10.15 (Forward+/Mobile), Linux distribution released after 2016" msgstr "" #: ../../docs/about/system_requirements.rst:241 msgid "" "**For web exports:** Firefox 79, Chrome 68, Edge 79, Safari 15.2, Opera 64" msgstr "" #: ../../docs/about/system_requirements.rst:264 msgid "**iOS:** SoC with any 64-bit ARM CPU" msgstr "" #: ../../docs/about/system_requirements.rst:266 msgid "*Example: Apple A7 (iPhone 5S)*" msgstr "" #: ../../docs/about/system_requirements.rst:270 #: ../../docs/about/system_requirements.rst:274 msgid "*Example: Qualcomm Adreno 505, Mali-G71 MP2, Apple A12 (iPhone XR/XS)*" msgstr "" #: ../../docs/about/system_requirements.rst:278 msgid "*Example: Qualcomm Adreno 306, Mali-T628 MP6, Apple A7 (iPhone 5S)*" msgstr "" #: ../../docs/about/system_requirements.rst:280 #, fuzzy msgid "**For native exports:** 1 GB" msgstr "**برای ویرایشگر:**" #: ../../docs/about/system_requirements.rst:281 #, fuzzy msgid "**For web exports:** 2 GB" msgstr "**برای ویرایشگر:**" #: ../../docs/about/system_requirements.rst:285 msgid "" "**For native exports:** Android 6.0 (Compatibility) or Android 9.0 (Forward+/" "Mobile), iOS 12.0" msgstr "" #: ../../docs/about/system_requirements.rst:287 msgid "" "**For web exports:** Firefox 79, Chrome 88, Edge 79, Safari 15.2, Opera 64, " "Samsung Internet 15" msgstr "" #: ../../docs/about/system_requirements.rst:291 msgid "" "These are the **recommended** specifications to get a smooth experience with " "a simple 2D or 3D project exported with Godot:" msgstr "" #: ../../docs/about/system_requirements.rst:322 #, fuzzy msgid "**For native exports:** 4 GB" msgstr "**برای ویرایشگر:**" #: ../../docs/about/system_requirements.rst:323 #, fuzzy msgid "**For web exports:** 8 GB" msgstr "**برای ویرایشگر:**" #: ../../docs/about/system_requirements.rst:327 msgid "" "**For native exports:** Windows 10, macOS 10.15, Linux distribution released " "after 2020" msgstr "" #: ../../docs/about/system_requirements.rst:329 msgid "" "**For web exports:** Latest version of Firefox, Chrome, Edge, Safari, Opera" msgstr "" #: ../../docs/about/system_requirements.rst:340 msgid "**iOS:** SoC with 64-bit ARM CPU" msgstr "" #: ../../docs/about/system_requirements.rst:342 msgid "*Example: Apple A14 (iPhone 12)*" msgstr "" #: ../../docs/about/system_requirements.rst:346 #: ../../docs/about/system_requirements.rst:350 #: ../../docs/about/system_requirements.rst:354 msgid "*Example: Qualcomm Adreno 630, Mali-G72 MP18, Apple A14 (iPhone 12)*" msgstr "" #: ../../docs/about/system_requirements.rst:361 #, fuzzy msgid "**For native exports:** Android 9.0 or iOS 14.1" msgstr "**برای ویرایشگر:**" #: ../../docs/about/system_requirements.rst:362 msgid "" "**For web exports:** Latest version of Firefox, Chrome, Edge, Safari, Opera, " "Samsung Internet" msgstr "" #: ../../docs/about/system_requirements.rst:368 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 `مورد تائید OSI " "`_ موجود است. مجوز 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 "" "تمام مطالب تحت مجوز Creative Commons Attribution 3.0 (`CC-BY 3.0 `_) به نام «Juan Linietsky, Ariel " "Manzur و انجمن موتور گودات» می‌باشد." #: ../../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 "" "نمادها و آیکون ها معمولاً تحت مجوز Creative Commons قرار دارند. توجه داشته " "باشید که برخی از کتابخانه‌های شخص ثالث با کد منبع گودوت ممکن است دارای " "مجوزهای متفاوتی باشند." #: ../../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 "ویندوز" #: ../../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:253 #: ../../docs/tutorials/editor/default_key_mapping.rst:336 #: ../../docs/tutorials/editor/default_key_mapping.rst:383 #: ../../docs/tutorials/editor/default_key_mapping.rst:394 #: ../../docs/tutorials/editor/default_key_mapping.rst:407 #: ../../docs/tutorials/editor/default_key_mapping.rst:438 #: ../../docs/tutorials/editor/default_key_mapping.rst:451 #: ../../docs/tutorials/editor/default_key_mapping.rst:474 #: ../../docs/tutorials/editor/default_key_mapping.rst:491 #: ../../docs/tutorials/editor/default_key_mapping.rst:530 #: ../../docs/tutorials/editor/default_key_mapping.rst:557 #: ../../docs/tutorials/rendering/jitter_stutter.rst:131 #: ../../docs/contributing/development/debugging/vulkan/vulkan_validation_layers.rst:30 msgid "macOS" msgstr "مک‌او‌اس" #: ../../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 "X11 (لینوکس، \\*BSD)" #: ../../docs/about/faq.rst:47 msgid "Android (experimental)" msgstr "اندروید (آزمایشی)" #: ../../docs/about/faq.rst:48 msgid "`Web `__ (experimental)" msgstr "`Web `__ (آزمایشی)" #: ../../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/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 "اندروید" #: ../../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 "آی او اس" #: ../../docs/about/faq.rst:57 #: ../../docs/tutorials/export/one-click_deploy.rst:126 #: ../../docs/tutorials/platform/web/index.rst:7 #: ../../docs/contributing/development/compiling/optimizing_for_size.rst:303 #: ../../docs/contributing/development/debugging/using_sanitizers.rst:166 #: ../../docs/contributing/development/debugging/vulkan/vulkan_validation_layers.rst:146 msgid "Web" msgstr "وب" #: ../../docs/about/faq.rst:59 msgid "" "Both 32- and 64-bit binaries are supported where it makes sense, with 64 " "being the default. Official macOS builds support Apple Silicon natively as " "well as x86_64." msgstr "" "هر دو باینری 32 و 64 بیتی در جاهایی که لازم است پشتیبانی میشود، که 64 بیتی " "پیش فرض است. نسخه ی رسمی macOS هم Apple Silicon را و هم x86_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 "" "بخاطر شرایط پروانه‌گیری تحمیل شده به دست سازندگان کنسول‌ها، گروه گودوت " "نمی‌تواند یک برون‌برد کنسولی متن‌باز فراهم کند. اگرچه،‌ جدا از موتوری که بکار " "می‌برید، رهش کردن بازی‌ها روی کنسول‌ها همیشه کار سختی خواهد بود. می‌توانید " "دربارهٔ :ref:`doc_consoles` بیشتر بخوانید." #: ../../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 msgid "" "The officially supported languages for Godot are GDScript, C#, and C++. See " "the subcategories for each language in the :ref:`scripting ` section." msgstr "" "زبان‌های رسمی پشتیبانی شده برای Godot عبارتند از: #GDScript، C و C++. زیر " "شاخه‌های مربوط به هر زبان را در بخش :ref:`scripting ` مشاهده کنید." #: ../../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 زبان پیشنهادی " "برای یادگیری و استفاده است زیرا مخصوص گودوت طراحی شده است. در حالی که در " "طولانی مدت زبان‌های اسکریپت نویسی نسبت به زبان‌های سطح پایین عملکرد کمتری " "دارند، برای نمونه سازی، تولید حداقل محصولات قابل دوام (MVP) و تمرکز روی Time-" "to-Market (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 # هنوز هم نسبتاً جدید است و به همین ترتیب، " "ممکن است در طول مسیر با برخی مشکلات روبرو شوید. همچنین در حال حاضر پشتیبانی " "C# برای IOS و Android و پلتفرم های وب موجود نمیباشد. جامعه صمیمی و سخت‌کوش " "توسعه‌دهندگان ما همیشه آماده است تا با بروز مشکلات جدید، آن‌ها را برطرف کند، " "اما از آنجا که این یک پروژه متن باز است، توصیه می‌کنیم شما اول خودتان مقداری " "این موضوع را ارزیابی کنید . یک راه خوب برای شروع حل مشکلات احتمالی ، خواندن " "و گشتن مشکلات باز در `open issues ` است." #: ../../docs/about/faq.rst:102 msgid "" "As for new languages, support is possible via third parties with " "GDExtensions. (See the question about plugins below). Work is currently " "underway, for example, on unofficial bindings for Godot to `Python `_ and `Nim `_." msgstr "" "درمورد زبان های جدید ، پشتیبانی از طریق طرف ثالث با استفاده از امکانات " "GDExtension امکان پذیر است. (به سؤال در مورد افزونه‌ها در زیر مراجعه کنید.) " "در حال حاضر کارهایی در این باره در حال انجام است، به عنوان مثال، اتصال غیر " "رسمی Godot به `پایتون `_ و `Nim " "`_." #: ../../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 زبان برنامه نویسی یکپارچه Godot است. در این زبان از حد اکثر قدرت " "گودوت استفاده میشود و کد کمتری نوشته میشود ، به توسعه دهندگان تازه کار و " "متخصص نیز امکان می دهد تا از نقاط قوت گودوت در سریعترین زمان ممکن بهره " "ببرند. اگر قبلاً چیزی را با استفاده از زبانی مانند پایتون نوشته‌باشید ، به " "راحتی می‌توانید از 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 وجود دارد - به ویژه هنگامی که در حال " "نمونه سازی هستید ، در مراحل آلفا / بتا پروژه خود ، یا در حال ایجاد عنوان " "بعدی AAA نیستید - اما برجسته ترین دلیل کاهش کلی پیچیدگی است**." #: ../../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 "" "هدف اصلی ایجاد یک زبان اسکریپتینگ کاملاً یکپارچه و سفارشی برای Godot دو " "برابری بود: اول این که زمان لازم برای بلند شدن و دویدن با Godot را کاهش می " "دهد و به توسعه دهندگان راه سریع می دهد تا خود را با تمرکز در معرض موتور قرار " "دهند. در بهره وری؛ دوم ، این باعث کاهش بار کلی تعمیر و نگهداری می شود ، " "ابعاد بعدی مسائل را کاهش می دهد و به توسعه دهندگان موتور اجازه می دهد تا بر " "روی اشکالات خرد شده و بهبود ویژگی های مربوط به هسته موتور تمرکز کنند - به " "جای اینکه زمان زیادی را برای تلاش برای بدست آوردن وقت صرف کنند. مجموعه ای از " "ویژگی های افزایشی که در مجموعه زیادی از زبانها کار می کنند." #: ../../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 "" "از آنجا که گودوت یک پروژه منبع باز است ، از ابتدا ضروری است یک تجربه یکپارچه " "تر و یکپارچه تر را در جذب کاربران اضافی با پشتیبانی از زبانهای برنامه نویسی " "آشنا تر اولویت بندی کنید - به ویژه هنگامی که پشتیبانی از این زبانهای آشنا " "باعث بدتر شدن تجربه می شود. ما می دانیم که آیا ترجیح می دهید از زبان دیگری " "در Godot استفاده کنید (به لیست گزینه های پشتیبانی شده در بالا مراجعه کنید). " "گفته می شود ، اگر GDScript را امتحان نکرده اید ، آن را برای ** سه روز ** " "امتحان کنید. ** درست مثل گودوت ، هنگامی که دیدید چقدر قدرتمند است و توسعه " "شما سریع می شود ، فکر می کنیم 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 "" "در روز های اولیه موتور از `Lua `__ زبان اسکریپت نویسی . " "Lua سریع هستش ، اما ثبت یک سیستم شی گرایی (توسط فالبک) پیچیده بوده و کد " "بسیار زیادی لازم داشت بعد به سراغ `Python ` __,رفتیم " "و سختی در درون خودش داشت." #: ../../docs/about/faq.rst:150 msgid "" "The main reasons for creating a custom scripting language for Godot were:" msgstr "دلایل اصلی ایجاد یک زبان برنامه نویسی سفارشی برای Godot عبارتند از:" #: ../../docs/about/faq.rst:152 msgid "" "Poor threading support in most script VMs, and Godot uses threads (Lua, " "Python, Squirrel, JavaScript, ActionScript, etc.)." msgstr "" "پشتیبانی موضعی ضعیف در اکثر VM های اسکریپت وجود دارد و گودوت از موضوعات " "استفاده می کند(Lua, Python, Squirrel, JS, AS و...)." #: ../../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 "" "هماهنگ کردن ساختار ضعیف گسترش کلاس در اکثر ماشین‌ مجازی زبان‌های اسکریپت نویسی " "(مانند Lua، Python و یا Javascript)، با روش کار گودوت، بسیار ناکارآمد است." #: ../../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 "" "بسیاری از زبانهای موجود رابط های وحشتناکی برای اتصال به C ++ دارند و در " "نتیجه مقدار زیادی کد ، اشکالات ، تنگناها و ناکارآمدی عمومی (Lua ، Python ، " "Squirrel ، JS و غیره) ما می خواستیم روی یک موتور عالی تمرکز کنیم ، نه مقدار " "زیادی ادغام." #: ../../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 و غیره) وجود ندارد و در نتیجه استفاده " "از انواع سفارشی باعث کاهش عملکرد می شود." #: ../../docs/about/faq.rst:163 msgid "" "Garbage collector results in stalls or unnecessarily large memory usage " "(Lua, Python, JavaScript, ActionScript, etc.)." msgstr "" "زباله‌روب منجر به هنگ‌کردن و یا استفاده بیش‌ازحد از حافظه می‌شود (Lua, Python, " "JavaScript, ActionScript, etc.)." #: ../../docs/about/faq.rst:165 #, fuzzy msgid "" "Difficulty integrating with the code editor for providing code completion, " "live editing, etc. (all of them)." msgstr "" "دشواری در ادغام ویرایشگر برای کامل کردن کد، ویرایش همزمان و غیره. همه ی " "اینها به خوبی توسط جی دی اسکریپت پشتیبانی می شود." #: ../../docs/about/faq.rst:168 msgid "GDScript was designed to curtail the issues above, and more." msgstr "جی دی اسکریپت برای کاهش مسائل فوق و موارد دیگر طراحی شده است." #: ../../docs/about/faq.rst:173 #, 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 "چه نوع از قالب های مدل سه بعدی از Godot پشتیبانی می کند؟" #: ../../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 "" "شما میتوانید با جزئیات بیشتر درباره ی فرمت های پشتیبانی شده، نحوه ی خروجی " "گرفتن آن ها از برنامه ی مدلسازی 3 بعدیتان و چگونگی وارد کردنشان به گودو در " "مستندات :ref:`doc_importing_3d_scenes` بخوانید." #: ../../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 رایگان و منبع باز است که مدولار و " "قابل تمدید است. هیچ برنامه ای برای جامعه اصلی تولید موتور برای پشتیبانی از " "SDK های شخص ثالث ، منبع بسته / اختصاصی وجود ندارد ، زیرا ادغام با اینها خلاف " "اخلاق گودوت خواهد بود." #: ../../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 "" "این گفته ، زیرا Godot منبع باز و مدولار است ، هیچ چیز مانع شما یا هر شخص " "دیگری نمی شود که آن کتابخانه ها را به عنوان ماژول اضافه کنید و بازی خود را " "با آنها - به صورت منبع باز یا بسته - ارسال کنید." #: ../../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 "" "اگر از SDK شخص ثالث اطلاع دارید که توسط Godot پشتیبانی نمی شود اما یکپارچه " "سازی رایگان و منبع باز را ارائه می دهد ، خودتان شروع به کار کنید. گودوت " "متعلق به یک نفر نیست؛ متعلق به جامعه است ، و در کنار همفکران جامعه مانند شما " "رشد می کند." #: ../../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 "" "برای گسترش Godot ، مانند ایجاد افزونه های Godot Editor یا اضافه کردن " "پشتیبانی از زبان های اضافی ، به: 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 "`جی دی نیتیو انجاست! `_" #: ../../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 ، ماژول های Godot و همچنین پشتیبانی " "'غیر رسمی پایتون `_ برای Godot " "بیندازید. این یک نقطه شروع خوب برای دیدن چگونگی ادغام کتابخانه شخص ثالث با " "گودوت خواهد بود." #: ../../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 " "`__ (ویندوز), `Homebrew `__ (مک‌اواس) یا " "`Flathub `__ " "(لینوکس) نصب کنید. این به‌طور خودکار مراحل مورد نیاز برای ادغام دسکتاپ را " "انجام می‌دهد." #: ../../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 "" "میانبر ساخته شده را به مسیر:\n" "%LOCALAPPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\n" "انتقال دهید. این، مکان میانبرهای برنامه هایی است که در منوی استارت نشان داده " "می‌شوند.\n" "همچنین میتوانید با راست کلیک کردن برروی فایل اجرایی، آنرا در نوار وظیفه " "(Taskbar) خود سنجاق کنید." #: ../../docs/about/faq.rst:272 msgid "" "Drag the extracted Godot application to ``/Applications/Godot.app``, then " "drag it to the Dock if desired. Spotlight will be able to find Godot as long " "as it's in ``/Applications`` or ``~/Applications``." msgstr "" #: ../../docs/about/faq.rst:277 #: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:343 #: ../../docs/tutorials/rendering/jitter_stutter.rst:112 #: ../../docs/tutorials/ui/gui_using_fonts.rst:787 msgid "Linux" msgstr "لینوکس" #: ../../docs/about/faq.rst:279 msgid "" "Move the Godot binary to a stable location (i.e. outside of your Downloads " "folder), so you don't accidentally move it and break the shortcut in the " "future." msgstr "" "فایل باینری گودو را به یک مکان پایدار انتقال دهید(به بیان دیگر،بیرون از پوشه " "دانلودها).بنابراین شما در آینده به طور تصادفی آن را جابجا نمیکنید و فایل " "میانبر خراب نمیشود." #: ../../docs/about/faq.rst:281 msgid "" "Rename and move the Godot binary to a location present in your ``PATH`` " "environment variable. This is typically ``/usr/local/bin/godot`` or ``/usr/" "bin/godot``. Doing this requires administrator privileges, but this also " "allows you to :ref:`run the Godot editor from a terminal " "` by entering ``godot``." msgstr "" #: ../../docs/about/faq.rst:287 msgid "" "If you cannot move the Godot editor binary to a protected location, you can " "keep the binary somewhere in your home directory, and modify the ``Path=`` " "line in the ``.desktop`` file linked below to contain the full *absolute* " "path to the Godot binary." msgstr "" #: ../../docs/about/faq.rst:292 #, 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 "" "این فایل « `https://raw.githubusercontent.com/godotengine/godot/3.x/misc/" "dist/linux/org.godotengine.Godot.desktop` » را در مسیر : `$HOME/.local/share/" "applications/` ذخیره کنید .و اگر شما دسترسی مدیر (administrator) دارید، آنرا " "در این مسیر `/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 "" "در پیکربندی پیش فرض، گودو *نیمه قابل حمل* است. فایل اجرایی آن می‌تواند از هر " "مکانی (از جمله مکان‌های غیرقابل نوشتن) اجرا شود و هرگز به امتیازات " "مدیر(administrator) نیاز ندارد." #: ../../docs/about/faq.rst:304 msgid "" "However, configuration files will be written to the user-wide configuration " "or data directory. This is usually a good approach, but this means " "configuration files will not carry across machines if you copy the folder " "containing the Godot executable. See :ref:`doc_data_paths` for more " "information." msgstr "" #: ../../docs/about/faq.rst:309 msgid "" "If *true* portable operation is desired (e.g. for use on a USB stick), " "follow the steps in :ref:`doc_data_paths_self_contained_mode`." msgstr "" #: ../../docs/about/faq.rst:313 #, 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 backends 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 "" "گودوت از قصد امکاناتی را که می توانند به وسیله add-on ها پیاده سازی شوند را " "شامل نمی شود مگر اینکه بسیار استفاده شوند. به عنوان مثال عملکرد هوش مصنوعی " "پیشرفته." #: ../../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 عمومی " "که نیاز به بررسی دارند در طی زمان افزایش می یابد." #: ../../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 "" "**کوچک نگه داشتن حجم نهایی برای ویرایشگر.**همه که اینترنت پرسرعت ندارند. " "اطمینان از اینکه همه می توانند ویرایشگر گودوت رو در کمتر از 5 دقیقه دانلود " "کنند، آن را از حالت فشرده خارج و اجرا کنند باعث میشه که گودوت برای توسعه " "دهندگان در همه کشور ها در دسترس باشد." #: ../../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 #, fuzzy 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:`compile custom export " "templates with unused features disabled ` برای " "بهینه سازی حجم توزیع پروژه استفاده کنید.)" #: ../../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 "" "این سؤال غالباً مطرح می شود و احتمالاً به لطف سوء تفاهم ایجاد شده توسط اپل " "هنگامی که در ابتدا وضوح دستگاه های خود را دو برابر کرده است. این باعث می شد " "مردم فکر کنند که داشتن دارایی (assets)های یکسان در رزولیشن های مختلف ایده " "خوبی است ، بنابراین بسیاری به آن مسیر ادامه دادند. این در ابتدا تا حدودی و " "فقط برای دستگاه های اپل کار می کرد ، اما پس از آن چندین دستگاه اندرویدی و " "اپل با وضوح متفاوت و نسبت ابعاد ، با اندازه ها و DPI های بسیار گسترده ای " "ایجاد شدند." #: ../../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 مورد نیاز است ، زیرا در 3D فقط موضوع دوربین XFov یا YFov " "است." #: ../../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 بالا برود و دستگاه هایی که تا 400p پایین می آیند ، مقیاس " "گذاری سخت افزاری منظم در دستگاه شما با کمترین هزینه و یا هیچ هزینه عملکردی " "از این امر مراقبت می کند. بیشترین انتخاب ها یا نزدیک به 1080p (1920x1080) یا " "720p (1280x720) هستند. به خاطر داشته باشید هر چه وضوح تصویر بالاتر باشد ، " "دارایی (assets) شما بزرگتر است ، حافظه بیشتری از آنها خواهد گرفت و مدت زمان " "لود شدن بیشتر خواهد بود." #: ../../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 "" "از گزینه های کشش در گودوت استفاده کنید. کشش 2D در حالی که نسبت های ابعادی را " "حفظ می کند بهتر عمل می کند. در مورد چگونگی دستیابی به این موضوع ، آموزش: " "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: `لنگر دادن » استفاده " "کنید تا مشخص شود که کنترل ها در کجا باید بمانند و حرکت کنند. اگر UI ها " "پیچیده تر هستند ، یادگیری در مورد 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` را مشاهده کنید." #: ../../docs/about/faq.rst:415 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 "I would like to contribute! How can I get started?" msgstr "من می خواهم مشارکت کنم! چگونه می توانم شروع کنم؟" #: ../../docs/about/faq.rst:431 #, fuzzy msgid "" "Awesome! As an open source project, Godot thrives off of the innovation and " "the ambition of developers like you." msgstr "" "عالی! به عنوان یک پروژه منبع باز ، Godot از نوآوری و جاه طلبی برای توسعه " "دهندگان مانند شما رونق می گیرد." #: ../../docs/about/faq.rst:434 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:440 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:445 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:449 msgid "I have a great idea for Godot. How can I share it?" msgstr "من ایده خوبی برای Godot دارم. چگونه می توانم آن را به اشتراک بگذارم؟" #: ../../docs/about/faq.rst:451 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:456 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:462 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:468 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:473 msgid "" "Please, read the `readme `_ document before creating a proposal to learn more " "about the process." msgstr "" #: ../../docs/about/faq.rst:479 msgid "Is it possible to use Godot to create non-game applications?" msgstr "" "آیا امکان دارد که از گودوت برای ایجاد انواع دیگر نرم افزار (که بازی نیستند) " "هم استفاده کنیم؟" #: ../../docs/about/faq.rst:481 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:484 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:" "`low-processor mode ` را در تنظیمات پروژه برای کاهش مصرف CPU و GPU فعال کنید." #: ../../docs/about/faq.rst:488 msgid "" "Check out `Material Maker `__ " "and `Pixelorama `__ for " "examples of open source applications made with Godot." msgstr "" "سری به `Material Maker `__ " "و`Pixelorama `__ بزنید تا " "نمونه برنامه های متن بازی را که با گودوت ساخته شده را ببینید." #: ../../docs/about/faq.rst:495 msgid "Is it possible to use Godot as a library?" msgstr "آیا استفاده از گودو به عنوان کتابخانه امکان پذیر است؟" #: ../../docs/about/faq.rst:497 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:502 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 "" "اگر می خواهید از کتابخانه رندر استفاده کنید ، به جای آن از موتور رندر مستقر " "استفاده کنید. به خاطر داشته باشید موتورهای رندر معمولاً در مقایسه با Godot " "جوامع کوچکتری دارند. این کار یافتن پاسخ سوالات شما را دشوارتر می کند." #: ../../docs/about/faq.rst:508 msgid "What user interface toolkit does Godot use?" msgstr "گودوت از کدام ابزار رابط کاربری استفاده می کند؟" #: ../../docs/about/faq.rst:510 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 "" "گودوت از یک :abbr:`GUI (رابط کاربری گرافیکی)` استاندارد مثل GTK یا Qt یا " "wxWidgets استفاده نمی کند.در عوض، گودوت از ابزار رابط کاربری خودش استفاده می " "کند که به وسیله OpenGL ES یا Vulkan رندر می شود. این ابزار به صورت گره های " "کنترل(Control nodes) نمایان میشود که برای رندر ویرایشگر (که توسط ++c نوشته " "شده) استفاده می شود. این گره های کنترل می توانند در پروژه های گودوت که از " "زبان های اسکریپتی پشتیبانی شده استفاده می کنند هم به کار گرفته شود." #: ../../docs/about/faq.rst:517 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:523 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:`گودوت برای " "ایجاد برنامه هایی به جز بازی ها هم استفاده کنید. by using the editor " "`." #: ../../docs/about/faq.rst:530 #, fuzzy msgid "Why does Godot use the SCons build system?" msgstr "چرا گودوت از استثنائات استفاده نمی کند؟" #: ../../docs/about/faq.rst:532 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:536 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:538 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:542 msgid "" "SCons will *never* break a build no matter how many changes, configurations, " "additions, removals etc." msgstr "" #: ../../docs/about/faq.rst:544 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:549 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:553 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:559 msgid "Why does Godot not use STL (Standard Template Library)?" msgstr "چرا گودوت از STL استفاده نمی کند (کتابخانه الگوی استاندارد)؟" #: ../../docs/about/faq.rst:561 #, 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 به عنوان نمونه) ، Godot از STL استفاده " "نمی کند. ما معتقدیم که STL یک کتابخانه کلی عالی است ، اما ما برای Godot " "الزامات خاصی داشتیم." #: ../../docs/about/faq.rst:565 msgid "" "STL templates create very large symbols, which results in huge debug " "binaries. We use few templates with very short names instead." msgstr "" "الگوهای STL نمادهای بسیار بزرگی ایجاد می کنند ، که منجر به باینری های اشکال " "زدایی عظیم می شود. در عوض ما از قالب های معدودی با نام های بسیار کوتاه " "استفاده می کنیم." #: ../../docs/about/faq.rst:567 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 "" "بیشتر کانتینرهای ما نیازهای ویژه ای دارند ، مانند وکتور ، که از کپی کردن در " "نوشتن استفاده می کند و ما برای انتقال داده به اطراف یا سیستم RID استفاده می " "کنیم ، که برای عملکرد به زمان دسترسی O (1) نیاز دارد. به همین ترتیب ، پیاده " "سازی های نقشه هش ما طراحی شده اند تا یکپارچه با انواع موتور داخلی ادغام شوند." #: ../../docs/about/faq.rst:571 msgid "" "Our containers have memory tracking built-in, which helps better track " "memory usage." msgstr "" "containers ما ردیابی حافظه داخلی دارند ، که به ردیابی بهتر استفاده از حافظه " "کمک می کند." #: ../../docs/about/faq.rst:572 msgid "" "For large arrays, we use pooled memory, which can be mapped to either a " "preallocated buffer or virtual memory." msgstr "" "برای آرایه های بزرگ ، ما از حافظه جمع شده استفاده می کنیم ، که می تواند به " "صورت یک بافر از پیش تعیین شده یا حافظه مجازی نقشه برداری شود." #: ../../docs/about/faq.rst:574 msgid "" "We use our custom String type, as the one provided by STL is too basic and " "lacks proper internationalization support." msgstr "" "ما از نوع عادی String استفاده می کنیم ، زیرا نمونه ارائه شده توسط STL بسیار " "اساسی است و فاقد پشتیبانی بین المللی مناسب است." #: ../../docs/about/faq.rst:578 msgid "Why does Godot not use exceptions?" msgstr "چرا گودوت از استثنائات استفاده نمی کند؟" #: ../../docs/about/faq.rst:580 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:585 #, fuzzy msgid "" "Additionally, exceptions significantly increase the binary size for the " "executable and result in increased compile times." msgstr "" "علاوه بر این استثناها حجم باینریِ فایل قابل اجرا را به میزان قابل توجهی بالا " "می برند." #: ../../docs/about/faq.rst:589 msgid "Does Godot use an ECS (Entity Component System)?" msgstr "" #: ../../docs/about/faq.rst:591 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:595 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 run-time to dynamically add and remove " "behaviors." msgstr "" #: ../../docs/about/faq.rst:599 msgid "" "More information about Godot's design choices can be found in `this article " "`__." msgstr "" #: ../../docs/about/faq.rst:603 #, fuzzy msgid "Why does Godot not force users to implement DOD (Data-Oriented Design)?" msgstr "چرا گودو کاربران را وادار به نصب طراحی داده‌گرا نمی‌کند؟" #: ../../docs/about/faq.rst:605 #, 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 "" "درست است که گودوت برای بسیاری از کارها با عملکرد سنگین تا آنجا که ممکن است " "از تکنیک انسجام حافظه پنهان استفاده می کند، ولی معتقدیم که بیشتر کاربران " "نیازی ندارند که مجبور به استفاده از تمرین های DoD استفاده کنند." #: ../../docs/about/faq.rst:608 #, 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 "" "DoD بیشتر بهینه سازی انسجام حافظه نهان است که تنها می تواند در هنگام برخورد " "با ده ها هزار مورد از اشیاء (که هر فریم با کمی اصلاح پردازش می شوند) پیشرفت " "های چشمگیر عملکرد را به دست آورید. مانند گذشته ، اگر شما در حال حرکت چند صد " "طلسم یا دشمن در هر فریم هستید ، DoD به شما کمک نمی کند ، و باید رویکرد دیگری " "را برای بهینه سازی در نظر بگیرید." #: ../../docs/about/faq.rst:615 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:618 #, 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 "" "اگر بازی ای که واقعاً نیاز به پردازش چنین مقدار زیادی از اشیاء داشته باشد ، " "لازم است ، توصیه ما استفاده از C ++ و GDNative برای قطعات با کارایی بالا و " "GDScript (یا C #) برای بقیه بازی ها است." #: ../../docs/about/faq.rst:623 msgid "How can I support Godot development or contribute?" msgstr "چگونه می توانم از توسعه گودوت حمایت کنم یا مشارکت کنم؟" #: ../../docs/about/faq.rst:625 msgid "See :ref:`doc_ways_to_contribute`." msgstr "رجوع کنید به :ref:`doc_ways_to_contribute`." #: ../../docs/about/faq.rst:628 msgid "Who is working on Godot? How can I contact you?" msgstr "چه کسی روی Godot کار می کند؟ چگونه می توانم با شما تماس بگیرم؟" #: ../../docs/about/faq.rst:630 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 #, fuzzy 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:17 #: ../../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 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 ":ref:`Engine.get_license_text`" #: ../../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 ":ref:`Engine.get_license_info`" #: ../../docs/about/complying_with_licenses.rst:139 msgid "" ":ref:`Engine.get_copyright_info`" msgstr "" ":ref:`Engine.get_copyright_info`" #: ../../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:66 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:71 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:77 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:83 msgid "**Version**" msgstr "**نسخه**" #: ../../docs/about/release_policy.rst:83 msgid "**Release date**" msgstr "**تاریخ رهش**" #: ../../docs/about/release_policy.rst:83 msgid "**Support level**" msgstr "**ردهٔ پشتیبانی**" #: ../../docs/about/release_policy.rst:85 msgid "Godot 4.4 (`master`)" msgstr "" #: ../../docs/about/release_policy.rst:85 #, fuzzy msgid "Q1 2025 (estimate)" msgstr "نوامبر ۲۰۲۱" #: ../../docs/about/release_policy.rst:85 msgid "" "|unstable| *Development.* Receives new features, usability and performance " "improvements, as well as bug fixes, while under development." msgstr "" #: ../../docs/about/release_policy.rst:130 msgid "unstable" msgstr "ناپایدار" #: ../../docs/about/release_policy.rst:88 #, fuzzy msgid "Godot 4.3" msgstr "گودوت ۴.۰" #: ../../docs/about/release_policy.rst:88 #, fuzzy msgid "August 2024" msgstr "اوت ۲۰۲۲" #: ../../docs/about/release_policy.rst:88 #: ../../docs/about/release_policy.rst:91 #: ../../docs/about/release_policy.rst:94 #: ../../docs/about/release_policy.rst:102 #: ../../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:127 msgid "supported" msgstr "پشتیبانی شده" #: ../../docs/about/release_policy.rst:91 #, fuzzy msgid "Godot 4.2" msgstr "گودوت ۴.۰" #: ../../docs/about/release_policy.rst:91 #, fuzzy msgid "November 2023" msgstr "نوامبر ۲۰۲۱" #: ../../docs/about/release_policy.rst:94 #, fuzzy msgid "Godot 4.1" msgstr "گودوت ۴.۰" #: ../../docs/about/release_policy.rst:94 #, fuzzy msgid "July 2023" msgstr "ژوئیه ۲۰۱۶" #: ../../docs/about/release_policy.rst:97 msgid "Godot 4.0" msgstr "گودوت ۴.۰" #: ../../docs/about/release_policy.rst:97 #, fuzzy msgid "March 2023" msgstr "مارس ۲۰۱۹" #: ../../docs/about/release_policy.rst:97 msgid "|eol| No longer supported (last update: 4.0.4)." msgstr "" #: ../../docs/about/release_policy.rst:129 msgid "eol" msgstr "" #: ../../docs/about/release_policy.rst:99 #, fuzzy msgid "Godot 3.7 (`3.x`)" msgstr "گودو ۳.۶ (LTS)" #: ../../docs/about/release_policy.rst:99 msgid "No ETA for now" msgstr "" #: ../../docs/about/release_policy.rst:99 msgid "" "|supported| *Beta.* Receives new features, usability and performance " "improvements, as well as bug fixes, while under development." msgstr "" #: ../../docs/about/release_policy.rst:102 #, fuzzy msgid "Godot 3.6" msgstr "گودوت ۳.۵" #: ../../docs/about/release_policy.rst:102 #, fuzzy msgid "September 2024" msgstr "دسامبر ۲۰۱۴" #: ../../docs/about/release_policy.rst:105 msgid "Godot 3.5" msgstr "گودوت ۳.۵" #: ../../docs/about/release_policy.rst:105 msgid "August 2022" msgstr "اوت ۲۰۲۲" #: ../../docs/about/release_policy.rst:108 msgid "Godot 3.4" msgstr "گودوت ۳.۴" #: ../../docs/about/release_policy.rst:108 msgid "November 2021" msgstr "نوامبر ۲۰۲۱" #: ../../docs/about/release_policy.rst:108 msgid "|eol| No longer supported (last update: 3.4.5)." msgstr "" #: ../../docs/about/release_policy.rst:110 msgid "Godot 3.3" msgstr "گودوت ۳.۳" #: ../../docs/about/release_policy.rst:110 msgid "April 2021" msgstr "آوریل ۲۰۲۱" #: ../../docs/about/release_policy.rst:110 msgid "|eol| No longer supported (last update: 3.3.4)." msgstr "" #: ../../docs/about/release_policy.rst:112 msgid "Godot 3.2" msgstr "گودوت ۳.۲" #: ../../docs/about/release_policy.rst:112 msgid "January 2020" msgstr "ژانویه ۲۰۲۰" #: ../../docs/about/release_policy.rst:112 msgid "|eol| No longer supported (last update: 3.2.3)." msgstr "" #: ../../docs/about/release_policy.rst:114 msgid "Godot 3.1" msgstr "گودوت ۳.۱" #: ../../docs/about/release_policy.rst:114 msgid "March 2019" msgstr "مارس ۲۰۱۹" #: ../../docs/about/release_policy.rst:114 msgid "|eol| No longer supported (last update: 3.1.2)." msgstr "" #: ../../docs/about/release_policy.rst:116 msgid "Godot 3.0" msgstr "گودوت ۳.۰" #: ../../docs/about/release_policy.rst:116 msgid "January 2018" msgstr "ژانویه ۲۰۱۸" #: ../../docs/about/release_policy.rst:116 msgid "|eol| No longer supported (last update: 3.0.6)." msgstr "" #: ../../docs/about/release_policy.rst:118 msgid "Godot 2.1" msgstr "گودوت ۲.۱" #: ../../docs/about/release_policy.rst:118 msgid "July 2016" msgstr "ژوئیه ۲۰۱۶" #: ../../docs/about/release_policy.rst:118 msgid "|eol| No longer supported (last update: 2.1.6)." msgstr "" #: ../../docs/about/release_policy.rst:120 msgid "Godot 2.0" msgstr "گودوت ۲.۰" #: ../../docs/about/release_policy.rst:120 msgid "February 2016" msgstr "فوریه ۲۰۱۶" #: ../../docs/about/release_policy.rst:120 msgid "|eol| No longer supported (last update: 2.0.4.1)." msgstr "" #: ../../docs/about/release_policy.rst:122 msgid "Godot 1.1" msgstr "گودوت ۱.۱" #: ../../docs/about/release_policy.rst:122 msgid "May 2015" msgstr "مه ۲۰۱۵" #: ../../docs/about/release_policy.rst:122 #: ../../docs/about/release_policy.rst:124 msgid "|eol| No longer supported." msgstr "" #: ../../docs/about/release_policy.rst:124 msgid "Godot 1.0" msgstr "گودوت ۱.۰" #: ../../docs/about/release_policy.rst:124 msgid "December 2014" msgstr "دسامبر ۲۰۱۴" #: ../../docs/about/release_policy.rst:132 msgid "" "**Legend:** |supported| Full support – |partial| Partial support – |eol| No " "support (end of life) – |unstable| Development version" msgstr "" #: ../../docs/about/release_policy.rst:128 msgid "partial" msgstr "" #: ../../docs/about/release_policy.rst:138 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:143 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:149 msgid "Which version should I use for a new project?" msgstr "" #: ../../docs/about/release_policy.rst:151 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:159 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:165 msgid "Should I upgrade my project to use new engine versions?" msgstr "" #: ../../docs/about/release_policy.rst:169 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:174 msgid "" "That said, we do our best to keep minor and especially patch releases " "compatible with existing projects." msgstr "" #: ../../docs/about/release_policy.rst:177 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:183 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:191 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:203 msgid "When is the next release out?" msgstr "" #: ../../docs/about/release_policy.rst:205 msgid "" "While Godot contributors aren't working under any deadlines, we strive to " "publish minor releases relatively frequently." msgstr "" #: ../../docs/about/release_policy.rst:208 msgid "" "In particular, after the very length 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:212 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:217 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:221 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:227 msgid "What are the criteria for compatibility across engine versions?" msgstr "" #: ../../docs/about/release_policy.rst:231 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:235 msgid "The following changes are acceptable in patch releases:" msgstr "" #: ../../docs/about/release_policy.rst:237 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:242 msgid "Adding a new optional parameter to a method." msgstr "" #: ../../docs/about/release_policy.rst:243 msgid "Small-scale editor usability tweaks." msgstr "" #: ../../docs/about/release_policy.rst:245 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:249 msgid "" "The following changes are acceptable in minor releases, but not patch " "releases:" msgstr "" #: ../../docs/about/release_policy.rst:251 #, fuzzy msgid "Significant new features." msgstr "فهرست ویژگی‌ها" #: ../../docs/about/release_policy.rst:252 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:254 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:258 msgid "Changes that affect the default project theme's visuals." msgstr "" #: ../../docs/about/release_policy.rst:259 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:263 msgid "Performance optimizations that result in visual changes." msgstr "" #: ../../docs/about/release_policy.rst:265 msgid "" "The following changes are considered **compatibility-breaking** and can only " "be performed in a new major release:" msgstr "" #: ../../docs/about/release_policy.rst:268 msgid "Renaming or removing a method, member variable, or class." msgstr "" #: ../../docs/about/release_policy.rst:269 msgid "" "Modifying a node's inheritance tree by making it inherit from a different " "class." msgstr "" #: ../../docs/about/release_policy.rst:270 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:274 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:279 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 شامل بسیاری از آموزش " "های جدید ، بسیاری از رفع و به روزرسانی های مربوط به آموزش های قدیمی و بسیاری " "از به روزرسانی های مرجع کلاس است. در زیر لیستی از آموزش های جدید اضافه شده " "از نسخه 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.2" msgstr "آموزش‌های جدید از نسخه 3.0" #: ../../docs/about/docs_changelog.rst:22 #, fuzzy msgid ":ref:`doc_system_requirements`" msgstr "پیش نیاز ها" #: ../../docs/about/docs_changelog.rst:25 #: ../../docs/about/docs_changelog.rst:113 #: ../../docs/about/docs_changelog.rst:317 #: ../../docs/about/docs_changelog.rst:422 ../../docs/tutorials/2d/index.rst:4 msgid "2D" msgstr "۲‌بعدی" #: ../../docs/about/docs_changelog.rst:27 #, fuzzy msgid ":ref:`doc_2d_parallax`" msgstr ":ref:`doc_2d_antialiasing`" #: ../../docs/about/docs_changelog.rst:32 #, fuzzy msgid ":ref:`doc_handling_compatibility_breakages`" msgstr ":ref:`doc_visibility_ranges`" #: ../../docs/about/docs_changelog.rst:33 #, fuzzy msgid ":ref:`doc_ways_to_contribute`" msgstr "رجوع کنید به :ref:`doc_ways_to_contribute`." #: ../../docs/about/docs_changelog.rst:36 #: ../../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:75 msgid "GDExtension" msgstr "" #: ../../docs/about/docs_changelog.rst:38 #, fuzzy msgid ":ref:`doc_gdextension_file`" msgstr ":ref:`doc_what_is_gdextension`" #: ../../docs/about/docs_changelog.rst:39 #, fuzzy msgid ":ref:`doc_gdextension_docs_system`" msgstr ":ref:`doc_version_control_systems`" #: ../../docs/about/docs_changelog.rst:42 #: ../../docs/about/docs_changelog.rst:76 #: ../../docs/about/docs_changelog.rst:100 #: ../../docs/about/docs_changelog.rst:148 #, fuzzy msgid "Migrating" msgstr "تولید محتوا" #: ../../docs/about/docs_changelog.rst:44 #, fuzzy msgid ":ref:`doc_upgrading_to_godot_4.3`" msgstr ":ref:`doc_upgrading_to_godot_4.2`" #: ../../docs/about/docs_changelog.rst:49 #, fuzzy msgid ":ref:`doc_compositor`" msgstr ":ref:`doc_compiling_for_ios`" #: ../../docs/about/docs_changelog.rst:52 #: ../../docs/about/docs_changelog.rst:176 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.2.rst:216 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:198 #: ../../docs/tutorials/xr/index.rst:4 msgid "XR" msgstr "اکس‌آر" #: ../../docs/about/docs_changelog.rst:54 #, fuzzy msgid ":ref:`doc_a_better_xr_start_script`" msgstr ":ref:`doc_scenes_versus_scripts`" #: ../../docs/about/docs_changelog.rst:55 #, fuzzy msgid ":ref:`doc_openxr_passthrough`" msgstr ":ref:`doc_compute_shaders`" #: ../../docs/about/docs_changelog.rst:56 #, fuzzy msgid ":ref:`doc_xr_next_steps`" msgstr ":ref:`doc_2d_meshes`" #: ../../docs/about/docs_changelog.rst:57 #, fuzzy msgid ":ref:`doc_openxr_settings`" msgstr ":ref:`doc_2d_skeletons`" #: ../../docs/about/docs_changelog.rst:58 #, fuzzy msgid ":ref:`doc_openxr_composition_layers`" msgstr ":ref:`doc_vulkan_validation_layers`" #: ../../docs/about/docs_changelog.rst:59 #, fuzzy msgid ":ref:`doc_openxr_body_tracking`" msgstr ":ref:`doc_soft_body`" #: ../../docs/about/docs_changelog.rst:63 #, fuzzy msgid "New pages since version 4.1" msgstr "آموزش‌های جدید از نسخه 3.0" #: ../../docs/about/docs_changelog.rst:66 #: ../../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:388 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:497 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:582 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:593 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:611 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:648 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:664 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:679 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:696 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:708 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:716 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:729 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:737 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:750 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:784 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:792 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:800 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:78 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:118 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_collections.rst:216 msgid "C#" msgstr "سی شارپ" #: ../../docs/about/docs_changelog.rst:68 msgid ":ref:`doc_c_sharp_diagnostics`" msgstr ":ref:`doc_c_sharp_diagnostics`" #: ../../docs/about/docs_changelog.rst:71 #: ../../docs/about/docs_changelog.rst:94 #: ../../docs/about/docs_changelog.rst:143 #: ../../docs/about/docs_changelog.rst:246 msgid "Development" msgstr "توسعه" #: ../../docs/about/docs_changelog.rst:73 msgid ":ref:`doc_2d_coordinate_systems`" msgstr ":ref:`doc_2d_coordinate_systems`" #: ../../docs/about/docs_changelog.rst:78 msgid ":ref:`doc_upgrading_to_godot_4.2`" msgstr ":ref:`doc_upgrading_to_godot_4.2`" #: ../../docs/about/docs_changelog.rst:81 msgid "I/O" msgstr "" #: ../../docs/about/docs_changelog.rst:83 msgid ":ref:`doc_runtime_loading_and_saving`" msgstr ":ref:`doc_runtime_loading_and_saving`" #: ../../docs/about/docs_changelog.rst:86 #: ../../docs/about/docs_changelog.rst:277 #: ../../docs/about/docs_changelog.rst:478 #: ../../docs/tutorials/platform/index.rst:5 msgid "Platform-specific" msgstr "ویژه به سکو" #: ../../docs/about/docs_changelog.rst:88 msgid ":ref:`doc_android_library`" msgstr ":ref:`doc_android_plugin`" #: ../../docs/about/docs_changelog.rst:91 #, fuzzy msgid "New pages since version 4.0" msgstr "آموزش‌های جدید از نسخه 3.0" #: ../../docs/about/docs_changelog.rst:96 msgid ":ref:`doc_internal_rendering_architecture`" msgstr ":ref:`doc_internal_rendering_architecture`" #: ../../docs/about/docs_changelog.rst:97 msgid ":ref:`doc_using_sanitizers`" msgstr ":ref:`doc_using_sanitizers`" #: ../../docs/about/docs_changelog.rst:102 msgid ":ref:`doc_upgrading_to_godot_4.1`" msgstr ":ref:`doc_upgrading_to_godot_4.1`" #: ../../docs/about/docs_changelog.rst:105 #: ../../docs/about/docs_changelog.rst:153 #: ../../docs/about/docs_changelog.rst:284 #: ../../docs/about/docs_changelog.rst:435 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.1.rst:104 #: ../../docs/tutorials/migrating/upgrading_to_godot_4.3.rst:73 #: ../../docs/tutorials/2d/using_tilemaps.rst:70 #: ../../docs/tutorials/performance/cpu_optimization.rst:246 #: ../../docs/tutorials/physics/index.rst:4 msgid "Physics" msgstr "فیزیک" #: ../../docs/about/docs_changelog.rst:107 msgid ":ref:`doc_troubleshooting_physics_issues`" msgstr ":ref:`doc_troubleshooting_physics_issues`" #: ../../docs/about/docs_changelog.rst:110 #, fuzzy msgid "New pages since version 3.6" msgstr "آموزشهای جدید از نسخه 3.1" #: ../../docs/about/docs_changelog.rst:115 msgid ":ref:`doc_2d_antialiasing`" msgstr ":ref:`doc_2d_antialiasing`" #: ../../docs/about/docs_changelog.rst:118 #: ../../docs/about/docs_changelog.rst:191 #: ../../docs/about/docs_changelog.rst:222 #: ../../docs/about/docs_changelog.rst:428 ../../docs/tutorials/3d/index.rst:4 #: ../../docs/tutorials/performance/index.rst:74 msgid "3D" msgstr "۳‌بعدی" #: ../../docs/about/docs_changelog.rst:120 msgid ":ref:`doc_3d_antialiasing`" msgstr ":ref:`doc_3d_antialiasing`" #: ../../docs/about/docs_changelog.rst:121 msgid ":ref:`doc_faking_global_illumination`" msgstr ":ref:`doc_faking_global_illumination`" #: ../../docs/about/docs_changelog.rst:122 msgid ":ref:`doc_introduction_to_global_illumination`" msgstr ":ref:`doc_introduction_to_global_illumination`" #: ../../docs/about/docs_changelog.rst:123 msgid ":ref:`doc_mesh_lod`" msgstr ":ref:`doc_mesh_lod`" #: ../../docs/about/docs_changelog.rst:124 msgid ":ref:`doc_occlusion_culling`" msgstr ":ref:`doc_occlusion_culling`" #: ../../docs/about/docs_changelog.rst:125 msgid ":ref:`doc_using_sdfgi`" msgstr ":ref:`doc_using_sdfgi`" #: ../../docs/about/docs_changelog.rst:126 msgid ":ref:`doc_using_decals`" msgstr ":ref:`doc_using_decals`" #: ../../docs/about/docs_changelog.rst:127 msgid ":ref:`doc_visibility_ranges`" msgstr ":ref:`doc_visibility_ranges`" #: ../../docs/about/docs_changelog.rst:128 msgid ":ref:`doc_volumetric_fog`" msgstr ":ref:`doc_volumetric_fog`" #: ../../docs/about/docs_changelog.rst:129 msgid ":ref:`doc_variable_rate_shading`" msgstr ":ref:`doc_variable_rate_shading`" #: ../../docs/about/docs_changelog.rst:130 msgid ":ref:`doc_physical_light_and_camera_units`" msgstr ":ref:`doc_physical_light_and_camera_units`" #: ../../docs/about/docs_changelog.rst:135 msgid ":ref:`doc_creating_movies`" msgstr ":ref:`doc_creating_movies`" #: ../../docs/about/docs_changelog.rst:138 #: ../../docs/tutorials/assets_pipeline/index.rst:4 msgid "Assets pipeline" msgstr "" #: ../../docs/about/docs_changelog.rst:140 msgid ":ref:`doc_retargeting_3d_skeletons`" msgstr ":ref:`doc_retargeting_3d_skeletons`" #: ../../docs/about/docs_changelog.rst:145 msgid ":ref:`doc_custom_platform_ports`" msgstr ":ref:`doc_custom_platform_ports`" #: ../../docs/about/docs_changelog.rst:150 msgid ":ref:`doc_upgrading_to_godot_4`" msgstr ":ref:`doc_upgrading_to_godot_4`" #: ../../docs/about/docs_changelog.rst:155 msgid ":ref:`doc_large_world_coordinates`" msgstr ":ref:`doc_large_world_coordinates`" #: ../../docs/about/docs_changelog.rst:160 msgid ":ref:`doc_custom_performance_monitors`" msgstr ":ref:`doc_custom_performance_monitors`" #: ../../docs/about/docs_changelog.rst:161 msgid ":ref:`doc_c_sharp_collections`" msgstr ":ref:`doc_c_sharp_collections`" #: ../../docs/about/docs_changelog.rst:162 msgid ":ref:`doc_c_sharp_global_classes`" msgstr ":ref:`doc_c_sharp_global_classes`" #: ../../docs/about/docs_changelog.rst:163 msgid ":ref:`doc_c_sharp_variant`" msgstr ":ref:`doc_c_sharp_variant`" #: ../../docs/about/docs_changelog.rst:168 msgid ":ref:`doc_compute_shaders`" msgstr ":ref:`doc_compute_shaders`" #: ../../docs/about/docs_changelog.rst:171 msgid "Workflow" msgstr "روند کار" #: ../../docs/about/docs_changelog.rst:173 msgid ":ref:`doc_pr_review_guidelines`" msgstr ":ref:`doc_pr_review_guidelines`" #: ../../docs/about/docs_changelog.rst:178 msgid ":ref:`doc_introducing_xr_tools`" msgstr ":ref:`doc_introducing_xr_tools`" #: ../../docs/about/docs_changelog.rst:179 msgid ":ref:`doc_xr_action_map`" msgstr ":ref:`doc_xr_action_map`" #: ../../docs/about/docs_changelog.rst:180 msgid ":ref:`doc_deploying_to_android`" msgstr ":ref:`doc_deploying_to_android`" #: ../../docs/about/docs_changelog.rst:183 #, fuzzy msgid "New pages since version 3.5" msgstr "آموزشهای جدید از نسخه 3.1" #: ../../docs/about/docs_changelog.rst:185 msgid "None." msgstr "هیچکدام." #: ../../docs/about/docs_changelog.rst:188 #, fuzzy msgid "New pages since version 3.4" msgstr "آموزشهای جدید از نسخه 3.1" #: ../../docs/about/docs_changelog.rst:193 msgid ":ref:`doc_3d_text`" msgstr ":ref:`doc_3d_text`" #: ../../docs/about/docs_changelog.rst:198 msgid ":ref:`doc_playing_videos`" msgstr ":ref:`doc_playing_videos`" #: ../../docs/about/docs_changelog.rst:203 msgid ":ref:`doc_managing_editor_features`" msgstr ":ref:`doc_managing_editor_features`" #: ../../docs/about/docs_changelog.rst:206 #, fuzzy msgid "New pages since version 3.3" msgstr "آموزشهای جدید از نسخه 3.1" #: ../../docs/about/docs_changelog.rst:209 #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:33 #: ../../docs/tutorials/performance/cpu_optimization.rst:195 msgid "C++" msgstr "++C" #: ../../docs/about/docs_changelog.rst:211 msgid ":ref:`doc_cpp_usage_guidelines`" msgstr ":ref:`doc_cpp_usage_guidelines`" #: ../../docs/about/docs_changelog.rst:214 #: ../../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:4 #: ../../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:388 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:497 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:582 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:593 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:611 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:648 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:664 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:679 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:696 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:708 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:716 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:729 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:737 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:750 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:784 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:792 #: ../../docs/tutorials/scripting/c_sharp/c_sharp_differences.rst:800 #: ../../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:251 #: ../../docs/contributing/development/core_and_modules/scripting_development.rst:7 msgid "GDScript" msgstr "جی‌دی اسکریپت" #: ../../docs/about/docs_changelog.rst:216 msgid ":ref:`doc_gdscript_documentation_comments`" msgstr ":ref:`doc_gdscript_documentation_comments`" #: ../../docs/about/docs_changelog.rst:219 #, fuzzy msgid "New pages since version 3.2" msgstr "آموزشهای جدید از نسخه 3.1" #: ../../docs/about/docs_changelog.rst:224 msgid ":ref:`doc_3d_rendering_limitations`" msgstr ":ref:`doc_3d_rendering_limitations`" #: ../../docs/about/docs_changelog.rst:229 msgid ":ref:`doc_troubleshooting`" msgstr ":ref:`doc_troubleshooting`" #: ../../docs/about/docs_changelog.rst:230 msgid ":ref:`doc_list_of_features`" msgstr ":ref:`doc_list_of_features`" #: ../../docs/about/docs_changelog.rst:231 msgid ":ref:`doc_release_policy`" msgstr ":ref:`doc_release_policy`" #: ../../docs/about/docs_changelog.rst:234 #: ../../docs/tutorials/best_practices/index.rst:4 #: ../../docs/tutorials/assets_pipeline/importing_images.rst:546 #: ../../docs/tutorials/assets_pipeline/importing_audio_samples.rst:273 #: ../../docs/tutorials/audio/text_to_speech.rst:93 msgid "Best practices" msgstr "" #: ../../docs/about/docs_changelog.rst:236 msgid ":ref:`doc_version_control_systems`" msgstr ":ref:`doc_version_control_systems`" #: ../../docs/about/docs_changelog.rst:241 msgid ":ref:`doc_best_practices_for_engine_contributors`" msgstr ":ref:`doc_best_practices_for_engine_contributors`" #: ../../docs/about/docs_changelog.rst:242 msgid ":ref:`doc_bisecting_regressions`" msgstr ":ref:`doc_bisecting_regressions`" #: ../../docs/about/docs_changelog.rst:243 msgid ":ref:`doc_editor_and_docs_localization`" msgstr ":ref:`doc_editor_and_docs_localization`" #: ../../docs/about/docs_changelog.rst:248 msgid ":ref:`doc_introduction_to_editor_development`" msgstr ":ref:`doc_introduction_to_editor_development`" #: ../../docs/about/docs_changelog.rst:249 msgid ":ref:`doc_editor_style_guide`" msgstr ":ref:`doc_editor_style_guide`" #: ../../docs/about/docs_changelog.rst:250 msgid ":ref:`doc_common_engine_methods_and_macros`" msgstr ":ref:`doc_common_engine_methods_and_macros`" #: ../../docs/about/docs_changelog.rst:251 msgid ":ref:`doc_vulkan_validation_layers`" msgstr ":ref:`doc_vulkan_validation_layers`" #: ../../docs/about/docs_changelog.rst:252 msgid ":ref:`doc_gdscript_grammar`" msgstr ":ref:`doc_gdscript_grammar`" #: ../../docs/about/docs_changelog.rst:253 msgid "Configuring an IDE: :ref:`doc_configuring_an_ide_code_blocks`" msgstr "" #: ../../docs/about/docs_changelog.rst:258 msgid ":ref:`doc_default_key_mapping`" msgstr ":ref:`doc_default_key_mapping`" #: ../../docs/about/docs_changelog.rst:259 msgid ":ref:`doc_using_the_web_editor`" msgstr ":ref:`doc_using_the_web_editor`" #: ../../docs/about/docs_changelog.rst:262 #: ../../docs/tutorials/export/index.rst:4 msgid "Export" msgstr "برون‌برد" #: ../../docs/about/docs_changelog.rst:264 msgid ":ref:`doc_exporting_for_dedicated_servers`" msgstr ":ref:`doc_exporting_for_dedicated_servers`" #: ../../docs/about/docs_changelog.rst:269 msgid ":ref:`doc_controllers_gamepads_joysticks`" msgstr ":ref:`doc_controllers_gamepads_joysticks`" #: ../../docs/about/docs_changelog.rst:272 #: ../../docs/about/docs_changelog.rst:328 #: ../../docs/tutorials/math/index.rst:4 msgid "Math" msgstr "ریاضی" #: ../../docs/about/docs_changelog.rst:274 msgid ":ref:`doc_random_number_generation`" msgstr ":ref:`doc_random_number_generation`" #: ../../docs/about/docs_changelog.rst:279 msgid ":ref:`doc_plugins_for_ios`" msgstr ":ref:`doc_plugins_for_ios`" #: ../../docs/about/docs_changelog.rst:280 msgid ":ref:`doc_ios_plugin`" msgstr ":ref:`doc_ios_plugin`" #: ../../docs/about/docs_changelog.rst:281 msgid ":ref:`doc_html5_shell_classref`" msgstr ":ref:`doc_html5_shell_classref`" #: ../../docs/about/docs_changelog.rst:286 msgid ":ref:`doc_collision_shapes_2d`" msgstr ":ref:`doc_collision_shapes_2d`" #: ../../docs/about/docs_changelog.rst:287 msgid ":ref:`doc_collision_shapes_3d`" msgstr ":ref:`doc_collision_shapes_3d`" #: ../../docs/about/docs_changelog.rst:292 msgid ":ref:`doc_shaders_style_guide`" msgstr ":ref:`doc_shaders_style_guide`" #: ../../docs/about/docs_changelog.rst:297 msgid ":ref:`doc_debugger_panel`" msgstr ":ref:`doc_debugger_panel`" #: ../../docs/about/docs_changelog.rst:298 msgid ":ref:`doc_creating_script_templates`" msgstr ":ref:`doc_creating_script_templates`" #: ../../docs/about/docs_changelog.rst:299 msgid ":ref:`doc_evaluating_expressions`" msgstr ":ref:`doc_evaluating_expressions`" #: ../../docs/about/docs_changelog.rst:300 msgid ":ref:`doc_what_is_gdextension`" msgstr ":ref:`doc_what_is_gdextension`" #: ../../docs/about/docs_changelog.rst:301 msgid "" ":ref:`doc_gdscript_warning_system` (split from :ref:" "`doc_gdscript_static_typing`)" msgstr "" #: ../../docs/about/docs_changelog.rst:304 msgid "User Interface (UI)" msgstr "" #: ../../docs/about/docs_changelog.rst:306 msgid ":ref:`doc_control_node_gallery`" msgstr ":ref:`doc_control_node_gallery`" #: ../../docs/about/docs_changelog.rst:309 #, fuzzy msgid "New pages since version 3.1" msgstr "آموزشهای جدید از نسخه 3.1" #: ../../docs/about/docs_changelog.rst:312 #: ../../docs/about/docs_changelog.rst:406 msgid "Project workflow" msgstr "گردش کار پروژه" #: ../../docs/about/docs_changelog.rst:314 msgid ":ref:`doc_android_gradle_build`" msgstr ":ref:`doc_android_gradle_build`" #: ../../docs/about/docs_changelog.rst:319 msgid ":ref:`doc_2d_sprite_animation`" msgstr ":ref:`doc_2d_sprite_animation`" #: ../../docs/about/docs_changelog.rst:324 msgid ":ref:`doc_recording_with_microphone`" msgstr ":ref:`doc_recording_with_microphone`" #: ../../docs/about/docs_changelog.rst:325 msgid ":ref:`doc_sync_with_audio`" msgstr ":ref:`doc_sync_with_audio`" #: ../../docs/about/docs_changelog.rst:330 msgid ":ref:`doc_beziers_and_curves`" msgstr ":ref:`doc_beziers_and_curves`" #: ../../docs/about/docs_changelog.rst:331 msgid ":ref:`doc_interpolation`" msgstr ":ref:`doc_interpolation`" #: ../../docs/about/docs_changelog.rst:334 msgid "Inputs" msgstr "دروندادها" #: ../../docs/about/docs_changelog.rst:336 msgid ":ref:`doc_input_examples`" msgstr ":ref:`doc_input_examples`" #: ../../docs/about/docs_changelog.rst:341 msgid ":ref:`doc_localization_using_gettext`" msgstr ":ref:`doc_localization_using_gettext`" #: ../../docs/about/docs_changelog.rst:344 #: ../../docs/about/docs_changelog.rst:458 #: ../../docs/tutorials/3d/standard_material_3d.rst:242 msgid "Shading" msgstr "سایه‌زنی" #: ../../docs/about/docs_changelog.rst:346 msgid "Your First Shader Series:" msgstr "اولین سری Shader شما:" #: ../../docs/about/docs_changelog.rst:347 #: ../../docs/about/docs_changelog.rst:465 msgid ":ref:`doc_introduction_to_shaders`" msgstr ":ref:`doc_introduction_to_shaders`" #: ../../docs/about/docs_changelog.rst:348 msgid ":ref:`doc_your_first_canvasitem_shader`" msgstr ":ref:`doc_your_first_canvasitem_shader`" #: ../../docs/about/docs_changelog.rst:349 msgid ":ref:`doc_your_first_spatial_shader`" msgstr ":ref:`doc_your_first_spatial_shader`" #: ../../docs/about/docs_changelog.rst:350 msgid ":ref:`doc_your_second_spatial_shader`" msgstr ":ref:`doc_your_second_spatial_shader`" #: ../../docs/about/docs_changelog.rst:351 msgid ":ref:`doc_visual_shaders`" msgstr ":ref:`doc_visual_shaders`" #: ../../docs/about/docs_changelog.rst:356 msgid ":ref:`doc_webrtc`" msgstr ":ref:`doc_webrtc`" #: ../../docs/about/docs_changelog.rst:359 #: ../../docs/about/docs_changelog.rst:472 #: ../../docs/tutorials/plugins/index.rst:4 msgid "Plugins" msgstr "افزایه‌ها" #: ../../docs/about/docs_changelog.rst:361 msgid ":ref:`doc_android_plugin`" msgstr ":ref:`doc_android_plugin`" #: ../../docs/about/docs_changelog.rst:362 msgid ":ref:`doc_inspector_plugins`" msgstr ":ref:`doc_inspector_plugins`" #: ../../docs/about/docs_changelog.rst:363 msgid ":ref:`doc_visual_shader_plugins`" msgstr ":ref:`doc_visual_shader_plugins`" #: ../../docs/about/docs_changelog.rst:366 #: ../../docs/about/docs_changelog.rst:483 msgid "Multi-threading" msgstr "چند رشته ای" #: ../../docs/about/docs_changelog.rst:368 msgid ":ref:`doc_using_multiple_threads`" msgstr ":ref:`doc_using_multiple_threads`" #: ../../docs/about/docs_changelog.rst:371 #: ../../docs/about/docs_changelog.rst:488 msgid "Creating content" msgstr "تولید محتوا" #: ../../docs/about/docs_changelog.rst:373 msgid "Procedural geometry series:" msgstr "سری هندسه رویه:" #: ../../docs/about/docs_changelog.rst:374 msgid ":ref:`Procedural geometry `" msgstr ":ref:`Procedural geometry `" #: ../../docs/about/docs_changelog.rst:375 msgid ":ref:`doc_arraymesh`" msgstr ":ref:`doc_arraymesh`" #: ../../docs/about/docs_changelog.rst:376 msgid ":ref:`doc_surfacetool`" msgstr ":ref:`doc_surfacetool`" #: ../../docs/about/docs_changelog.rst:377 msgid ":ref:`doc_meshdatatool`" msgstr ":ref:`doc_meshdatatool`" #: ../../docs/about/docs_changelog.rst:378 msgid ":ref:`doc_immediatemesh`" msgstr ":ref:`doc_immediatemesh`" #: ../../docs/about/docs_changelog.rst:381 ../../docs/tutorials/3d/index.rst:37 msgid "Optimization" msgstr "بهینه‌سازی" #: ../../docs/about/docs_changelog.rst:383 msgid ":ref:`doc_using_multimesh`" msgstr ":ref:`doc_using_multimesh`" #: ../../docs/about/docs_changelog.rst:384 msgid ":ref:`doc_using_servers`" msgstr ":ref:`doc_using_servers`" #: ../../docs/about/docs_changelog.rst:387 msgid "Legal" msgstr "قانونی" #: ../../docs/about/docs_changelog.rst:389 msgid ":ref:`doc_complying_with_licenses`" msgstr ":ref:`doc_complying_with_licenses`" #: ../../docs/about/docs_changelog.rst:392 #, fuzzy msgid "New pages since version 3.0" msgstr "آموزش‌های جدید از نسخه 3.0" #: ../../docs/about/docs_changelog.rst:395 #: ../../docs/getting_started/step_by_step/index.rst:4 #: ../../docs/contributing/development/compiling/compiling_with_script_encryption_key.rst:32 msgid "Step by step" msgstr "قدم به قدم" #: ../../docs/about/docs_changelog.rst:397 msgid ":ref:`doc_signals`" msgstr ":ref:`doc_signals`" #: ../../docs/about/docs_changelog.rst:398 #: ../../docs/tutorials/editor/command_line_tutorial.rst:388 msgid "Exporting" msgstr "برون‌بردن" #: ../../docs/about/docs_changelog.rst:403 msgid ":ref:`doc_gdscript_static_typing`" msgstr ":ref:`doc_gdscript_static_typing`" #: ../../docs/about/docs_changelog.rst:408 msgid "Best Practices:" msgstr "بهترین روش ها:" #: ../../docs/about/docs_changelog.rst:410 msgid ":ref:`doc_introduction_best_practices`" msgstr ":ref:`doc_introduction_best_practices`" #: ../../docs/about/docs_changelog.rst:411 msgid ":ref:`doc_what_are_godot_classes`" msgstr ":ref:`doc_what_are_godot_classes`" #: ../../docs/about/docs_changelog.rst:412 msgid ":ref:`doc_scene_organization`" msgstr ":ref:`doc_scene_organization`" #: ../../docs/about/docs_changelog.rst:413 msgid ":ref:`doc_scenes_versus_scripts`" msgstr ":ref:`doc_scenes_versus_scripts`" #: ../../docs/about/docs_changelog.rst:414 msgid ":ref:`doc_autoloads_versus_internal_nodes`" msgstr ":ref:`doc_autoloads_versus_internal_nodes`" #: ../../docs/about/docs_changelog.rst:415 msgid ":ref:`doc_node_alternatives`" msgstr ":ref:`doc_node_alternatives`" #: ../../docs/about/docs_changelog.rst:416 msgid ":ref:`doc_godot_interfaces`" msgstr ":ref:`doc_godot_interfaces`" #: ../../docs/about/docs_changelog.rst:417 msgid ":ref:`doc_godot_notifications`" msgstr ":ref:`doc_godot_notifications`" #: ../../docs/about/docs_changelog.rst:418 msgid ":ref:`doc_data_preferences`" msgstr ":ref:`doc_data_preferences`" #: ../../docs/about/docs_changelog.rst:419 msgid ":ref:`doc_logic_preferences`" msgstr ":ref:`doc_logic_preferences`" #: ../../docs/about/docs_changelog.rst:424 msgid ":ref:`doc_2d_lights_and_shadows`" msgstr ":ref:`doc_2d_lights_and_shadows`" #: ../../docs/about/docs_changelog.rst:425 msgid ":ref:`doc_2d_meshes`" msgstr ":ref:`doc_2d_meshes`" #: ../../docs/about/docs_changelog.rst:430 msgid ":ref:`doc_csg_tools`" msgstr ":ref:`doc_csg_tools`" #: ../../docs/about/docs_changelog.rst:431 msgid ":ref:`doc_animating_thousands_of_fish`" msgstr ":ref:`doc_animating_thousands_of_fish`" #: ../../docs/about/docs_changelog.rst:432 msgid ":ref:`doc_controlling_thousands_of_fish`" msgstr ":ref:`doc_controlling_thousands_of_fish`" #: ../../docs/about/docs_changelog.rst:437 msgid ":ref:`doc_ragdoll_system`" msgstr ":ref:`doc_ragdoll_system`" #: ../../docs/about/docs_changelog.rst:438 msgid ":ref:`doc_soft_body`" msgstr ":ref:`doc_soft_body`" #: ../../docs/about/docs_changelog.rst:443 msgid ":ref:`doc_2d_skeletons`" msgstr ":ref:`doc_2d_skeletons`" #: ../../docs/about/docs_changelog.rst:444 msgid ":ref:`doc_animation_tree`" msgstr ":ref:`doc_animation_tree`" #: ../../docs/about/docs_changelog.rst:447 msgid "GUI" msgstr "رابط‌کاربری گرافیکی" #: ../../docs/about/docs_changelog.rst:449 msgid ":ref:`doc_gui_containers`" msgstr ":ref:`doc_gui_containers`" #: ../../docs/about/docs_changelog.rst:452 msgid "Viewports" msgstr "بازدیدها" #: ../../docs/about/docs_changelog.rst:454 msgid ":ref:`doc_viewport_as_texture`" msgstr ":ref:`doc_viewport_as_texture`" #: ../../docs/about/docs_changelog.rst:455 msgid ":ref:`doc_custom_postprocessing`" msgstr ":ref:`doc_custom_postprocessing`" #: ../../docs/about/docs_changelog.rst:460 msgid ":ref:`doc_converting_glsl_to_godot_shaders`" msgstr ":ref:`doc_converting_glsl_to_godot_shaders`" #: ../../docs/about/docs_changelog.rst:461 msgid ":ref:`doc_advanced_postprocessing`" msgstr ":ref:`doc_advanced_postprocessing`" #: ../../docs/about/docs_changelog.rst:463 msgid "Shading Reference:" msgstr "مرجع سایه زنی:" #: ../../docs/about/docs_changelog.rst:466 msgid ":ref:`doc_shading_language`" msgstr ":ref:`doc_shading_language`" #: ../../docs/about/docs_changelog.rst:467 msgid ":ref:`doc_spatial_shader`" msgstr ":ref:`doc_spatial_shader`" #: ../../docs/about/docs_changelog.rst:468 msgid ":ref:`doc_canvas_item_shader`" msgstr ":ref:`doc_canvas_item_shader`" #: ../../docs/about/docs_changelog.rst:469 msgid ":ref:`doc_particle_shader`" msgstr ":ref:`doc_particle_shader`" #: ../../docs/about/docs_changelog.rst:474 msgid ":ref:`doc_making_main_screen_plugins`" msgstr ":ref:`doc_making_main_screen_plugins`" #: ../../docs/about/docs_changelog.rst:475 msgid ":ref:`doc_3d_gizmo_plugins`" msgstr ":ref:`doc_3d_gizmo_plugins`" #: ../../docs/about/docs_changelog.rst:480 msgid ":ref:`doc_customizing_html5_shell`" msgstr ":ref:`doc_customizing_html5_shell`" #: ../../docs/about/docs_changelog.rst:485 msgid ":ref:`doc_thread_safe_apis`" msgstr ":ref:`doc_thread_safe_apis`" #: ../../docs/about/docs_changelog.rst:490 msgid ":ref:`doc_making_trees`" msgstr ":ref:`doc_making_trees`" #: ../../docs/about/docs_changelog.rst:495 msgid ":ref:`doc_jitter_stutter`" msgstr ":ref:`doc_jitter_stutter`" #: ../../docs/about/docs_changelog.rst:496 msgid ":ref:`doc_running_code_in_the_editor`" msgstr ":ref:`doc_running_code_in_the_editor`" #: ../../docs/about/docs_changelog.rst:497 msgid ":ref:`doc_change_scenes_manually`" msgstr ":ref:`doc_change_scenes_manually`" #: ../../docs/about/docs_changelog.rst:500 #: ../../docs/contributing/development/compiling/compiling_for_windows.rst:109 #: ../../docs/contributing/development/compiling/compiling_for_linuxbsd.rst:237 #: ../../docs/contributing/development/compiling/compiling_for_macos.rst:46 #: ../../docs/contributing/development/compiling/compiling_for_ios.rst:47 msgid "Compiling" msgstr "کامپایل کردن" #: ../../docs/about/docs_changelog.rst:502 msgid ":ref:`doc_optimizing_for_size`" msgstr ":ref:`doc_optimizing_for_size`" #: ../../docs/about/docs_changelog.rst:503 msgid ":ref:`doc_compiling_with_script_encryption_key`" msgstr ":ref:`doc_compiling_with_script_encryption_key`" #: ../../docs/about/docs_changelog.rst:506 #: ../../docs/contributing/development/index.rst:6 msgid "Engine development" msgstr "توسعه موتور" #: ../../docs/about/docs_changelog.rst:508 msgid ":ref:`doc_binding_to_external_libraries`" msgstr ":ref:`doc_binding_to_external_libraries`" #: ../../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 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 Ex-Zodiac and Helms of " "Fury." msgstr "" "چند نمونه از بازی‌هایی که با گودوت ساخته شدند: «Ex-Zodiac» (بالایی) و «Helms " "of Fury» (پایینی)." #: ../../docs/getting_started/introduction/introduction_to_godot.rst:42 msgid "" "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." msgstr "" "در زمینهٔ برنامه، برنامهٔ پیکسل‌نگاری متن‌باز «پیکسل‌اوراما» (Pixelorama) و بازی " "نقش‌آفرینی‌ساز ووکسلی «RPG in a box» هر دو با گودوت ساخته شده‌اند." #: ../../docs/getting_started/introduction/introduction_to_godot.rst:47 msgid "You can find many more examples in the `official showcase videos`_." msgstr "می‌توانید نمونه‌های بسیار بیشتری در `ویدیو‌های رسمی پیش‌نمایش`_ بیابید." #: ../../docs/getting_started/introduction/introduction_to_godot.rst:50 msgid "How does it work and look?" msgstr "چگونه کار می‌کند و چه ریختی‌ست؟" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:52 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:58 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:62 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 "" "بی‌گمان، اگر بیشتر می‌پسندید، می‌توانید با برنامه‌های بیرونی کار کنید. ما به " "گونهٔ رسمی درون‌برد پرده‌های طراحی شده در Blender_ را پشتیبانی و افزایه‌های " "کدنویسی در VSCode_ و Emacs_ برای جی.دی.اسکریپت و سی‌شارپ را نگهداری می‌کنیم. " "از ویژوال استودیو برای سی‌شارپ روی ویندوز نیز پشتیبانی می‌کنیم." #: ../../docs/getting_started/introduction/introduction_to_godot.rst:70 #: ../../docs/tutorials/scripting/index.rst:-1 msgid "Programming languages" msgstr "زبان‌های برنامه‌نویسی" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:72 msgid "Let's talk about the available programming languages." msgstr "بیایید دربارهٔ زبان‌های برنامه‌نویسی در دسترس گفتگو کنیم." #: ../../docs/getting_started/introduction/introduction_to_godot.rst:74 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 "" "شما می‌توانید بازی‌هایتان را با بکارگیری :ref:`جی.دی.اسکریپت `، یک زبان ویژه به گودوت که به خوبی یکپارچه شده و دارای " "سینتَکس (نحو) سبکی می‌باشد، یا :ref:`سی‌شارپ `، که در " "صنعت بازی‌سازی بسیار هوادار دارد، کدنویسید. این دو تا از زبان‌های اسکریپت‌نویسی " "اصلی‌ای‌اند که ما پشتیبانی می‌کنیم." #: ../../docs/getting_started/introduction/introduction_to_godot.rst:79 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 "" "با فناوری جی.دی.اِکستِنشِن می‌توانید بازی‌روند یا الگوریتم‌های سنگین را با زبان سی " "(C) یا سی++ بی‌نیاز از دوباره کامپایل کردن موتور بنویسید. می‌توانید این فناوری " "را برای یکپارچه‌سازی کتابخانه‌های شخص ثالث و دیگر بسته‌های توسعهٔ نرم‌افزار (SDK) " "با گودوت نیز بکار ببرید." #: ../../docs/getting_started/introduction/introduction_to_godot.rst:84 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:90 msgid "What do I need to know to use Godot?" msgstr "برای بکارگیری گودوت چه چیزهایی باید بدانم؟" #: ../../docs/getting_started/introduction/introduction_to_godot.rst:92 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:97 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:100 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:105 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 "" "در CS50، چندین زبان برنامه‌نویسی خواهید آموخت. از آن نترسید: زبان‌های " "برنامه‌نویسی همانندی‌های بسیار دارند. مهارت‌هایی که در یک زبان می‌آموزید در " "دیگری نیز کاربرد خواهد داشت." #: ../../docs/getting_started/introduction/introduction_to_godot.rst:109 msgid "" "We will provide you with more Godot-specific learning resources in :ref:" "`doc_learning_new_features`." msgstr "" "ما بنمایه‌های یادگیری ویژه به گودوت بیشتری در :ref:" "`doc_learning_new_features` برایتان فراهم خواهیم کرد." #: ../../docs/getting_started/introduction/introduction_to_godot.rst:112 #: ../../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 "" "در گودوت، بازی را به پرده‌های چندبارمصرف کوچک می‌کنیم. یک پرده می‌تواند یک " "شخصیت، یک جنگ‌افزار، یک گزینگان در میانای کاربری، یک خانهٔ تنها، یک پلهٔ " "(مرحله) کامل یا هر چیز که می‌خواهید باشد. پرده‌های گودوت انعطاف‌پذیرند؛ هم نقش " "پِریفَب (prefab) و پرده‌های دیگر موتورهای بازی‌سازی را نیز پر می‌کنند." #: ../../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:247 #: ../../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 "" "از یک گرهٔ ``CharacterBody2D`` با نام \"Player\"، یک ``Camera2D`` ، یک " "``Sprite2D`` و یک ``CollisionShape2D`` ساخته شده است." #: ../../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 "" "نام گره‌ها با «2D» پایان می‌یابند چون این یک پردهٔ دوبعدی است. نام همدوش‌های " "سه‌بعدی آن با «3D» پایان می‌یابند. هشیار باشید که گره‌های «Spatial» پس از گودوت " "۴ با نام «Node3D» شناخته می‌شوند." #: ../../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:2294 #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:638 #: ../../docs/tutorials/scripting/gdscript/gdscript_styleguide.rst:701 #: ../../docs/tutorials/scripting/gdextension/gdextension_cpp_example.rst:601 #: ../../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 msgid "" "Signals are Godot's version of the *observer* pattern. You can read more " "about it here: https://gameprogrammingpatterns.com/observer.html" msgstr "" "سیگنال‌ها نسخهٔ گودوت از الگوی *ناظرند*. می‌توانید دربارهٔ آن در اینجا بیشتر " "بخوانید: https://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 to this " "signal to run code in reaction to this event, like starting the game or " "opening a menu." msgstr "" "برای نمونه، دکمه‌ها هنگام فشرده شدن یک سیگنال برون‌پاشی می‌کنند. می‌توانید اجرای " "اندازه‌ای کد را در واکنش به این رویداد به سیگنال اتصال دهید، مانند راه‌اندازی " "بازی یا گشودن یک گزینگان." #: ../../docs/getting_started/introduction/key_concepts_overview.rst:90 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:95 #: ../../docs/getting_started/step_by_step/instancing.rst:222 #: ../../docs/getting_started/step_by_step/scripting_languages.rst:156 #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:198 #: ../../docs/getting_started/step_by_step/signals.rst:547 #: ../../docs/tutorials/2d/2d_sprite_animation.rst:279 #: ../../docs/tutorials/2d/2d_movement.rst:288 #: ../../docs/tutorials/3d/global_illumination/introduction_to_global_illumination.rst:327 #: ../../docs/tutorials/export/exporting_pcks.rst:138 #: ../../docs/tutorials/scripting/gdscript/static_typing.rst:499 msgid "Summary" msgstr "چکیده" #: ../../docs/getting_started/introduction/key_concepts_overview.rst:97 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:100 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:104 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 #, fuzzy msgid "" "For a comprehensive breakdown of the editor's interface and how to use it, " "see the :ref:`Editor manual `." msgstr "" "برای یک توضیح دقیق از میانای ویراستار و شیوهٔ بکارگیری آن، :ref:`Editor " "manual ` را بخوانید." #: ../../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 "" "هنگامی که گودوت را آغاز می‌کنید، مدیر پروژه نخستین پنجره‌ای‌ست که می‌بینید. " "می‌توانید پروژه‌های موجود را مدیریت و درون‌برد کرده و یا یک پروژهٔ نو در زبانهٔ " "پیش‌فرض **پروژه‌های بومی** بسازید." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:27 #, fuzzy 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 #, fuzzy 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 "" "برای آموختن فوت‌وفن‌های مدیر پروژه :ref:`doc_project_manager` را بخوانید." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:49 msgid "First look at Godot's editor" msgstr "نخستین نگاه به ویراستار گودوت" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:51 #, fuzzy 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 on the right:" msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:61 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:68 #, 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 "" "در مرکز، شما **Toolbar** را در بالا دارید؛ جایی که ابزار‌های جابجایی، مقیاس " "یا قفل اشیاء داخل صحنه را پیدا می‌کنید." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:73 #, fuzzy 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:77 #, fuzzy msgid "Below is the 3D one:" msgstr "و این نوار ابزار سه‌بعدی." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:81 msgid "" "To learn more on workspaces, read :ref:" "`doc_intro_to_the_editor_interface_four_screens`." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:83 #, fuzzy msgid "" "To learn more on the 3D viewport and 3D in general, read :ref:" "`doc_introduction_to_3d`." msgstr "" "برای یادگیری بیشتر دربارهٔ سایه‌زن‌های دیداری، :ref:`doc_visual_shaders` را " "بخوانید." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:85 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:88 #, fuzzy 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:93 #, fuzzy msgid "The **Scene** dock lists the active scene's nodes:" msgstr "لنگرگاه **پرده** گره‌های پردهٔ فعال را فهرست می‌کند." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:97 #, fuzzy msgid "The **Inspector** allows you to edit the properties of a selected node:" msgstr "لنگرگاه **بازرس** می‌گذارد ویژگی‌های یک گرهٔ برگزیده را ویرایش کنید." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:101 msgid "To read more on inspector, see :ref:`doc_editor_inspector_dock`." msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:103 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:105 #, 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 "" "لنگرگاه **پهنهٔ پایینی** در زیر گسترهٔ دید جای دارد و پیشانهٔ اشکال‌زدا، " "ویراستار پویانمایی، درآمیز صوت و... را در خود دارد. از جایی که می‌توانند جای " "بسیاری اشغال کنند، پیش‌فرضانه تا شده‌اند." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:111 #, fuzzy 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:115 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:121 msgid "The four main screens" msgstr "چهار صفحهٔ اصلی" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:123 #, fuzzy msgid "" "There are four main screen buttons centered at the top of the editor: 2D, " "3D, Script, and Asset Library." msgstr "" "در کانون بالای ویراستار دکمهٔ چهار صفحهٔ اصلی هستند: دوبعدی، سه‌بعدی، اسکریپت و " "کتابخانهٔ دارایی." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:126 msgid "" "You'll use the **2D screen** for all types of games. In addition to 2D " "games, the 2D screen is where you'll build your interfaces." msgstr "" "شما برای هرگونه بازی **صفحهٔ دوبعدی** را بکار خواهید برد. افزون بر بازی‌های " "دوبعدی، این صفحه جایی است که میاناهای خود را نیز خواهید ساخت." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:131 msgid "" "In the **3D screen**, you can work with meshes, lights, and design levels " "for 3D games." msgstr "" "در **صفحهٔ سه‌بعدی** می‌توانید با مش‌ها و نورها کار کرده و برای بازی‌های سه‌بعدی " "مرحله طراحی کنید." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:136 msgid "" "Read :ref:`doc_introduction_to_3d` for more detail about the **3D main " "screen**." msgstr "" "برای اطلاعات بیشتر دربارهٔ **صفحهٔ اصلی سه‌بعدی** ، :ref:" "`doc_introduction_to_3d` را بخوانید." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:139 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:144 #, 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:149 msgid "" "You can learn more about the asset library in :ref:`doc_what_is_assetlib`." msgstr "" "می‌توانید دربارهٔ کتابخانهٔ دارایی در :ref:`doc_what_is_assetlib` بیشتر " "بیاموزید." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:153 msgid "Integrated class reference" msgstr "بازبرد کلاس یکپارچه‌شده" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:155 msgid "Godot comes with a built-in class reference." msgstr "گودوت با یک بازبرد کلاس درون‌ساخته همراه است." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:157 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:160 #, fuzzy 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 "" "فشردن :kbd:`F1` (یا :kbd:`Opt + Space` در مکینتاش، یا :kbd:`fn + F1` برای " "لپتاپ‌های دارای کلید :kbd:`fn`) در هر جایی از ویراستار." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:162 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:163 msgid "Clicking on the Help menu and Search Help." msgstr "کلیک کردن روی گزینگان راهنما و جستجوی راهنما." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:164 msgid "" ":kbd:`Ctrl + Click` (:kbd:`Cmd + Click` on macOS) on a class name, function " "name, or built-in variable in the script editor." msgstr "" ":kbd:`Ctrl + Click` (:kbd:`Cmd + Click`در مکینتاش) روی یک نام کلاس، نام " "تابع، یا متغیر درون‌ساخته در ویراستار اسکریپت." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:169 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:174 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:178 msgid "Alternatively," msgstr "" #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:180 #, fuzzy msgid "" "Clicking while pressing the :kbd:`Ctrl` key on a class name, function name, " "or built-in variable in the script editor." msgstr "" ":kbd:`Ctrl + Click` (:kbd:`Cmd + Click`در مکینتاش) روی یک نام کلاس، نام " "تابع، یا متغیر درون‌ساخته در ویراستار اسکریپت." #: ../../docs/getting_started/introduction/first_look_at_the_editor.rst:182 msgid "" "Right-clicking on nodes and choosing **Open Documentation** or choosing " "**Lookup Symbol** for elements in script editor will directly open their " "documentation." msgstr "" #: ../../docs/getting_started/introduction/learning_new_features.rst:8 msgid "Learning new features" msgstr "یادگیری ویژگی‌های نو" #: ../../docs/getting_started/introduction/learning_new_features.rst:10 msgid "" "Godot is a feature-rich game engine. There is a lot to learn about it. This " "page explains how you can use the online manual, built-in code reference, " "and join online communities to learn new features and techniques." msgstr "" "گودوت یک موتور بازی‌سازی پُرویژگی‌ست. چیزهای بسیاری برای آموختن هست. این برگه " "به شما می‌گوید که چگونه می‌توانید با بکارگیری راهنمای آنلاین، بازبرد کد " "درون‌ساخته، و پیوستن به انجمن‌های آنلاین به آموختن ترفندها و ویژگی‌های نو " "بپردازید." #: ../../docs/getting_started/introduction/learning_new_features.rst:15 msgid "Making the most of this manual" msgstr "بکارگیری بهینه از این راهنما" #: ../../docs/getting_started/introduction/learning_new_features.rst:17 msgid "" "What you are reading now is the user manual. It documents each of the " "engine's concepts and available features. When learning a new topic, you can " "start by browsing the corresponding section of this website. The left menu " "allows you to explore broad topics while the search bar will help you find " "more specific pages. If a page exists for a given theme, it will often link " "to more related content." msgstr "" "چیزی که اکنون دارید می‌خوانید راهنمای کاربر است. هر کدام از مفهوم‌ها و " "ویژگی‌های دردسترس گودوت را مستند می‌کند. هنگام آموختن یک جستار، می‌توانید با " "جستجوی بخش مربوط در این وبگاه آن را مرور کنید. گزینگان چپ به شما توانایی " "کاوش جستارهای جامع را می‌دهد و نوار جستجو به شما در یافتن برگه‌های مشخص کمک " "خواهد کرد. اگر برگه‌ای برای یک زمینهٔ داده‌شده وجود دارد، بیشتر زمان‌ها به " "محتوای وابستهٔ بیشتری پیوند می‌خورد." #: ../../docs/getting_started/introduction/learning_new_features.rst:26 msgid "" "The manual has a companion class reference that explains each Godot class's " "available functions and properties when programming. While the manual covers " "general features, concepts, and how to use the editor, the reference is all " "about using Godot's scripting API (Application Programming Interface). You " "can access it both online and offline. We recommend browsing the reference " "offline, from within the Godot editor. To do so, go to Help -> Search Help " "or press :kbd:`F1`." msgstr "" "این راهنما همراه با بازبرد کلاسی است که هر کدام از تابع‌ها و ویژگی‌های در " "دسترس کلاس گودوت را هنگام برنامه‌نویسی توضیح می‌دهد. با اینکه راهنما ویژگی‌های " "جامع، مفهوم‌ها و چگونگی بکارگیری ویراستار را پوشش می‌دهد، بازبرد تنها دربارهٔ‌ " "بکارگیری اِی.پی.آی (میانای برنامه‌نویسی کاربردی) گودوت است. می‌توانید چه آنلاین " "و چه آفلاین به هردوی آنها دسترسی داشته باشید. ما جستجو کردن بازبرد به شیوهٔ " "آفلاین از درون ویراستار گودوت را پیشنهاد می‌دهیم. برای این کار، بروید به " "«راهنما -> جستجوی راهنما» یا :kbd:`F1` را بفشارید." #: ../../docs/getting_started/introduction/learning_new_features.rst:36 msgid "" "To browse it online, head to the manual's :ref:`Class Reference " "` section." msgstr "" "برای آنلاین مرور کردن آن،‌ بروید به بخش :ref:`بازبرد کلاس " "`راهنما." #: ../../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 "" "اگر راهنما یا بازبرد کلاس اطلاعات بسنده‌ای ندارد یا از جا انداخته است، " "خواهشمندیم یک Issue در مخزن گیت‌هاب `مستندات رسمی گودوت `_ برای گزارش دادن آن بگشایید." #: ../../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 "" "می‌توانید :kbd:`Ctrl` (مکینتاش :kbd:`Cmd`) را نگهدارید و موس خود را روی " "نوشته‌هایی مانند نام کلاس، ویژگی، روش، سیگنال یا ثابت برای زیرخطی کردنش " "ببرید، سپس :kbd:`Ctrl + Click` (مکینتاش :kbd:`Cmd + Click`) را برای رفتن به " "آن بفشارید." #: ../../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 "" "اگر کتاب‌ها را ترجیح می‌دهید، به رایاکتاب رایگان `Automate The Boring Stuff " "With Python `_ نوشتهٔ Al Sweigart نگاهی " "بیندازید." #: ../../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 `Questions & Answers `_ site. 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 "" "اگر کدی در کار است، **نمونهٔ کد را به اشتراک بگذارید**. دیگر کاربران بدون " "دیدن کد شما نمی‌توانند در درست کردن مشکل بهتان کمک کنند. کد را یک‌راست بعنوان " "نوشتار به اشتراک بگذارید. برای این کار، می‌توانید یک تکهٔ کوچک کد را روگرفت " "کرده و در جعبهٔ گپ بچسبانید، یا وبگاهی مانند `Pastebin `_ را برای اشتراک‌گذاری پرونده‌های بزرگ بکار گیرید." #: ../../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 "" "همچنین، خواهشمندیم با گوشی خود عکس نگیرید، کیفیت کم و بازتاب صفحه می‌تواند " "فهمیدن تصویر را سخت سازد. سامانهٔ عامل شما باید ابزاری درون‌ساخته برای گرفتن " "اسکرین‌شات با کلید :kbd:`PrtSc` (چاپ صفحه) یا (:kbd:`Cmd + Shift + 3` برای " "گرفتن عکسی تمام‌صفحه در مکینتاش، `اطلاعات بیشتر در اینجا `_) داشته باشد." #: ../../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 "" "جدا از این، می‌توانید برنامه‌هایی مانند `ShareX `_ " "برای ویندوز یا `FlameShot `_ برای لینوکس را بکار " "ببرید." #: ../../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 "" "به اشتراک گذاشتن ویدیویی از بازی در حال اجرای خود نیز **می‌تواند برای " "عیب‌زدایی بازیتان کاربردی باشد**. می‌توانید برنامه‌هایی همچون`OBS Studio " "`_ و `Screen to GIF `_ را برای ضبط صفحهٔ خود بکار ببرید." #: ../../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 "" "می‌توانید برای بارگذاری و اشتراک‌گذاری ویدیوهای خود به شیوهٔ رایگان، خدماتی " "مانند `streamable `_ یا فراهم‌آور ابری دیگری را بکار " "ببرید." #: ../../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 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 "" "هدف این راهنما فراهم کردن بازبردی جامع از ویژگی‌های گودوت است. جدا از زنجیرهٔ " "«آغاز کردن» دوبعدی و سه‌بعدی، آموزش‌های پیاده‌سازی ژانر بازی ویژه‌ای را در خود " "ندارد. اگر به دنبال آموزشی دربارهٔ ساخت یک بازی نقش‌آفرینی، سکوبازی یا دیگر " "دسته‌بندی‌ای استید، خواهشمندیم :ref:`doc_community_tutorials` را ببینید، چرا " "که فهرستی از محتواهای ساخته‌شده به دست انجمن گودوت را در خود دارد." #: ../../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 #, fuzzy 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/02.player_input.rst:16 #: ../../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 "|image0|" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:176 #: ../../docs/getting_started/first_2d_game/index.rst:79 #: ../../docs/getting_started/first_3d_game/index.rst:72 #: ../../docs/getting_started/first_3d_game/02.player_input.rst:168 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:450 #: ../../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:366 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:512 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:616 #: ../../docs/community/asset_library/using_assetlib.rst:187 #: ../../docs/community/asset_library/submitting_to_assetlib.rst:218 msgid "image0" msgstr "image0" #: ../../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 "" "همچنین، به یاد داشته باشید که گودوت دارای گونه‌های متفاوت بسیاری از شیء‌ها که " "به آنها گره گفته می‌شود بوده که هرکدام کاربرد مشخصی دارند. گره‌ها پاره‌ای از " "درخت‌اند و همیشه از سرپرست‌هایشان تا کلاس گره(Node) ارث می‌برند. اگرچه گودوت " "گره‌هایی همچون شکل برخوردگاه را دارد که سرپرستی از گونهٔ بدن فیزیکی آن را به " "کار خواهد گرفت، بیشتر گره‌ها ناوابسته از یکدیگر کار می‌کنند." #: ../../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/02.player_input.rst:45 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:360 #: ../../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:48 msgid "|image1|" msgstr "|image1|" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:177 #: ../../docs/getting_started/first_3d_game/02.player_input.rst:169 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:451 #: ../../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:367 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:513 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:449 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:617 #: ../../docs/community/asset_library/using_assetlib.rst:188 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 "" "Sprite2D یک Node2D، یک CanvasItem و Node است. همهٔ ویژگی‌های سه کلاس سرپرست " "خود را دارد، مانند ترادیسی‌ها یا توانایی کشیدن شکل‌های سفارشی و نماپردازش با " "سایه‌زن‌های سفارشی." #: ../../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/02.player_input.rst:50 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:368 #: ../../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:58 msgid "|image2|" msgstr "|image2|" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:178 #: ../../docs/getting_started/first_3d_game/02.player_input.rst:170 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:452 #: ../../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:368 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:514 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:450 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:618 #: ../../docs/community/asset_library/using_assetlib.rst:189 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. Or you can create one, like the " "`Tiled Map Importer `__." msgstr "" "هدف ما فراهم کردن بسته‌ای کامل برای ساختن بازی و تجربهٔ کاربری‌ای ادامه‌دار است. " "باز می‌توانید با برنامه‌های بیرونی، اگر افزایهٔ درون‌بردی درون گودوت برای آن در " "دسترس باشد، کار کنید. یا می‌توانید یکی بسازید، مانند ` درون‌بردگر تایلدمَپ " "`__." #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:82 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:87 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:91 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 "" "به یاد داشته باشید که با جی.دی.اِکستِنشِن، می‌توانید بدون دوباره کامپایل کردن " "گودوت با به‌کارگیری زبان‌های کامپایل‌شده مانند سی، سی.پلاس.پلاس، راست (Rust)، " "هَکس یا سوییفت، کد با کارایی بالا بنویسید." #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:94 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 "" "به یاد داشته باشید که محیط کاری سه‌بعدی به اندازهٔ محیط کاری دوبعدی ابزار " "ندارد. برای ویرایش ناهمواری زمین‌ها، پویانماییدن شخصیت‌های پیچیده و بیشتر، به " "برنامه‌های بیرونی یا برافزاها (add-on) نیازمندید. گودوت اِی.پی.آی کاملی را " "برای افزودن به کاربردهای ویراستار با به‌کارگیری کد بازی فراهم می‌کند. " "`ویراستار گودوت یک بازی گودوتی است`_ را در زیر ببینید." #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:99 #: ../../docs/getting_started/first_3d_game/02.player_input.rst:75 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:387 #: ../../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:86 msgid "|image4|" msgstr "|image4|" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:179 #: ../../docs/getting_started/first_3d_game/02.player_input.rst:172 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:454 #: ../../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:370 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:516 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:452 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:620 #: ../../docs/community/asset_library/using_assetlib.rst:191 msgid "image4" msgstr "image4" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:101 msgid "" "*A State Machine editor plugin in Godot 2 by kubecz3k. It lets you manage " "states and transitions visually.*" msgstr "" "*افزایه‌ای برای ویرایش دستگاه ایستار در گودوت ۲ برساختهٔ kubecz3k. به شما " "توانایی مدیریت ایستار و گذارها به شیوهٔ دیداری را می‌دهد.*" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:105 msgid "Open source" msgstr "متن‌باز" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:107 msgid "" "Godot offers a fully open source codebase under the **MIT license**. This " "means all the technologies that ship with it have to be Free (as in freedom) " "as well. For the most part, they're developed from the ground up by " "contributors." msgstr "" "گودوت دارای پایگاه کدی کاملا متن‌باز زیر **پروانهٔ ام.آی.تی** است. یعنی هرگونه " "فناوری که با آن رهش می‌شود نیز باید رایگان (مانند آزادی) باشد. بیشتر زمان‌ها،‌ " "این فناوری‌ها به دست مشارکت‌کنندگان از صفر ساخته می‌شوند." #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:112 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:117 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:123 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:127 msgid "Community-driven" msgstr "انجمن‌رانده" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:129 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:134 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:141 msgid "The Godot editor is a Godot game" msgstr "ویراستار گودوت یک بازی گودوتی است" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:143 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:148 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 #: ../../docs/getting_started/first_3d_game/02.player_input.rst:80 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:398 #: ../../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:90 msgid "|image5|" msgstr "|image5|" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:180 #: ../../docs/getting_started/first_3d_game/02.player_input.rst:173 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:455 #: ../../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:371 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:517 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:453 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:621 #: ../../docs/community/asset_library/using_assetlib.rst:192 msgid "image5" msgstr "image5" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:153 msgid "" "*RPG in a Box is a voxel RPG editor made with Godot 2. 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:157 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:164 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:169 msgid "Separate 2D and 3D engines" msgstr "موتور های دو بعدی و سه بعدی جداگانه" #: ../../docs/getting_started/introduction/godot_design_philosophy.rst:171 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:6 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:11 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 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 "می‌تواند به یک node دیگر به عنوان زیرمجموعه اضافه شود." #: ../../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 "" "در واقع، ویرایشگر گودوت یک **ویرایشگر صحنه** است. این ویرایشگر دارای " "ابزارهای فراوانی برای ویرایش صحنه‌های دو بعدی و سه بعدی به خوبی رابط کاربری " "است؛ اما ویرایشگر بر پایه مفهوم کلی ویرایش یک صحنه و nodeهایی که آن را " "ساخته‌اند است." #: ../../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 "می‌تواند به یک node دیگر به عنوان زیرمجموعه اضافه شود." #: ../../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 "" "در یک صحنه خالی (بدون گره ریشه) ، dock صحنه چندین گزینه را نشان می دهد تا به " "سرعت یک گره ریشه را به صحنه اضافه کند. \"2D Scene\" یک گره Node2D می افزاید: " "\"3D Scene\" یک گره فضایی اضافه می کند ، \"User Interface\" یک گره کنترل را " "اضافه می کند و \"Custom Node\" که به شما امکان انتخاب هر گره (پس از آن معادل " "با فشار دادن دکمه \"Add Child Node\") است. شما همچنین می توانید آیکون ستاره " "شکل را برای تغییر صفحه نمایش گره های دلخواه خود فشار دهید." #: ../../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\" برچسب خواهد بود. بیایید آن را به \"Hello " "World\" تغییر دهیم:" #: ../../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 Play Scene button in the top-" "right of the screen or press :kbd:`F6` (:kbd:`Cmd + R` on macOS)." msgstr "" "خوب ، همه چیز آماده برای اجرای صحنه! دکمه PLAY SCENE در نوار بالا را فشار " "دهید (یا ضربه: 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 allows you to set and run the project's main scene. You can " "press :kbd:`F5` (:kbd:`Cmd + B` on macOS) to do so." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:171 msgid "A popup window appears and invites you to select the main scene." msgstr "" #: ../../docs/getting_started/step_by_step/nodes_and_scenes.rst:175 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:180 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:183 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:189 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:6 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:11 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:16 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:23 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:29 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:33 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:39 #, fuzzy msgid "In practice" msgstr "بهترین روش ها:" #: ../../docs/getting_started/step_by_step/instancing.rst:41 #, 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 "" "برای یادگیری چگونگی کار با instistic، بیایید با بارگیری یک نمونه از پروژه " "شروع کنید:: بارگیری: `instading.zip `" #: ../../docs/getting_started/step_by_step/instancing.rst:45 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:48 #, fuzzy msgid "" "In the Project Manager, click the *Import* button to import the project." msgstr "" "این پروژه را در هر مکانی که دوست دارید از حالت فشرده خارج کنید. سپس Godot را " "باز کرده و با استفاده از دکمه 'Import' این پروژه را به مدیر پروژه اضافه کنید:" #: ../../docs/getting_started/step_by_step/instancing.rst:52 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:57 msgid "Finally, click the Import & Edit button." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:61 #: ../../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:64 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:72 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:78 msgid "Double-click the ball scene to instance it." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:82 #, fuzzy msgid "The ball appears in the top-left corner of the viewport." msgstr "" "بعضی نوشته ها مثل \"NO DC\" در گوشه ی بالا چپ پنجره های مدیریت پروژه(project " "manager) و ویرایشگر ظاهر می شوند." #: ../../docs/getting_started/step_by_step/instancing.rst:86 msgid "Click on it and drag it towards the center of the view." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:90 msgid "" "Play the game by pressing :kbd:`F5` (:kbd:`Cmd + B` on macOS). You should " "see it fall." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:92 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:98 msgid "You can repeat this process until you have several in the scene." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:102 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:107 msgid "Editing scenes and instances" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:109 msgid "There is more to instances. With this feature, you can:" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:111 msgid "" "Change the properties of one ball without affecting the others using the " "Inspector." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:113 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:117 msgid "" "Changing a property on an instance always overrides values from the " "corresponding packed scene." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:120 msgid "" "Let's try this. Double-click ``ball.tscn`` in the FileSystem to open it." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:124 msgid "" "Select the Ball node. In the Inspector on the right, click on the " "PhysicsMaterial property to expand it." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:129 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:134 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:138 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:143 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:148 msgid "A grey \"revert\" button appears next to the adjusted property." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:152 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:157 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:161 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:168 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:172 msgid "Scene instances as a design language" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:174 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:178 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:183 msgid "For example, you could break down a shooter game like so:" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:187 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 tell you which scene owns which." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:191 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:195 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:201 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:206 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:212 msgid "" "Later, we could create scenes representing guards and add them to the " "citadel. They would be indirectly added to the overall game world." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:215 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:224 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:227 msgid "The ability to divide your game into reusable components." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:228 msgid "A tool to structure and encapsulate complex systems." msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:229 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 msgid "" "Tight editor integration, with code completion for nodes, signals, and more " "information from the scene it's attached to." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:71 msgid "" "Built-in vector and transform types, making it efficient for heavy use of " "linear algebra, a must for games." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:73 msgid "Supports multiple threads as efficiently as statically typed languages." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:74 msgid "" "No `garbage collection `_, as this feature eventually gets in " "the way when creating games. The engine counts references and manages the " "memory for you in most cases by default, but you can also control memory if " "you need to." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:79 msgid "" "`Gradual typing `_. Variables " "have dynamic types by default, but you also can use type hints for strong " "type checks." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:83 msgid "" "GDScript looks like Python as you structure your code blocks using " "indentations, but it doesn't work the same way in practice. It's inspired by " "multiple languages, including Squirrel, Lua, and Python." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:89 msgid "Why don't we use Python or Lua directly?" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:91 msgid "" "Years ago, Godot used Python, then Lua. Both languages' integration took a " "lot of work and had severe limitations. For example, threading support was a " "big challenge with Python." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:95 msgid "" "Developing a dedicated language doesn't take us more work and we can tailor " "it to game developers' needs. We're now working on performance optimizations " "and features that would've been difficult to offer with third-party " "languages." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:101 msgid ".NET / C#" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:103 msgid "" "As Microsoft's `C# `_ is a favorite amongst game developers, we " "officially support it. C# is a mature and flexible language with tons of " "libraries written for it. We were able to add support for it thanks to a " "generous donation from Microsoft." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:111 msgid "" "C# offers a good tradeoff between performance and ease of use, although you " "should be aware of its garbage collector." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:114 msgid "" "You must use the .NET edition of the Godot editor to script in C#. You can " "download it on the Godot website's `download `_ page." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_languages.rst:118 msgid "" "Since Godot uses .NET 6, 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 #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:31 msgid "" "To learn more about C#, head to the :ref:`C# basics ` page." 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 using GDScript. As we mentioned :ref:`in the introduction `, we assume you have programming foundations. The " "equivalent C# code has been included in another tab for convenience." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:28 msgid "" "To learn more about GDScript, its keywords, and its syntax, head to the :ref:" "`GDScript reference`." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:34 msgid "Project setup" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:36 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:42 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:47 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:52 msgid "Your Scene tab should now only have a Sprite2D node." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:56 msgid "" "A Sprite2D node needs a texture to display. In the Inspector on the right, " "you can see that the Texture property says \"[empty]\". To display the Godot " "icon, click and drag the file ``icon.svg`` from the FileSystem dock onto the " "Texture slot." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:65 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:68 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:73 msgid "Creating a new script" msgstr "ساخت یک اسکریپت نو" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:75 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:80 msgid "" "The Attach Node Script window appears. It allows you to select the script's " "language and file path, among other options." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:83 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:90 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:93 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:110 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:116 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:120 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:125 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:129 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:133 msgid "Hello, world!" msgstr "درود، جهان!" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:135 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:138 msgid "Add the following code to your script:" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:154 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:159 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:164 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:170 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:174 msgid "Turning around" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:176 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:191 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:196 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:200 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:208 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:214 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:219 msgid "At the bottom of the script, define the function:" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:234 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:239 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:244 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:249 msgid "" "In the code editor, you can Ctrl-click (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:253 msgid "Run the scene to see the Godot icon turn in-place." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:257 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:262 msgid "Moving forward" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:264 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:281 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:285 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:292 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:296 msgid "Run the scene to see the Godot head run in circles." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:300 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:304 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:308 #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:131 #: ../../docs/getting_started/step_by_step/signals.rst:367 #, fuzzy msgid "Complete script" msgstr "توضیحات" #: ../../docs/getting_started/step_by_step/scripting_first_script.rst:310 #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:133 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 conditions and the use of ``Input``. A " "condition starts with the ``if`` keyword in GDScript and ends with a colon. " "The condition is the expression between the keyword and the end of the line." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:68 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:72 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:76 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:79 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:82 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:98 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:100 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:104 msgid "Moving when pressing \"up\"" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_player_input.rst:106 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:124 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:127 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:192 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:200 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:205 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:209 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:214 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:217 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:588 #: ../../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 msgid "" "As mentioned in the introduction, signals are Godot's version of the " "observer pattern. You can learn more about it in `Game Programming Patterns " "`__." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:40 msgid "" "We will now use a signal to make our Godot icon from the previous lesson (:" "ref:`doc_scripting_player_input`) move and stop by pressing a button." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:43 #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:50 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:9 msgid "For this project, we will be following the Godot naming conventions." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:45 #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:52 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:11 msgid "" "**GDScript**: Classes (nodes) use PascalCase, variables and functions use " "snake_case, and constants use ALL_CAPS (See :ref:`doc_gdscript_styleguide`)." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:49 #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:56 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:15 msgid "" "**C#**: Classes, export variables and methods use PascalCase, private fields " "use _camelCase, local variables and parameters use camelCase (See :ref:" "`doc_c_sharp_styleguide`). Be careful to type the method names precisely " "when connecting signals." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:55 #: ../../docs/tutorials/animation/introduction.rst:108 #: ../../docs/tutorials/physics/kinematic_character_2d.rst:77 msgid "Scene setup" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:57 msgid "" "To add a button to our game, we will create a new scene which will include " "both a :ref:`Button ` and the ``sprite_2d.tscn`` scene we " "created in the :ref:`doc_scripting_first_script` lesson." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:61 msgid "Create a new scene by going to the menu Scene -> New Scene." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:65 msgid "" "In the Scene dock, click the 2D Scene button. This will add a :ref:`Node2D " "` 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 msgid "Your scene tree and viewport should look like this." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:104 msgid "" "Save your newly created scene as ``node_2d.tscn``, if you haven't already. " "You can then run it with :kbd:`F6` (:kbd:`Cmd + R` on macOS). At the moment, " "the button will be visible, but nothing will happen if you press it." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:110 msgid "Connecting a signal in the editor" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:112 msgid "" "Here, we want to connect the Button's \"pressed\" signal to our Sprite2D, " "and we want to call a new function that will toggle its motion on and off. " "We need to have a script attached to the Sprite2D node, which we do from the " "previous lesson." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:117 msgid "" "You can connect signals in the 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 msgid "Your complete ``sprite_2d.gd`` code should look like the following." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:255 msgid "" "Run the scene now and click the button to see the sprite start and stop." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:258 msgid "Connecting a signal via code" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:260 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:263 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:266 #, 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 "" "در **3D workspace**، شما می‌توانید با meshها، چراغ‌ها، و طراحی مرحله برای " "بازی‌ها سه بعدی کار کنید. :kbd:`F2` (یا :kbd:`Alt + 2` در مک او اس) را برای " "دسترسی به آن فشار دهید." #: ../../docs/getting_started/step_by_step/signals.rst:269 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:275 msgid "" "With the Timer node selected, go to the Inspector and enable the " "**Autostart** property." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:280 msgid "" "Click the script icon next to Sprite2D to jump back to the scripting " "workspace." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:284 msgid "We need to do two operations to connect the nodes via code:" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:286 msgid "Get a reference to the Timer from the Sprite2D." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:287 msgid "Call the ``connect()`` method on the Timer's \"timeout\" signal." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:289 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:293 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:297 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:314 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:320 msgid "" "We can now connect the Timer to the Sprite2D in the ``_ready()`` function." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:337 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:342 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:359 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:363 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:369 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:434 msgid "Custom signals" msgstr "سیگنال‌های سفارشی" #: ../../docs/getting_started/step_by_step/signals.rst:436 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:439 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:465 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:468 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:473 msgid "To emit a signal in your scripts, call ``emit()`` on the signal." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:495 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:521 msgid "" "The signal arguments show up in the editor's node dock, and Godot can use " "them to generate callback functions for you. However, you can still emit any " "number of arguments when you emit signals. So it's up to you to emit the " "correct values." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:526 msgid "" "To emit values along with the signal, add them as extra arguments to the " "``emit()`` function:" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:549 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:553 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:557 msgid "" "For example, an :ref:`Area2D ` representing a coin emits a " "``body_entered`` signal whenever the player's physics body enters its " "collision shape, allowing you to know when the player collected it." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:561 msgid "" "In the next section, :ref:`doc_your_first_2d_game`, you'll create a complete " "2D game and put everything you learned so far into practice." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:6 msgid "Your first 2D game" msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:8 msgid "" "In this step-by-step tutorial series, you will create your first complete 2D " "game with Godot. By the end of the series, you will have a simple yet " "complete game of your own, like the image below." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:14 msgid "" "You will learn how the Godot editor works, how to structure a project, and " "build a 2D game." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:17 msgid "" "This project is an introduction to the Godot engine. It assumes that you " "have some programming experience already. If you're new to programming " "entirely, you should start here: :ref:`doc_scripting`." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:21 msgid "" "The game is called \"Dodge the Creeps!\". Your character must move and avoid " "the enemies for as long as possible." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:24 #: ../../docs/getting_started/first_3d_game/index.rst:19 msgid "You will learn to:" msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:26 msgid "Create a complete 2D game with the Godot editor." msgstr "" #: ../../docs/getting_started/first_2d_game/index.rst:27 #, 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:36 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:`Getting Started `." 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 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 msgid "" "Download `dodge_the_creeps_2d_assets.zip `_. The archive contains the images and " "sounds you'll be using to make the game. Extract the archive and move the " "``art/`` and ``fonts/`` directories to your project's directory." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:29 msgid "" "Ensure that you have the required dependencies to use C# in Godot. You need " "the latest stable .NET SDK, and an editor such as VS Code. See :ref:" "`doc_c_sharp_setup`." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:35 msgid "" "The C++ part of this tutorial wasn't rewritten for the new GDExtension " "system yet." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:37 msgid "Your project folder should look like this." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:41 msgid "" "This game is designed for portrait mode, so we need to adjust the size of " "the game window. Click on *Project -> Project Settings* to open the project " "settings window, in the left column open the *Display -> Window* tab. There, " "set \"Viewport Width\" to ``480`` and \"Viewport Height\" to ``720``." msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:48 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:54 msgid "Organizing the project" msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:56 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:59 msgid "" "In a larger project, it might be useful to create folders to hold the " "various scenes and their scripts, but for this relatively small game, you " "can save your scenes and scripts in the project's root folder, identified by " "``res://``. You can see your project folders in the FileSystem dock in the " "lower left corner:" msgstr "" #: ../../docs/getting_started/first_2d_game/01.project_setup.rst:66 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 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*. Click the \"Other Node\" button and add an :ref:" "`Area2D ` node to the scene." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:23 msgid "" "When you add the ``Area2D`` node, Godot will display the following **warning " "icon** next to it in the scene tree:" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:28 msgid "" "This warning tells us that the ``Area2D`` node requires a shape to detect " "collisions or overlaps. We can **ignore the warning temporarily** because we " "will first set up the player's visuals (using an animated sprite). Once the " "visuals are ready, we will add a collision shape as a child node. This will " "allow us to accurately size and position the shape based on the sprite’s " "appearance." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:34 msgid "" "With ``Area2D`` we can detect objects that overlap or run into the player. " "Change the node's name to ``Player`` by double-clicking on it. Now that " "we've set the scene's root node, we can add additional nodes to give it more " "functionality." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:39 msgid "" "Before we add any children to the ``Player`` node, we want to make sure we " "don't accidentally move or resize them by clicking on them. Select the node " "and click the icon to the right of the lock. Its tooltip says \"Groups the " "selected node with its children. This causes the parent to be selected when " "any child node is clicked in 2D and 3D view.\"" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:47 msgid "" "Save the scene. Click Scene -> Save, or press :kbd:`Ctrl + S` on Windows/" "Linux or :kbd:`Cmd + S` on macOS." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:63 msgid "Sprite animation" msgstr "پویانمایی اسپرایت" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:65 msgid "" "Click on the ``Player`` node and add (:kbd:`Ctrl + A` on Windows/Linux or :" "kbd:`Cmd + A` on macOS) a child node :ref:`AnimatedSprite2D " "`. The ``AnimatedSprite2D`` will handle the " "appearance and animations for our player. Notice that there is a warning " "symbol next to the node. An ``AnimatedSprite2D`` requires a :ref:" "`SpriteFrames ` resource, which is a list of the " "animations it can display. To create one, find the ``Sprite Frames`` " "property under the ``Animation`` tab in the Inspector and click \"[empty]\" -" "> \"New SpriteFrames\":" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:76 msgid "" "Click on the ``SpriteFrames`` you just created to open the \"SpriteFrames\" " "panel:" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:80 msgid "" "On the left is a list of animations. Click the \"default\" one and rename it " "to \"walk\". Then click the \"Add Animation\" button to create a second " "animation named \"up\". Find the player images in the \"FileSystem\" tab - " "they're in the ``art`` folder you unzipped earlier. Drag the two images for " "each animation, named ``playerGrey_walk[1/2]`` and ``playerGrey_walk[2/2]``, " "into the \"Animation Frames\" side of the panel for the corresponding " "animation:" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:89 msgid "" "The player images are a bit too large for the game window, so we need to " "scale them down. Click on the ``AnimatedSprite2D`` node and set the " "``Scale`` property to ``(0.5, 0.5)``. You can find it in the Inspector under " "the ``Node2D`` heading." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:96 msgid "" "Finally, add a :ref:`CollisionShape2D ` as a child " "of ``Player``. This will determine the player's \"hitbox\", or the bounds of " "its collision area. For this character, a ``CapsuleShape2D`` node gives the " "best fit, so next to \"Shape\" in the Inspector, click \"[empty]\" -> \"New " "CapsuleShape2D\". Using the two size handles, resize the shape to cover the " "sprite:" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:105 msgid "When you're finished, your ``Player`` scene should look like this:" msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:109 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:112 msgid "Make sure to save the scene again after these changes." msgstr "" #: ../../docs/getting_started/first_2d_game/02.player_scene.rst:114 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 msgid "" "To do so, we need to add some functionality that we can't get from a built-" "in node, so we'll add a script. Click the ``Player`` node and click the " "\"Attach Script\" button:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:15 msgid "" "In the script settings window, you can leave the default settings alone. " "Just click \"Create\":" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:18 msgid "" "If you're creating a C# script or other languages, select the language from " "the `language` drop down menu before hitting create." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:23 msgid "" "If this is your first time encountering GDScript, please read :ref:" "`doc_scripting` before continuing." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:26 msgid "Start by declaring the member variables this object will need:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:48 msgid "" "Using the ``export`` keyword on the first variable ``speed`` allows us to " "set its value in the Inspector. This can be handy for values that you want " "to be able to adjust just like a node's built-in properties. Click on the " "``Player`` node and you'll see the property now appears in the Inspector in " "a new section with the name of the script. Remember, if you change the value " "here, it will override the value written in the script." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:57 msgid "" "If you're using C#, you need to (re)build the project assemblies whenever " "you want to see new export variables or signals. This build can be manually " "triggered by clicking the **Build** button at the top right of the editor." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:66 msgid "" "Your ``player.gd`` script should already contain a ``_ready()`` and a " "``_process()`` function. If you didn't select the default template shown " "above, create these functions while following the lesson." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:71 msgid "" "The ``_ready()`` function is called when a node enters the scene tree, which " "is a good time to find the size of the game window:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:87 msgid "" "Now we can use the ``_process()`` function to define what the player will " "do. ``_process()`` is called every frame, so we'll use it to update elements " "of our game, which we expect will change often. For the player, we need to " "do the following:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:92 msgid "Check for input." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:93 msgid "Move in the given direction." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:94 msgid "Play the appropriate animation." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:96 msgid "" "First, we need to check for input - is the player pressing a key? For this " "game, we have 4 direction inputs to check. Input actions are defined in the " "Project Settings under \"Input Map\". Here, you can define custom events and " "assign different keys, mouse events, or other inputs to them. For this game, " "we will map the arrow keys to the four directions." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:102 msgid "" "Click on *Project -> Project Settings* to open the project settings window " "and click on the *Input Map* tab at the top. Type \"move_right\" in the top " "bar and click the \"Add\" button to add the ``move_right`` action." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:108 msgid "" "We need to assign a key to this action. Click the \"+\" icon on the right, " "to open the event manager window." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:113 msgid "" "The \"Listening for Input...\" field should automatically be selected. Press " "the \"right\" key on your keyboard, and the menu should look like this now." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:118 msgid "" "Select the \"ok\" button. The \"right\" key is now associated with the " "``move_right`` action." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:120 msgid "Repeat these steps to add three more mappings:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:122 msgid "``move_left`` mapped to the left arrow key." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:123 msgid "``move_up`` mapped to the up arrow key." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:124 msgid "And ``move_down`` mapped to the down arrow key." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:126 msgid "Your input map tab should look like this:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:130 msgid "Click the \"Close\" button to close the project settings." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:134 msgid "" "We only mapped one key to each input action, but you can map multiple keys, " "joystick buttons, or mouse buttons to the same input action." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:137 msgid "" "You can detect whether a key is pressed using ``Input.is_action_pressed()``, " "which returns ``true`` if it's pressed or ``false`` if it isn't." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:199 msgid "" "We start by setting the ``velocity`` to ``(0, 0)`` - by default, the player " "should not be moving. Then we check each input and add/subtract from the " "``velocity`` to obtain a total direction. For example, if you hold ``right`` " "and ``down`` at the same time, the resulting ``velocity`` vector will be " "``(1, 1)``. In this case, since we're adding a horizontal and a vertical " "movement, the player would move *faster* diagonally than if it just moved " "horizontally." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:206 msgid "" "We can prevent that if we *normalize* the velocity, which means we set its " "*length* to ``1``, then multiply by the desired speed. This means no more " "fast diagonal movement." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:210 msgid "" "If you've never used vector math before, or need a refresher, you can see an " "explanation of vector usage in Godot at :ref:`doc_vector_math`. It's good to " "know but won't be necessary for the rest of this tutorial." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:214 msgid "" "We also check whether the player is moving so we can call ``play()`` or " "``stop()`` on the AnimatedSprite2D." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:217 msgid "" "``$`` is shorthand for ``get_node()``. So in the code above, " "``$AnimatedSprite2D.play()`` is the same as ``get_node(\"AnimatedSprite2D\")." "play()``." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:221 msgid "" "In GDScript, ``$`` returns the node at the relative path from the current " "node, or returns ``null`` if the node is not found. Since AnimatedSprite2D " "is a child of the current node, we can use ``$AnimatedSprite2D``." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:226 msgid "" "Now that we have a movement direction, we can update the player's position. " "We can also use ``clamp()`` to prevent it from leaving the screen. " "*Clamping* a value means restricting it to a given range. Add the following " "to the bottom of the ``_process`` function (make sure it's not indented " "under the `else`):" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:245 msgid "" "The `delta` parameter in the `_process()` function refers to the *frame " "length* - the amount of time that the previous frame took to complete. Using " "this value ensures that your movement will remain consistent even if the " "frame rate changes." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:250 msgid "" "Click \"Run Current Scene\" (:kbd:`F6`, :kbd:`Cmd + R` on macOS) and confirm " "you can move the player around the screen in all directions." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:253 msgid "If you get an error in the \"Debugger\" panel that says" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:255 msgid "" "``Attempt to call function 'play' in base 'null instance' on a null " "instance``" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:258 msgid "" "this likely means you spelled the name of the AnimatedSprite2D node wrong. " "Node names are case-sensitive and ``$NodeName`` must match the name you see " "in the scene tree." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:263 msgid "Choosing animations" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:265 msgid "" "Now that the player can move, we need to change which animation the " "AnimatedSprite2D is playing based on its direction. We have the \"walk\" " "animation, which shows the player walking to the right. This animation " "should be flipped horizontally using the ``flip_h`` property for left " "movement. We also have the \"up\" animation, which should be flipped " "vertically with ``flip_v`` for downward movement. Let's place this code at " "the end of the ``_process()`` function:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:299 msgid "" "The boolean assignments in the code above are a common shorthand for " "programmers. Since we're doing a comparison test (boolean) and also " "*assigning* a boolean value, we can do both at the same time. Consider this " "code versus the one-line boolean assignment above:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:323 msgid "" "Play the scene again and check that the animations are correct in each of " "the directions." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:326 msgid "" "A common mistake here is to type the names of the animations wrong. The " "animation names in the SpriteFrames panel must match what you type in the " "code. If you named the animation ``\"Walk\"``, you must also use a capital " "\"W\" in the code." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:331 msgid "" "When you're sure the movement is working correctly, add this line to " "``_ready()``, so the player will be hidden when the game starts:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:344 msgid "Preparing for collisions" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:346 msgid "" "We want ``Player`` to detect when it's hit by an enemy, but we haven't made " "any enemies yet! That's OK, because we're going to use Godot's *signal* " "functionality to make it work." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:350 msgid "" "Add the following at the top of the script. If you're using GDScript, add it " "after ``extends Area2D``. If you're using C#, add it after ``public partial " "class Player : Area2D``:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:365 msgid "" "This defines a custom signal called \"hit\" that we will have our player " "emit (send out) when it collides with an enemy. We will use ``Area2D`` to " "detect the collision. Select the ``Player`` node and click the \"Node\" tab " "next to the Inspector tab to see the list of signals the player can emit:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:372 msgid "" "Notice our custom \"hit\" signal is there as well! Since our enemies are " "going to be ``RigidBody2D`` nodes, we want the ``body_entered(body: " "Node2D)`` signal. This signal will be emitted when a body contacts the " "player. Click \"Connect..\" and the \"Connect a Signal\" window appears." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:377 msgid "" "Godot will create a function with that exact name directly in script for " "you. You don't need to change the default settings right now." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:384 msgid "" "If you're using an external text editor (for example, Visual Studio Code), a " "bug currently prevents Godot from doing so. You'll be sent to your external " "editor, but the new function won't be there." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:388 msgid "" "In this case, you'll need to write the function yourself into the Player's " "script file." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:393 msgid "" "Note the green icon indicating that a signal is connected to this function; " "this does not mean the function exists, only that the signal will attempt to " "connect to a function with that name, so double-check that the spelling of " "the function matches exactly!" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:397 msgid "Next, add this code to the function:" msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:419 msgid "" "Each time an enemy hits the player, the signal is going to be emitted. We " "need to disable the player's collision so that we don't trigger the ``hit`` " "signal more than once." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:423 msgid "" "Disabling the area's collision shape can cause an error if it happens in the " "middle of the engine's collision processing. Using ``set_deferred()`` tells " "Godot to wait to disable the shape until it's safe to do so." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:428 msgid "" "The last piece is to add a function we can call to reset the player when " "starting a new game." msgstr "" #: ../../docs/getting_started/first_2d_game/03.coding_the_player.rst:448 msgid "With the player working, we'll work on the enemy in the next lesson." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:4 #, fuzzy msgid "Creating the enemy" msgstr "تولید محتوا" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:6 msgid "" "Now it's time to make the enemies our player will have to dodge. Their " "behavior will not be very complex: mobs will spawn randomly at the edges of " "the screen, choose a random direction, and move in a straight line." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:10 msgid "" "We'll create a ``Mob`` scene, which we can then *instance* to create any " "number of independent mobs in the game." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:14 msgid "Node setup" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:16 msgid "Click Scene -> New Scene from the top menu and add the following nodes:" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:18 msgid ":ref:`RigidBody2D ` (named ``Mob``)" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:20 msgid ":ref:`AnimatedSprite2D `" msgstr ":ref:`AnimatedSprite2D `" #: ../../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 msgid ":ref:`VisibleOnScreenNotifier2D `" msgstr ":ref:`VisibleOnScreenNotifier2D `" #: ../../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 msgid "" "In addition, under the :ref:`CollisionObject2D ` " "section just beneath the **RigidBody2D** section, expand the **Collision** " "group and uncheck the ``1`` inside the ``Mask`` property. This will ensure " "the mobs do not collide with each other." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:40 msgid "" "Set up the :ref:`AnimatedSprite2D ` like you did for " "the player. This time, we have 3 animations: ``fly``, ``swim``, and " "``walk``. There are two images for each animation in the art folder." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst: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 msgid "" "Like the player images, these mob images need to be scaled down. Set the " "``AnimatedSprite2D``'s ``Scale`` property to ``(0.75, 0.75)``." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:56 msgid "" "As in the ``Player`` scene, add a ``CapsuleShape2D`` for the collision. To " "align the shape with the image, you'll need to set the ``Rotation`` property " "to ``90`` (under \"Transform\" in the Inspector)." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:60 msgid "Save the scene." msgstr "صحنه را ذخیره کنید." #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:63 #, fuzzy msgid "Enemy script" msgstr "توضیحات" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:65 msgid "Add a script to the ``Mob`` like this:" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:81 msgid "" "Now let's look at the rest of the script. In ``_ready()`` we play the " "animation and randomly choose one of the three animation types:" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:100 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:104 msgid "" "We then need to pick a random number between ``0`` and ``2`` to select one " "of these names from the list (array indices start at ``0``). ``randi() % n`` " "selects a random integer between ``0`` and ``n-1``." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:108 msgid "" "The last piece is to make the mobs delete themselves when they leave the " "screen. Connect the ``screen_exited()`` signal of the " "``VisibleOnScreenNotifier2D`` node to the ``Mob`` and add this code:" msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:126 msgid "This completes the `Mob` scene." msgstr "" #: ../../docs/getting_started/first_2d_game/04.creating_the_enemy.rst:128 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 msgid "" "Create a new scene and add a :ref:`Node ` named ``Main``. (The " "reason we are using Node instead of Node2D is because this node will be a " "container for handling game logic. It does not require 2D functionality " "itself.)" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:12 msgid "" "Click the **Instance** button (represented by a chain link icon) and select " "your saved ``player.tscn``." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:17 msgid "" "Now, add the following nodes as children of ``Main``, and name them as shown:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:19 msgid "" ":ref:`Timer ` (named ``MobTimer``) - to control how often mobs " "spawn" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:21 msgid "" ":ref:`Timer ` (named ``ScoreTimer``) - to increment the score " "every second" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:23 msgid "" ":ref:`Timer ` (named ``StartTimer``) - to give a delay before " "starting" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:25 msgid "" ":ref:`Marker2D ` (named ``StartPosition``) - to indicate the " "player's start position" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:28 msgid "" "Set the ``Wait Time`` property of each of the ``Timer`` nodes as follows " "(values are in seconds):" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:30 msgid "``MobTimer``: ``0.5``" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:31 msgid "``ScoreTimer``: ``1``" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:32 msgid "``StartTimer``: ``2``" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:34 msgid "" "In addition, set the ``One Shot`` property of ``StartTimer`` to \"On\" and " "set ``Position`` of the ``StartPosition`` node to ``(240, 450)``." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:38 msgid "Spawning mobs" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:40 msgid "" "The Main node will be spawning new mobs, and we want them to appear at a " "random location on the edge of the screen. Add a :ref:`Path2D " "` node named ``MobPath`` as a child of ``Main``. When you " "select ``Path2D``, you will see some new buttons at the top of the editor:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:47 msgid "" "Select the middle one (\"Add Point\") and draw the path by clicking to add " "the points at the corners shown. To have the points snap to the grid, make " "sure \"Use Grid Snap\" and \"Use Smart Snap\" are both selected. These " "options can be found to the left of the \"Lock\" button, appearing as a " "magnet next to some dots and intersecting lines, respectively." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:55 msgid "" "Draw the path in *clockwise* order, or your mobs will spawn pointing " "*outwards* instead of *inwards*!" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:60 msgid "" "After placing point ``4`` in the image, click the \"Close Curve\" button and " "your curve will be complete." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:63 msgid "" "Now that the path is defined, add a :ref:`PathFollow2D ` " "node as a child of ``MobPath`` and name it ``MobSpawnLocation``. This node " "will automatically rotate and follow the path as it moves, so we can use it " "to select a random position and direction along the path." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:68 msgid "Your scene should look like this:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:73 msgid "Main script" msgstr "اسکریپت اصلی" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:75 msgid "" "Add a script to ``Main``. At the top of the script, we use ``@export var " "mob_scene: PackedScene`` to allow us to choose the Mob scene we want to " "instance." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:101 msgid "" "Click the ``Main`` node and you will see the ``Mob Scene`` property in the " "Inspector under \"Main.gd\"." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:104 msgid "You can assign this property's value in two ways:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:106 msgid "" "Drag ``mob.tscn`` from the \"FileSystem\" dock and drop it in the **Mob " "Scene** property." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:108 msgid "" "Click the down arrow next to \"[empty]\" and choose \"Load\". Select ``mob." "tscn``." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:110 msgid "" "Next, select the instance of the ``Player`` scene under ``Main`` node in the " "Scene dock, and access the Node dock on the sidebar. Make sure to have the " "Signals tab selected in the Node dock." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:114 msgid "" "You should see a list of the signals for the ``Player`` node. Find and " "double-click the ``hit`` signal in the list (or right-click it and select " "\"Connect...\"). This will open the signal connection dialog. We want to " "make a new function named ``game_over``, which will handle what needs to " "happen when a game ends. Type \"game_over\" in the \"Receiver Method\" box " "at the bottom of the signal connection dialog and click \"Connect\". You are " "aiming to have the ``hit`` signal emitted from ``Player`` and handled in the " "``Main`` script. Add the following code to the new function, as well as a " "``new_game`` function that will set everything up for a new game:" msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:155 msgid "" "Now connect the ``timeout()`` signal of each of the Timer nodes " "(``StartTimer``, ``ScoreTimer``, and ``MobTimer``) to the main script. " "``StartTimer`` will start the other two timers. ``ScoreTimer`` will " "increment the score by 1." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:184 msgid "" "In ``_on_mob_timer_timeout()``, we will create a mob instance, pick a random " "starting location along the ``Path2D``, and set the mob in motion. The " "``PathFollow2D`` node will automatically rotate as it follows the path, so " "we will use that to select the mob's direction as well as its position. When " "we spawn a mob, we'll pick a random value between ``150.0`` and ``250.0`` " "for how fast each mob will move (it would be boring if they were all moving " "at the same speed)." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:192 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:252 msgid "" "Why ``PI``? In functions requiring angles, Godot uses *radians*, not " "degrees. Pi represents a half turn in radians, about ``3.1415`` (there is " "also ``TAU`` which is equal to ``2 * PI``). If you're more comfortable " "working with degrees, you'll need to use the ``deg_to_rad()`` and " "``rad_to_deg()`` functions to convert between the two." msgstr "" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:260 #, fuzzy msgid "Testing the scene" msgstr "تولید محتوا" #: ../../docs/getting_started/first_2d_game/05.the_main_game_scene.rst:262 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:278 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:282 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:285 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:288 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:291 msgid "" "What's our game lacking? Some user interface. In the next lesson, we'll add " "a title screen and display the player's score." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:4 msgid "Heads up display" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:6 msgid "" "The final piece our game needs is a User Interface (UI) to display things " "like score, a \"game over\" message, and a restart button." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:9 msgid "" "Create a new scene, click the \"Other Node\" button and add a :ref:" "`CanvasLayer ` node named ``HUD``. \"HUD\" stands for " "\"heads-up display\", an informational display that appears as an overlay on " "top of the game view." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:13 msgid "" "The :ref:`CanvasLayer ` node lets us draw our UI elements " "on a layer above the rest of the game, so that the information it displays " "isn't covered up by any game elements like the player or mobs." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:17 msgid "The HUD needs to display the following information:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:19 msgid "Score, changed by ``ScoreTimer``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:20 msgid "A message, such as \"Game Over\" or \"Get Ready!\"" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:21 msgid "A \"Start\" button to begin the game." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:23 msgid "" "The basic node for UI elements is :ref:`Control `. To create " "our UI, we'll use two types of :ref:`Control ` nodes: :ref:" "`Label ` and :ref:`Button `." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:27 msgid "Create the following as children of the ``HUD`` node:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:29 msgid ":ref:`Label ` named ``ScoreLabel``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:30 msgid ":ref:`Label ` named ``Message``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:31 msgid ":ref:`Button ` named ``StartButton``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:32 msgid ":ref:`Timer ` named ``MessageTimer``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:34 msgid "" "Click on the ``ScoreLabel`` and type a number into the ``Text`` field in the " "Inspector. The default font for ``Control`` nodes is small and doesn't scale " "well. There is a font file included in the game assets called \"Xolonium-" "Regular.ttf\". To use this font, do the following:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:39 msgid "" "Under \"Theme Overrides > Fonts\", choose \"Load\" and select the \"Xolonium-" "Regular.ttf\" file." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:43 msgid "" "The font size is still too small, increase it to ``64`` under \"Theme " "Overrides > Font Sizes\". Once you've done this with the ``ScoreLabel``, " "repeat the changes for the ``Message`` and ``StartButton`` nodes." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:48 msgid "" "**Anchors:** ``Control`` nodes have a position and size, but they also have " "anchors. Anchors define the origin - the reference point for the edges of " "the node." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:52 msgid "" "Arrange the nodes as shown below. You can drag the nodes to place them " "manually, or for more precise placement, use \"Anchor Presets\"." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:59 msgid "ScoreLabel" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:61 msgid "Add the text ``0``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:62 #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:69 msgid "" "Set the \"Horizontal Alignment\" and \"Vertical Alignment\" to ``Center``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:63 msgid "Choose the \"Anchor Preset\" ``Center Top``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:66 msgid "Message" msgstr "پیام" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:68 msgid "Add the text ``Dodge the Creeps!``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:70 msgid "" "Set the \"Autowrap Mode\" to ``Word``, otherwise the label will stay on one " "line." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:71 msgid "" "Under \"Control - Layout/Transform\" set \"Size X\" to ``480`` to use the " "entire width of the screen." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:72 msgid "Choose the \"Anchor Preset\" ``Center``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:75 msgid "StartButton" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:77 msgid "Add the text ``Start``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:78 msgid "" "Under \"Control - Layout/Transform\", set \"Size X\" to ``200`` and \"Size " "Y\" to ``100`` to add a little bit more padding between the border and text." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:80 msgid "Choose the \"Anchor Preset\" ``Center Bottom``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:81 msgid "Under \"Control - Layout/Transform\", set \"Position Y\" to ``580``." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:83 msgid "" "On the ``MessageTimer``, set the ``Wait Time`` to ``2`` and set the ``One " "Shot`` property to \"On\"." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:86 msgid "Now add this script to ``HUD``:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:108 msgid "" "We now want to display a message temporarily, such as \"Get Ready\", so we " "add the following code" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:130 msgid "" "We also need to process what happens when the player loses. The code below " "will show \"Game Over\" for 2 seconds, then return to the title screen and, " "after a brief pause, show the \"Start\" button." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:163 msgid "" "This function is called when the player loses. It 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:167 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:172 msgid "Add the code below to ``HUD`` to update the score" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:187 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:216 msgid "Connecting HUD to Main" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:218 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:224 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:227 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:233 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:247 msgid "In ``game_over()`` we need to call the corresponding ``HUD`` function:" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:258 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:272 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:276 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:279 msgid "Removing old creeps" msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:281 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:286 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:293 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:297 msgid "Now all mobs will be in the \"mobs\" group." msgstr "" #: ../../docs/getting_started/first_2d_game/06.heads_up_display.rst:301 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:314 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:317 msgid "" "The game's mostly done at this point. In the next and last part, we'll " "polish it a bit by adding a background, looping music, and some keyboard " "shortcuts." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:4 msgid "Finishing up" msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:6 msgid "" "We have now completed all the functionality for our game. Below are some " "remaining steps to add a bit more \"juice\" to improve the game experience." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:9 msgid "Feel free to expand the gameplay with your own ideas." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:12 #: ../../docs/tutorials/3d/environment_and_post_processing.rst:133 msgid "Background" msgstr "پس زمینه" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:14 msgid "" "The default gray background is not very appealing, so let's change its " "color. One way to do this is to use a :ref:`ColorRect ` " "node. Make it the first node under ``Main`` so that it will be drawn behind " "the other nodes. ``ColorRect`` only has one property: ``Color``. Choose a " "color you like and select \"Layout\" -> \"Anchors Preset\" -> \"Full Rect\" " "either in the toolbar at the top of the viewport or in the inspector so that " "it covers the screen." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:20 msgid "" "You could also add a background image, if you have one, by using a :ref:" "`TextureRect ` node instead." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:24 msgid "Sound effects" msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:26 msgid "" "Sound and music can be the single most effective way to add appeal to the " "game experience. In your game's **art** folder, you have two sound files: " "\"House In a Forest Loop.ogg\" for background music, and \"gameover.wav\" " "for when the player loses." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:31 msgid "" "Add two :ref:`AudioStreamPlayer ` nodes as children " "of ``Main``. Name one of them ``Music`` and the other ``DeathSound``. On " "each one, click on the ``Stream`` property, select \"Load\", and choose the " "corresponding audio file." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:36 msgid "" "All audio is automatically imported with the ``Loop`` setting disabled. If " "you want the music to loop seamlessly, click on the Stream file arrow, " "select ``Make Unique``, then click on the Stream file and check the ``Loop`` " "box." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:42 msgid "" "To play the music, add ``$Music.play()`` in the ``new_game()`` function and " "``$Music.stop()`` in the ``game_over()`` function." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:45 msgid "Finally, add ``$DeathSound.play()`` in the ``game_over()`` function." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:76 msgid "Keyboard shortcut" msgstr "میانبر تخته‌کلید" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:78 msgid "" "Since the game is played with keyboard controls, it would be convenient if " "we could also start the game by pressing a key on the keyboard. We can do " "this with the \"Shortcut\" property of the ``Button`` node." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:82 msgid "" "In a previous lesson, we created four input actions to move the character. " "We will create a similar input action to map to the start button." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:85 msgid "" "Select \"Project\" -> \"Project Settings\" and then click on the \"Input " "Map\" tab. In the same way you created the movement input actions, create a " "new input action called ``start_game`` and add a key mapping for the :kbd:" "`Enter` key." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:92 msgid "" "Now would be a good time to add controller support if you have one " "available. Attach or pair your controller and then under each input action " "that you wish to add controller support for, click on the \"+\" button and " "press the corresponding button, d-pad, or stick direction that you want to " "map to the respective input action." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:97 msgid "" "In the ``HUD`` scene, select the ``StartButton`` and find its **Shortcut** " "property in the Inspector. Create a new :ref:`Shortcut ` " "resource by clicking within the box, open the **Events** array and add a new " "array element to it by clicking on **Array[InputEvent] (size 0)**." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:104 msgid "" "Create a new :ref:`InputEventAction ` and name it " "``start_game``." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:108 msgid "" "Now when the start button appears, you can either click it or press :kbd:" "`Enter` to start the game." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:111 msgid "And with that, you completed your first 2D game in Godot." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:115 msgid "" "You got to make a player-controlled character, enemies that spawn randomly " "around the game board, count the score, implement a game over and replay, " "user interface, sounds, and more. Congratulations!" msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:119 msgid "" "There's still much to learn, but you can take a moment to appreciate what " "you achieved." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:122 msgid "" "And when you're ready, you can move on to :ref:`doc_your_first_3d_game` to " "learn to create a complete 3D game from scratch, in Godot." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:126 msgid "Sharing the finished game with others" msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:128 msgid "" "If you want people to try out your game without having to install Godot, " "you'll need to export the project for each operating system you want the " "game to be playable on. See :ref:`doc_exporting_projects` for instructions." msgstr "" #: ../../docs/getting_started/first_2d_game/07.finishing-up.rst:132 msgid "" "After exporting the project, compress the exported executable and PCK file " "(not the raw project files) to a ZIP file, then upload this ZIP file to a " "file sharing website." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:6 msgid "Your first 3D game" msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:8 msgid "" "In this step-by-step tutorial series, you will create your first complete 3D " "game with Godot. By the end of the series, you will have a simple yet " "finished project of your own like the animated gif below." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:14 msgid "" "The game we'll code here is similar to :ref:`doc_your_first_2d_game`, with a " "twist: you can now jump and your goal is to squash the creeps. This way, you " "will both **recognize patterns** you learned in the previous tutorial and " "**build upon them** with new code and features." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:21 msgid "Work with 3D coordinates with a jumping mechanic." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:22 msgid "" "Use kinematic bodies to move 3D characters and detect when and how they " "collide." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:24 msgid "" "Use physics layers and a group to detect interactions with specific entities." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:25 msgid "" "Code basic procedural gameplay by instancing monsters at regular time " "intervals." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:27 msgid "Design a movement animation and change its speed at run-time." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:28 msgid "Draw a user interface on a 3D game." msgstr "" #: ../../docs/getting_started/first_3d_game/index.rst:32 msgid "" "This tutorial is for beginners who followed the complete getting started " "series. We'll start slow with detailed instructions and shorten them as we " "do similar steps. If you're an experienced programmer, you can browse the " "complete demo's source code here: `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 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 msgid "" "We've prepared a Godot project with the 3D models and sounds we'll use for " "this tutorial, linked in the index page. If you haven't done so yet, you can " "download the archive here: `Squash the Creeps assets `__." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:14 #, fuzzy msgid "" "Once you downloaded it, extract the .zip archive on your computer. Open the " "Godot Project Manager and click the *Import* button." msgstr "" "این پروژه را در هر مکانی که دوست دارید از حالت فشرده خارج کنید. سپس Godot را " "باز کرده و با استفاده از دکمه 'Import' این پروژه را به مدیر پروژه اضافه کنید:" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:19 msgid "" "In the import popup, enter the full path to the freshly created directory " "``squash_the_creeps_start/``. 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:26 msgid "Click *Import & Edit* to open the project in the editor." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:30 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:35 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:40 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:44 msgid "Setting up the playable area" msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:46 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:53 msgid "" "Save the scene as ``main.tscn`` by pressing :kbd:`Ctrl + S` (:kbd:`Cmd + S` " "on macOS)." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:55 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:62 msgid "Your scene tree should look like this" msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:66 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:71 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:76 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:79 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:88 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:93 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:98 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:103 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:106 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:113 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:119 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:124 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:131 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:135 msgid "Ultimately, ``Ground``'s transform.position.y should be -1" msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:139 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:144 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:149 msgid "" "In the *Inspector*, turn on *Shadow -> Enabled* by clicking the checkbox." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:153 msgid "At this point, your project should look like this." msgstr "" #: ../../docs/getting_started/first_3d_game/01.game_setup.rst:157 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:13 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:18 msgid "" "Create a :ref:`CharacterBody3D ` node as the root" msgstr "ساخت یک گرهٔ :ref:`CharacterBody3D ` بعنوان ریشه" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:22 msgid "" "Name 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:31 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:34 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:37 msgid "" "Add a :ref:`Node3D ` node as a child of ``Player`` and name it " "``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:65 msgid "The sphere's wireframe appears below the character." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:67 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:382 #: ../../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:81 msgid "|image3|" msgstr "|image3|" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:171 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:453 #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:351 #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:369 #: ../../docs/getting_started/first_3d_game/07.killing_player.rst:515 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:451 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:619 #: ../../docs/community/asset_library/using_assetlib.rst:190 msgid "image3" msgstr "image3" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:69 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:73 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:77 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:82 msgid "Save the scene as ``player.tscn``" msgstr "ذخیرهٔ پرده بعنوان ``player.tscn``" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:84 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:90 #, fuzzy msgid "Creating input actions" msgstr "تولید محتوا" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:92 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:97 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:100 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:403 #: ../../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:99 msgid "|image6|" msgstr "|image6|" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:174 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:456 #: ../../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:372 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:454 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:622 #: ../../docs/community/asset_library/using_assetlib.rst:193 msgid "image6" msgstr "image6" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:102 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:106 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:408 #: ../../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:125 msgid "|image7|" msgstr "|image7|" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:175 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:457 #: ../../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:373 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:455 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:623 #: ../../docs/community/asset_library/using_assetlib.rst:194 msgid "image7" msgstr "image7" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:108 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:113 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:116 msgid "To add an action, write its name in the bar at the top and press Enter." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:118 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:414 #: ../../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:133 msgid "|image8|" msgstr "|image8|" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:176 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:458 #: ../../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:374 #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:456 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:624 #: ../../docs/community/asset_library/using_assetlib.rst:195 msgid "image8" msgstr "image8" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:120 #, fuzzy msgid "Create the following five actions:" msgstr "تولید محتوا" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:122 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:419 #: ../../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:154 msgid "|image9|" msgstr "|image9|" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:177 #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:459 #: ../../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:625 #: ../../docs/community/asset_library/using_assetlib.rst:196 msgid "image9" msgstr "image9" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:124 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:129 msgid "Bind also the :kbd:`A` key, onto the action ``move_left``." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:131 #: ../../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:173 msgid "|image12|" msgstr "|image12|" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:179 #: ../../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:628 #: ../../docs/community/asset_library/using_assetlib.rst:199 msgid "image12" msgstr "image12" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:133 msgid "" "Let's now add support for a gamepad's left joystick. Click the \"+\" button " "again but this time, select *Manual Selection -> Joypad Axes*." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:138 msgid "Select the negative X axis of the left joystick." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:142 msgid "Leave the other values as default and press *OK*" msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:146 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:148 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 #: ../../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 msgid "|image15|" msgstr "|image15|" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:180 #: ../../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:631 msgid "image15" msgstr "image15" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:154 msgid "" "The final action to set up is the ``jump`` action. Bind the Space key and " "the gamepad's A button." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:157 #: ../../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 msgid "|image16|" msgstr "|image16|" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:181 #: ../../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:632 msgid "image16" msgstr "image16" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:159 msgid "Your jump input action should look like this." msgstr "" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:161 #: ../../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 msgid "|image18|" msgstr "|image18|" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:183 #: ../../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:634 msgid "image18" msgstr "image18" #: ../../docs/getting_started/first_3d_game/02.player_input.rst:163 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:166 msgid "In the next part, we'll code and test the player's movement." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:4 msgid "Moving the player with code" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:6 msgid "" "It's time to code! We're going to use the input actions we created in the " "last part to move the character." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:20 msgid "" "Right-click the ``Player`` node and select *Attach Script* to add a new " "script to it. In the popup, set the *Template* to *Empty* before pressing " "the *Create* button. We set it to *Empty* because we want to write our own " "code for player movement." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:27 msgid "" "Let's start with the class's properties. We're going to define a movement " "speed, a fall acceleration representing gravity, and a velocity we'll use to " "move the character." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:62 msgid "" "These are common properties for a moving body. The ``target_velocity`` is a :" "ref:`3D vector ` combining a speed with a direction. Here, we " "define it as a property because we want to update and reuse its value across " "frames." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:68 msgid "" "The values are quite different from 2D code because distances are in meters. " "While in 2D, a thousand units (pixels) may only correspond to half of your " "screen's width, in 3D, it's a kilometer." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:72 msgid "" "Let's code the movement. We start by calculating the input direction vector " "using the global ``Input`` object, in ``_physics_process()``." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:122 msgid "" "Here, we're going to make all calculations using the ``_physics_process()`` " "virtual function. Like ``_process()``, it allows you to update the node " "every frame, but it's designed specifically for physics-related code like " "moving a kinematic or rigid body." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:129 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:132 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:137 msgid "" "These four conditions give us eight possibilities and eight possible " "directions." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:139 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:169 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:172 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:175 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:224 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:227 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:231 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:235 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:247 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:249 msgid "Here is the complete ``player.gd`` code for reference." msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:351 msgid "Testing our player's movement" msgstr "" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:353 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:357 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:362 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:365 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:370 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:374 #, fuzzy msgid "Adding a camera" msgstr "تولید محتوا" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:376 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:384 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:389 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:393 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:396 #: ../../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:165 msgid "|image11|" msgstr "|image11|" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:461 #: ../../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:627 #: ../../docs/community/asset_library/using_assetlib.rst:198 msgid "image11" msgstr "image11" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:400 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:405 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:410 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:416 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:421 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:426 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:432 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:438 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:443 #: ../../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:160 msgid "|image10|" msgstr "|image10|" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:460 #: ../../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:626 #: ../../docs/community/asset_library/using_assetlib.rst:197 msgid "image10" msgstr "image10" #: ../../docs/getting_started/first_3d_game/03.player_movement_code.rst:445 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:447 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 msgid "Add a :ref:`CollisionShape3D `." msgstr "افزودن یک :ref:`CollisionShape3D ` ." #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:34 msgid "In the *Inspector*, assign a *BoxShape3D* to the *Shape* property." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:38 msgid "" "We should change its size to fit the 3D model better. You can do so " "interactively by clicking and dragging on the orange dots." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:41 msgid "" "The box should touch the floor and be a little thinner than the model. " "Physics engines work in such a way that if the player's sphere touches even " "the box's corner, a collision will occur. If the box is a little too big " "compared to the 3D model, you may die at a distance from the monster, and " "the game will feel unfair to the players." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:49 msgid "" "Notice that my box is taller than the monster. It is okay in this game " "because we're looking at the scene from above and using a fixed perspective. " "Collision shapes don't have to match the model exactly. It's the way the " "game feels when you test it that should dictate their form and size." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:55 msgid "Removing monsters off-screen" msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:57 msgid "" "We're going to spawn monsters at regular time intervals in the game level. " "If we're not careful, their count could increase to infinity, and we don't " "want that. Each mob instance has both a memory and a processing cost, and we " "don't want to pay for it when the mob is outside the screen." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:62 msgid "" "Once a monster leaves the screen, we don't need it anymore, so we should " "delete it. Godot has a node that detects when objects leave the screen, :ref:" "`VisibleOnScreenNotifier3D `, and we're " "going to use it to destroy our mobs." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:68 msgid "" "When you keep instancing an object, there's a technique you can use to avoid " "the cost of creating and destroying instances all the time called pooling. " "It consists of pre-creating an array of objects and reusing them over and " "over." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:73 msgid "" "When working with GDScript, you don't need to worry about this. The main " "reason to use pools is to avoid freezes with garbage-collected languages " "like C# or Lua. GDScript uses a different technique to manage memory, " "reference counting, which doesn't have that caveat. You can learn more about " "that here: :ref:`doc_gdscript_basics_memory_management`." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:79 msgid "" "Select the ``Mob`` node and add a child node :ref:`VisibleOnScreenNotifier3D " "`. Another box, pink this time, appears. " "When this box completely leaves the screen, the node will emit a signal." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:85 msgid "Resize it using the orange dots until it covers the entire 3D model." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:90 msgid "Coding the mob's movement" msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:92 msgid "" "Let's implement the monster's motion. We're going to do this in two steps. " "First, we'll write a script on the ``Mob`` that defines a function to " "initialize the monster. We'll then code the randomized spawn mechanism in " "the ``main.tscn`` scene and call the function from there." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:97 msgid "Attach a script to the ``Mob``." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:101 msgid "" "Here's the movement code to start with. We define two properties, " "``min_speed`` and ``max_speed``, to define a random speed range, which we " "will later use to define ``CharacterBody3D.velocity``." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:139 msgid "" "Similarly to the player, we move the mob every frame by calling the function " "``CharacterBody3D.move_and_slide()``. This time, we don't update the " "``velocity`` every frame; we want the monster to move at a constant speed " "and leave the screen, even if it were to hit an obstacle." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:144 msgid "" "We need to define another function to calculate the ``CharacterBody3D." "velocity``. This function will turn the monster towards the player and " "randomize both its angle of motion and its velocity." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:148 msgid "" "The function will take a ``start_position``,the mob's spawn position, and " "the ``player_position`` as its arguments." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:151 msgid "" "We position the mob at ``start_position`` and turn it towards the player " "using the ``look_at_from_position()`` method, and randomize the angle by " "rotating a random amount around the Y axis. Below, ``randf_range()`` outputs " "a random value between ``-PI / 4`` radians and ``PI / 4`` radians." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:181 msgid "" "We got a random position, now we need a ``random_speed``. ``randi_range()`` " "will be useful as it gives random int values, and we will use ``min_speed`` " "and ``max_speed``. ``random_speed`` is just an integer, and we just use it " "to multiply our ``CharacterBody3D.velocity``. After ``random_speed`` is " "applied, we rotate ``CharacterBody3D.velocity`` Vector3 towards the player." msgstr "" #: ../../docs/getting_started/first_3d_game/04.mob_scene.rst:214 #, 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 "" "در **3D workspace**، شما می‌توانید با meshها، چراغ‌ها، و طراحی مرحله برای " "بازی‌ها سه بعدی کار کنید. :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 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 msgid "Adding placeholder cylinders" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:49 msgid "" "Let's add the placeholder meshes. Add a new :ref:`Node3D ` as " "a child of the ``Main`` node and name it ``Cylinders``. We'll use it to " "group the cylinders. Select ``Cylinders`` and add a child node :ref:" "`MeshInstance3D `" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:54 msgid "In the *Inspector*, assign a *CylinderMesh* to the *Mesh* property." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:58 msgid "" "Set the top viewport to the top orthogonal view using the menu in the " "viewport's top-left corner. Alternatively, you can press the keypad's 7 key." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:63 msgid "" "The grid may be distracting. You can toggle it by going to the *View* menu " "in the toolbar and clicking *View Grid*." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:68 msgid "" "You now want to move the cylinder along the ground plane, looking at the " "camera preview in the bottom viewport. I recommend using grid snap to do so. " "You can toggle it by clicking the magnet icon in the toolbar or pressing Y." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:74 msgid "" "Move the cylinder so it's right outside the camera's view in the top-left " "corner." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:79 msgid "" "We're going to create copies of the mesh and place them around the game " "area. Press :kbd:`Ctrl + D` (:kbd:`Cmd + D` on macOS) to duplicate the node. " "You can also right-click the node in the *Scene* dock and select " "*Duplicate*. Move the copy down along the blue Z axis until it's right " "outside the camera's preview." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:84 msgid "" "Select both cylinders by pressing the :kbd:`Shift` key and clicking on the " "unselected one and duplicate them." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:89 msgid "Move them to the right by dragging the red X axis." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:93 msgid "" "They're a bit hard to see in white, aren't they? Let's make them stand out " "by giving them a new material." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:96 msgid "" "In 3D, materials define a surface's visual properties like its color, how it " "reflects light, and more. We can use them to change the color of a mesh." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:99 msgid "" "We can update all four cylinders at once. Select all the mesh instances in " "the *Scene* dock. To do so, you can click on the first one and Shift click " "on the last one." msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst: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:180 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:629 #: ../../docs/community/asset_library/using_assetlib.rst:200 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:127 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:630 #: ../../docs/community/asset_library/using_assetlib.rst:201 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: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: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 msgid "|image17|" msgstr "|image17|" #: ../../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:633 msgid "image17" msgstr "image17" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:143 msgid "Your path should look like this." msgstr "" #: ../../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 msgid "|image19|" msgstr "|image19|" #: ../../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:635 msgid "image19" msgstr "image19" #: ../../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 msgid "Spawning monsters randomly" msgstr "" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:158 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 msgid "|image20|" msgstr "|image20|" #: ../../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:636 msgid "image20" msgstr "image20" #: ../../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 msgid "|image21|" msgstr "|image21|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:369 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:637 msgid "image21" msgstr "image21" #: ../../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 msgid "|image22|" msgstr "|image22|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:370 #: ../../docs/getting_started/first_3d_game/09.adding_animations.rst:638 msgid "image22" msgstr "image22" #: ../../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 msgid "|image23|" msgstr "|image23|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:371 msgid "image23" msgstr "image23" #: ../../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 msgid "|image24|" msgstr "|image24|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:372 msgid "image24" msgstr "image24" #: ../../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 msgid "|image25|" msgstr "|image25|" #: ../../docs/getting_started/first_3d_game/05.spawning_mobs.rst:373 msgid "image25" msgstr "image25" #: ../../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 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 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:289 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:291 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:295 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:303 msgid "" "The method ``is_in_group()`` is available on every :ref:`Node`." msgstr "روش ``is_in_group()`` در همهٔ :ref:`Node` ها در دسترس است." #: ../../docs/getting_started/first_3d_game/06.jump_and_squash.rst:305 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:310 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:314 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:318 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:321 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:357 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:359 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:361 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:364 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 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 "یک Breakpoint درج کن" #: ../../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:510 msgid "See you in the next lesson to add the score and the retry option." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:4 msgid "Score and replay" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:6 msgid "" "In this part, we'll add the score, music playback, and the ability to " "restart the game." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:9 msgid "" "We have to keep track of the current score in a variable and display it on " "screen using a minimal interface. We will use a text label to do that." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:12 msgid "" "In the main scene, add a new child node :ref:`Control ` to " "``Main`` and name it ``UserInterface``. Ensure you are on the 2D screen, " "where you can edit your User Interface (UI)." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:15 msgid "Add a :ref:`Label ` node and name it ``ScoreLabel``" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:19 msgid "" "In the *Inspector*, set the *Label*'s *Text* to a placeholder like \"Score: " "0\"." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:23 msgid "" "Also, the text is white by default, like our game's background. We need to " "change its color to see it at runtime." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:26 msgid "" "Scroll down to *Theme Overrides*, and expand *Colors* and enable *Font " "Color* in order to tint the text to black (which contrasts well with the " "white 3D scene)" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:32 msgid "" "Finally, click and drag on the text in the viewport to move it away from the " "top-left corner." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:37 msgid "" "The ``UserInterface`` node allows us to group our UI in a branch of the " "scene tree and use a theme resource that will propagate to all its children. " "We'll use it to set our game's font." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:42 #, 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 msgid "Adding music" msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:295 msgid "" "To add music that plays continuously in the background, we're going to use " "another feature in Godot: :ref:`autoloads `." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:298 msgid "" "To play audio, all you need to do is add an :ref:`AudioStreamPlayer " "` node to your scene and attach an audio file to " "it. When you start the scene, it can play automatically. However, when you " "reload the scene, like we do to play again, the audio nodes are also reset, " "and the music starts back from the beginning." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:303 msgid "" "You can use the autoload feature to have Godot load a node or a scene " "automatically at the start of the game, outside the current scene. You can " "also use it to create globally accessible objects." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:307 msgid "" "Create a new scene by going to the *Scene* menu and clicking *New Scene* or " "by using the *+* icon next to your currently opened scene." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:312 msgid "" "Click the *Other Node* button to create an :ref:`AudioStreamPlayer " "` and rename it to ``MusicPlayer``." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:317 msgid "" "We included a music soundtrack in the ``art/`` directory, ``House In a " "Forest Loop.ogg``. Click and drag it onto the *Stream* property in the " "*Inspector*. Also, turn on *Autoplay* so the music plays automatically at " "the start of the game." msgstr "" #: ../../docs/getting_started/first_3d_game/08.score_and_replay.rst:324 msgid "Save the scene as ``music_player.tscn``." msgstr "پرده را بعنوان ``music_player.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 "تولید محتوا" #: ../../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:642 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:641 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:640 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:639 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 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 **Add 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 #, fuzzy 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:517 msgid "And the *Mob*'s script." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:4 msgid "Going further" msgstr "دورتر رفتن" #: ../../docs/getting_started/first_3d_game/going_further.rst:6 msgid "" "You can pat yourself on the back for having completed your first 3D game " "with Godot." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:9 msgid "" "In this series, we went over a wide range of techniques and editor features. " "Hopefully, you've witnessed how intuitive Godot's scene system can be and " "learned a few tricks you can apply in your projects." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:13 msgid "" "But we just scratched the surface: Godot has a lot more in store for you to " "save time creating games. And you can learn all that by browsing the " "documentation." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:16 msgid "" "Where should you begin? Below, you'll find a few pages to start exploring " "and build upon what you've learned so far." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:19 #, fuzzy msgid "" "But before that, here's a link to download a completed version of the " "project: ``_." msgstr "" "علاوه بر این اسناد همچنین ممکن است بخواهید به` پروژه‌های مختلف نمایشی گودوت " "`_ نگاهی بیندازید." #: ../../docs/getting_started/first_3d_game/going_further.rst:23 msgid "Exploring the manual" msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:25 msgid "" "The manual is your ally whenever you have a doubt or you're curious about a " "feature. It does not contain tutorials about specific game genres or " "mechanics. Instead, it explains how Godot works in general. In it, you will " "find information about 2D, 3D, physics, rendering and performance, and much " "more." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:30 msgid "Here are the sections we recommend you to explore next:" msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:32 msgid "" "Read the :ref:`Scripting section ` to learn " "essential programming features you'll use in every project." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:34 msgid "" "The :ref:`3D ` and :ref:`Physics ` sections will teach you more about 3D game creation in the engine." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:36 msgid "" ":ref:`Inputs ` is another important one for any " "game project." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:38 msgid "" "You can start with these or, if you prefer, look at the sidebar menu on the " "left and pick your options." msgstr "" #: ../../docs/getting_started/first_3d_game/going_further.rst:41 msgid "" "We hope you enjoyed this tutorial series, and we're looking forward to " "seeing what you achieve using Godot." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:6 msgid "" "This series is a collection of best practices to help you work efficiently " "with Godot." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:9 msgid "" "Godot allows for a great amount of flexibility in how you structure a " "project's codebase and break it down into scenes. Each approach has its pros " "and cons, and they can be hard to weigh until you've worked with the engine " "for long enough." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:13 msgid "" "There are always many ways to structure your code and solve specific " "programming problems. It would be impossible to cover them all here." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:16 msgid "" "That is why each article starts from a real-world problem. We will break " "down each problem in fundamental questions, suggest solutions, analyze the " "pros and cons of each option, and highlight the best course of action for " "the problem at hand." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:20 msgid "" "You should start by reading :ref:`doc_what_are_godot_classes`. It explains " "how Godot's nodes and scenes relate to classes and objects in other Object-" "Oriented programming languages. It will help you make sense of the rest of " "the series." msgstr "" #: ../../docs/tutorials/best_practices/introduction_best_practices.rst:26 msgid "" "The best practices in Godot rely on Object-Oriented design principles. We " "use tools like the `single responsibility `_ principle and `encapsulation `_." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:4 msgid "Applying object-oriented principles in Godot" msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:6 msgid "" "The engine offers two main ways to create reusable objects: scripts and " "scenes. Neither of these technically define classes under the hood." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:9 msgid "" "Still, many best practices using Godot involve applying object-oriented " "programming principles to the scripts and scenes that compose your game. " "That is why it's useful to understand how we can think of them as classes." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:13 msgid "" "This guide briefly explains how scripts and scenes work in the engine's core " "to help you understand how they work under the hood." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:17 msgid "How scripts work in the engine" msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:19 msgid "" "The engine provides built-in classes like :ref:`Node `. You can " "extend those to create derived types using a script." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:22 msgid "" "These scripts are not technically classes. Instead, they are resources that " "tell the engine a sequence of initializations to perform on one of the " "engine's built-in classes." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:25 msgid "" "Godot's internal classes have methods that register a class's data with a :" "ref:`ClassDB `. This database provides runtime access to " "class information. ``ClassDB`` contains information about classes like:" msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:29 msgid "Properties." msgstr "ویژگی‌ها." #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:30 msgid "Methods." msgstr "روش‌ها." #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:31 msgid "Constants." msgstr "ثابت ها." #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:32 msgid "Signals." msgstr "سیگنال‌ها." #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:34 msgid "" "This ``ClassDB`` is what objects check against when performing an operation " "like accessing a property or calling a method. It checks the database's " "records and the object's base types' records to see if the object supports " "the operation." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:38 msgid "" "Attaching a :ref:`Script ` to your object extends the methods, " "properties, and signals available from the ``ClassDB``." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:43 msgid "" "Even scripts that don't use the ``extends`` keyword implicitly inherit from " "the engine's base :ref:`RefCounted ` class. As a result, " "you can instantiate scripts without the ``extends`` keyword from code. Since " "they extend ``RefCounted`` though, you cannot attach them to a :ref:`Node " "`." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:51 msgid "" "The behavior of scenes has many similarities to classes, so it can make " "sense to think of a scene as a class. Scenes are reusable, instantiable, and " "inheritable groups of nodes. Creating a scene is similar to having a script " "that creates nodes and adds them as children using ``add_child()``." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:55 msgid "" "We often pair a scene with a scripted root node that makes use of the " "scene's nodes. As such, the script extends the scene by adding behavior " "through imperative code." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:58 msgid "The content of a scene helps to define:" msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:60 msgid "What nodes are available to the script." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:61 msgid "How they are organized." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:62 msgid "How they are initialized." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:63 msgid "What signal connections they have with each other." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:65 msgid "" "Why is any of this important to scene organization? Because instances of " "scenes *are* objects. As a result, many object-oriented principles that " "apply to written code also apply to scenes: single responsibility, " "encapsulation, and others." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:69 msgid "" "The scene is *always an extension of the script attached to its root node*, " "so you can interpret it as part of a class." msgstr "" #: ../../docs/tutorials/best_practices/what_are_godot_classes.rst:72 msgid "" "Most of the techniques explained in this best practices series build on this " "point." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:4 msgid "Scene organization" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:6 msgid "" "This article covers topics related to the effective organization of scene " "content. Which nodes should you use? Where should you place them? How should " "they interact?" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:11 msgid "How to build relationships effectively" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:13 msgid "" "When Godot users begin crafting their own scenes, they often run into the " "following problem:" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:16 msgid "" "They create their first scene and fill it with content only to eventually " "end up saving branches of their scene into separate scenes as the nagging " "feeling that they should split things up starts to accumulate. However, they " "then notice that the hard references they were able to rely on before are no " "longer possible. Re-using the scene in multiple places creates issues " "because the node paths do not find their targets and signal connections " "established in the editor break." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:24 msgid "" "To fix these problems, you must instantiate the sub-scenes without them " "requiring details about their environment. You need to be able to trust that " "the sub-scene will create itself without being picky about how it's used." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:28 msgid "" "One of the biggest things to consider in OOP is maintaining focused, " "singular-purpose classes with `loose coupling `_ to other parts of the codebase. This keeps the size of " "objects small (for maintainability) and improves their reusability." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:34 msgid "" "These OOP best practices have *several* implications for best practices in " "scene structure and script usage." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:37 msgid "" "**If at all possible, you should design scenes to have no dependencies.** " "That is, you should create scenes that keep everything they need within " "themselves." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:41 msgid "" "If a scene must interact with an external context, experienced developers " "recommend the use of `Dependency Injection `_. This technique involves having a high-level API " "provide the dependencies of the low-level API. Why do this? Because classes " "which rely on their external environment can inadvertently trigger bugs and " "unexpected behavior." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:48 msgid "" "To do this, you must expose data and then rely on a parent context to " "initialize it:" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:51 msgid "" "Connect to a signal. Extremely safe, but should be used only to \"respond\" " "to behavior, not start it. By convention, signal names are usually past-" "tense verbs like \"entered\", \"skill_activated\", or \"item_collected\"." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:72 msgid "Call a method. Used to start behavior." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:91 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:111 msgid "Initialize a Node or other Object reference." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:130 msgid "Initialize a NodePath." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:149 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:155 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:202 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:208 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:217 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:228 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:233 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:242 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:245 msgid "`SOLID `_" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:246 msgid "`DRY `_" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:247 msgid "`KISS `_" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:248 msgid "`YAGNI `_" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:251 msgid "Choosing a node tree structure" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:253 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:260 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:266 #: ../../docs/tutorials/best_practices/scene_organization.rst:274 msgid "Node \"Main\" (main.gd)" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:268 msgid "" "The ``main.gd`` script will serve as the primary controller of your game." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:270 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:275 msgid "Node2D/Node3D \"World\" (game_world.gd)" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:276 msgid "Control \"GUI\" (gui.gd)" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:278 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:282 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:285 msgid "tracks all of its data internally" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:286 msgid "should be globally accessible" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:287 msgid "should exist in isolation" msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:289 msgid "" "... then you should create an :ref:`autoload 'singleton' node " "`." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:293 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:299 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:303 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:307 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:315 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:323 msgid "" "A reliable third party, likely a parent node, to mediate the assignment." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:324 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:327 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:331 msgid "Add a \"player\" node to a \"room\"." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:332 msgid "Need to change rooms, so you must delete the current room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:333 msgid "" "Before the room can be deleted, you must preserve and/or move the player." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:335 msgid "If memory is not a concern, you can..." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:337 #, fuzzy msgid "Create the new room." msgstr "تولید محتوا" #: ../../docs/tutorials/best_practices/scene_organization.rst:338 msgid "Move the player to the new room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:339 msgid "Delete the old room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:341 msgid "If memory is a concern, instead you will need to..." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:343 msgid "Move the player somewhere else in the tree." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:344 msgid "Delete the room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:345 msgid "Instantiate and add the new room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:346 msgid "Re-add the player to the new room." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:348 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:355 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:358 msgid "More consistency." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:359 msgid "No \"special cases\" that must be documented and maintained somewhere." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:360 msgid "" "No opportunity for errors to occur because these details are not accounted " "for." msgstr "" #: ../../docs/tutorials/best_practices/scene_organization.rst:363 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:366 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:369 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:376 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:383 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:389 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 ":ref:`Custom Types `" #: ../../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 ":ref:`Script Classes `" #: ../../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/shaders/your_first_shader/your_first_2d_shader.rst:248 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 #, fuzzy 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:105 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:110 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:116 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:164 msgid "_init vs. initialization vs. export" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:166 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:171 msgid "The C# equivalent to GDScript's ``_init()`` method is the constructor." msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:173 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:177 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:180 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:183 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:226 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:230 msgid "_ready vs. _enter_tree vs. NOTIFICATION_PARENTED" msgstr "" #: ../../docs/tutorials/best_practices/godot_notifications.rst:232 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:239 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:244 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 ``OrderedHashMap``. 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 OHM 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 always a best practice to set the initial values of " "a node before adding it to the scene tree." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:26 msgid "Loading vs. preloading" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:28 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:33 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:40 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:103 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:108 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:113 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:117 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:121 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:125 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:136 msgid "Large levels: static vs. dynamic" msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:138 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:142 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:146 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:151 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:157 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:162 msgid "As such, the best options would be..." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:164 msgid "To use a static level for smaller games." msgstr "" #: ../../docs/tutorials/best_practices/logic_preferences.rst:166 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:171 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:176 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:267 #: ../../docs/tutorials/3d/resolution_scaling.rst:261 #: ../../docs/tutorials/audio/text_to_speech.rst:85 #: ../../docs/tutorials/export/exporting_for_ios.rst:133 #: ../../docs/tutorials/export/one-click_deploy.rst:102 #: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:277 #: ../../docs/contributing/development/compiling/compiling_for_windows.rst:402 #: ../../docs/contributing/development/compiling/compiling_for_android.rst:261 #: ../../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 Forward 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 خاص متصل هستید. " "به طور خاص ، به نظر می رسد نرم افزار iCUE Corsair باعث ایجاد اشکال شده است. " "درایورهای لوازم جانبی 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 "ویرایشگر Godot پس از کلیک بر روی کنسول سیستم ، منجمد به نظر می رسد." #: ../../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 در ویندوز با کنسول سیستم فعال شده ، می توانید با کلیک روی " "پنجره دستور به طور تصادفی * حالت انتخاب * را فعال کنید. این رفتار خاص " "ویندوز ، برنامه را متوقف می کند تا به شما امکان انتخاب متن در داخل کنسول " "سیستم را بدهد. گودو نمی تواند این رفتار خاص سیستم را نادیده بگیرد." #: ../../docs/tutorials/troubleshooting.rst:99 msgid "" "To solve this, select the system console window and press Enter to leave " "selection mode." msgstr "" "برای حل این مشکل ، پنجره کنسول سیستم را انتخاب کرده و 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\" در گوشه ی بالا چپ پنجره های مدیریت پروژه(project " "manager) و ویرایشگر ظاهر می شوند." #: ../../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\" در گوشه ی بالا چپ پنجره های مدیریت پروژه(project " "manager) و ویرایشگر ظاهر می شوند." #: ../../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:214 msgid "Support for HDR *output* is planned in a future release." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:217 msgid "" "The editor/project freezes or displays glitched visuals after resuming the " "PC from suspend" msgstr "" #: ../../docs/tutorials/troubleshooting.rst:219 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 Forward Mobile rendering methods " "(which use Vulkan)." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:225 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:230 msgid "" "To avoid losing work, save scenes in the editor before putting the PC to " "sleep." msgstr "" #: ../../docs/tutorials/troubleshooting.rst:233 #, 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:235 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 "" "علت این امر معمولاً فراموش کردن تعیین فیلتر برای پرونده های غیرمنتظر در " "گفتگوی صادرات است. به طور پیش فرض ، Godot فقط منابع واقعی * را در پرونده PCK " "گنجانده است. برخی از پرونده هایی که معمولاً استفاده می شوند ، مانند پرونده " "های JSON ، منابع محسوب نمی شوند. به عنوان مثال ، اگر \"test.json\" را در " "پروژه صادر شده بارگذاری کنید ، باید \"* .json\" را در فیلتر صادرات غیر منابع " "مشخص کنید. برای اطلاعات بیشتر به: ref: `doc_exporting_projects_export_mode` " "مراجعه کنید." #: ../../docs/tutorials/troubleshooting.rst:242 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:246 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: `case " "sensitive . اگر منبعی را در " "اسکریپت خود با پرونده ای متفاوت از سیستم پرونده ارجاع دهید ، با صادر کردن " "پروژه بارگیری انجام نمی شود. این به این دلیل است که سیستم پرونده PCK مجازی " "به حروف کوچک و بزرگ حساس است ، در حالی که سیستم پرونده ویندوز به طور پیش فرض " "به حروف کوچک و بزرگ حساس نیست." #: ../../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:31 #, fuzzy msgid "Android editor" msgstr "اندروید" #: ../../docs/tutorials/editor/index.rst:33 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:45 #, fuzzy msgid "Web editor" msgstr "کتابخانه دارایی" #: ../../docs/tutorials/editor/index.rst:47 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:58 #, fuzzy msgid "Advanced features" msgstr "فهرست ویژگی‌ها" #: ../../docs/tutorials/editor/index.rst:60 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:72 #: ../../docs/tutorials/editor/managing_editor_features.rst:6 #, fuzzy msgid "Managing editor features" msgstr "فهرست ویژگی‌ها" #: ../../docs/tutorials/editor/index.rst:74 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:117 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 "" "وقتی گودوت را راه اندازی می‌کنید، اولین پنجره‌ای که مشاهده خواهید کرد مدیر " "پروژه است. از آنجا که هیچ پروژه‌ای ندارید، پنجره‌ای وجود خواهد داشت که می‌خواهد " "کتابخانه دارایی را باز کنید، فقط روی Cancel کلیک کنید، بعداً به آن می پردازیم." #: ../../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 "" "روی دکمه ی «سه نقطه» در گوشه ی بالا سمت چپ کلیک کنید و **Offline data** را " "انتخاب کنید." #: ../../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 rendering backends (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 #, fuzzy 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/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:6 msgid "Project Settings" msgstr "تنظیمات پروژه" #: ../../docs/tutorials/editor/project_settings.rst:8 msgid "" "This page explains how to use the Project Settings window. If you would like " "to access and modify project settings via code, see :ref:`ProjectSettings " "`." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:10 msgid "" "Godot stores the project settings in a project.godot file, a plain text file " "in INI format. There are dozens of settings you can change to control a " "project's execution. To simplify this process, Godot provides a project " "settings dialog, which acts as a front-end to editing a project.godot file." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:12 #, fuzzy msgid "To access that dialog, select Project -> Project Settings." msgstr "" "برای دسترسی به آن گفتگو ، پروژه -> تنظیمات پروژه را انتخاب کنید. الآن " "امتحانش کن." #: ../../docs/tutorials/editor/project_settings.rst:14 msgid "" "Once the window opens, let's select a main scene. Locate the `Application/" "Run/Main Scene` property and click on it to select 'hello.tscn'." msgstr "" #: ../../docs/tutorials/editor/project_settings.rst:16 msgid "" "The project settings dialog provides a lot of options that can be saved to a " "project.godot file and shows their default values. If you change a value, a " "tick appears to the left of its name. This means that the property will be " "saved in the project.godot file and remembered." 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:253 #: ../../docs/tutorials/editor/default_key_mapping.rst:336 #: ../../docs/tutorials/editor/default_key_mapping.rst:383 #: ../../docs/tutorials/editor/default_key_mapping.rst:394 #: ../../docs/tutorials/editor/default_key_mapping.rst:407 #: ../../docs/tutorials/editor/default_key_mapping.rst:438 #: ../../docs/tutorials/editor/default_key_mapping.rst:451 #: ../../docs/tutorials/editor/default_key_mapping.rst:474 #: ../../docs/tutorials/editor/default_key_mapping.rst:491 #: ../../docs/tutorials/editor/default_key_mapping.rst:530 #: ../../docs/tutorials/editor/default_key_mapping.rst:557 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:253 #: ../../docs/tutorials/editor/default_key_mapping.rst:336 #: ../../docs/tutorials/editor/default_key_mapping.rst:383 #: ../../docs/tutorials/editor/default_key_mapping.rst:394 #: ../../docs/tutorials/editor/default_key_mapping.rst:407 #: ../../docs/tutorials/editor/default_key_mapping.rst:438 #: ../../docs/tutorials/editor/default_key_mapping.rst:451 #: ../../docs/tutorials/editor/default_key_mapping.rst:474 #: ../../docs/tutorials/editor/default_key_mapping.rst:491 #: ../../docs/tutorials/editor/default_key_mapping.rst:530 #: ../../docs/tutorials/editor/default_key_mapping.rst:557 #, 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:253 #: ../../docs/tutorials/editor/default_key_mapping.rst:336 #: ../../docs/tutorials/editor/default_key_mapping.rst:383 #: ../../docs/tutorials/editor/default_key_mapping.rst:394 #: ../../docs/tutorials/editor/default_key_mapping.rst:407 #: ../../docs/tutorials/editor/default_key_mapping.rst:438 #: ../../docs/tutorials/editor/default_key_mapping.rst:451 #: ../../docs/tutorials/editor/default_key_mapping.rst:474 #: ../../docs/tutorials/editor/default_key_mapping.rst:491 #: ../../docs/tutorials/editor/default_key_mapping.rst:530 #: ../../docs/tutorials/editor/default_key_mapping.rst:557 #, fuzzy msgid "Editor setting" msgstr "تولید محتوا" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 msgid "Open 2D Editor" msgstr "باز کردن ویرایشگر دو بعدی" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 #, fuzzy msgid ":kbd:`Ctrl + F1`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 #, fuzzy msgid ":kbd:`Opt + 1`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:34 msgid "``editor/editor_2d``" msgstr "``editor/editor_2d``" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 msgid "Open 3D Editor" msgstr "گشودن ویراستار ۳‌بعدی" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 #: ../../docs/tutorials/editor/default_key_mapping.rst:455 msgid ":kbd:`Ctrl + F2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 #, fuzzy msgid ":kbd:`Opt + 2`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:36 msgid "``editor/editor_3d``" msgstr "``editor/editor_3d``" #: ../../docs/tutorials/editor/default_key_mapping.rst:38 msgid "Open Script Editor" msgstr "گشودن ویراستار اسکریپت" #: ../../docs/tutorials/editor/default_key_mapping.rst:38 #, fuzzy msgid ":kbd:`Ctrl + F3`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:38 #, fuzzy msgid ":kbd:`Opt + 3`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:38 msgid "``editor/editor_script``" msgstr "``editor/editor_script``" #: ../../docs/tutorials/editor/default_key_mapping.rst:40 msgid "Search Help" msgstr "جستجوی راهنما" #: ../../docs/tutorials/editor/default_key_mapping.rst:40 msgid ":kbd:`F1`" msgstr ":kbd:`F1`" #: ../../docs/tutorials/editor/default_key_mapping.rst:40 #, fuzzy msgid ":kbd:`Opt + Space`" msgstr ":kbd:`Ctrl + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:40 msgid "``editor/editor_help``" msgstr "``editor/editor_help``" #: ../../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 "``editor/distraction_free_mode``" #: ../../docs/tutorials/editor/default_key_mapping.rst:44 msgid "Next tab" msgstr "زبانه بعدی" #: ../../docs/tutorials/editor/default_key_mapping.rst:44 msgid ":kbd:`Ctrl + Tab`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:44 msgid ":kbd:`Cmd + Tab`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:44 msgid "``editor/next_tab``" msgstr "``editor/next_tab``" #: ../../docs/tutorials/editor/default_key_mapping.rst:46 msgid "Previous 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 ":kbd:`Cmd + Shift + Tab`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:46 msgid "``editor/prev_tab``" msgstr "``editor/prev_tab``" #: ../../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 #, fuzzy msgid ":kbd:`Opt + Cmd + P`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:48 msgid "``editor/filter_files``" msgstr "``editor/filter_files``" #: ../../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 "``editor/open_scene``" #: ../../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 msgid ":kbd:`Cmd + Shift + W`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:52 msgid "``editor/close_scene``" msgstr "``editor/close_scene``" #: ../../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:354 msgid ":kbd:`Ctrl + Shift + T`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:54 #: ../../docs/tutorials/editor/default_key_mapping.rst:354 msgid ":kbd:`Cmd + Shift + T`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:54 msgid "``editor/reopen_closed_scene``" msgstr "``editor/reopen_closed_scene``" #: ../../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:563 msgid ":kbd:`Ctrl + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:56 #: ../../docs/tutorials/editor/default_key_mapping.rst:563 msgid ":kbd:`Cmd + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:56 msgid "``editor/save_scene``" msgstr "``editor/save_scene``" #: ../../docs/tutorials/editor/default_key_mapping.rst:58 msgid "Save Scene As" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:58 msgid ":kbd:`Ctrl + Shift + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:58 msgid ":kbd:`Cmd + Shift + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:58 msgid "``editor/save_scene_as``" msgstr "``editor/save_scene_as``" #: ../../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:358 msgid ":kbd:`Ctrl + Shift + Alt + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:60 #: ../../docs/tutorials/editor/default_key_mapping.rst:358 #, fuzzy msgid ":kbd:`Cmd + Shift + Opt + S`" msgstr ":kbd:`Cmd + Shift + Z`" #: ../../docs/tutorials/editor/default_key_mapping.rst:60 msgid "``editor/save_all_scenes``" msgstr "``editor/save_all_scenes``" #: ../../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 #, fuzzy msgid ":kbd:`Shift + Opt + O`" msgstr ":kbd:`Shift + Alt + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:62 msgid "``editor/quick_open``" msgstr "``editor/quick_open``" #: ../../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 "``editor/quick_open_scene``" #: ../../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 #, fuzzy msgid ":kbd:`Opt + Cmd + O`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:66 msgid "``editor/quick_open_script``" msgstr "``editor/quick_open_script``" #: ../../docs/tutorials/editor/default_key_mapping.rst:68 #: ../../docs/tutorials/editor/default_key_mapping.rst:275 msgid "Undo" msgstr "بازگردانی" #: ../../docs/tutorials/editor/default_key_mapping.rst:68 #: ../../docs/tutorials/editor/default_key_mapping.rst:275 msgid ":kbd:`Ctrl + Z`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:68 #: ../../docs/tutorials/editor/default_key_mapping.rst:275 msgid ":kbd:`Cmd + Z`" msgstr ":kbd:`Cmd + Z`" #: ../../docs/tutorials/editor/default_key_mapping.rst:68 msgid "``editor/undo``" msgstr "``editor/undo``" #: ../../docs/tutorials/editor/default_key_mapping.rst:70 #: ../../docs/tutorials/editor/default_key_mapping.rst:277 msgid "Redo" msgstr "بازانجامیدن" #: ../../docs/tutorials/editor/default_key_mapping.rst:70 msgid ":kbd:`Ctrl + Shift + Z`" msgstr ":kbd:`Ctrl + Shift + Z`" #: ../../docs/tutorials/editor/default_key_mapping.rst:70 msgid ":kbd:`Cmd + Shift + Z`" msgstr ":kbd:`Cmd + Shift + Z`" #: ../../docs/tutorials/editor/default_key_mapping.rst:70 msgid "``editor/redo``" msgstr "``editor/redo``" #: ../../docs/tutorials/editor/default_key_mapping.rst:72 msgid "Quit" msgstr "برونرفت" #: ../../docs/tutorials/editor/default_key_mapping.rst:72 msgid ":kbd:`Ctrl + Q`" msgstr ":kbd:`Ctrl + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:72 msgid ":kbd:`Cmd + Q`" msgstr ":kbd:`Cmd + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:72 msgid "``editor/file_quit``" msgstr "``editor/file_quit``" #: ../../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 ":kbd:`Ctrl + Shift + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:74 #, fuzzy msgid ":kbd:`Shift + Opt + Q`" msgstr ":kbd:`Shift + Alt + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:74 msgid "``editor/quit_to_project_list``" msgstr "``editor/quit_to_project_list``" #: ../../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 ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:76 msgid ":kbd:`Cmd + F12`" msgstr ":kbd:`Cmd + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:76 msgid "``editor/take_screenshot``" msgstr "``editor/take_screenshot``" #: ../../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 ":kbd:`Shift + F11`" #: ../../docs/tutorials/editor/default_key_mapping.rst:78 msgid ":kbd:`Cmd + Ctrl + F`" msgstr ":kbd:`Cmd + Ctrl + F`" #: ../../docs/tutorials/editor/default_key_mapping.rst:78 msgid "``editor/fullscreen_mode``" msgstr "``editor/fullscreen_mode``" #: ../../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:415 msgid ":kbd:`F5`" msgstr ":kbd:`F5`" #: ../../docs/tutorials/editor/default_key_mapping.rst:80 #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid ":kbd:`Cmd + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:80 msgid "``editor/play``" msgstr "``editor/play``" #: ../../docs/tutorials/editor/default_key_mapping.rst:82 msgid "Pause Scene" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:82 msgid ":kbd:`F7`" msgstr ":kbd:`F7`" #: ../../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 "``editor/pause_scene``" #: ../../docs/tutorials/editor/default_key_mapping.rst:84 msgid "Stop" msgstr "توقف" #: ../../docs/tutorials/editor/default_key_mapping.rst:84 msgid ":kbd:`F8`" msgstr ":kbd:`F8`" #: ../../docs/tutorials/editor/default_key_mapping.rst:84 #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid ":kbd:`Cmd + .`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:84 msgid "``editor/stop``" msgstr "``editor/stop``" #: ../../docs/tutorials/editor/default_key_mapping.rst:86 msgid "Play Scene" msgstr "پخش صحنه" #: ../../docs/tutorials/editor/default_key_mapping.rst:86 msgid ":kbd:`F6`" msgstr ":kbd:`F6`" #: ../../docs/tutorials/editor/default_key_mapping.rst:86 #: ../../docs/tutorials/editor/default_key_mapping.rst:567 msgid ":kbd:`Cmd + R`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:86 msgid "``editor/play_scene``" msgstr "``editor/play_scene``" #: ../../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:273 #: ../../docs/tutorials/editor/default_key_mapping.rst:360 msgid ":kbd:`Cmd + Shift + R`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:88 msgid "``editor/play_custom_scene``" msgstr "``editor/play_custom_scene``" #: ../../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 "``editor/bottom_panel_expand``" #: ../../docs/tutorials/editor/default_key_mapping.rst:92 #, fuzzy 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 #, fuzzy msgid "``editor/command_palette``" msgstr "``editor/open_scene``" #: ../../docs/tutorials/editor/default_key_mapping.rst:96 msgid "Bottom panels" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:98 msgid "" "Only bottom panels that are always available have a default shortcut " "assigned. Others must be manually bound in the Editor Settings if desired." msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:104 #, fuzzy msgid "Toggle Last Opened Panel" msgstr "تغییر پنل اسکریپت ها" #: ../../docs/tutorials/editor/default_key_mapping.rst:104 #, fuzzy msgid ":kbd:`Ctrl + J`" msgstr ":kbd:`Ctrl + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:104 #, fuzzy msgid "``editor/toggle_last_opened_bottom_panel``" msgstr "``script_editor/toggle_scripts_panel``" #: ../../docs/tutorials/editor/default_key_mapping.rst:106 #, fuzzy msgid "Toggle Animation Bottom Panel" msgstr "تغییر پنل اسکریپت ها" #: ../../docs/tutorials/editor/default_key_mapping.rst:106 #, fuzzy msgid ":kbd:`Alt + N`" msgstr ":kbd:`Alt`" #: ../../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 #, fuzzy msgid ":kbd:`Alt + A`" msgstr ":kbd:`Alt`" #: ../../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 #, fuzzy msgid ":kbd:`Alt + D`" msgstr ":kbd:`Alt`" #: ../../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:287 #: ../../docs/tutorials/editor/default_key_mapping.rst:419 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 #, fuzzy msgid ":kbd:`Alt + O`" msgstr ":kbd:`Alt`" #: ../../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 #, fuzzy msgid ":kbd:`Alt + S`" msgstr ":kbd:`Alt`" #: ../../docs/tutorials/editor/default_key_mapping.rst:116 msgid "``bottom_panels/toggle_shader_editor_bottom_panel``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:120 msgid "2D / CanvasItem editor" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:125 #: ../../docs/tutorials/editor/default_key_mapping.rst:372 msgid "Zoom In" msgstr "بزرگنمایی" #: ../../docs/tutorials/editor/default_key_mapping.rst:125 #: ../../docs/tutorials/editor/default_key_mapping.rst:372 msgid ":kbd:`Ctrl + =`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:125 #: ../../docs/tutorials/editor/default_key_mapping.rst:372 msgid ":kbd:`Cmd + =`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:125 msgid "``canvas_item_editor/zoom_plus``" msgstr "``canvas_item_editor/zoom_plus``" #: ../../docs/tutorials/editor/default_key_mapping.rst:127 #: ../../docs/tutorials/editor/default_key_mapping.rst:374 msgid "Zoom Out" msgstr "کوچکنمایی" #: ../../docs/tutorials/editor/default_key_mapping.rst:127 #: ../../docs/tutorials/editor/default_key_mapping.rst:374 msgid ":kbd:`Ctrl + -`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:127 #: ../../docs/tutorials/editor/default_key_mapping.rst:374 msgid ":kbd:`Cmd + -`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:127 msgid "``canvas_item_editor/zoom_minus``" msgstr "``canvas_item_editor/zoom_minus``" #: ../../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:376 msgid ":kbd:`Ctrl + 0`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:129 #: ../../docs/tutorials/editor/default_key_mapping.rst:376 msgid ":kbd:`Cmd + 0`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:129 msgid "``canvas_item_editor/zoom_reset``" msgstr "``canvas_item_editor/zoom_reset``" #: ../../docs/tutorials/editor/default_key_mapping.rst:131 msgid "Pan View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:131 msgid ":kbd:`Space`" msgstr ":kbd:`Space`" #: ../../docs/tutorials/editor/default_key_mapping.rst:131 msgid "``canvas_item_editor/pan_view``" msgstr "``canvas_item_editor/pan_view``" #: ../../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 ":kbd:`Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:133 msgid "``canvas_item_editor/select_mode``" msgstr "``canvas_item_editor/select_mode``" #: ../../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 ":kbd:`W`" #: ../../docs/tutorials/editor/default_key_mapping.rst:135 msgid "``canvas_item_editor/move_mode``" msgstr "``canvas_item_editor/move_mode``" #: ../../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:515 msgid ":kbd:`E`" msgstr ":kbd:`E`" #: ../../docs/tutorials/editor/default_key_mapping.rst:137 msgid "``canvas_item_editor/rotate_mode``" msgstr "``canvas_item_editor/rotate_mode``" #: ../../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:493 msgid ":kbd:`S`" msgstr ":kbd:`S`" #: ../../docs/tutorials/editor/default_key_mapping.rst:139 msgid "``canvas_item_editor/scale_mode``" msgstr "``canvas_item_editor/scale_mode``" #: ../../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:509 msgid ":kbd:`R`" msgstr ":kbd:`R`" #: ../../docs/tutorials/editor/default_key_mapping.rst:141 msgid "``canvas_item_editor/ruler_mode``" msgstr "``canvas_item_editor/ruler_mode``" #: ../../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 "``canvas_item_editor/use_smart_snap``" #: ../../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 "``canvas_item_editor/use_grid_snap``" #: ../../docs/tutorials/editor/default_key_mapping.rst:147 msgid "Multiply grid step by 2" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:147 msgid ":kbd:`Num *`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:147 msgid "``canvas_item_editor/multiply_grid_step``" msgstr "``canvas_item_editor/multiply_grid_step``" #: ../../docs/tutorials/editor/default_key_mapping.rst:149 msgid "Divide grid step by 2" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:149 msgid ":kbd:`Num /`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:149 msgid "``canvas_item_editor/divide_grid_step``" msgstr "``canvas_item_editor/divide_grid_step``" #: ../../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 ":kbd:`G`" #: ../../docs/tutorials/editor/default_key_mapping.rst:151 msgid "``canvas_item_editor/show_grid``" msgstr "``canvas_item_editor/show_grid``" #: ../../docs/tutorials/editor/default_key_mapping.rst:153 msgid "Show Helpers" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:153 msgid ":kbd:`H`" msgstr ":kbd:`H`" #: ../../docs/tutorials/editor/default_key_mapping.rst:153 msgid "``canvas_item_editor/show_helpers``" msgstr "``canvas_item_editor/show_helpers``" #: ../../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 ":kbd:`Y`" #: ../../docs/tutorials/editor/default_key_mapping.rst:155 msgid "``canvas_item_editor/show_guides``" msgstr "``canvas_item_editor/show_guides``" #: ../../docs/tutorials/editor/default_key_mapping.rst:157 #, fuzzy msgid "Center Selection" msgstr "در مرکز قرار دادن برگزیده" #: ../../docs/tutorials/editor/default_key_mapping.rst:157 #: ../../docs/tutorials/editor/default_key_mapping.rst:230 msgid ":kbd:`F`" msgstr ":kbd:`F`" #: ../../docs/tutorials/editor/default_key_mapping.rst:157 msgid "``canvas_item_editor/center_selection``" msgstr "``canvas_item_editor/center_selection``" #: ../../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 "``canvas_item_editor/frame_selection``" #: ../../docs/tutorials/editor/default_key_mapping.rst:161 msgid "Preview Canvas Scale" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:161 msgid "``canvas_item_editor/preview_canvas_scale``" msgstr "``canvas_item_editor/preview_canvas_scale``" #: ../../docs/tutorials/editor/default_key_mapping.rst:163 msgid "Insert Key" msgstr "درج کلید" #: ../../docs/tutorials/editor/default_key_mapping.rst:163 msgid ":kbd:`Ins`" msgstr ":kbd:`Ins`" #: ../../docs/tutorials/editor/default_key_mapping.rst:163 msgid "``canvas_item_editor/anim_insert_key``" msgstr "``canvas_item_editor/anim_insert_key``" #: ../../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 "``canvas_item_editor/anim_insert_key_existing_tracks``" #: ../../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:315 msgid ":kbd:`Ctrl + Shift + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:167 #: ../../docs/tutorials/editor/default_key_mapping.rst:315 #: ../../docs/tutorials/editor/default_key_mapping.rst:321 msgid ":kbd:`Cmd + Shift + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:167 msgid "``canvas_item_editor/skeleton_make_bones``" msgstr "``canvas_item_editor/skeleton_make_bones``" #: ../../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 "``canvas_item_editor/anim_clear_pose``" #: ../../docs/tutorials/editor/default_key_mapping.rst:175 msgid "3D / Spatial editor" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:180 msgid "Toggle Freelook" msgstr "دید آزاد" #: ../../docs/tutorials/editor/default_key_mapping.rst:180 msgid "``spatial_editor/freelook_toggle``" msgstr "``spatial_editor/freelook_toggle``" #: ../../docs/tutorials/editor/default_key_mapping.rst:182 msgid "Freelook Left" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:182 msgid ":kbd:`A`" msgstr ":kbd:`A`" #: ../../docs/tutorials/editor/default_key_mapping.rst:182 msgid "``spatial_editor/freelook_left``" msgstr "``spatial_editor/freelook_left``" #: ../../docs/tutorials/editor/default_key_mapping.rst:184 msgid "Freelook Right" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:184 #: ../../docs/tutorials/editor/default_key_mapping.rst:505 msgid ":kbd:`D`" msgstr ":kbd:`D`" #: ../../docs/tutorials/editor/default_key_mapping.rst:184 msgid "``spatial_editor/freelook_right``" msgstr "``spatial_editor/freelook_right``" #: ../../docs/tutorials/editor/default_key_mapping.rst:186 msgid "Freelook Forward" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:186 msgid "``spatial_editor/freelook_forward``" msgstr "``spatial_editor/freelook_forward``" #: ../../docs/tutorials/editor/default_key_mapping.rst:188 msgid "Freelook Backwards" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:188 msgid "``spatial_editor/freelook_backwards``" msgstr "``spatial_editor/freelook_backwards``" #: ../../docs/tutorials/editor/default_key_mapping.rst:190 msgid "Freelook Up" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:190 msgid "``spatial_editor/freelook_up``" msgstr "``spatial_editor/freelook_up``" #: ../../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 "``spatial_editor/freelook_down``" #: ../../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 ":kbd:`Shift`" #: ../../docs/tutorials/editor/default_key_mapping.rst:194 msgid "``spatial_editor/freelook_speed_modifier``" msgstr "``spatial_editor/freelook_speed_modifier``" #: ../../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 ":kbd:`Alt`" #: ../../docs/tutorials/editor/default_key_mapping.rst:196 #, fuzzy msgid ":kbd:`Opt`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:196 msgid "``spatial_editor/freelook_slow_modifier``" msgstr "``spatial_editor/freelook_slow_modifier``" #: ../../docs/tutorials/editor/default_key_mapping.rst:198 msgid "``spatial_editor/tool_select``" msgstr "``spatial_editor/tool_select``" #: ../../docs/tutorials/editor/default_key_mapping.rst:200 msgid "``spatial_editor/tool_move``" msgstr "``spatial_editor/tool_move``" #: ../../docs/tutorials/editor/default_key_mapping.rst:202 msgid "``spatial_editor/tool_rotate``" msgstr "``spatial_editor/tool_rotate``" #: ../../docs/tutorials/editor/default_key_mapping.rst:204 msgid "``spatial_editor/tool_scale``" msgstr "``spatial_editor/tool_scale``" #: ../../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 ":kbd:`T`" #: ../../docs/tutorials/editor/default_key_mapping.rst:206 msgid "``spatial_editor/local_coords``" msgstr "``spatial_editor/local_coords``" #: ../../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 "``spatial_editor/snap``" #: ../../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:532 msgid ":kbd:`PgDown`" msgstr ":kbd:`PgDown`" #: ../../docs/tutorials/editor/default_key_mapping.rst:210 msgid "``spatial_editor/snap_to_floor``" msgstr "``spatial_editor/snap_to_floor``" #: ../../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 "``spatial_editor/top_view``" #: ../../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 #, fuzzy msgid ":kbd:`Opt + Num 7`" msgstr ":kbd:`Ctrl + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:214 msgid "``spatial_editor/bottom_view``" msgstr "``spatial_editor/bottom_view``" #: ../../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 "``spatial_editor/front_view``" #: ../../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 #, fuzzy msgid ":kbd:`Opt + Num 1`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:218 msgid "``spatial_editor/rear_view``" msgstr "``spatial_editor/rear_view``" #: ../../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 "``spatial_editor/right_view``" #: ../../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 #, fuzzy msgid ":kbd:`Opt + Num 3`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:222 msgid "``spatial_editor/left_view``" msgstr "``spatial_editor/left_view``" #: ../../docs/tutorials/editor/default_key_mapping.rst:224 msgid "Switch Perspective/Orthogonal View" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:224 msgid ":kbd:`Num 5`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:224 msgid "``spatial_editor/switch_perspective_orthogonal``" msgstr "``spatial_editor/switch_perspective_orthogonal``" #: ../../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 ":kbd:`K`" #: ../../docs/tutorials/editor/default_key_mapping.rst:226 msgid "``spatial_editor/insert_anim_key``" msgstr "``spatial_editor/insert_anim_key``" #: ../../docs/tutorials/editor/default_key_mapping.rst:228 msgid "Focus Origin" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:228 msgid ":kbd:`O`" msgstr ":kbd:`O`" #: ../../docs/tutorials/editor/default_key_mapping.rst:228 msgid "``spatial_editor/focus_origin``" msgstr "``spatial_editor/focus_origin``" #: ../../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 "``spatial_editor/focus_selection``" #: ../../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 #, fuzzy msgid ":kbd:`Opt + Cmd + M`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:232 msgid "``spatial_editor/align_transform_with_view``" msgstr "``spatial_editor/align_transform_with_view``" #: ../../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:317 msgid ":kbd:`Ctrl + Alt + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:234 #: ../../docs/tutorials/editor/default_key_mapping.rst:271 #, fuzzy msgid ":kbd:`Opt + Cmd + F`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:234 msgid "``spatial_editor/align_rotation_with_view``" msgstr "``spatial_editor/align_rotation_with_view``" #: ../../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 "``spatial_editor/1_viewport``" #: ../../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 "``spatial_editor/2_viewports``" #: ../../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 #, fuzzy msgid ":kbd:`Opt + Cmd + 2`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:240 msgid "``spatial_editor/2_viewports_alt``" msgstr "``spatial_editor/2_viewports_alt``" #: ../../docs/tutorials/editor/default_key_mapping.rst:242 msgid "3 Viewports" msgstr "۳ دیدگستره" #: ../../docs/tutorials/editor/default_key_mapping.rst:242 msgid ":kbd:`Ctrl + 3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:242 msgid ":kbd:`Cmd + 3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:242 msgid "``spatial_editor/3_viewports``" msgstr "``spatial_editor/3_viewports``" #: ../../docs/tutorials/editor/default_key_mapping.rst:244 msgid "3 Viewports (Alt)" msgstr "۳ دیدگستره (alt)" #: ../../docs/tutorials/editor/default_key_mapping.rst:244 msgid ":kbd:`Ctrl + Alt + 3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:244 #, fuzzy msgid ":kbd:`Opt + Cmd + 3`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:244 msgid "``spatial_editor/3_viewports_alt``" msgstr "``spatial_editor/3_viewports_alt``" #: ../../docs/tutorials/editor/default_key_mapping.rst:246 msgid "4 Viewports" msgstr "۴ دیدگستره" #: ../../docs/tutorials/editor/default_key_mapping.rst:246 msgid ":kbd:`Ctrl + 4`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:246 msgid ":kbd:`Cmd + 4`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:246 msgid "``spatial_editor/4_viewports``" msgstr "``spatial_editor/4_viewports``" #: ../../docs/tutorials/editor/default_key_mapping.rst:250 #, fuzzy msgid "Text editor" msgstr "ویرایشگر متن" #: ../../docs/tutorials/editor/default_key_mapping.rst:255 msgid "Cut" msgstr "برش" #: ../../docs/tutorials/editor/default_key_mapping.rst:255 #: ../../docs/tutorials/editor/default_key_mapping.rst:495 msgid ":kbd:`Ctrl + X`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:255 #: ../../docs/tutorials/editor/default_key_mapping.rst:495 msgid ":kbd:`Cmd + X`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:255 msgid "``script_text_editor/cut``" msgstr "``script_text_editor/cut``" #: ../../docs/tutorials/editor/default_key_mapping.rst:257 msgid "Copy" msgstr "روگرفت" #: ../../docs/tutorials/editor/default_key_mapping.rst:257 #: ../../docs/tutorials/editor/default_key_mapping.rst:385 #: ../../docs/tutorials/editor/default_key_mapping.rst:440 #: ../../docs/tutorials/editor/default_key_mapping.rst:497 msgid ":kbd:`Ctrl + C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:257 #: ../../docs/tutorials/editor/default_key_mapping.rst:385 #: ../../docs/tutorials/editor/default_key_mapping.rst:440 #: ../../docs/tutorials/editor/default_key_mapping.rst:497 msgid ":kbd:`Cmd + C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:257 msgid "``script_text_editor/copy``" msgstr "``script_text_editor/copy``" #: ../../docs/tutorials/editor/default_key_mapping.rst:259 msgid "Paste" msgstr "چسباندن" #: ../../docs/tutorials/editor/default_key_mapping.rst:259 #: ../../docs/tutorials/editor/default_key_mapping.rst:499 msgid ":kbd:`Ctrl + V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:259 #: ../../docs/tutorials/editor/default_key_mapping.rst:499 msgid ":kbd:`Cmd + V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:259 msgid "``script_text_editor/paste``" msgstr "``script_text_editor/paste``" #: ../../docs/tutorials/editor/default_key_mapping.rst:261 msgid "Select All" msgstr "انتخاب همه" #: ../../docs/tutorials/editor/default_key_mapping.rst:261 #: ../../docs/tutorials/editor/default_key_mapping.rst:453 msgid ":kbd:`Ctrl + A`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:261 #: ../../docs/tutorials/editor/default_key_mapping.rst:453 msgid ":kbd:`Cmd + A`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:261 msgid "``script_text_editor/select_all``" msgstr "``script_text_editor/select_all``" #: ../../docs/tutorials/editor/default_key_mapping.rst:263 #: ../../docs/tutorials/editor/default_key_mapping.rst:338 msgid "Find" msgstr "یافتن" #: ../../docs/tutorials/editor/default_key_mapping.rst:263 #: ../../docs/tutorials/editor/default_key_mapping.rst:338 msgid ":kbd:`Ctrl + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:263 #: ../../docs/tutorials/editor/default_key_mapping.rst:338 msgid ":kbd:`Cmd + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:263 msgid "``script_text_editor/find``" msgstr "``script_text_editor/find``" #: ../../docs/tutorials/editor/default_key_mapping.rst:265 #: ../../docs/tutorials/editor/default_key_mapping.rst:340 msgid "Find Next" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:265 #: ../../docs/tutorials/editor/default_key_mapping.rst:340 msgid ":kbd:`F3`" msgstr ":kbd:`F3`" #: ../../docs/tutorials/editor/default_key_mapping.rst:265 msgid ":kbd:`Cmd + G`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:265 msgid "``script_text_editor/find_next``" msgstr "``script_text_editor/find_next``" #: ../../docs/tutorials/editor/default_key_mapping.rst:267 #: ../../docs/tutorials/editor/default_key_mapping.rst:342 msgid "Find Previous" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:267 #: ../../docs/tutorials/editor/default_key_mapping.rst:342 msgid ":kbd:`Shift + F3`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:267 #: ../../docs/tutorials/editor/default_key_mapping.rst:427 msgid ":kbd:`Cmd + Shift + G`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:267 msgid "``script_text_editor/find_previous``" msgstr "``script_text_editor/find_previous``" #: ../../docs/tutorials/editor/default_key_mapping.rst:269 #: ../../docs/tutorials/editor/default_key_mapping.rst:344 msgid "Find in Files" msgstr "یافتن در فایل‌ها" #: ../../docs/tutorials/editor/default_key_mapping.rst:269 #: ../../docs/tutorials/editor/default_key_mapping.rst:344 msgid ":kbd:`Ctrl + Shift + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:269 #: ../../docs/tutorials/editor/default_key_mapping.rst:344 msgid ":kbd:`Cmd + Shift + F`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:269 msgid "``script_text_editor/find_in_files``" msgstr "``script_text_editor/find_in_files``" #: ../../docs/tutorials/editor/default_key_mapping.rst:271 msgid "Replace" msgstr "جایگزینی" #: ../../docs/tutorials/editor/default_key_mapping.rst:271 #: ../../docs/tutorials/editor/default_key_mapping.rst:567 msgid ":kbd:`Ctrl + R`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:271 msgid "``script_text_editor/replace``" msgstr "``script_text_editor/replace``" #: ../../docs/tutorials/editor/default_key_mapping.rst:273 msgid "Replace in Files" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:273 #: ../../docs/tutorials/editor/default_key_mapping.rst:360 msgid ":kbd:`Ctrl + Shift + R`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:273 msgid "``script_text_editor/replace_in_files``" msgstr "``script_text_editor/replace_in_files``" #: ../../docs/tutorials/editor/default_key_mapping.rst:275 msgid "``script_text_editor/undo``" msgstr "``script_text_editor/undo``" #: ../../docs/tutorials/editor/default_key_mapping.rst:277 msgid ":kbd:`Ctrl + Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:277 msgid ":kbd:`Cmd + Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:277 msgid "``script_text_editor/redo``" msgstr "``script_text_editor/redo``" #: ../../docs/tutorials/editor/default_key_mapping.rst:279 #: ../../docs/tutorials/editor/default_key_mapping.rst:346 #: ../../docs/tutorials/editor/default_key_mapping.rst:465 msgid "Move Up" msgstr "حرکت به بالا" #: ../../docs/tutorials/editor/default_key_mapping.rst:279 #: ../../docs/tutorials/editor/default_key_mapping.rst:413 msgid ":kbd:`Alt + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:279 #: ../../docs/tutorials/editor/default_key_mapping.rst:413 #, fuzzy msgid ":kbd:`Opt + Up Arrow`" msgstr ":kbd:`Ctrl + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:279 msgid "``script_text_editor/move_up``" msgstr "``script_text_editor/move_up``" #: ../../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 Down" msgstr "حرکت به پایین" #: ../../docs/tutorials/editor/default_key_mapping.rst:281 msgid ":kbd:`Alt + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:281 msgid ":kbd:`Opt + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:281 msgid "``script_text_editor/move_down``" msgstr "``script_text_editor/move_down``" #: ../../docs/tutorials/editor/default_key_mapping.rst:283 msgid "Delete Line" msgstr "حذف خط" #: ../../docs/tutorials/editor/default_key_mapping.rst:283 #: ../../docs/tutorials/editor/default_key_mapping.rst:387 msgid ":kbd:`Ctrl + Shift + K`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:283 #: ../../docs/tutorials/editor/default_key_mapping.rst:387 msgid ":kbd:`Cmd + Shift + K`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:283 msgid "``script_text_editor/delete_line``" msgstr "``script_text_editor/delete_line``" #: ../../docs/tutorials/editor/default_key_mapping.rst:285 msgid "Toggle Comment" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:285 msgid ":kbd:`Ctrl + K`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:285 msgid ":kbd:`Cmd + K`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:285 msgid "``script_text_editor/toggle_comment``" msgstr "``script_text_editor/toggle_comment``" #: ../../docs/tutorials/editor/default_key_mapping.rst:287 msgid "Fold/Unfold Line" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:287 #, fuzzy msgid ":kbd:`Ctrl + Cmd + F`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:287 msgid "``script_text_editor/toggle_fold_line``" msgstr "``script_text_editor/toggle_fold_line``" #: ../../docs/tutorials/editor/default_key_mapping.rst:289 #, fuzzy msgid "Duplicate Lines" msgstr "دوتاسازی" #: ../../docs/tutorials/editor/default_key_mapping.rst:289 #, fuzzy msgid ":kbd:`Ctrl + Alt + Down Arrow`" msgstr ":kbd:`Shift + Alt + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:289 #, fuzzy msgid ":kbd:`Cmd + Shift + Down Arrow`" msgstr ":kbd:`Cmd + Shift + Z`" #: ../../docs/tutorials/editor/default_key_mapping.rst:289 #, fuzzy msgid "``script_text_editor/duplicate_lines``" msgstr "``script_text_editor/duplicate_selection``" #: ../../docs/tutorials/editor/default_key_mapping.rst:291 #: ../../docs/tutorials/editor/default_key_mapping.rst:476 msgid "Duplicate Selection" msgstr "تکثیر برگزیده" #: ../../docs/tutorials/editor/default_key_mapping.rst:291 #: ../../docs/tutorials/editor/default_key_mapping.rst:478 msgid ":kbd:`Ctrl + Shift + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:291 msgid ":kbd:`Cmd + Shift + C`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:291 msgid "``script_text_editor/duplicate_selection``" msgstr "``script_text_editor/duplicate_selection``" #: ../../docs/tutorials/editor/default_key_mapping.rst:293 msgid "Complete Symbol" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:293 msgid ":kbd:`Ctrl + Space`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:293 msgid "``script_text_editor/complete_symbol``" msgstr "``script_text_editor/complete_symbol``" #: ../../docs/tutorials/editor/default_key_mapping.rst:295 msgid "Evaluate Selection" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:295 msgid ":kbd:`Ctrl + Shift + E`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:295 msgid ":kbd:`Cmd + Shift + E`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:295 msgid "``script_text_editor/evaluate_selection``" msgstr "``script_text_editor/evaluate_selection``" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 msgid "Trim Trailing Whitespace" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 msgid ":kbd:`Ctrl + Alt + T`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 #, fuzzy msgid ":kbd:`Opt + Cmd + T`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:297 msgid "``script_text_editor/trim_trailing_whitespace``" msgstr "``script_text_editor/trim_trailing_whitespace``" #: ../../docs/tutorials/editor/default_key_mapping.rst:299 msgid "Uppercase" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:299 msgid ":kbd:`Shift + F4`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:299 msgid "``script_text_editor/convert_to_uppercase``" msgstr "``script_text_editor/convert_to_uppercase``" #: ../../docs/tutorials/editor/default_key_mapping.rst:301 msgid "Lowercase" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:301 msgid ":kbd:`Shift + F5`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:301 msgid "``script_text_editor/convert_to_lowercase``" msgstr "``script_text_editor/convert_to_lowercase``" #: ../../docs/tutorials/editor/default_key_mapping.rst:303 msgid "Capitalize" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:303 msgid ":kbd:`Shift + F6`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:303 msgid "``script_text_editor/capitalize``" msgstr "``script_text_editor/capitalize``" #: ../../docs/tutorials/editor/default_key_mapping.rst:305 msgid "Convert Indent to Spaces" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:305 msgid ":kbd:`Ctrl + Shift + Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:305 msgid ":kbd:`Cmd + Shift + Y`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:305 msgid "``script_text_editor/convert_indent_to_spaces``" msgstr "``script_text_editor/convert_indent_to_spaces``" #: ../../docs/tutorials/editor/default_key_mapping.rst:307 msgid "Convert Indent to Tabs" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:307 msgid ":kbd:`Ctrl + Shift + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:307 msgid ":kbd:`Cmd + Shift + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:307 msgid "``script_text_editor/convert_indent_to_tabs``" msgstr "``script_text_editor/convert_indent_to_tabs``" #: ../../docs/tutorials/editor/default_key_mapping.rst:309 msgid "Auto Indent" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:309 #: ../../docs/tutorials/editor/default_key_mapping.rst:561 msgid ":kbd:`Ctrl + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:309 #: ../../docs/tutorials/editor/default_key_mapping.rst:561 msgid ":kbd:`Cmd + I`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:309 msgid "``script_text_editor/auto_indent``" msgstr "``script_text_editor/auto_indent``" #: ../../docs/tutorials/editor/default_key_mapping.rst:311 msgid "Toggle Bookmark" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:311 msgid ":kbd:`Ctrl + Alt + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:311 #, fuzzy msgid ":kbd:`Opt + Cmd + B`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:311 msgid "``script_text_editor/toggle_bookmark``" msgstr "``script_text_editor/toggle_bookmark``" #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid "Go to Next Bookmark" msgstr "رفتن به نشانک بعدی" #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid ":kbd:`Ctrl + B`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:313 msgid "``script_text_editor/goto_next_bookmark``" msgstr "``script_text_editor/goto_next_bookmark``" #: ../../docs/tutorials/editor/default_key_mapping.rst:315 msgid "Go to Previous Bookmark" msgstr "رفتن به نشانک قبلی" #: ../../docs/tutorials/editor/default_key_mapping.rst:315 msgid "``script_text_editor/goto_previous_bookmark``" msgstr "``script_text_editor/goto_previous_bookmark``" #: ../../docs/tutorials/editor/default_key_mapping.rst:317 msgid "Go to Function" msgstr "برو به تابع" #: ../../docs/tutorials/editor/default_key_mapping.rst:317 msgid ":kbd:`Ctrl + Cmd + J`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:317 msgid "``script_text_editor/goto_function``" msgstr "``script_text_editor/goto_function``" #: ../../docs/tutorials/editor/default_key_mapping.rst:319 msgid "Go to Line" msgstr "برو به خط" #: ../../docs/tutorials/editor/default_key_mapping.rst:319 #: ../../docs/tutorials/editor/default_key_mapping.rst:427 msgid ":kbd:`Ctrl + L`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:319 msgid ":kbd:`Cmd + L`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:319 msgid "``script_text_editor/goto_line``" msgstr "``script_text_editor/goto_line``" #: ../../docs/tutorials/editor/default_key_mapping.rst:321 msgid "Toggle Breakpoint" msgstr "یک Breakpoint درج کن" #: ../../docs/tutorials/editor/default_key_mapping.rst:321 msgid ":kbd:`F9`" msgstr ":kbd:`F9`" #: ../../docs/tutorials/editor/default_key_mapping.rst:321 msgid "``script_text_editor/toggle_breakpoint``" msgstr "``script_text_editor/toggle_breakpoint``" #: ../../docs/tutorials/editor/default_key_mapping.rst:323 msgid "Remove All Breakpoints" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:323 msgid ":kbd:`Ctrl + Shift + F9`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:323 msgid ":kbd:`Cmd + Shift + F9`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:323 msgid "``script_text_editor/remove_all_breakpoints``" msgstr "``script_text_editor/remove_all_breakpoints``" #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid "Go to Next Breakpoint" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid ":kbd:`Ctrl + .`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:325 msgid "``script_text_editor/goto_next_breakpoint``" msgstr "``script_text_editor/goto_next_breakpoint``" #: ../../docs/tutorials/editor/default_key_mapping.rst:327 msgid "Go to Previous Breakpoint" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:327 msgid ":kbd:`Ctrl + ,`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:327 msgid ":kbd:`Cmd + ,`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:327 msgid "``script_text_editor/goto_previous_breakpoint``" msgstr "``script_text_editor/goto_previous_breakpoint``" #: ../../docs/tutorials/editor/default_key_mapping.rst:329 msgid "Contextual Help" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:329 msgid ":kbd:`Alt + F1`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:329 #, fuzzy msgid ":kbd:`Opt + Shift + Space`" msgstr ":kbd:`Ctrl + Shift + Z`" #: ../../docs/tutorials/editor/default_key_mapping.rst:329 msgid "``script_text_editor/contextual_help``" msgstr "``script_text_editor/contextual_help``" #: ../../docs/tutorials/editor/default_key_mapping.rst:333 #, fuzzy msgid "Script editor" msgstr "ویراستار اسکریپت" #: ../../docs/tutorials/editor/default_key_mapping.rst:338 msgid "``script_editor/find``" msgstr "``script_editor/find``" #: ../../docs/tutorials/editor/default_key_mapping.rst:340 msgid "``script_editor/find_next``" msgstr "``script_editor/find_next``" #: ../../docs/tutorials/editor/default_key_mapping.rst:342 msgid "``script_editor/find_previous``" msgstr "``script_editor/find_previous``" #: ../../docs/tutorials/editor/default_key_mapping.rst:344 msgid "``script_editor/find_in_files``" msgstr "``script_editor/find_in_files``" #: ../../docs/tutorials/editor/default_key_mapping.rst:346 msgid ":kbd:`Shift + Alt + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:346 #, fuzzy msgid ":kbd:`Shift + Opt + Up Arrow`" msgstr ":kbd:`Shift + Alt + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:346 msgid "``script_editor/window_move_up``" msgstr "``script_editor/window_move_up``" #: ../../docs/tutorials/editor/default_key_mapping.rst:348 msgid ":kbd:`Shift + Alt + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:348 #, fuzzy msgid ":kbd:`Shift + Opt + Down Arrow`" msgstr ":kbd:`Shift + Alt + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:348 msgid "``script_editor/window_move_down``" msgstr "``script_editor/window_move_down``" #: ../../docs/tutorials/editor/default_key_mapping.rst:350 msgid "Next Script" msgstr "اسکریپت بعدی" #: ../../docs/tutorials/editor/default_key_mapping.rst:350 msgid ":kbd:`Ctrl + Shift + .`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:350 msgid ":kbd:`Cmd + Shift + .`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:350 msgid "``script_editor/next_script``" msgstr "``script_editor/next_script``" #: ../../docs/tutorials/editor/default_key_mapping.rst:352 msgid "Previous 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/prev_script``" msgstr "``script_editor/prev_script``" #: ../../docs/tutorials/editor/default_key_mapping.rst:354 msgid "Reopen Closed Script" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:354 msgid "``script_editor/reopen_closed_script``" msgstr "``script_editor/reopen_closed_script``" #: ../../docs/tutorials/editor/default_key_mapping.rst:356 msgid "Save" msgstr "ذخیره" #: ../../docs/tutorials/editor/default_key_mapping.rst:356 msgid ":kbd:`Ctrl + Alt + S`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:356 #, fuzzy msgid ":kbd:`Opt + Cmd + S`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:356 msgid "``script_editor/save``" msgstr "``script_editor/save``" #: ../../docs/tutorials/editor/default_key_mapping.rst:358 msgid "Save All" msgstr "ذخیره‌سازی همه" #: ../../docs/tutorials/editor/default_key_mapping.rst:358 msgid "``script_editor/save_all``" msgstr "``script_editor/save_all``" #: ../../docs/tutorials/editor/default_key_mapping.rst:360 msgid "Soft Reload Script" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:360 msgid "``script_editor/reload_script_soft``" msgstr "``script_editor/reload_script_soft``" #: ../../docs/tutorials/editor/default_key_mapping.rst:362 msgid "History Previous" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:362 #: ../../docs/tutorials/editor/default_key_mapping.rst:409 msgid ":kbd:`Alt + Left Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:362 #: ../../docs/tutorials/editor/default_key_mapping.rst:409 #, fuzzy msgid ":kbd:`Opt + Left Arrow`" msgstr ":kbd:`Ctrl + Shift + Z`" #: ../../docs/tutorials/editor/default_key_mapping.rst:362 msgid "``script_editor/history_previous``" msgstr "``script_editor/history_previous``" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 msgid "History Next" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 #: ../../docs/tutorials/editor/default_key_mapping.rst:411 msgid ":kbd:`Alt + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 #: ../../docs/tutorials/editor/default_key_mapping.rst:411 msgid ":kbd:`Opt + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:364 msgid "``script_editor/history_next``" msgstr "``script_editor/history_next``" #: ../../docs/tutorials/editor/default_key_mapping.rst:366 msgid "Close" msgstr "بستن" #: ../../docs/tutorials/editor/default_key_mapping.rst:366 msgid ":kbd:`Ctrl + W`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:366 msgid ":kbd:`Cmd + W`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:366 msgid "``script_editor/close_file``" msgstr "``script_editor/close_file``" #: ../../docs/tutorials/editor/default_key_mapping.rst:368 #: ../../docs/contributing/development/compiling/compiling_for_ios.rst:85 msgid "Run" msgstr "اجرا" #: ../../docs/tutorials/editor/default_key_mapping.rst:368 msgid ":kbd:`Ctrl + Shift + X`" msgstr ":kbd:`Ctrl + Shift + X`" #: ../../docs/tutorials/editor/default_key_mapping.rst:368 msgid ":kbd:`Cmd + Shift + X`" msgstr ":kbd:`Cmd + Shift + X`" #: ../../docs/tutorials/editor/default_key_mapping.rst:368 msgid "``script_editor/run_file``" msgstr "``script_editor/run_file``" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 msgid "Toggle Scripts Panel" msgstr "تغییر پنل اسکریپت ها" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 msgid ":kbd:`Ctrl + \\\\`" msgstr ":kbd:`Ctrl + \\\\`" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 msgid ":kbd:`Cmd + \\\\`" msgstr ":kbd:`Cmd + \\\\`" #: ../../docs/tutorials/editor/default_key_mapping.rst:370 msgid "``script_editor/toggle_scripts_panel``" msgstr "``script_editor/toggle_scripts_panel``" #: ../../docs/tutorials/editor/default_key_mapping.rst:372 msgid "``script_editor/zoom_in``" msgstr "``script_editor/zoom_in``" #: ../../docs/tutorials/editor/default_key_mapping.rst:374 msgid "``script_editor/zoom_out``" msgstr "``script_editor/zoom_out``" #: ../../docs/tutorials/editor/default_key_mapping.rst:376 msgid "Reset Zoom" msgstr "باز‌نشانی مقیاس" #: ../../docs/tutorials/editor/default_key_mapping.rst:376 msgid "``script_editor/reset_zoom``" msgstr "``script_editor/reset_zoom``" #: ../../docs/tutorials/editor/default_key_mapping.rst:380 #, fuzzy msgid "Editor output" msgstr "ویرایشگر" #: ../../docs/tutorials/editor/default_key_mapping.rst:385 #: ../../docs/tutorials/editor/default_key_mapping.rst:497 msgid "Copy Selection" msgstr "کپی انتخاب" #: ../../docs/tutorials/editor/default_key_mapping.rst:385 msgid "``editor/copy_output``" msgstr "``editor/copy_output``" #: ../../docs/tutorials/editor/default_key_mapping.rst:387 msgid "Clear Output" msgstr "پاک کردن خروجی" #: ../../docs/tutorials/editor/default_key_mapping.rst:387 msgid "``editor/clear_output``" msgstr "``editor/clear_output``" #: ../../docs/tutorials/editor/default_key_mapping.rst:391 #: ../../docs/tutorials/scripting/debug/debugger_panel.rst:14 msgid "Debugger" msgstr "اشکال زدا" #: ../../docs/tutorials/editor/default_key_mapping.rst:396 msgid "Step Into" msgstr "قدم به درون" #: ../../docs/tutorials/editor/default_key_mapping.rst:396 msgid ":kbd:`F11`" msgstr ":kbd:`F11`" #: ../../docs/tutorials/editor/default_key_mapping.rst:396 msgid "``debugger/step_into``" msgstr "``debugger/step_into``" #: ../../docs/tutorials/editor/default_key_mapping.rst:398 msgid "Step Over" msgstr "قدم برداشتن" #: ../../docs/tutorials/editor/default_key_mapping.rst:398 msgid ":kbd:`F10`" msgstr ":kbd:`F10`" #: ../../docs/tutorials/editor/default_key_mapping.rst:398 msgid "``debugger/step_over``" msgstr "``debugger/step_over``" #: ../../docs/tutorials/editor/default_key_mapping.rst:400 msgid "Continue" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:400 msgid ":kbd:`F12`" msgstr ":kbd:`F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:400 msgid "``debugger/continue``" msgstr "``debugger/continue``" #: ../../docs/tutorials/editor/default_key_mapping.rst:404 #, fuzzy msgid "File dialog" msgstr "دیالوگ پرونده" #: ../../docs/tutorials/editor/default_key_mapping.rst:409 msgid "Go Back" msgstr "به عقب بازگردید" #: ../../docs/tutorials/editor/default_key_mapping.rst:409 msgid "``file_dialog/go_back``" msgstr "``file_dialog/go_back``" #: ../../docs/tutorials/editor/default_key_mapping.rst:411 msgid "Go Forward" msgstr "جلو بروید" #: ../../docs/tutorials/editor/default_key_mapping.rst:411 msgid "``file_dialog/go_forward``" msgstr "``file_dialog/go_forward``" #: ../../docs/tutorials/editor/default_key_mapping.rst:413 msgid "Go Up" msgstr "بالا بروید" #: ../../docs/tutorials/editor/default_key_mapping.rst:413 msgid "``file_dialog/go_up``" msgstr "``file_dialog/go_up``" #: ../../docs/tutorials/editor/default_key_mapping.rst:415 msgid "Refresh" msgstr "نوسازی" #: ../../docs/tutorials/editor/default_key_mapping.rst:415 msgid "``file_dialog/refresh``" msgstr "``file_dialog/refresh``" #: ../../docs/tutorials/editor/default_key_mapping.rst:417 msgid "Toggle Hidden Files" msgstr "تغییر فایل‌های پنهان" #: ../../docs/tutorials/editor/default_key_mapping.rst:417 msgid ":kbd:`Ctrl + H`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:417 msgid ":kbd:`Cmd + H`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:417 msgid "``file_dialog/toggle_hidden_files``" msgstr "``file_dialog/toggle_hidden_files``" #: ../../docs/tutorials/editor/default_key_mapping.rst:419 msgid "Toggle Favorite" msgstr "تغییر موارد دلخواه" #: ../../docs/tutorials/editor/default_key_mapping.rst:419 #, fuzzy msgid ":kbd:`Opt + F`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:419 msgid "``file_dialog/toggle_favorite``" msgstr "``file_dialog/toggle_favorite``" #: ../../docs/tutorials/editor/default_key_mapping.rst:421 msgid "Toggle Mode" msgstr "تغییر حالت" #: ../../docs/tutorials/editor/default_key_mapping.rst:421 msgid ":kbd:`Alt + V`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:421 #, fuzzy msgid ":kbd:`Opt + V`" msgstr ":kbd:`Ctrl + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:421 msgid "``file_dialog/toggle_mode``" msgstr "``file_dialog/toggle_mode``" #: ../../docs/tutorials/editor/default_key_mapping.rst:423 msgid "Create Folder" msgstr "ساخت پوشه" #: ../../docs/tutorials/editor/default_key_mapping.rst:423 #: ../../docs/tutorials/editor/default_key_mapping.rst:559 msgid ":kbd:`Ctrl + N`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:423 #: ../../docs/tutorials/editor/default_key_mapping.rst:559 msgid ":kbd:`Cmd + N`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:423 msgid "``file_dialog/create_folder``" msgstr "``file_dialog/create_folder``" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 #: ../../docs/tutorials/editor/default_key_mapping.rst:444 #: ../../docs/tutorials/editor/default_key_mapping.rst:459 msgid "Delete" msgstr "زدایش" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 #: ../../docs/tutorials/editor/default_key_mapping.rst:444 #: ../../docs/tutorials/editor/default_key_mapping.rst:459 #: ../../docs/tutorials/editor/default_key_mapping.rst:480 #: ../../docs/tutorials/editor/default_key_mapping.rst:501 msgid ":kbd:`Del`" msgstr ":kbd:`Del`" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 #: ../../docs/tutorials/editor/default_key_mapping.rst:444 #: ../../docs/tutorials/editor/default_key_mapping.rst:459 #: ../../docs/tutorials/editor/default_key_mapping.rst:480 #: ../../docs/tutorials/editor/default_key_mapping.rst:501 #: ../../docs/tutorials/editor/default_key_mapping.rst:571 msgid ":kbd:`Cmd + BkSp`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:425 msgid "``file_dialog/delete``" msgstr "``file_dialog/delete``" #: ../../docs/tutorials/editor/default_key_mapping.rst:427 msgid "Focus Path" msgstr "مسیر تمرکز" #: ../../docs/tutorials/editor/default_key_mapping.rst:427 msgid "``file_dialog/focus_path``" msgstr "``file_dialog/focus_path``" #: ../../docs/tutorials/editor/default_key_mapping.rst:429 msgid "Move Favorite Up" msgstr "انتقال موارد دلخواه به بالا" #: ../../docs/tutorials/editor/default_key_mapping.rst:429 #: ../../docs/tutorials/editor/default_key_mapping.rst:465 msgid ":kbd:`Ctrl + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:429 #: ../../docs/tutorials/editor/default_key_mapping.rst:465 msgid ":kbd:`Cmd + Up Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:429 msgid "``file_dialog/move_favorite_up``" msgstr "``file_dialog/move_favorite_up``" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 msgid "Move Favorite Down" msgstr "انتقال موارد دلخواه به پایین" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 #: ../../docs/tutorials/editor/default_key_mapping.rst:467 msgid ":kbd:`Ctrl + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 #: ../../docs/tutorials/editor/default_key_mapping.rst:467 msgid ":kbd:`Cmd + Down Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:431 msgid "``file_dialog/move_favorite_down``" msgstr "``file_dialog/move_favorite_down``" #: ../../docs/tutorials/editor/default_key_mapping.rst:435 #, fuzzy msgid "FileSystem dock" msgstr "قایل‌سیستم داک" #: ../../docs/tutorials/editor/default_key_mapping.rst:440 msgid "Copy Path" msgstr "کپی کردن مسیر" #: ../../docs/tutorials/editor/default_key_mapping.rst:440 msgid "``filesystem_dock/copy_path``" msgstr "``filesystem_dock/copy_path``" #: ../../docs/tutorials/editor/default_key_mapping.rst:442 #: ../../docs/tutorials/editor/default_key_mapping.rst:463 #: ../../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:442 #: ../../docs/tutorials/editor/default_key_mapping.rst:463 #: ../../docs/tutorials/editor/default_key_mapping.rst:476 msgid ":kbd:`Ctrl + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:442 #: ../../docs/tutorials/editor/default_key_mapping.rst:463 #: ../../docs/tutorials/editor/default_key_mapping.rst:476 msgid ":kbd:`Cmd + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:442 msgid "``filesystem_dock/duplicate``" msgstr "``filesystem_dock/duplicate``" #: ../../docs/tutorials/editor/default_key_mapping.rst:444 msgid "``filesystem_dock/delete``" msgstr "``filesystem_dock/delete``" #: ../../docs/tutorials/editor/default_key_mapping.rst:448 #, fuzzy msgid "Scene tree dock" msgstr "درخت پرده" #: ../../docs/tutorials/editor/default_key_mapping.rst:453 msgid "Add Child Node" msgstr "افزودن node زیرمجموعه" #: ../../docs/tutorials/editor/default_key_mapping.rst:453 msgid "``scene_tree/add_child_node``" msgstr "``scene_tree/add_child_node``" #: ../../docs/tutorials/editor/default_key_mapping.rst:455 msgid "Batch Rename" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:455 msgid ":kbd:`Cmd + F2`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:455 msgid "``scene_tree/batch_rename``" msgstr "``scene_tree/batch_rename``" #: ../../docs/tutorials/editor/default_key_mapping.rst:457 msgid "Copy Node Path" msgstr "کپی کردن مسیر node" #: ../../docs/tutorials/editor/default_key_mapping.rst:457 #, fuzzy msgid ":kbd:`Ctrl + Shift + C`" msgstr ":kbd:`Ctrl + Shift + Z`" #: ../../docs/tutorials/editor/default_key_mapping.rst:457 #, fuzzy msgid ":kbd:`Cmd + Shift + C`" msgstr ":kbd:`Cmd + Shift + Z`" #: ../../docs/tutorials/editor/default_key_mapping.rst:457 msgid "``scene_tree/copy_node_path``" msgstr "``scene_tree/copy_node_path``" #: ../../docs/tutorials/editor/default_key_mapping.rst:459 msgid "``scene_tree/delete``" msgstr "``scene_tree/delete``" #: ../../docs/tutorials/editor/default_key_mapping.rst:461 msgid "Force Delete" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:461 msgid ":kbd:`Shift + Del`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:461 msgid "``scene_tree/delete_no_confirm``" msgstr "``scene_tree/delete_no_confirm``" #: ../../docs/tutorials/editor/default_key_mapping.rst:463 msgid "``scene_tree/duplicate``" msgstr "``scene_tree/duplicate``" #: ../../docs/tutorials/editor/default_key_mapping.rst:465 msgid "``scene_tree/move_up``" msgstr "``scene_tree/move_up``" #: ../../docs/tutorials/editor/default_key_mapping.rst:467 msgid "``scene_tree/move_down``" msgstr "``scene_tree/move_down``" #: ../../docs/tutorials/editor/default_key_mapping.rst:471 #, fuzzy msgid "Animation track editor" msgstr "شرط" #: ../../docs/tutorials/editor/default_key_mapping.rst:476 msgid "``animation_editor/duplicate_selection``" msgstr "``animation_editor/duplicate_selection``" #: ../../docs/tutorials/editor/default_key_mapping.rst:478 msgid "Duplicate Transposed" msgstr "تکثیر جابجایی" #: ../../docs/tutorials/editor/default_key_mapping.rst:478 msgid ":kbd:`Cmd + Shift + D`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:478 msgid "``animation_editor/duplicate_selection_transposed``" msgstr "``animation_editor/duplicate_selection_transposed``" #: ../../docs/tutorials/editor/default_key_mapping.rst:480 #: ../../docs/tutorials/editor/default_key_mapping.rst:501 msgid "Delete Selection" msgstr "حذف برگزیده" #: ../../docs/tutorials/editor/default_key_mapping.rst:480 msgid "``animation_editor/delete_selection``" msgstr "``animation_editor/delete_selection``" #: ../../docs/tutorials/editor/default_key_mapping.rst:482 msgid "Go to Next Step" msgstr "برو به گام بعد" #: ../../docs/tutorials/editor/default_key_mapping.rst:482 msgid ":kbd:`Ctrl + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:482 msgid ":kbd:`Cmd + Right Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:482 msgid "``animation_editor/goto_next_step``" msgstr "``animation_editor/goto_next_step``" #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid "Go to Previous Step" msgstr "برو به گام پیشین" #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid ":kbd:`Ctrl + Left Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid ":kbd:`Cmd + Left Arrow`" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:484 msgid "``animation_editor/goto_prev_step``" msgstr "``animation_editor/goto_prev_step``" #: ../../docs/tutorials/editor/default_key_mapping.rst:488 #, fuzzy msgid "TileMap editor" msgstr "ویرایشگر" #: ../../docs/tutorials/editor/default_key_mapping.rst:493 msgid "Select" msgstr "گزینش" #: ../../docs/tutorials/editor/default_key_mapping.rst:493 msgid "``tiles_editor/selection_tool``" msgstr "``tiles_editor/selection_tool``" #: ../../docs/tutorials/editor/default_key_mapping.rst:495 msgid "Cut Selection" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:495 msgid "``tiles_editor/cut``" msgstr "``tiles_editor/cut``" #: ../../docs/tutorials/editor/default_key_mapping.rst:497 msgid "``tiles_editor/copy``" msgstr "``tiles_editor/copy``" #: ../../docs/tutorials/editor/default_key_mapping.rst:499 #, fuzzy msgid "Paste Selection" msgstr "انتخاب فریم" #: ../../docs/tutorials/editor/default_key_mapping.rst:499 msgid "``tiles_editor/paste``" msgstr "``tiles_editor/paste``" #: ../../docs/tutorials/editor/default_key_mapping.rst:501 msgid "``tiles_editor/delete``" msgstr "``tiles_editor/delete``" #: ../../docs/tutorials/editor/default_key_mapping.rst:503 msgid "Cancel" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:503 #, fuzzy msgid ":kbd:`Esc`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:503 msgid "``tiles_editor/cancel``" msgstr "``tiles_editor/cancel``" #: ../../docs/tutorials/editor/default_key_mapping.rst:505 #: ../../docs/tutorials/2d/using_tilemaps.rst:224 msgid "Paint" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:505 msgid "``tiles_editor/paint_tool``" msgstr "``tiles_editor/paint_tool``" #: ../../docs/tutorials/editor/default_key_mapping.rst:507 #: ../../docs/tutorials/2d/using_tilemaps.rst:253 msgid "Line" msgstr "خط" #: ../../docs/tutorials/editor/default_key_mapping.rst:507 #, fuzzy msgid ":kbd:`L`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:507 msgid "``tiles_editor/line_tool``" msgstr "``tiles_editor/line_tool``" #: ../../docs/tutorials/editor/default_key_mapping.rst:509 msgid "Rect" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:509 msgid "``tiles_editor/rect_tool``" msgstr "``tiles_editor/rect_tool``" #: ../../docs/tutorials/editor/default_key_mapping.rst:511 msgid "Bucket" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:511 #, fuzzy msgid ":kbd:`B`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:511 msgid "``tiles_editor/bucket_tool``" msgstr "``tiles_editor/bucket_tool``" #: ../../docs/tutorials/editor/default_key_mapping.rst:513 #: ../../docs/tutorials/2d/using_tilemaps.rst:316 msgid "Picker" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:513 msgid ":kbd:`P`" msgstr ":kbd:`P`" #: ../../docs/tutorials/editor/default_key_mapping.rst:513 msgid "``tiles_editor/picker``" msgstr "``tiles_editor/picker``" #: ../../docs/tutorials/editor/default_key_mapping.rst:515 #: ../../docs/tutorials/2d/using_tilemaps.rst:328 msgid "Eraser" msgstr "پاک‌کن" #: ../../docs/tutorials/editor/default_key_mapping.rst:515 msgid "``tiles_editor/eraser``" msgstr "``tiles_editor/eraser``" #: ../../docs/tutorials/editor/default_key_mapping.rst:517 msgid "Flip Horizontally" msgstr "به صورت افقی قرینه شود" #: ../../docs/tutorials/editor/default_key_mapping.rst:517 #, fuzzy msgid ":kbd:`C`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:517 msgid "``tiles_editor/flip_tile_horizontal``" msgstr "``tiles_editor/flip_tile_horizontal``" #: ../../docs/tutorials/editor/default_key_mapping.rst:519 msgid "Flip Vertically" msgstr "به صورت عمودی قرینه شود" #: ../../docs/tutorials/editor/default_key_mapping.rst:519 #, fuzzy msgid ":kbd:`V`" msgstr ":kbd:`Ctrl + F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:519 msgid "``tiles_editor/flip_tile_vertical``" msgstr "``tiles_editor/flip_tile_vertical``" #: ../../docs/tutorials/editor/default_key_mapping.rst:521 msgid "Rotate Left" msgstr "چرخش به چپ" #: ../../docs/tutorials/editor/default_key_mapping.rst:521 msgid ":kbd:`Z`" msgstr ":kbd:`Z`" #: ../../docs/tutorials/editor/default_key_mapping.rst:521 msgid "``tiles_editor/rotate_tile_left``" msgstr "``tiles_editor/rotate_tile_left``" #: ../../docs/tutorials/editor/default_key_mapping.rst:523 msgid "Rotate Right" msgstr "چرخش به راست" #: ../../docs/tutorials/editor/default_key_mapping.rst:523 msgid ":kbd:`X`" msgstr ":kbd:`X`" #: ../../docs/tutorials/editor/default_key_mapping.rst:523 msgid "``tiles_editor/rotate_tile_right``" msgstr "``tiles_editor/rotate_tile_right``" #: ../../docs/tutorials/editor/default_key_mapping.rst:527 #, fuzzy msgid "TileSet Editor" msgstr "ویرایشگر" #: ../../docs/tutorials/editor/default_key_mapping.rst:532 msgid "Next Coordinate" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:532 msgid "``tileset_editor/next_shape``" msgstr "``tileset_editor/next_shape``" #: ../../docs/tutorials/editor/default_key_mapping.rst:534 msgid "Previous Coordinate" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:534 msgid ":kbd:`PgUp`" msgstr ":kbd:`PgUp`" #: ../../docs/tutorials/editor/default_key_mapping.rst:534 msgid "``tileset_editor/previous_shape``" msgstr "``tileset_editor/previous_shape``" #: ../../docs/tutorials/editor/default_key_mapping.rst:536 msgid "Region Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:536 msgid ":kbd:`1`" msgstr ":kbd:`1`" #: ../../docs/tutorials/editor/default_key_mapping.rst:536 msgid "``tileset_editor/editmode_region``" msgstr "``tileset_editor/editmode_region``" #: ../../docs/tutorials/editor/default_key_mapping.rst:538 msgid "Collision Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:538 msgid ":kbd:`2`" msgstr ":kbd:`2`" #: ../../docs/tutorials/editor/default_key_mapping.rst:538 msgid "``tileset_editor/editmode_collision``" msgstr "``tileset_editor/editmode_collision``" #: ../../docs/tutorials/editor/default_key_mapping.rst:540 msgid "Occlusion Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:540 msgid ":kbd:`3`" msgstr ":kbd:`3`" #: ../../docs/tutorials/editor/default_key_mapping.rst:540 msgid "``tileset_editor/editmode_occlusion``" msgstr "``tileset_editor/editmode_occlusion``" #: ../../docs/tutorials/editor/default_key_mapping.rst:542 msgid "Navigation Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:542 msgid ":kbd:`4`" msgstr ":kbd:`4`" #: ../../docs/tutorials/editor/default_key_mapping.rst:542 msgid "``tileset_editor/editmode_navigation``" msgstr "``tileset_editor/editmode_navigation``" #: ../../docs/tutorials/editor/default_key_mapping.rst:544 msgid "Bitmask Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:544 msgid ":kbd:`5`" msgstr ":kbd:`5`" #: ../../docs/tutorials/editor/default_key_mapping.rst:544 msgid "``tileset_editor/editmode_bitmask``" msgstr "``tileset_editor/editmode_bitmask``" #: ../../docs/tutorials/editor/default_key_mapping.rst:546 msgid "Priority Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:546 msgid ":kbd:`6`" msgstr ":kbd:`6`" #: ../../docs/tutorials/editor/default_key_mapping.rst:546 msgid "``tileset_editor/editmode_priority``" msgstr "``tileset_editor/editmode_priority``" #: ../../docs/tutorials/editor/default_key_mapping.rst:548 msgid "Icon Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:548 msgid ":kbd:`7`" msgstr ":kbd:`7`" #: ../../docs/tutorials/editor/default_key_mapping.rst:548 msgid "``tileset_editor/editmode_icon``" msgstr "``tileset_editor/editmode_icon``" #: ../../docs/tutorials/editor/default_key_mapping.rst:550 msgid "Z Index Mode" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:550 msgid ":kbd:`8`" msgstr ":kbd:`8`" #: ../../docs/tutorials/editor/default_key_mapping.rst:550 msgid "``tileset_editor/editmode_z_index``" msgstr "``tileset_editor/editmode_z_index``" #: ../../docs/tutorials/editor/default_key_mapping.rst:554 #, fuzzy msgid "Project manager" msgstr "مدیر پروژه" #: ../../docs/tutorials/editor/default_key_mapping.rst:559 #, fuzzy msgid "New Project" msgstr "تولید محتوا" #: ../../docs/tutorials/editor/default_key_mapping.rst:559 msgid "``project_manager/new_project``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:561 #, fuzzy msgid "Import Project" msgstr "تولید محتوا" #: ../../docs/tutorials/editor/default_key_mapping.rst:561 msgid "``project_manager/import_project``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:563 msgid "Scan for Projects" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:563 msgid "``project_manager/scan_projects``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:565 #, fuzzy msgid "Edit Project" msgstr "توضیح" #: ../../docs/tutorials/editor/default_key_mapping.rst:565 #, fuzzy msgid ":kbd:`Ctrl + E`" msgstr ":kbd:`Ctrl + Q`" #: ../../docs/tutorials/editor/default_key_mapping.rst:565 #, fuzzy msgid ":kbd:`Cmd + E`" msgstr ":kbd:`Cmd + Z`" #: ../../docs/tutorials/editor/default_key_mapping.rst:565 msgid "``project_manager/edit_project``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:567 #, fuzzy msgid "Run Project" msgstr "توضیح" #: ../../docs/tutorials/editor/default_key_mapping.rst:567 msgid "``project_manager/run_project``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:569 #, fuzzy msgid "Rename Project" msgstr "تولید محتوا" #: ../../docs/tutorials/editor/default_key_mapping.rst:569 #, fuzzy msgid ":kbd:`F2`" msgstr ":kbd:`F12`" #: ../../docs/tutorials/editor/default_key_mapping.rst:569 #, fuzzy msgid ":kbd:`Enter`" msgstr ":kbd:`E`" #: ../../docs/tutorials/editor/default_key_mapping.rst:569 msgid "``project_manager/rename_project``" msgstr "" #: ../../docs/tutorials/editor/default_key_mapping.rst:571 #, fuzzy msgid "Remove Project" msgstr "تولید محتوا" #: ../../docs/tutorials/editor/default_key_mapping.rst:571 #, fuzzy msgid ":kbd:`Delete`" msgstr ":kbd:`Del`" #: ../../docs/tutorials/editor/default_key_mapping.rst:571 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 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_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 " "work on new or existing projects on Android devices." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:12 msgid "" "The Android editor is in early access, while we continue to refine the " "experience, and bring it up to parity with the Desktop version of the " "editor. See :ref:`doc_using_the_android_editor_limitations` below." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:16 msgid "Android devices support" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:18 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:20 msgid "Android tablets, foldables and large phones" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:21 msgid "Android-powered netbooks" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:22 #, fuzzy msgid "Chromebooks supporting Android apps" msgstr "تولید محتوا" #: ../../docs/tutorials/editor/using_the_android_editor.rst:27 #, fuzzy msgid "Required Permissions" msgstr "پیش نیاز ها" #: ../../docs/tutorials/editor/using_the_android_editor.rst:29 msgid "" "The Android editor requires the `All files access permission `__. The permission allows the editor to create / import / read " "project files from any file locations on the device. Without the permission, " "the editor is still functional, but has limited access to the device's files " "and directories." msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:34 msgid "Limitations & known issues" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:36 msgid "Here are the known limitations and issues of the Android editor:" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:38 msgid "No C#/Mono support" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:39 #, fuzzy msgid "No support for external script editors" msgstr "شرط" #: ../../docs/tutorials/editor/using_the_android_editor.rst:40 msgid "" "While available, the *Vulkan Forward+* renderer is not recommended due to " "severe performance issues" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:41 msgid "" "No support for building and exporting an Android APK binary. As a " "workaround, you can generate and export a `Godot PCK or ZIP file `__" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:43 msgid "No support for building and exporting binaries for other platforms" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:44 msgid "UX not optimized for Android phones form-factor" msgstr "" #: ../../docs/tutorials/editor/using_the_android_editor.rst:45 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:48 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:52 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:28 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:31 msgid "**Mobile browsers are currently not supported.**" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:33 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:38 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:45 #: ../../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:183 #: ../../docs/tutorials/assets_pipeline/exporting_3d_scenes.rst:24 #: ../../docs/tutorials/export/exporting_for_web.rst:167 #: ../../docs/tutorials/performance/general_optimization.rst:76 #: ../../docs/tutorials/physics/large_world_coordinates.rst:222 msgid "Limitations" msgstr "محدودیت‌ها" #: ../../docs/tutorials/editor/using_the_web_editor.rst:47 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:50 msgid "No C#/Mono support." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:51 msgid "No GDExtension support." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:52 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:55 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:58 msgid "The editor won't warn you when closing the tab with unsaved changes." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:59 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:63 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:66 #, fuzzy msgid "No support for external script editors." msgstr "شرط" #: ../../docs/tutorials/editor/using_the_web_editor.rst:67 msgid "No support for Android one-click deploy." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:71 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:76 #, fuzzy msgid "Importing a project" msgstr "تولید محتوا" #: ../../docs/tutorials/editor/using_the_web_editor.rst:78 msgid "To import an existing project, the current process is as follows:" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:80 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:82 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:85 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:88 msgid "Click **Install & Edit** and the project will open in the editor." msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:92 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:96 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:100 #, fuzzy msgid "Editing and running a project" msgstr "تولید محتوا" #: ../../docs/tutorials/editor/using_the_web_editor.rst:102 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:107 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:113 msgid "Where are my project files?" msgstr "" #: ../../docs/tutorials/editor/using_the_web_editor.rst:115 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:119 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:124 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 #, fuzzy msgid "Command line reference" msgstr "شرط" #: ../../docs/tutorials/editor/command_line_tutorial.rst:34 msgid "**Legend**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:36 msgid "" "|release| Available in editor builds, debug export templates and release " "export templates." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:30 msgid "release" msgstr "رهش" #: ../../docs/tutorials/editor/command_line_tutorial.rst:37 msgid "|debug| Available in editor builds and debug export templates only." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:31 msgid "debug" msgstr "اشکال‌زدایی" #: ../../docs/tutorials/editor/command_line_tutorial.rst:38 msgid "|editor| Only available in editor builds." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:32 msgid "editor" msgstr "ویراستار" #: ../../docs/tutorials/editor/command_line_tutorial.rst:40 msgid "" "Note that unknown command line arguments have no effect whatsoever. The " "engine will **not** warn you when using a command line argument that doesn't " "exist with a given build type." msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:44 msgid "**General options**" msgstr "" #: ../../docs/tutorials/editor/command_line_tutorial.rst:47 #: ../../docs/tutorials/editor/command_line_tutorial.rst: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:92 #: ../../docs/tutorials/export/exporting_for_macos.rst:112 #: ../../docs/tutorials/export/exporting_for_macos.rst:145 #: ../../docs/tutorials/export/exporting_for_macos.rst:188 #: ../../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:155 #: ../../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:23 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:759 #: ../../docs/tutorials/shaders/shader_reference/shading_language.rst:838 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:15 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:100 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:161 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:267 #: ../../docs/tutorials/shaders/shader_reference/spatial_shader.rst:437 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:17 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:54 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:103 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:206 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:279 #: ../../docs/tutorials/shaders/shader_reference/canvas_item_shader.rst:333 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:34 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:59 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:84 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:137 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:154 #: ../../docs/tutorials/shaders/shader_reference/particle_shader.rst:184 #: ../../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:36 #: ../../docs/tutorials/shaders/shader_reference/fog_shader.rst:64 #: ../../docs/tutorials/shaders/visual_shaders.rst:125 #: ../../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:115 #: ../../docs/tutorials/xr/xr_action_map.rst:187 #: ../../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 "``--version``" #: ../../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 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 "``--profiling``" #: ../../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 "``--debug-collisions``" #: ../../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 "``--debug-navigation``" #: ../../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 "``--disable-render-loop``" #: ../../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 "``--disable-crash-handler``" #: ../../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 "``--print-fps``" #: ../../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