diff --git a/404.rst b/404.rst index f39163954..bcb137db9 100644 --- a/404.rst +++ b/404.rst @@ -57,6 +57,7 @@ Page not found const newUrl = window.location.href.replace(window.location.pathname, currentBasePath + to); window.location.replace(newUrl); } + break; } } } diff --git a/_static/redirects.csv b/_static/redirects.csv index 948e727c9..0f36d8ebb 100644 --- a/_static/redirects.csv +++ b/_static/redirects.csv @@ -2,21 +2,21 @@ source,destination /about/index.html,/index.html /about/troubleshooting.html,/tutorials/troubleshooting.html /classes/_classes.html,/classes/ -/community/tutorials/3d/mesh_generation_with_heightmap_and_shaders.html,/tutorials/3d/mesh_generation_with_heightmap_and_shaders.html -/community/tutorials/gdnative/gdnative-c-example.html,/tutorials/plugins/gdnative/gdnative-c-example.html +/community/tutorials/3d/mesh_generation_with_heightmap_and_shaders.html,/tutorials/3d/procedural_geometry/index.html +/community/tutorials/gdnative/gdnative-c-example.html,/engine_details/engine_api/gdextension/gdextension_c_example.html /community/tutorials/gdnative/index.html,/tutorials/plugins/gdnative/index.html -/community/tutorials/vr/index.html,/tutorials/vr/index.html -/community/tutorials/vr/vr_primer.html,/tutorials/vr/vr_primer.html +/community/tutorials/vr/index.html,/tutorials/xr/index.html +/community/tutorials/vr/vr_primer.html,/tutorials/xr/index.html /content/3d/making_trees.html,/tutorials/content/making_trees.html /development/compiling/compiling_for_android.html,/engine_details/development/compiling/compiling_for_android.html /development/compiling/compiling_for_ios.html,/engine_details/development/compiling/compiling_for_ios.html /development/compiling/compiling_for_linuxbsd.html,/engine_details/development/compiling/compiling_for_linuxbsd.html /development/compiling/compiling_for_macos.html,/engine_details/development/compiling/compiling_for_macos.html -/development/compiling/compiling_for_uwp.html,/engine_details/development/compiling/compiling_for_uwp.html +/development/compiling/compiling_for_uwp.html,/about/faq.html#which-platforms-are-supported-by-godot /development/compiling/compiling_for_web.html,/engine_details/development/compiling/compiling_for_web.html /development/compiling/compiling_for_windows.html,/engine_details/development/compiling/compiling_for_windows.html /development/compiling/compiling_for_x11.html,/engine_details/development/compiling/compiling_for_linuxbsd.html -/development/compiling/compiling_with_mono.html,/engine_details/development/compiling/compiling_with_mono.html +/development/compiling/compiling_with_mono.html,/engine_details/development/compiling/compiling_with_dotnet.html /development/compiling/compiling_with_script_encryption_key.html,/engine_details/development/compiling/compiling_with_script_encryption_key.html /development/compiling/cross-compiling_for_ios_on_linux.html,/engine_details/development/compiling/cross-compiling_for_ios_on_linux.html /development/compiling/getting_source.html,/engine_details/development/compiling/getting_source.html @@ -45,21 +45,21 @@ source,destination /development/cpp/macos_debug.html,/engine_details/development/debugging/macos_debug.html /development/cpp/object_class.html,/engine_details/architecture/object_class.html /development/cpp/unit_testing.html,/engine_details/architecture/unit_testing.html -/development/cpp/using_cpp_profilers.html,/engine_details/development/debugging/using_cpp_profilers.html +/development/cpp/using_cpp_profilers.html,/engine_details/development/profiling/index.html /development/cpp/variant_class.html,/engine_details/architecture/variant_class.html /development/cpp/vulkan/index.html,/engine_details/development/debugging/vulkan/index.html /development/cpp/vulkan/vulkan_validation_layers.html,/engine_details/development/debugging/vulkan/vulkan_validation_layers.html /development/editor/creating_icons.html,/engine_details/editor/creating_icons.html /development/editor/index.html,/engine_details/editor/index.html /development/editor/introduction_to_editor_development.html,/engine_details/editor/introduction_to_editor_development.html -/development/file_formats/gdscript_grammar.html,/engine_details/development/file_formats/gdscript_grammar.html -/development/file_formats/index.html,/engine_details/development/file_formats/index.html -/development/file_formats/tscn.html,/engine_details/development/file_formats/tscn.html +/development/file_formats/gdscript_grammar.html,/engine_details/file_formats/index.html +/development/file_formats/index.html,/engine_details/file_formats/index.html +/development/file_formats/tscn.html,/engine_details/file_formats/tscn.html /development/plugins/import_plugins.html,/tutorials/plugins/editor/import_plugins.html /development/plugins/index.html,/tutorials/plugins/editor/index.html /development/plugins/making_plugins.html,/tutorials/plugins/editor/making_plugins.html /getting_started/editor/command_line_tutorial.html,/tutorials/editor/command_line_tutorial.html -/getting_started/editor/default_key_mapping.html,/tutorials/editor/default_key_mapping.html +/getting_started/editor/default_key_mapping.html,/tutorials/editor/index.html /getting_started/editor/external_editor.html,/tutorials/editor/external_editor.html /getting_started/editor/using_the_web_editor.html,/tutorials/editor/using_the_web_editor.html /getting_started/scripting/c_sharp/c_sharp_basics.html,/tutorials/scripting/c_sharp/c_sharp_basics.html @@ -77,7 +77,7 @@ source,destination /getting_started/scripting/gdscript/index.html,/tutorials/scripting/gdscript/index.html /getting_started/scripting/gdscript/static_typing.html,/tutorials/scripting/gdscript/static_typing.html /getting_started/scripting/gdscript/warning_system.html,/tutorials/scripting/gdscript/warning_system.html -/getting_started/step_by_step/exporting.html,/tutorials/export/exporting_basics.html +/getting_started/step_by_step/exporting.html,/tutorials/export/exporting_projects.html /getting_started/step_by_step/filesystem.html,/tutorials/scripting/filesystem.html /getting_started/step_by_step/godot_design_philosophy.html,/getting_started/introduction/godot_design_philosophy.html /getting_started/step_by_step/resources.html,/tutorials/scripting/resources.html @@ -96,7 +96,7 @@ source,destination /getting_started/workflow/assets/importing_scenes.html,/tutorials/assets_pipeline/importing_scenes.html /getting_started/workflow/assets/importing_translations.html,/tutorials/assets_pipeline/importing_translations.html /getting_started/workflow/assets/index.html,/tutorials/assets_pipeline/index.html -/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.html,/tutorials/best_practices/autoloads_versus_internal_nodes.html +/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.html,/tutorials/best_practices/autoloads_versus_regular_nodes.html /getting_started/workflow/best_practices/data_preferences.html,/tutorials/best_practices/data_preferences.html /getting_started/workflow/best_practices/godot_interfaces.html,/tutorials/best_practices/godot_interfaces.html /getting_started/workflow/best_practices/godot_notifications.html,/tutorials/best_practices/godot_notifications.html @@ -121,89 +121,89 @@ source,destination /getting_started/workflow/export/one-click_deploy.html,/tutorials/export/one-click_deploy.html /getting_started/workflow/project_setup/project_organization.html,/tutorials/best_practices/project_organization.html /getting_started/workflow/project_setup/version_control_systems.html,/tutorials/best_practices/version_control_systems.html -/learning/editor/2d_and_3d_keybindings.html,/getting_started/editor/2d_and_3d_keybindings.html +/learning/editor/2d_and_3d_keybindings.html,/tutorials/editor/index.html /learning/editor/command_line_tutorial.html,/getting_started/editor/command_line_tutorial.html -/learning/editor/index.html,/getting_started/editor/index.html -/learning/editor/unity_to_godot.html,/getting_started/editor/unity_to_godot.html -/learning/features/2d/,/tutorials/2d/_2d.html +/learning/editor/index.html,/tutorials/editor/index.html +/learning/editor/unity_to_godot.html,/getting_started/introduction/index.html +/learning/features/2d/,/tutorials/2d/index.html /learning/features/2d/2d_transforms.html,/tutorials/2d/2d_transforms.html /learning/features/2d/canvas_layers.html,/tutorials/2d/canvas_layers.html /learning/features/2d/custom_drawing_in_2d.html,/tutorials/2d/custom_drawing_in_2d.html /learning/features/2d/index.html,/tutorials/2d/index.html /learning/features/2d/particle_systems_2d.html,/tutorials/2d/particle_systems_2d.html /learning/features/2d/using_tilemaps.html,/tutorials/2d/using_tilemaps.html -/learning/features/3d/,/tutorials/3d/_3d.html -/learning/features/3d/3d_performance_and_limitations.html,/tutorials/3d/3d_performance_and_limitations.html -/learning/features/3d/baked_lightmaps.html,/tutorials/3d/baked_lightmaps.html +/learning/features/3d/,/tutorials/3d/index.html +/learning/features/3d/3d_performance_and_limitations.html,/tutorials/3d/3d_rendering_limitations.html +/learning/features/3d/baked_lightmaps.html,/tutorials/3d/global_illumination/using_lightmap_gi.html /learning/features/3d/environment_and_post_processing.html,/tutorials/3d/environment_and_post_processing.html -/learning/features/3d/fixed_materials.html,/tutorials/3d/fixed_materials.html -/learning/features/3d/gi_probes.html,/tutorials/3d/gi_probes.html +/learning/features/3d/fixed_materials.html,/tutorials/3d/standard_material_3d.html +/learning/features/3d/gi_probes.html,/tutorials/3d/global_illumination/using_voxel_gi.html /learning/features/3d/high_dynamic_range.html,/tutorials/3d/high_dynamic_range.html -/learning/features/3d/importing_3d_meshes.html,/tutorials/3d/importing_3d_meshes.html -/learning/features/3d/importing_3d_scenes.html,/tutorials/3d/importing_3d_scenes.html +/learning/features/3d/importing_3d_meshes.html,/tutorials/assets_pipeline/importing_3d_scenes/index.html +/learning/features/3d/importing_3d_scenes.html,/tutorials/assets_pipeline/importing_3d_scenes/index.html /learning/features/3d/index.html,/tutorials/3d/index.html /learning/features/3d/introduction_to_3d.html,/tutorials/3d/introduction_to_3d.html /learning/features/3d/lights_and_shadows.html,/tutorials/3d/lights_and_shadows.html -/learning/features/3d/materials.html,/tutorials/3d/materials.html +/learning/features/3d/materials.html,/tutorials/3d/standard_material_3d.html /learning/features/3d/reflection_probes.html,/tutorials/3d/reflection_probes.html /learning/features/3d/spatial_material.html,/tutorials/3d/spatial_material.html /learning/features/3d/using_gridmaps.html,/tutorials/3d/using_gridmaps.html /learning/features/animation/cutout_animation.html,/tutorials/animation/cutout_animation.html /learning/features/animation/index.html,/tutorials/animation/index.html -/learning/features/animation/introduction_2d.html,/tutorials/animation/introduction_2d.html +/learning/features/animation/introduction_2d.html,/tutorials/animation/introduction.html /learning/features/assetlib/index.html,/tutorials/assetlib/index.html -/learning/features/assetlib/uploading_to_assetlib.html,/tutorials/assetlib/uploading_to_assetlib.html +/learning/features/assetlib/uploading_to_assetlib.html,/community/asset_library/submitting_to_assetlib.html /learning/features/assetlib/using_assetlib.html,/tutorials/assetlib/using_assetlib.html /learning/features/assetlib/what_is_assetlib.html,/tutorials/assetlib/what_is_assetlib.html /learning/features/audio/audio_buses.html,/tutorials/audio/audio_buses.html /learning/features/audio/audio_streams.html,/tutorials/audio/audio_streams.html /learning/features/audio/index.html,/tutorials/audio/index.html -/learning/features/gui/,/tutorials/2d/_2d_gui.html +/learning/features/gui/,/tutorials/ui/index.html /learning/features/gui/bbcode_in_richtextlabel.html,/tutorials/gui/bbcode_in_richtextlabel.html /learning/features/gui/custom_gui_controls.html,/tutorials/gui/custom_gui_controls.html -/learning/features/gui/gui_skinning.html,/tutorials/gui/gui_skinning.html -/learning/features/gui/index.html,/tutorials/gui/index.html +/learning/features/gui/gui_skinning.html,/tutorials/ui/gui_skinning.html +/learning/features/gui/index.html,/tutorials/ui/index.html /learning/features/gui/size_and_anchors.html,/tutorials/gui/size_and_anchors.html /learning/features/inputs/index.html,/tutorials/inputs/index.html /learning/features/inputs/inputevent.html,/tutorials/inputs/inputevent.html /learning/features/inputs/mouse_and_input_coordinates.html,/tutorials/inputs/mouse_and_input_coordinates.html -/learning/features/lighting/lighting.html,/tutorials/3d/lighting.html -/learning/features/lighting/shadow_mapping.html,/tutorials/3d/shadow_mapping.html -/learning/features/math/,/tutorials/_math.html +/learning/features/lighting/lighting.html,/tutorials/3d/lights_and_shadows.html +/learning/features/lighting/shadow_mapping.html,/tutorials/3d/lights_and_shadows.html +/learning/features/math/,/tutorials/math/index.html /learning/features/math/index.html,/tutorials/math/index.html /learning/features/math/matrices_and_transforms.html,/tutorials/math/matrices_and_transforms.html /learning/features/math/vector_math.html,/tutorials/math/vector_math.html /learning/features/math/vectors_advanced.html,/tutorials/math/vectors_advanced.html -/learning/features/misc/,/tutorials/_misc_tutorials.html +/learning/features/misc/,/tutorials/index.html /learning/features/misc/background_loading.html,/tutorials/misc/background_loading.html /learning/features/misc/binary_serialization_api.html,/tutorials/misc/binary_serialization_api.html /learning/features/misc/data_paths.html,/tutorials/misc/data_paths.html -/learning/features/misc/encrypting_save_games.html,/tutorials/misc/encrypting_save_games.html +/learning/features/misc/encrypting_save_games.html,/tutorials/io/saving_games.html /learning/features/misc/handling_quit_requests.html,/tutorials/misc/handling_quit_requests.html -/learning/features/misc/index.html,/tutorials/misc/index.html +/learning/features/misc/index.html,/tutorials/index.html /learning/features/misc/internationalizing_games.html,/tutorials/misc/internationalizing_games.html /learning/features/misc/locales.html,/tutorials/misc/locales.html /learning/features/misc/pausing_games.html,/tutorials/misc/pausing_games.html /learning/features/misc/saving_games.html,/tutorials/misc/saving_games.html -/learning/features/networking/,/tutorials/_networking.html +/learning/features/networking/,/tutorials/networking/index.html /learning/features/networking/high_level_multiplayer.html,/tutorials/networking/high_level_multiplayer.html /learning/features/networking/http_client_class.html,/tutorials/networking/http_client_class.html /learning/features/networking/index.html,/tutorials/networking/index.html /learning/features/networking/ssl_certificates.html,/tutorials/networking/ssl_certificates.html -/learning/features/physics/,/tutorials/2d/_2d_physics.html +/learning/features/physics/,/tutorials/physics/index.html /learning/features/physics/index.html,/tutorials/physics/index.html /learning/features/physics/kinematic_character_2d.html,/tutorials/physics/kinematic_character_2d.html /learning/features/physics/physics_introduction.html,/tutorials/physics/physics_introduction.html /learning/features/physics/ray-casting.html,/tutorials/physics/ray-casting.html /learning/features/platform/android_in_app_purchases.html,/tutorials/platform/android_in_app_purchases.html /learning/features/platform/index.html,/tutorials/platform/index.html -/learning/features/platform/services_for_ios.html,/tutorials/platform/services_for_ios.html -/learning/features/shading/,/tutorials/_shaders.html +/learning/features/platform/services_for_ios.html,/tutorials/platform/ios/index.html +/learning/features/shading/,/tutorials/shaders/index.html /learning/features/shading/index.html,/tutorials/shading/index.html /learning/features/shading/screen-reading_shaders.html,/tutorials/shading/screen-reading_shaders.html -/learning/features/shading/shader_materials.html,/tutorials/shading/shader_materials.html -/learning/features/shading/shading_language.html,/tutorials/shading/shading_language.html -/learning/features/viewports/index.html,/tutorials/viewports/index.html +/learning/features/shading/shader_materials.html,/tutorials/shaders/index.html +/learning/features/shading/shading_language.html,/tutorials/shaders/shader_reference/shading_language.html +/learning/features/viewports/index.html,/tutorials/rendering/viewports.html /learning/features/viewports/multiple_resolutions.html,/tutorials/viewports/multiple_resolutions.html /learning/features/viewports/viewports.html,/tutorials/viewports/viewports.html /learning/scripting/c_sharp/c_sharp_basics.html,/getting_started/scripting/c_sharp/c_sharp_basics.html @@ -215,77 +215,77 @@ source,destination /learning/scripting/gdscript/gdscript_format_string.html,/getting_started/scripting/gdscript/gdscript_format_string.html /learning/scripting/gdscript/gdscript_styleguide.html,/getting_started/scripting/gdscript/gdscript_styleguide.html /learning/scripting/gdscript/index.html,/getting_started/scripting/gdscript/index.html -/learning/scripting/index.html,/getting_started/scripting/index.html -/learning/scripting/visual_script/getting_started.html,/getting_started/scripting/visual_script/getting_started.html -/learning/scripting/visual_script/index.html,/getting_started/scripting/visual_script/index.html -/learning/scripting/visual_script/nodes_purposes.html,/getting_started/scripting/visual_script/nodes_purposes.html -/learning/scripting/visual_script/what_is_visual_scripting.html,/getting_started/scripting/visual_script/what_is_visual_scripting.html -/learning/step_by_step/,/tutorials/step_by_step/_step_by_step.html -/learning/step_by_step/animations.html,/getting_started/step_by_step/animations.html +/learning/scripting/index.html,/tutorials/scripting/index.html +/learning/scripting/visual_script/getting_started.html,/tutorials/scripting/index.html +/learning/scripting/visual_script/index.html,/tutorials/scripting/index.html +/learning/scripting/visual_script/nodes_purposes.html,/tutorials/scripting/index.html +/learning/scripting/visual_script/what_is_visual_scripting.html,/tutorials/scripting/index.html +/learning/step_by_step/,/getting_started/step_by_step/index.html +/learning/step_by_step/animations.html,/tutorials/animation/introduction.html /learning/step_by_step/filesystem.html,/getting_started/step_by_step/filesystem.html /learning/step_by_step/godot_design_philosophy.html,/getting_started/step_by_step/godot_design_philosophy.html -/learning/step_by_step/gui_tutorial.html,/tutorials/step_by_step/gui_tutorial.html +/learning/step_by_step/gui_tutorial.html,/tutorials/ui/index.html /learning/step_by_step/index.html,/getting_started/step_by_step/index.html /learning/step_by_step/instancing.html,/getting_started/step_by_step/instancing.html -/learning/step_by_step/instancing_continued.html,/getting_started/step_by_step/instancing_continued.html -/learning/step_by_step/intro_to_the_editor_interface.html,/getting_started/step_by_step/intro_to_the_editor_interface.html +/learning/step_by_step/instancing_continued.html,/getting_started/step_by_step/instancing.html +/learning/step_by_step/intro_to_the_editor_interface.html,/getting_started/introduction/first_look_at_the_editor.html /learning/step_by_step/resources.html,/getting_started/step_by_step/resources.html /learning/step_by_step/scene_tree.html,/getting_started/step_by_step/scene_tree.html -/learning/step_by_step/scenes_and_nodes.html,/getting_started/step_by_step/scenes_and_nodes.html -/learning/step_by_step/scripting.html,/getting_started/step_by_step/scripting.html -/learning/step_by_step/scripting_continued.html,/getting_started/step_by_step/scripting_continued.html -/learning/step_by_step/simple_2d_game.html,/tutorials/step_by_step/simple_2d_game.html +/learning/step_by_step/scenes_and_nodes.html,/getting_started/step_by_step/nodes_and_scenes.html +/learning/step_by_step/scripting.html,/getting_started/step_by_step/scripting_first_script.html +/learning/step_by_step/scripting_continued.html,/getting_started/step_by_step/scripting_player_input.html +/learning/step_by_step/simple_2d_game.html,/getting_started/first_2d_game/index.html /learning/step_by_step/singletons_autoload.html,/getting_started/step_by_step/singletons_autoload.html -/learning/step_by_step/splash_screen.html,/getting_started/step_by_step/splash_screen.html -/learning/step_by_step/ui_code_a_life_bar.html,/getting_started/step_by_step/ui_code_a_life_bar.html -/learning/step_by_step/ui_game_user_interface.html,/getting_started/step_by_step/ui_game_user_interface.html -/learning/step_by_step/ui_introduction_to_the_ui_system.html,/getting_started/step_by_step/ui_introduction_to_the_ui_system.html -/learning/step_by_step/ui_main_menu.html,/getting_started/step_by_step/ui_main_menu.html -/learning/step_by_step/your_first_game.html,/getting_started/step_by_step/your_first_game.html -/learning/workflow/,/tutorials/asset_pipeline/_asset_pipeline.html -/learning/workflow/assets/,/tutorials/asset_pipeline/_import.html -/learning/workflow/assets/exporting_images.html,/tutorials/asset_pipeline/exporting_images.html +/learning/step_by_step/splash_screen.html,/getting_started/step_by_step/index.html +/learning/step_by_step/ui_code_a_life_bar.html,/tutorials/ui/index.html +/learning/step_by_step/ui_game_user_interface.html,/tutorials/ui/index.html +/learning/step_by_step/ui_introduction_to_the_ui_system.html,/tutorials/ui/index.html +/learning/step_by_step/ui_main_menu.html,/tutorials/ui/index.html +/learning/step_by_step/your_first_game.html,/getting_started/first_2d_game/index.html +/learning/workflow/,/tutorials/assets_pipeline/index.html +/learning/workflow/assets/,/tutorials/assets_pipeline/index.html +/learning/workflow/assets/exporting_images.html,/tutorials/assets_pipeline/index.html /learning/workflow/assets/import_process.html,/getting_started/workflow/assets/import_process.html /learning/workflow/assets/importing_audio_samples.html,/getting_started/workflow/assets/importing_audio_samples.html -/learning/workflow/assets/importing_fonts.html,/tutorials/asset_pipeline/importing_fonts.html +/learning/workflow/assets/importing_fonts.html,/tutorials/ui/gui_using_fonts.html /learning/workflow/assets/importing_images.html,/getting_started/workflow/assets/importing_images.html /learning/workflow/assets/importing_scenes.html,/getting_started/workflow/assets/importing_scenes.html -/learning/workflow/assets/importing_textures.html,/tutorials/asset_pipeline/importing_textures.html +/learning/workflow/assets/importing_textures.html,/tutorials/assets_pipeline/importing_images.html /learning/workflow/assets/importing_translations.html,/getting_started/workflow/assets/importing_translations.html /learning/workflow/assets/index.html,/getting_started/workflow/assets/index.html -/learning/workflow/assets/managing_image_files.html,/tutorials/asset_pipeline/managing_image_files.html -/learning/workflow/export/,/tutorials/asset_pipeline/_export.html -/learning/workflow/export/customizing_html5_shell.html,/getting_started/workflow/export/customizing_html5_shell.html +/learning/workflow/assets/managing_image_files.html,/tutorials/assets_pipeline/importing_images.html +/learning/workflow/export/,/tutorials/export/index.html +/learning/workflow/export/customizing_html5_shell.html,/tutorials/platform/web/customizing_html5_shell.html /learning/workflow/export/exporting_for_android.html,/getting_started/workflow/export/exporting_for_android.html /learning/workflow/export/exporting_for_ios.html,/getting_started/workflow/export/exporting_for_ios.html -/learning/workflow/export/exporting_for_pc.html,/getting_started/workflow/export/exporting_for_pc.html +/learning/workflow/export/exporting_for_pc.html,/tutorials/export/index.html /learning/workflow/export/exporting_for_uwp.html,/getting_started/workflow/export/exporting_for_uwp.html /learning/workflow/export/exporting_for_web.html,/getting_started/workflow/export/exporting_for_web.html /learning/workflow/export/exporting_projects.html,/getting_started/workflow/export/exporting_projects.html /learning/workflow/export/feature_tags.html,/getting_started/workflow/export/feature_tags.html /learning/workflow/export/index.html,/getting_started/workflow/export/index.html /learning/workflow/export/one-click_deploy.html,/getting_started/workflow/export/one-click_deploy.html -/learning/workflow/index.html,/getting_started/workflow/index.html -/learning/workflow/project_setup/index.html,/getting_started/workflow/project_setup/index.html +/learning/workflow/index.html,/tutorials/index.html +/learning/workflow/project_setup/index.html,/tutorials/best_practices/project_organization.html /learning/workflow/project_setup/project_organization.html,/getting_started/workflow/project_setup/project_organization.html -/reference/2d_and_3d_keybindings.html,/learning/editor/2d_and_3d_keybindings.html -/reference/_compiling.html,/development/compiling/ -/reference/_developing.html,/development/cpp/ +/reference/2d_and_3d_keybindings.html,/tutorials/editor/index.html +/reference/_compiling.html,/engine_details/development/compiling/index.html +/reference/_developing.html,/engine_details/development/index.html /reference/android_in_app_purchases.html,/learning/features/platform/android_in_app_purchases.html -/reference/batch_building_templates.html,/development/compiling/batch_building_templates.html +/reference/batch_building_templates.html,/engine_details/development/compiling/index.html /reference/bbcode_in_richtextlabel.html,/learning/features/gui/bbcode_in_richtextlabel.html /reference/binary_serialization_api.html,/learning/features/misc/binary_serialization_api.html /reference/command_line_tutorial.html,/learning/editor/command_line_tutorial.html /reference/compiling_for_android.html,/development/compiling/compiling_for_android.html /reference/compiling_for_ios.html,/development/compiling/compiling_for_ios.html -/reference/compiling_for_osx.html,/development/compiling/compiling_for_osx.html +/reference/compiling_for_osx.html,/engine_details/development/compiling/compiling_for_macos.html /reference/compiling_for_uwp.html,/development/compiling/compiling_for_uwp.html /reference/compiling_for_web.html,/development/compiling/compiling_for_web.html /reference/compiling_for_windows.html,/development/compiling/compiling_for_windows.html /reference/compiling_for_x11.html,/development/compiling/compiling_for_x11.html -/reference/configuring_an_ide.html,/development/cpp/configuring_an_ide.html +/reference/configuring_an_ide.html,/engine_details/development/configuring_an_ide/index.html /reference/core_types.html,/development/cpp/core_types.html -/reference/creating_android_modules.html,/development/cpp/creating_android_modules.html +/reference/creating_android_modules.html,/tutorials/platform/android/android_plugin.html /reference/cross-compiling_for_ios_on_linux.html,/development/compiling/cross-compiling_for_ios_on_linux.html /reference/custom_modules_in_c++.html,/development/cpp/custom_modules_in_cpp.html /reference/faq.html,/about/faq.html @@ -297,14 +297,14 @@ source,destination /reference/introduction_to_the_buildsystem.html,/development/compiling/introduction_to_the_buildsystem.html /reference/locales.html,/learning/features/misc/locales.html /reference/object_class.html,/development/cpp/object_class.html -/reference/packaging_godot.html,/development/compiling/packaging_godot.html -/reference/services_for_ios.html,/learning/features/platform/services_for_ios.html -/reference/shading_language.html,/learning/features/shading/shading_language.html -/reference/unity_to_godot.html,/learning/editor/unity_to_godot.html +/reference/packaging_godot.html,/engine_details/development/compiling/index.html +/reference/services_for_ios.html,/tutorials/platform/ios/index.html +/reference/shading_language.html,/tutorials/shaders/shader_reference/shading_language.html +/reference/unity_to_godot.html,/getting_started/introduction/index.html /reference/variant_class.html,/development/cpp/variant_class.html /tutorials/3d/faking_global_illumination.html,/tutorials/3d/global_illumination/faking_global_illumination.html /tutorials/3d/introduction_to_global_illumination.html,/tutorials/3d/global_illumination/introduction_to_global_illumination.html -/tutorials/3d/inverse_kinematics.html,/community/tutorials/3d/inverse_kinematics.html +/tutorials/3d/inverse_kinematics.html,/tutorials/animation/index.html /tutorials/3d/procedural_geometry/immediategeometry.html,/tutorials/3d/procedural_geometry/immediatemesh.html /tutorials/3d/reflection_probes.html,/tutorials/3d/global_illumination/reflection_probes.html /tutorials/3d/sdfgi.html,/tutorials/3d/global_illumination/using_sdfgi.html @@ -314,10 +314,10 @@ source,destination /tutorials/3d/vertex_animation/animating_thousands_of_fish.html,/tutorials/performance/vertex_animation/animating_thousands_of_fish.html /tutorials/3d/vertex_animation/controlling_thousands_of_fish.html,/tutorials/performance/vertex_animation/controlling_thousands_of_fish.html /tutorials/3d/vertex_animation/index.html,/tutorials/performance/vertex_animation/index.html -/tutorials/3d/working_with_3d_skeletons.html,/community/tutorials/3d/working_with_3d_skeletons.html -/tutorials/_plugins.html,/development/plugins/ +/tutorials/3d/working_with_3d_skeletons.html,/tutorials/animation/index.html +/tutorials/_plugins.html,/tutorials/plugins/index.html /tutorials/assetlib/index.html,/community/asset_library/index.html -/tutorials/assetlib/uploading_to_assetlib.html,/community/asset_library/uploading_to_assetlib.html +/tutorials/assetlib/uploading_to_assetlib.html,/community/asset_library/submitting_to_assetlib.html /tutorials/assetlib/using_assetlib.html,/community/asset_library/using_assetlib.html /tutorials/assetlib/what_is_assetlib.html,/community/asset_library/what_is_assetlib.html /tutorials/assets_pipeline/importing_scenes.html,/tutorials/assets_pipeline/importing_3d_scenes/index.html @@ -338,13 +338,13 @@ source,destination /tutorials/gui/size_and_anchors.html,/tutorials/ui/size_and_anchors.html /tutorials/legal/complying_with_licenses.html,/about/complying_with_licenses.html /tutorials/making_plugins.html,/development/plugins/making_plugins.html -/tutorials/mesh_generation_with_heightmap_and_shaders.html,/community/tutorials/3d/mesh_generation_with_heightmap_and_shaders.html +/tutorials/mesh_generation_with_heightmap_and_shaders.html,/tutorials/3d/procedural_geometry/index.html /tutorials/misc/background_loading.html,/tutorials/io/background_loading.html /tutorials/misc/binary_serialization_api.html,/tutorials/io/binary_serialization_api.html /tutorials/misc/change_scenes_manually.html,/tutorials/scripting/change_scenes_manually.html /tutorials/misc/data_paths.html,/tutorials/io/data_paths.html -/tutorials/misc/encrypting_save_games.html,/tutorials/io/encrypting_save_games.html -/tutorials/misc/gles2_gles3_differences.html,/tutorials/rendering/gles2_gles3_differences.html +/tutorials/misc/encrypting_save_games.html,/tutorials/io/saving_games.html +/tutorials/misc/gles2_gles3_differences.html,/tutorials/rendering/renderers.html /tutorials/misc/handling_quit_requests.html,/tutorials/inputs/handling_quit_requests.html /tutorials/misc/instancing_with_signals.html,/tutorials/scripting/instancing_with_signals.html /tutorials/misc/internationalizing_games.html,/tutorials/i18n/internationalizing_games.html @@ -353,9 +353,7 @@ source,destination /tutorials/misc/pausing_games.html,/tutorials/scripting/pausing_games.html /tutorials/misc/running_code_in_the_editor.html,/tutorials/plugins/running_code_in_the_editor.html /tutorials/misc/saving_games.html,/tutorials/io/saving_games.html -/tutorials/navigation/navigation_using_navigationobstacles.html#static-obstacles,/tutorials/navigation/navigation_using_navigationobstacles.html#static-avoidance-obstacles -/tutorials/navigation/navigation_using_navigationobstacles.html#static-obstacles,/tutorials/navigation/navigation_using_navigationobstacles.html#dynamic-avoidance-obstacles -/tutorials/optimization/batching.html,/tutorials/performance/batching.html +/tutorials/optimization/batching.html,/tutorials/performance/index.html /tutorials/optimization/cpu_optimization.html,/tutorials/performance/cpu_optimization.html /tutorials/optimization/general_optimization.html,/tutorials/performance/general_optimization.html /tutorials/optimization/gpu_optimization.html,/tutorials/performance/gpu_optimization.html @@ -371,20 +369,20 @@ source,destination /tutorials/plugins/android/android_plugin.html,/tutorials/platform/android/android_plugin.html /tutorials/plugins/android/index.html,/tutorials/platform/android/index.html /tutorials/plugins/editor/spatial_gizmos.html,/tutorials/plugins/editor/3d_gizmos.html -/tutorials/plugins/gdnative/gdnative-c-example.html,/tutorials/scripting/gdnative/gdnative_c_example.html -/tutorials/plugins/gdnative/gdnative-cpp-example.html,/tutorials/scripting/gdnative/gdnative_cpp_example.html +/tutorials/plugins/gdnative/gdnative-c-example.html,/engine_details/engine_api/gdextension/gdextension_c_example.html +/tutorials/plugins/gdnative/gdnative-cpp-example.html,/tutorials/scripting/cpp/gdextension_cpp_example.html /tutorials/plugins/gdnative/index.html,/tutorials/scripting/gdnative/index.html -/tutorials/plugins/gdextension/gdextension_cpp_example.html,/tutorials/plugins/cpp/gdextension_cpp_example.html -/tutorials/scripting/gdnative/gdnative_c_example.html,/tutorials/plugins/cpp/gdextension_cpp_example.html -/tutorials/scripting/gdnative/gdnative_cpp_example.html,/tutorials/plugins/cpp/gdextension_cpp_example.html +/tutorials/plugins/gdextension/gdextension_cpp_example.html,/tutorials/scripting/cpp/gdextension_cpp_example.html +/tutorials/scripting/gdnative/gdnative_c_example.html,/engine_details/engine_api/gdextension/gdextension_c_example.html +/tutorials/scripting/gdnative/gdnative_cpp_example.html,/tutorials/scripting/cpp/gdextension_cpp_example.html /tutorials/scripting/gdnative/index.html,/tutorials/scripting/gdextension/index.html -/tutorials/scripting/gdnative/what_is_gdnative.html,/tutorials/scripting/gdnative/what_is_gdextension.html +/tutorials/scripting/gdnative/what_is_gdnative.html,/engine_details/engine_api/gdextension/what_is_gdextension.html /tutorials/shading/advanced_postprocessing.html,/tutorials/shaders/advanced_postprocessing.html /tutorials/shading/godot_shader_language_style_guide.html,/tutorials/shaders/shaders_style_guide.html /tutorials/shading/index.html,/tutorials/shaders/index.html /tutorials/shading/migrating_to_godot_shader_language.html,/tutorials/shaders/converting_glsl_to_godot_shaders.html /tutorials/shading/screen-reading_shaders.html,/tutorials/shaders/screen-reading_shaders.html -/tutorials/shading/shader_materials.html,/tutorials/shaders/shader_materials.html +/tutorials/shading/shader_materials.html,/tutorials/shaders/index.html /tutorials/shading/shading_reference/canvas_item_shader.html,/tutorials/shaders/shader_reference/canvas_item_shader.html /tutorials/shading/shading_reference/index.html,/tutorials/shaders/shader_reference/index.html /tutorials/shading/shading_reference/particle_shader.html,/tutorials/shaders/shader_reference/particle_shader.html @@ -393,8 +391,8 @@ source,destination /tutorials/shading/visual_shaders.html,/tutorials/shaders/visual_shaders.html /tutorials/shading/your_first_shader/index.html,/tutorials/shaders/your_first_shader/index.html /tutorials/shading/your_first_shader/your_second_spatial_shader.html,/tutorials/shaders/your_first_shader/your_second_3d_shader.html -/tutorials/threads/thread_safe_apis.html,/tutorials/performance/threads/thread_safe_apis.html -/tutorials/threads/using_multiple_threads.html,/tutorials/performance/threads/using_multiple_threads.html +/tutorials/threads/thread_safe_apis.html,/tutorials/performance/thread_safe_apis.html +/tutorials/threads/using_multiple_threads.html,/tutorials/performance/using_multiple_threads.html /tutorials/viewports/custom_postprocessing.html,/tutorials/shaders/custom_postprocessing.html /tutorials/viewports/multiple_resolutions.html,/tutorials/rendering/multiple_resolutions.html /tutorials/viewports/using_viewport_as_texture.html,/tutorials/shaders/using_viewport_as_texture.html @@ -403,7 +401,9 @@ source,destination /tutorials/platform/consoles.html,https://godotengine.org/consoles/ /tutorials/xr/openxr_passthrough.html,/tutorials/xr/ar_passthrough.html /contributing/development/compiling/compiling_for_uwp.html,/about/faq.html#which-platforms-are-supported-by-godot -/contributing/_contributing.html,https://contributing.godotengine.org +/contributing/_contributing.html,https://contributing.godotengine.org/ +/contributing/,https://contributing.godotengine.org/ +/contributing/index.html,https://contributing.godotengine.org/ /contributing/development/compiling/compiling_with_mono.html,/engine_details/development/compiling/compiling_with_dotnet.html /contributing/architecture/introduction_to_godot_development.html,/engine_details/architecture/index.html /contributing/development/best_practices_for_engine_contributors.html,https://contributing.godotengine.org/en/latest/engine/guidelines/best_practices.html @@ -444,8 +444,8 @@ source,destination /contributing/development/core_and_modules/scripting_development.html,https://contributing.godotengine.org/en/latest/engine/guidelines/gdscript_language_guidelines.html /contributing/development/core_and_modules/unit_testing.html,/engine_details/architecture/unit_testing.html /contributing/development/core_and_modules/variant_class.html,/engine_details/architecture/variant_class.html -/contributing/documentation/class_reference_primer.html,engine_details/class_reference/index.html -/contributing/development/compiling/compiling_for_android.html,/engine_details/development/compiling/compiling_for_android.html, +/contributing/documentation/class_reference_primer.html,/engine_details/class_reference/index.html +/contributing/development/compiling/compiling_for_android.html,/engine_details/development/compiling/compiling_for_android.html /contributing/development/compiling/compiling_for_ios.html,/engine_details/development/compiling/compiling_for_ios.html /contributing/development/compiling/compiling_for_linuxbsd.html,/engine_details/development/compiling/compiling_for_linuxbsd.html /contributing/development/compiling/compiling_for_macos.html,/engine_details/development/compiling/compiling_for_macos.html @@ -466,21 +466,23 @@ source,destination /contributing/development/configuring_an_ide/kdevelop.html,/engine_details/development/configuring_an_ide/kdevelop.html /contributing/development/configuring_an_ide/qt_creator.html,/engine_details/development/configuring_an_ide/qt_creator.html /contributing/development/configuring_an_ide/rider.html,/engine_details/development/configuring_an_ide/rider.html -/contributing/development/configuring_an_ide/rider.html,/engine_details/development/configuring_an_ide/rider.html /contributing/development/configuring_an_ide/visual_studio.html,/engine_details/development/configuring_an_ide/visual_studio.html /contributing/development/configuring_an_ide/visual_studio_code.html,/engine_details/development/configuring_an_ide/visual_studio_code.html /contributing/development/configuring_an_ide/xcode.html,/engine_details/development/configuring_an_ide/xcode.html /contributing/development/debugging/index.html,/engine_details/development/debugging/index.html /contributing/development/debugging/macos_debug.html,/engine_details/development/debugging/macos_debug.html -/contributing/development/debugging/using_cpp_profilers.html,/engine_details/development/debugging/using_cpp_profilers.html +/contributing/development/debugging/using_cpp_profilers.html,/engine_details/development/profiling/index.html /contributing/development/debugging/using_sanitizers.html,/engine_details/development/debugging/using_sanitizers.html /contributing/development/debugging/vulkan/index.html,/engine_details/development/debugging/vulkan/index.html /contributing/development/debugging/vulkan/vulkan_validation_layers.html,/engine_details/development/debugging/vulkan/vulkan_validation_layers.html /contributing/development/handling_compatibility_breakages.html,/engine_details/development/handling_compatibility_breakages.html /contributing/development/editor/creating_icons.html,/engine_details/editor/creating_icons.html -/contributing/development/editor/index.html,/engine_details/editor/index.html /contributing/development/editor/introduction_to_editor_development.html,/engine_details/editor/introduction_to_editor_development.html -/contributing/development/file_formats/gdscript_grammar.html,/engine_details/file_formats/gdscript_grammar.html +/contributing/development/core_and_modules/binding_to_external_libraries.html,/engine_details/engine_api/binding_to_external_libraries.html +/contributing/development/file_formats/gdscript_grammar.html,/engine_details/file_formats/index.html +/contributing/development/file_formats/index.html,/engine_details/file_formats/index.html +/contributing/development/file_formats/tscn.html,/engine_details/file_formats/tscn.html +/engine_details/file_formats/gdscript_grammar.html,/engine_details/file_formats/index.html /engine_details/development/debugging/using_cpp_profilers.html,/engine_details/development/profiling/index.html /engine_details/development/debugging/profiling/sampling_profilers.html,/engine_details/development/profiling/index.html /engine_details/development/debugging/profiling/tracing_profilers.html,/engine_details/development/profiling/index.html diff --git a/_tools/redirects/create_redirects.py b/_tools/redirects/create_redirects.py index 67c5fd956..b1dca415c 100644 --- a/_tools/redirects/create_redirects.py +++ b/_tools/redirects/create_redirects.py @@ -86,7 +86,11 @@ def is_dry_run(args): return args.dry_run or args.validate def validate(destination): - p = BUILD_PATH + destination + if destination.startswith("https://"): + # Skip; external targets cannot be validated here. + return + + p = BUILD_PATH + destination.split("#", 1)[0] if not os.path.exists(p): print("Invalid destination: " + destination + " (" + p + ")") @@ -224,8 +228,8 @@ def has_suffix(s, suffixes): return False -def is_valid_redirect_url(url): - if len(url) < len("/a"): +def is_valid_source_url(url): + if len(url) < len("/a") or not url.startswith("/"): return False if not has_suffix(url.lower(), REDIRECT_SUFFIXES): @@ -234,6 +238,16 @@ def is_valid_redirect_url(url): return True +def is_valid_destination_url(url): + if not (url.startswith("/") or url.startswith("https://")): + return False + + if not has_suffix(url.lower().split("#", 1)[0], REDIRECT_SUFFIXES): + return False + + return True + + def redirect_to_str(item): return id(item[0], item[1]) @@ -291,12 +305,12 @@ def main(): print("Invalid redirect:", redirect, "- redirects to itself!") continue - if not is_valid_redirect_url(redirect[0]) or not is_valid_redirect_url(redirect[1]): - print("Invalid redirect:", redirect, "- invalid URL!") + if not is_valid_source_url(redirect[0]): + print("Invalid redirect:", redirect, "- invalid source URL!") continue - if not redirect[0].startswith("/") or not redirect[1].startswith("/"): - print("Invalid redirect:", redirect, "- invalid URL: should start with slash!") + if not is_valid_destination_url(redirect[1]): + print("Invalid redirect:", redirect, "- invalid destination URL!") continue if redirect[0] in sources: