Procházet zdrojové kódy

Ru Docs (Continue work) (#188)

* Russian files first commit

* Added "ru" section

* Added: components, font, project-settings, project-setup, resource

* Minor grammatical corrections

* Added few components manuals

* Translated manuals/animation block to russian

* Fixed section header to correct and non confusing name

* Fixed one more link description text

* Translation moments marked with (?) tokens were finally polished and translated to ru

* Fixed translation according to codereview notes: https://github.com/Demetrij87G/doc/pull/2

* Translated code snippet comments to ru as well

* Added: tilemap. Updated: mesh, model

* Added: particlefx, sound, spinemodel

* Added: camera, factory

* Added: collection-factory

* Added: collection-proxy, texture-filtering

* Updated/corrected a few manuals

* Translated /manuals/physics section to Russian

* More clear and correct translation for 'ray-cast' concept

* Updated/corrected a few manuals

* Updated/corrected a few manuals

* Added: script, lua

* Updated/corrected a few manuals

* Updated: lua

* Added: debugging-game-logic, modules, properties, script-properties, writing-code

* Translated sections 'saving and loading files', 'networking', 'rendering' to russian. Fixed typos in ru animation docs

* Fixed all moments marked with (?)

* Added: GUI section

* Updated/corrected a few manuals

* Fixed: animation

Co-authored-by: zugzug <[email protected]>
Demetrij87G před 4 roky
rodič
revize
1cd7b56131
100 změnil soubory, kde provedl 1323 přidání a 51 odebrání
  1. 3 3
      docs/ru/manuals/addressing.md
  2. 6 6
      docs/ru/manuals/animation.md
  3. 2 2
      docs/ru/manuals/application-lifecycle.md
  4. 3 3
      docs/ru/manuals/atlas.md
  5. 1 1
      docs/ru/manuals/building-blocks.md
  6. 3 3
      docs/ru/manuals/camera.md
  7. 2 2
      docs/ru/manuals/collection-proxy.md
  8. 3 3
      docs/ru/manuals/components.md
  9. 132 0
      docs/ru/manuals/debugging-game-logic.md
  10. 4 4
      docs/ru/manuals/editor.md
  11. 61 0
      docs/ru/manuals/file-access.md
  12. 17 17
      docs/ru/manuals/flipbook-animation.md
  13. 3 3
      docs/ru/manuals/font.md
  14. 4 4
      docs/ru/manuals/glossary.md
  15. 58 0
      docs/ru/manuals/gui-box.md
  16. 73 0
      docs/ru/manuals/gui-clipping.md
  17. 100 0
      docs/ru/manuals/gui-layouts.md
  18. 34 0
      docs/ru/manuals/gui-particlefx.md
  19. 56 0
      docs/ru/manuals/gui-pie.md
  20. 149 0
      docs/ru/manuals/gui-script.md
  21. 78 0
      docs/ru/manuals/gui-spine.md
  22. 62 0
      docs/ru/manuals/gui-template.md
  23. 58 0
      docs/ru/manuals/gui-text.md
  24. 351 0
      docs/ru/manuals/gui.md
  25. 54 0
      docs/ru/manuals/http-requests.md
  26. binární
      docs/ru/manuals/images/debugging/add_breakpoint.png
  27. binární
      docs/ru/manuals/images/debugging/[email protected]
  28. binární
      docs/ru/manuals/images/debugging/break.png
  29. binární
      docs/ru/manuals/images/debugging/[email protected]
  30. binární
      docs/ru/manuals/images/debugging/callstack.png
  31. binární
      docs/ru/manuals/images/debugging/[email protected]
  32. binární
      docs/ru/manuals/images/debugging/console.png
  33. binární
      docs/ru/manuals/images/debugging/[email protected]
  34. binární
      docs/ru/manuals/images/debugging/download_container.png
  35. binární
      docs/ru/manuals/images/debugging/[email protected]
  36. binární
      docs/ru/manuals/images/debugging/overview.png
  37. binární
      docs/ru/manuals/images/debugging/[email protected]
  38. 1 0
      docs/ru/manuals/images/debugging/pause.svg
  39. binární
      docs/ru/manuals/images/debugging/physics_debug_setting.png
  40. binární
      docs/ru/manuals/images/debugging/physics_debug_visualisation.png
  41. 1 0
      docs/ru/manuals/images/debugging/play.svg
  42. binární
      docs/ru/manuals/images/debugging/script.png
  43. binární
      docs/ru/manuals/images/debugging/[email protected]
  44. binární
      docs/ru/manuals/images/debugging/step.png
  45. binární
      docs/ru/manuals/images/debugging/[email protected]
  46. 1 0
      docs/ru/manuals/images/debugging/step_in.svg
  47. binární
      docs/ru/manuals/images/debugging/step_into.png
  48. binární
      docs/ru/manuals/images/debugging/[email protected]
  49. 1 0
      docs/ru/manuals/images/debugging/step_out.svg
  50. 1 0
      docs/ru/manuals/images/debugging/step_over.svg
  51. 1 0
      docs/ru/manuals/images/debugging/stop.svg
  52. binární
      docs/ru/manuals/images/debugging/variables.png
  53. binární
      docs/ru/manuals/images/debugging/[email protected]
  54. binární
      docs/ru/manuals/images/gui-box/create.png
  55. binární
      docs/ru/manuals/images/gui-box/[email protected]
  56. binární
      docs/ru/manuals/images/gui-box/mipmap.png
  57. binární
      docs/ru/manuals/images/gui-box/[email protected]
  58. binární
      docs/ru/manuals/images/gui-box/scaling.png
  59. binární
      docs/ru/manuals/images/gui-box/[email protected]
  60. binární
      docs/ru/manuals/images/gui-box/slice9.png
  61. binární
      docs/ru/manuals/images/gui-box/[email protected]
  62. binární
      docs/ru/manuals/images/gui-box/slice9_properties.png
  63. binární
      docs/ru/manuals/images/gui-box/[email protected]
  64. binární
      docs/ru/manuals/images/gui-box/slice9_size.png
  65. binární
      docs/ru/manuals/images/gui-box/[email protected]
  66. binární
      docs/ru/manuals/images/gui-box/tinted.png
  67. binární
      docs/ru/manuals/images/gui-box/[email protected]
  68. binární
      docs/ru/manuals/images/gui-clipping/create.png
  69. binární
      docs/ru/manuals/images/gui-clipping/[email protected]
  70. binární
      docs/ru/manuals/images/gui-clipping/layers.png
  71. binární
      docs/ru/manuals/images/gui-clipping/[email protected]
  72. binární
      docs/ru/manuals/images/gui-clipping/modes.png
  73. binární
      docs/ru/manuals/images/gui-clipping/[email protected]
  74. binární
      docs/ru/manuals/images/gui-clipping/setup.png
  75. binární
      docs/ru/manuals/images/gui-clipping/[email protected]
  76. binární
      docs/ru/manuals/images/gui-layouts/add_layout.png
  77. binární
      docs/ru/manuals/images/gui-layouts/[email protected]
  78. binární
      docs/ru/manuals/images/gui-layouts/landscape.png
  79. binární
      docs/ru/manuals/images/gui-layouts/[email protected]
  80. binární
      docs/ru/manuals/images/gui-layouts/new_profiles.png
  81. binární
      docs/ru/manuals/images/gui-layouts/[email protected]
  82. binární
      docs/ru/manuals/images/gui-layouts/portrait.png
  83. binární
      docs/ru/manuals/images/gui-layouts/[email protected]
  84. binární
      docs/ru/manuals/images/gui-layouts/settings.png
  85. binární
      docs/ru/manuals/images/gui-layouts/[email protected]
  86. binární
      docs/ru/manuals/images/gui-layouts/toolbar.png
  87. binární
      docs/ru/manuals/images/gui-layouts/[email protected]
  88. binární
      docs/ru/manuals/images/gui-particlefx/create.png
  89. binární
      docs/ru/manuals/images/gui-particlefx/[email protected]
  90. binární
      docs/ru/manuals/images/gui-pie/create.png
  91. binární
      docs/ru/manuals/images/gui-pie/[email protected]
  92. binární
      docs/ru/manuals/images/gui-pie/properties.png
  93. binární
      docs/ru/manuals/images/gui-pie/[email protected]
  94. binární
      docs/ru/manuals/images/gui-script/dynamic_nodes.png
  95. binární
      docs/ru/manuals/images/gui-script/[email protected]
  96. binární
      docs/ru/manuals/images/gui-script/message_passing.png
  97. binární
      docs/ru/manuals/images/gui-script/[email protected]
  98. binární
      docs/ru/manuals/images/gui-script/node_id.png
  99. binární
      docs/ru/manuals/images/gui-script/[email protected]
  100. binární
      docs/ru/manuals/images/gui-script/set_script.png

+ 3 - 3
docs/ru/manuals/addressing.md

@@ -1,5 +1,5 @@
 ---
-title: Адресация в Defold
+title: Адресация
 brief: В этом руководстве объясняется, как в Defold реализована адресации.
 ---
 
@@ -100,7 +100,7 @@ end
 
 ## Относительная адресация
 
-Адрес `"buddy#controller"` работает для игровых объектов в обеих коллекциях, потому что это *относительный* адрес. Каждая из коллекций, "team_1" и "team_2", задает новый контекст именования, или, если хотите, "пространство имён". Defold позволяет избежать конфликтов при именовании, учитывая контекст, создаваемый коллекцией для адресации:
+Адрес `"buddy#controller"` работает для игровых объектов в обеих коллекциях, потому что это *относительный* адрес. Каждая из коллекций, "team_1" и "team_2", задает новый контекст именования, или, если хотите, "пространство имен". Defold позволяет избежать конфликтов при именовании, учитывая контекст, создаваемый коллекцией для адресации:
 
 ![relative id](images/addressing/relative_same.png)
 
@@ -243,4 +243,4 @@ my_url.fragment = "controller" -- specify as string or hash
 
 -- Отправить сообщение целевому объекту, указанному в URL
 msg.post(my_url, "hello_manager!")
-```
+```

+ 6 - 6
docs/ru/manuals/animation.md

@@ -1,13 +1,13 @@
 ---
-title: Руководство по анимации в Defold
+title: Анимация
 brief: Данное руководство описывает работу с анимацией в движке Defold
 ---
 
 # Анимация
 
-В Defold есть встроенная поддержка нескольких типов анимации, которые можно использовать в качестве источника графики для компонентов:
+Defold имеет встроенную поддержку нескольких типов анимации, которые можно использовать в качестве источника графики для компонентов:
 
-* [Мультипликация](/manuals/flipbook-animation) --- Последовательное воспроизведение серии статичных изображений
-* [Скелетная анимация](/manuals/spine) --- Проигрывание скелетных 2D-анимаций
-* [Анимация моделей](/manuals/model-animation) --- Проигрывание анимации 3D-моделей
-* [Анимация свойств](/manuals/property-animation) --- Анимация свойств объекта, таких как положение, масштаб, углы поворота и многих других
+* [Мултикадровая анимация](/manuals/flipbook-animation) --- Последовательное воспроизведение серии статичных изображений
+* [Spine-анимация](/manuals/spine) --- Проигрывание скелетных 2D-анимаций
+* [Модельная анимация](/manuals/model-animation) --- Проигрывание анимации 3D-моделей
+* [Анимация свойств](/manuals/property-animation) --- Анимация свойств, таких как положение, масштаб, углы поворота и многих других

+ 2 - 2
docs/ru/manuals/application-lifecycle.md

@@ -1,5 +1,5 @@
 ---
-title: Руководство по жизненному циклу приложения на Defold
+title: Жизненный цикл приложения
 brief: В этом руководстве подробно описывается жизненный цикл игр и приложений, созданных в Defold.
 ---
 
@@ -116,4 +116,4 @@ end
 
 После этого движок выполняет закулисное отключение подсистем: конфигурация проекта удаляется, профилировщик памяти отключается и т.д.
 
-Теперь приложение считается полностью закрытым.
+Теперь приложение считается полностью закрытым.

+ 3 - 3
docs/ru/manuals/atlas.md

@@ -1,9 +1,9 @@
 ---
-title: Атлас
+title: Ресурс Atlas
 brief: Это руководство объясняет особенности использования ресурса Atlas в Defold.
 ---
 
-# Атлас
+# Ресурс Atlas
 
 Несмотря на то, что отдельные изображения часто используются в качестве источника спрайтов, по соображениям производительности изображения необходимо объединять в большие массивы, называемые атласами. Объединение множества небольших изображений в атласы особенно важно для мобильных устройств, где память и вычислительная мощность более ограничены, чем в настольных компьютерах или специализированных игровых консолях.
 
@@ -31,7 +31,7 @@ brief: Это руководство объясняет особенности 
 
   ![Images added](images/atlas/single_images.png){srcset="images/atlas/[email protected] 2x"}
 
-Добавление мультипликаций
+Добавление мултикадровой анимации
 : Выполните <kbd>клик ПКМ</kbd> в корне ресурса Atlas в панели *Outline*.
 
   Выберите <kbd>Add Animation Group</kbd> из контекстного меню.

+ 1 - 1
docs/ru/manuals/building-blocks.md

@@ -1,5 +1,5 @@
 ---
-title: Структурные элементы Defold
+title: Структурные элементы
 brief: В этом руководстве подробно описан принцип работы игровых объектов, компонентов и коллекций.
 ---
 

+ 3 - 3
docs/ru/manuals/camera.md

@@ -5,7 +5,7 @@ brief: В данном руководстве описаны функциона
 
 # Компонент Camera
 
-В Defold камера --- это компонент, который изменяет область обзора и проекцию игрового мира. Компонент Camera лишь поверхностно определяет перспективную или ортографическую камеры, которая предоставляет рендер-скрипту матрицу вида и проекции. Перспективная камера обычно используется для 3D-игр, ортографическая камера --- для 2D. Если требуются расширенные возможности, такие как преследование, зумирование, дрожание и т.д., придётся реализовать их самостоятельно (см. раздел ниже [сторонние решения для камер](https://www.defold.com/manuals/camera/#third-party-camera-solutions)).
+В Defold камера --- это компонент, который изменяет область обзора и проекцию игрового мира. Компонент Camera лишь поверхностно определяет перспективную или ортографическую камеры, которая предоставляет рендер-скрипту матрицу вида и проекции. Перспективная камера обычно используется для 3D-игр, ортографическая камера --- для 2D. Если требуются расширенные возможности, такие как преследование, зумирование, дрожание и т.д., придется реализовать их самостоятельно (см. раздел ниже [сторонние решения для камер](https://www.defold.com/manuals/camera/#third-party-camera-solutions)).
 
 ## Создание камеры
 
@@ -13,7 +13,7 @@ brief: В данном руководстве описаны функциона
 
 ![create camera component](images/camera/create.png){srcset="images/camera/[email protected] 2x"}
 
-Компонент Camera имеет следующие свойства, определяющие усечённую пирамиду видимости, или *фрустум* (только для перспективной камеры):
+Компонент Camera имеет следующие свойства, определяющие усеченную пирамиду видимости, или *фрустум* (только для перспективной камеры):
 
 ![camera settings](images/camera/settings.png){srcset="images/camera/[email protected] 2x"}
 
@@ -104,7 +104,7 @@ end
 
 ## Проекции
 
-Компонент Camera передаёт рендер-скрипту перспективную проекцию. Это хорошо подходит для 3D-игр. Для 2D-игр зачастую требуется рендерить сцену с *ортографической проекцией*. Это означает, что вид камеры определяется не фрустумом, а фреймом. Ортографическая проекция нереалистична, поскольку она не искажает размер объектов в зависимости от расстояния до них. Объект, находящийся на расстоянии в 1000 единиц, будет отображаться в том же размере, что и объект прямо перед камерой.
+Компонент Camera передает рендер-скрипту перспективную проекцию. Это хорошо подходит для 3D-игр. Для 2D-игр зачастую требуется рендерить сцену с *ортографической проекцией*. Это означает, что вид камеры определяется не фрустумом, а фреймом. Ортографическая проекция нереалистична, поскольку она не искажает размер объектов в зависимости от расстояния до них. Объект, находящийся на расстоянии в 1000 единиц, будет отображаться в том же размере, что и объект прямо перед камерой.
 
 ![projections](images/camera/projections.png){srcset="images/camera/[email protected] 2x"}
 

+ 2 - 2
docs/ru/manuals/collection-proxy.md

@@ -133,7 +133,7 @@ end
 * Скорость физических симуляций
 * `dt`, переданное в `update()`
 * [Анимация свойств игровых объектов и GUI](https://defold.com/manuals/animation/#property-animation-1)
-* [Мультипликационная анимация](https://defold.com/manuals/animation/#flip-book-animation)
+* [Мултикадровая анимация](https://defold.com/manuals/animation/#flip-book-animation)
 * [Симуляции эффектов частиц](https://defold.com/manuals/particlefx/)
 * Частота таймера
 
@@ -189,4 +189,4 @@ DEBUG:SCRIPT: update() with timestep (dt) 0.016666667535901
 : Каждая загруженная коллекция создает новый игровой мир, который занимает относительно много памяти. Если одновременно загружаются десятки коллекций через прокси, возможно, стоит пересмотреть структуру игры. Для порождения множества экземпляров иерархий игровых объектов больше подходят [фабрики коллекций](/manuals/collection-factory).
 
 Ввод
-: Если в загруженной коллекции есть объекты, требующие действий ввода, необходимо убедиться, что игровой объект, содержащий прокси-коллекцию, получает данные ввода. Когда игровой объект получает сообщения ввода, они передаются компонентам этого объекта, то есть прокси коллекции. Действия ввода отправляются через прокси в загруженную коллекцию.
+: Если в загруженной коллекции есть объекты, требующие действий ввода, необходимо убедиться, что игровой объект, содержащий прокси-коллекцию, получает данные ввода. Когда игровой объект получает сообщения ввода, они передаются компонентам этого объекта, то есть прокси коллекции. Действия ввода отправляются через прокси в загруженную коллекцию.

+ 3 - 3
docs/ru/manuals/components.md

@@ -3,7 +3,7 @@ title: Компоненты игрового объекта
 brief: В данном руководстве дается обзор компонентов и краткие сведения об их использовании.
 ---
 
-# Компоненты
+# Компоненты игрового объекта
 
 :[components](../shared/components.md)
 
@@ -24,7 +24,7 @@ Defold поддерживает следующие типы компоненто
 * [Script](/manuals/script) --- Оснащает игру логикой
 * [Sound](/manuals/sound) --- Воспроизводит звуки или музыку
 * [Spine Model](/manuals/spinemodel) --- Визуализирует Spine-анимацию
-* [Sprite](/manuals/sprite) --- Отображает 2D-изображение (с возможностью мультипликации)
+* [Sprite](/manuals/sprite) --- Отображает 2D-изображение (с возможностью мултикадровой анимации)
 * [Tile Map](/manuals/tilemap) --- Отображает сетку тайлов
 
 ## Включение и отключение компонентов
@@ -94,4 +94,4 @@ msg.post("#weapon", "enable")
 Если два компонента имеют одинаковое значение по оси Z, то порядок считается неопределенным, что в итоге приведет к мерцанию компонентов, или компоненты будут отображаться в одном порядке на одной платформе и в другом порядке на другой платформе.
 
 Рендер-скрипт определяет ближнюю и дальнюю плоскости для значений по Z. Любой компонент со значением по Z, выходящим за пределы этого диапазона, рендерится не будет. По умолчанию диапазон составляет от -1 до 1, но [его можно легко изменить](/manuals/render/#default-view-projection). Числовая точность значений по оси Z с ближним и дальним пределами -1 и 1 очень высока. При работе с 3D-ассетами может возникнуть необходимость изменить ближний и дальний пределы проекции по умолчанию в пользовательском рендер-скрипте. За подробностями обращайтесь к [руководству по рендерингу](/manuals/render/).
-:::
+:::

+ 132 - 0
docs/ru/manuals/debugging-game-logic.md

@@ -0,0 +1,132 @@
+---
+title: Отладка игровой логики
+brief: Это руководство описывает средства отладки, представленные в Defold.
+---
+
+# Отладка игровой логики
+
+Defold включает в себя встроенный отладчик Lua с возможностью инспекции. Вместе со встроенными [инструментами профилирования](/manuals/profiling) --- это мощный инструмент, который может помочь найти причину ошибок в логике игры или помочь проанализировать проблемы производительности.
+
+## Вывод и визуальная отладка
+
+Самый простой способ отладить игру в Defold заключается в использовании [print-отладки](http://en.wikipedia.org/wiki/Debugging#Techniques), или трассировки. Используйте операторы `print()` или [`pprint()`](/ref/builtins#pprint) для наблюдения за переменными или для индикации хода выполнения. Если игровой объект без скрипта ведет себя странно, можно просто прикрепить к нему скрипт с единственной целью отладки. Использование любой из функций печати приведет к выводу в *Console* в редакторе и в [лог](/manuals/debugging-game-and-system-logs).
+
+Помимо печати, движок может рисовать на экране отладочный текст и прямые линии. Это делается путем отправки сообщений в сокет `@render`:
+
+```lua
+-- Нарисовать на экране значение "my_val" с отладочным текстом
+msg.post("@render:", "draw_text", { text = "My value: " .. my_val, position = vmath.vector3(200, 200, 0) })
+
+-- Нарисовать цветной текст на экране
+local color_green = vmath.vector4(0, 1, 0, 1)
+msg.post("@render:", "draw_debug_text", { text = "Custom color", position = vmath.vector3(200, 180, 0), color = color_green })
+
+-- Нарисовать на экране отладочную линию между игроком и врагом
+local start_p = go.get_position("player")
+local end_p = go.get_position("enemy")
+local color_red = vmath.vector4(1, 0, 0, 1)
+msg.post("@render:", "draw_line", { start_point = start_p, end_point = end_p, color = color_red })
+```
+
+Сообщения визуальной отладки добавляют данные в пайплайн рендеринга и отрисовываются как часть обычного рендер пайплайна.
+
+* `"draw_line"` добавляет данные, которые выводятся с помощью функции `render.draw_debug3d()` в рендер-скрипте.
+* `"draw_text"` рендерится с помощью "/builtins/fonts/system_font.font", который использует материал "/builtins/fonts/system_font.material".
+* `"draw_debug_text"` это то же самое, что и `"draw_text"`, но отображается в пользовательском цвете.
+
+Следует отметить, что, вероятно, потребуется обновлять эти данные каждый кадр, поэтому размещение сообщений в функции `update()` является хорошей идеей.
+
+## Запуск отладчика
+
+Чтобы запустить отладчик, либо выберите <kbd>Debug ▸ Run with Debugger</kbd>, который запускает игру с подключенным отладчиком, либо <kbd>Debug ▸ Attach Debugger</kbd>, чтобы подключить отладчик к уже запущенной игре.
+
+![overview](images/debugging/overview.png){srcset="images/debugging/[email protected] 2x"}
+
+Как только отладчик подключен, можно контролировать выполнение игры через кнопки управления отладчиком в консоли или через меню <kbd>Debug</kbd>:
+
+Break
+: ![pause](images/debugging/pause.svg){width=60px .left}
+  Немедленно прерывает выполнение игры. Игра прервется в текущей точке. После этого можно исследовать состояние игры, продвигать игру шаг за шагом или продолжить ее выполнение до следующей точки останова. Текущая точка выполнения отмечается в редакторе кода:
+
+  ![script](images/debugging/script.png){srcset="images/debugging/[email protected] 2x"}
+
+Continue
+: ![play](images/debugging/play.svg){width=60px .left}
+  Продолжает выполнение игры. Код игры будет выполняться до тех пор, пока не будет нажата пауза или пока выполнение не достигнет точки останова, которую вы установили. Если выполнение прерывается в установленной точке останова, точка выполнения отмечается в редакторе кода поверх маркера точки останова:
+
+  ![break](images/debugging/break.png){srcset="images/debugging/[email protected] 2x"}
+
+Stop
+: ![stop](images/debugging/stop.svg){width=60px .left}
+  Останавливает отладчик. Нажатие этой кнопки немедленно остановит отладчик, отсоединит его от игры и завершит запущенную игру..
+
+Step Over
+: ![step over](images/debugging/step_over.svg){width=60px .left}
+  Продвинуть выполнение программы на один шаг. Если выполнение включает в себя запуск другой Lua-функции, выполнение _не перейдет в функцию_, а продолжит выполнение и остановится на следующей строке ниже вызова функции. В данном примере, если пользователь нажмет "step over", отладчик выполнит код и остановится на операторе `end` ниже строки с вызовом функции `nextspawn()`:
+
+  ![step](images/debugging/step.png){srcset="images/debugging/[email protected] 2x"}
+
+::: sidenote
+Строка Lua-кода не соответствует одному выражению. Шаг в отладчике перемещается вперед по одному выражению за раз, что означает, что в настоящее время для перехода к следующей строке может потребоваться нажать кнопку шага несколько раз.
+:::
+
+Step Into
+: ![step in](images/debugging/step_in.svg){width=60px .left}
+  Продвигает выполнение программы на один шаг. Если выполнение включает в себя запуск другой Lua-функции, то выполнение _перейдет в эту функцию_. Вызов функции добавляет запись в стек вызовов. Можно кликнуть по каждой записи в списке стека вызовов, чтобы просмотреть точку входа и содержимое всех переменных в этом замыкании. Здесь пользователь перешел в функцию `nextspawn()`:
+
+  ![step into](images/debugging/step_into.png){srcset="images/debugging/[email protected] 2x"}
+
+Step Out
+: ![step out](images/debugging/step_out.svg){width=60px .left}
+  Продолжает выполнение до возврата из текущей функции. Если вы перешли к выполнению функции, нажатие кнопки "step out" продолжит выполнение до возвращения из функции.
+
+Установка и очистка точек останова
+: В Lua-коде можно установить произвольное количество точек останова. Когда игра запускается с подключенным отладчиком, она остановит выполнение в следующей точке останова и будет ждать дальнейших действий со стороны пользователя.
+
+  ![add breakpoint](images/debugging/add_breakpoint.png){srcset="images/debugging/[email protected] 2x"}
+
+  Чтобы установить или убрать точку останова, кликните в колонке справа от номеров строк в редакторе кода. Также можно выбрать в меню <kbd>Edit ▸ Toggle Breakpoint</kbd>.
+
+Оценка Lua-выражений
+: При подключенном отладчике и остановленной на точке останова игре доступна среда выполнения Lua с текущим контекстом. Введите выражения Lua в нижней части консоли и нажмите <kbd>Enter</kbd> для их оценки:
+
+  ![console](images/debugging/console.png){srcset="images/debugging/[email protected] 2x"}
+
+  В настоящее время нет возможности изменять переменные через оценщик.
+
+Отсоединение отладчика
+: Выберите <kbd>Debug ▸ Detach Debugger</kbd>, чтобы отсоединить отладчик от игры. Она немедленно продолжит работу.
+
+## Отладочная Lua-библиотека
+
+Lua поставляется с библиотекой отладки, которая полезна в некоторых ситуациях, особенно если необходимо исследовать внутренности окружения Lua. За подробностями обращайтесь к веб-странице http://www.lua.org/pil/contents.html#23.
+
+## Debugging checklist
+
+Если вы столкнулись с ошибкой или если ваша игра ведет себя не так, как ожидалось, вот контрольный список для отладки:
+
+1. Проверьте вывод консоли и убедитесь в отсутствии ошибок времени выполнения.
+
+2. Добавьте операторы `print` в код, чтобы убедиться, что код действительно выполняется.
+
+3. Если он не запускается, проверьте, правильно ли вы выполнили настройки в редакторе, необходимые для запуска кода. Добавлен ли скрипт к нужному игровому объекту? Приобрел ли скрипт фокус ввода? Правильны ли триггеры ввода? Добавлен ли код шейдера к материалу? И т.д.
+
+4. Если код зависит от значений переменных (например, в выражении if), либо примените `print` к этим значениям там, где они используются или проверяются, либо проверьте их с помощью отладчика.
+
+Иногда поиск ошибки может быть сложным и трудоемким процессом, требующим от вас пройтись по коду бит за битом, проверяя все, сужая круг неисправного кода и устраняя источники ошибок. Лучше всего для этого подходит метод под названием "разделяй и властвуй":
+
+1. Определите, какая половина (или меньше) кода должна содержать ошибку.
+2. Снова выясните, какая половина из этой половины должна содержать баг.
+3. Продолжайте сужать круг кода, который должен вызывать ошибку, пока не найдете ее.
+
+Удачной охоты!
+
+## Отладка проблем с физикой
+
+Если возникли проблемы с физикой и столкновения работают не так, как ожидалось, рекомендуется включить отладку физики. Отметьте опцию *Debug* в секции *Physics* файла *game.project*:
+
+![physics debug setting](images/debugging/physics_debug_setting.png)
+
+Когда эта опция включена, Defold отрисовывает все формы и контактные точки столкновений:
+
+![physics debug visualisation](images/debugging/physics_debug_visualisation.png)

+ 4 - 4
docs/ru/manuals/editor.md

@@ -1,9 +1,9 @@
 ---
-title: Обзор редактора
+title: Обзор редактора Defold
 brief: Данное руководство представляет собой обзор внешнего вида и принципов работы редактора Defold, а также навигации в нем.
 ---
 
-# Обзор редактора
+# Обзор редактора Defold
 
 Назначение редактора --- просмотр и эффективное управление файлами игрового проекта. При открытии файла на редактирование, запускается соответствующий редактор, при этом вся необходимая информация о файле отображается в отдельных представлениях.
 
@@ -61,7 +61,7 @@ New Project
 : В этом представлении есть несколько вкладок. Вкладка *Console* отображает вывод какой-либо ошибки или целенаправленный вывод, осуществляемый вами во время выполнения игры. Рядом с консолью находятся вкладки *Build Errors*, *Search Results*, а также *Curve Editor*, используемый при редактировании кривых в редакторе частиц. Панель Tools также используется для взаимодействия со встроенным отладчиком.
 
 Панель *Changed Files*
-: Если проект использует распределённую систему контроля версий Git, это представление отображает список файлов проекта, которые были изменены, добавлены или удалены. Регулярно выполняя синхронизацию проекта, вы можете синхронизировать свою локальную копию с тем, что хранится в Git-репозитории проекта, что позволяет сотрудничать с командой без риска потери своей работы в случае сбоя. Подробнее о Git можно узнать в нашем [руководстве по контролю версий](/manuals/version-control/). В этом представлении можно выполнять некоторые файловые операции:
+: Если проект использует распределенную систему контроля версий Git, это представление отображает список файлов проекта, которые были изменены, добавлены или удалены. Регулярно выполняя синхронизацию проекта, вы можете синхронизировать свою локальную копию с тем, что хранится в Git-репозитории проекта, что позволяет сотрудничать с командой без риска потери своей работы в случае сбоя. Подробнее о Git можно узнать в нашем [руководстве по контролю версий](/manuals/version-control/). В этом представлении можно выполнять некоторые файловые операции:
 
    - Выполните <kbd>двойной клик</kbd> по файлу чтобы открыть представление отличий. Defold открывает файл в подходящем редакторе, так же, как и в представлении ассетов.
    - Выполните <kbd>клик ПКМ</kbd> по файлу, чтобы открыть всплывающее меню, с помощью которого можно открыть представление отличий, отменить все изменения, сделанные в файле, найти файл в файловой системе и многое другое.
@@ -265,4 +265,4 @@ $ > ./path/to/Defold.app/Contents/MacOS/Defold
 
 
 ## FAQ
-:[Editor FAQ](../shared/editor-faq.md)
+:[Editor FAQ](../shared/editor-faq.md)

+ 61 - 0
docs/ru/manuals/file-access.md

@@ -0,0 +1,61 @@
+---
+title: Работа с файлами
+brief:  Данное руководство объясняет как сохранять и загружать файлы и производить другие виды файловых операций.
+---
+
+# Работа с файлами
+Есть несколько разных способов создать и/или получить доступ к файлам. Пути файлов и способы, которыми вы получаете доступ к этим файлам различаются в зависимости от типа файла и размещения файла.
+
+## Функции для доступа к файлам и директориям
+Defold предоставляет несколько разных функций для работы с файлами:
+
+* Можно использовать стандартные [`io.*` функции](https://defold.com/ref/stable/io/) для чтения и записи файлов. Эти функции дают вам очень тонкий уровень контроля над всем процессом ввода-вывода. 
+* Можно использовать [`os.rename()`](https://defold.com/ref/stable/os/#os.rename:oldname-newname) и [`os.remove()`](https://defold.com/ref/stable/os/#os.remove:filename) для переименования и удаления файлов.
+* Можно использовать [`sys.save()`](https://defold.com/ref/stable/sys/#sys.save:filename-table) и [`sys.load()`](https://defold.com/ref/stable/sys/#sys.load:filename) для чтения и записи Lua-таблиц. Существуют дополнительные функции [`sys.*`](https://defold.com/ref/stable/sys/) чтобы помочь платформенно-независимо определять пути файла.
+
+## Места расположения файлов и директорий
+Места расположения файлов и директорий могут быть поделены на три категории:
+
+* Специфичные для приложения файлы, созданные вашим приложением
+* Файлы и директории поставляемые с вашим приложением
+* Специфичные для системы файлы, к которым получает доступ ваше приложение
+
+### Как сохранять и загружать файлы специфичные для приложения
+Когда сохраняются или загружаются файлы специфичные для приложения, такие как рекорды, настройки игрока или игровое состояние, рекомендуется делать это в месте расположения, предоставляемом операционной системой и предназначенной специально для этих целей. Вы можете использовать [`sys.get_save_file()`](https://defold.com/ref/stable/sys/#sys.get_save_file:application_id-file_name), чтобы получить специфичный для конкретной ОС абсолютный путь до файла. Получив абсолютный путь, вы можете использовать функции `sys.*`, `io.*` и `os.*` (смотри выше).
+
+[Посмотрите пример, демонстрирующий как применять sys.save() и sys.load()](/examples/file/sys_save_load/).
+
+### Как получать доступ к файлам, поставляемым вместе с приложением
+Вы можете поставлять файлы с вашим приложением двумя способами:
+
+1. **CUSTOM RESOURCES** --- Как часть архива игры используя [поле *Custom Resources*](https://defold.com/manuals/project-settings/#project) в *game.project*. Вы можете читать из этих файлов используя [`sys.load_resource()`](https://defold.com/ref/sys/#sys.load_resource). Заметьте, что эти файлы не являются реальными файлами в файловой системе. Файлы, включенные таким способом становятся частью бинарного архива игры и единственный способ получить к ним доступ --- через вызов `sys.load_resource()`.
+
+2. **BUNDLE RESOURES** --- Как дополнительные файлы и директории, располагаемые как часть бандла вашего приложения используя [поле *Bundle Resources*](https://defold.com/manuals/project-settings/#project) в *game.project*. Вы можете использовать [`sys.get_application_path()`](https://defold.com/ref/stable/sys/#sys.get_application_path:), чтобы получить путь до места, где хранится приложение. Используйте этот базовый путь до приложения для создания окончательных абсолютных путей до файлов, к которым вам нужно получить доступ. Имея абсолютный путь к этим файлам, вы можете использовать функции `io.*` и `os.*` для доступа к файлам (см. выше).
+
+::: sidenote
+Из соображений безопасности браузеры (и, как следствие, любой JavaScript, работающий в браузере) не имеют доступа к системным файлам. Файловые операции в HTML5 билдах в Defold по-прежнему работают, однако они работают на "виртуальной файловой системе" используя IndexedDB API в браузере. Это означает, что не существует способа получить доступ к ресурсам бандла используя функции `io.*` или `os.*`. Однако вы можете получить доступ к ресурсам бандла используя вызов `http.request()`.
+:::
+
+
+#### Custom и Bundle ресурсы - сравнение
+
+| Характеристики              | Custom Ресурсы                          | Bundle Ресурсы                               |
+|-----------------------------|-------------------------------------------|------------------------------------------------|
+| Скорость загрузки               | Быстрее - файлы загружаются из бинарного архива | Медленнее - файлы загружаются из файловой системы          |
+| Частичная загрузка файлов          | Нет - только целиком                    | Да - произвольное чтение байт из файлов           |
+| Изменение файлов после поставки | Нет - файлы хранятся внутри бинарного архива | Да - файлы хранятся на локальной файловой системе    |
+| Поддержка HTML5               | Да                                       | Да - но доступ через HTTP, а не файловый ввод-вывод |
+
+
+### Доступ к системным файлам
+Доступ к системным файлам может быть ограничен операционной системой из соображений безопасности. Вы можете использовать нативное расширение [`extension-directiories`](https://defold.com/assets/extensiondirectories/) для получения абсолютных путей до некоторых общих системных директорий (то есть документы, ресурсы, temp). Имея абсолютный путь к этим файлам вы можете использовать функции `io.*` и `os.*` для получения доступа к этим файлам (смотри выше).
+
+::: sidenote
+Из соображений безопасности браузеры (и, как следствие, любой JavaScript, работающий в браузере) не имеют доступа к системным файлам. Файловые операции в HTML5 билдах в Defold по-прежнему работают, однако они работают на "виртуальной файловой системе" используя IndexedDB API в браузере. Это означает, что не существует способа получить доступ к системным файлам в HTML5 билдах.
+:::
+
+## Расширения
+[Портал ассетов](https://defold.com/assets/) содержит несколько ассетов для упрощения доступа к файлам и директориям. Некоторые из примеров:
+
+* [Lua File System (LFS)](https://defold.com/assets/luafilesystemlfs/) --- Функции для работы с директориями, разрешениями файлов и т.д.
+* [DefSave](https://defold.com/assets/defsave/) --- Модуль, помогающий сохранять/загружать конфиг и данные игрока между сессиями.

+ 17 - 17
docs/ru/manuals/flipbook-animation.md

@@ -1,32 +1,32 @@
 ---
-title: Руководство по мултьипликации в Defold
-brief: Данное руководство объясняет как использовать покадровую анимацию в Defold
+title: Мультикадровая анимация
+brief: Данное руководство объясняет как использовать мультикадровую анимацию в Defold.
 ---
 
-# Покадровая анимация
+# Мультикадровая анимация
 
-Покадровая анимация состоит из серии неподвижных изображений, которые отображаются одно за другим. Данная техника весьма схожа с традиционной рисованной мультипликацией (см. https://ru.wikipedia.org/wiki/%D0%A0%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F). Эта техника предлагает безграничные возможности, т.к. каждым кадром можно управлять отдельно. Однако, так как каждый кадр хранится в отдельном изображении, расходование памяти может быть ощутимым. Смягчение анимации также зависит от числа изображений на секунду времени, но увеличение числа изображений как правило увеличивает и количество работы. Покадровая анимация в Defold ъранится либо как отдельные изображения, добавленные в Атлас * (/manuals/atlas) либо как Tile Source (/manuals/tilesource) в виде кадров выстроенных в горизонтальную последовательность.
+Мультикадровая анимация состоит из серии неподвижных изображений, которые отображаются одно за другим. Данная техника весьма схожа с традиционной рисованной мультипликацией (см. [Рисованная_мультипликация](https://ru.wikipedia.org/wiki/Рисованная_мультипликация)). Эта техника предлагает безграничные возможности, поскольку каждым кадром можно управлять отдельно. Однако, так как каждый кадр хранится в отдельном изображении, расходование памяти может быть ощутимым. Плавность анимации также зависит от числа изображений в секунду, но увеличение числа изображений, как правило, увеличивает и объем работы. Мультикадровая анимация в Defold хранится либо как отдельные изображения, добавленные в [атлас](/manuals/atlas) либо как [тайловый источник](/manuals/tilesource) в виде кадров, выстроенных в горизонтальную последовательность.
 
   ![Animation sheet](images/animation/animsheet.png){.inline}
   ![Run loop](images/animation/runloop.gif){.inline}
 
-## Проигрывание покадровой анимации
+## Воспроизведение мультикадровой анимации
 
-Спрайты и GUI-ноды Box могут отображать покадровые анимации и вы можете достаточно гибко управлять ими прямо во время выполнения игры
+Спрайты и GUI-ноды Box могут отображать мультикадровую анимацию, при этом можно достаточно гибко управлять ими напрямую во время выполнения игры.
 
 Спрайты
-: Чтобы запустить анимацию во время выполнения игры используйте функцию [`sprite.play_flipbook()`](/ref/sprite/?q=play_flipbook#sprite.play_flipbook:url-id-[complete_function]-[play_properties]). Смотрите пример ниже.
+: Чтобы запустить анимацию во время выполнения игры используйте функцию [`sprite.play_flipbook()`](/ref/sprite/?q=play_flipbook#sprite.play_flipbook:url-id-[complete_function]-[play_properties]). См. пример ниже.
 
 GUI-ноды Box
-: Чтобы запустить анимацию во время выполнения игры используйте функцию [`gui.play_flipbook()`](/ref/gui/?q=play_flipbook#gui.play_flipbook:node-animation-[complete_function]-[play_properties]). Смотрите пример ниже.
+: Чтобы запустить анимацию во время выполнения игры используйте функцию [`gui.play_flipbook()`](/ref/gui/?q=play_flipbook#gui.play_flipbook:node-animation-[complete_function]-[play_properties]). См. пример ниже.
 
-::: Примечание
-Метод проигрывания "однократный, пинг-понг" проиграет анимацию до последнего кадра, затем в обратном порядке до **второго** кадра анимации, а не до самого первого. Это сделано, чтобы облегчить процесс склеивания цепочек анимаций.
+::: sidenote
+Режим воспроизведения Once Ping Pong проиграет анимацию до последнего кадра, затем в обратном порядке до **второго** кадра анимации, а не до первого. Это сделано, чтобы облегчить процесс склеивания цепочек анимаций.
 :::
 
 ### Примеры со спрайтами
 
-Предположим, что в вашей игре есть фича "уклониться", которая позволяет игроку уклоняться по нажатию специальной кнопки. Для визуального эффекта такой фичи, вы реализовали 4 анимации:
+Предположим, что в вашей игре есть механика "уклониться", которая позволяет игроку уклоняться по нажатию специальной кнопки. Для визуального отклика такой механики, реализуются 4 анимации:
 
 "idle"
 : Зацикленная анимация игрового персонажа в состоянии покоя.
@@ -35,10 +35,10 @@ GUI-ноды Box
 : Зацикленная анимация игрового персонажа в состоянии покоя, находясь в позиции уклонения.
 
 "start_dodge"
-: Однократная анимация-переход переводящая игрового персонажа из обычной стойки в уклонение.
+: Однократная анимация-переход, переводящая игрового персонажа из обычной стойки в уклонение.
 
 "stop_dodge"
-: Однократная анимация-переход переводящая игрового персонажа из уклонения в обычную стойку.
+: Однократная анимация-переход, переводящая игрового персонажа из уклонения в обычную стойку.
 
 Следующий скрипт реализует такую логику:
 
@@ -70,19 +70,19 @@ end
 
 ### Примеры с GUI-нодами Box
 
-Выбирая анимацию или изображение для ноды, вы фактически назначаете источник изображения (атлас или Tile source) и анимацию по-умолчанию. Источник изображения статически устанавливается для ноды, но текущая анимация для проигрывания может быть изменена во время работы игры. Обычные изображения трактуются движком как однокадровые анимации, так что, изменение изображения во время работы игры есть эквивалент покадровой анимации для ноды:
+Выбирая анимацию или изображение для ноды, вы фактически назначаете источник изображения (атлас или тайловый источник) и анимацию по-умолчанию. Источник изображения статически устанавливается для ноды, но текущая анимация для проигрывания может быть изменена во время работы игры. Обычные изображения трактуются движком как однокадровые анимации, так что, изменение изображения во время работы игры является эквивалентом мультикадровой анимации для ноды:
 
 ```lua
 function init(self)
     local character_node = gui.get_node("character")
-    -- Требуется, чтобы нода имела анимацию по-умолчанию в том же атласе или источнике тайлов 
-    -- как и новая анимация/изображение, которые мы проигрываем. 
+    -- Требуется, чтобы нода имела анимацию по-умолчанию из того же атласа
+    -- или источника тайлов что и новая анимация/изображение, которые мы проигрываем. 
     gui.play_flipbook(character_node, "jump_left")
 end
 ```
 
 
-## Функции обратного вызова по завершению
+## Завершающие функции обратного вызова
 
 Функции `sprite.play_flipbook()` и `gui.play_flipbook()` поддерживают опциональные функции обратного вызова в качестве последнего переданного аргумента. Такие переданные функции будут вызваны когда анимация проиграется до конца. Функции никогда не будут вызваны для зацикленных анимаций. Функция обратного вызова может быть использована для активации других событий по завершению анимации или для склеивания нескольких анимаций в одну цепочку. Примеры:
 

+ 3 - 3
docs/ru/manuals/font.md

@@ -1,9 +1,9 @@
 ---
-title: Шрифты в Defold
+title: Ресурс Font
 brief: В этом руководстве описаны особенности работы со шрифтами и способ их вывода на экран в играх.
 ---
 
-# Файлы шрифтов
+# Ресурс Font
 
 Шрифты используются для визуализации текста в компонентах Label и GUI-нодах Text. Defold поддерживает несколько форматов файлов шрифтов:
 
@@ -161,4 +161,4 @@ space ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E
 
 `float horizontal_gradient = fract(var_texcoord0.y / texture_size_recip.w);`
 
-Подробнее об унифицированных шейдерных переменных см. В [руководстве по шейдерам](/manuals/shader).
+Подробнее об унифицированных шейдерных переменных см. В [руководстве по шейдерам](/manuals/shader).

+ 4 - 4
docs/ru/manuals/glossary.md

@@ -13,7 +13,7 @@ brief: В этом руководстве с кратким описанием 
 
 ## Атлас (Atlas)
 
-![Atlas](images/icons/atlas.png){.left} Атлас --- это ресурс, представляющий собой набор отдельных изображений, которые по причинам производительности и эффективности использования памяти формируются на одном большом холсте. Может содержать неподвижные изображения или мультипликации. В качестве общих графических ресурсов атласы используются компонентами GUI, спрайтами, Spine-моделями и частицами. За подробностями обращайтесь к [руководству по атласам](/manuals/atlas).
+![Atlas](images/icons/atlas.png){.left} Атлас --- это ресурс, представляющий собой набор отдельных изображений, которые по причинам производительности и эффективности использования памяти формируются на одном большом холсте. Может содержать неподвижные изображения или мултикадровую анимацию. В качестве общих графических ресурсов атласы используются компонентами GUI, спрайтами, Spine-моделями и частицами. За подробностями обращайтесь к [руководству по атласам](/manuals/atlas).
 
 ## Встроенные ресурсы (папка ``builtins``)
 
@@ -161,7 +161,7 @@ msg.post("#weapon", "disable")
 
 ## Спрайт (Sprite)
 
-![Sprite](images/icons/sprite.png){.left} Спрайт --- это компонент, расширяющий игровые объекты графикой. Он отображает изображение либо из тайлового источника, либо из атласа. Спрайты имеют встроенную поддержку мультипликаций и костевой анимации. Обычно используются для персонажей и предметов.
+![Sprite](images/icons/sprite.png){.left} Спрайт --- это компонент, расширяющий игровые объекты графикой. Он отображает изображение либо из тайлового источника, либо из атласа. Спрайты имеют встроенную поддержку мултикадровой и скелетной анимации. Обычно используются для персонажей и предметов.
 
 ## Текстурные профили (Texture Profiles)
 
@@ -173,8 +173,8 @@ msg.post("#weapon", "disable")
 
 ## Тайловый источник (Tile Source)
 
-![Tile source](images/icons/tilesource.png){.left} Тайловый источник описывает текстуру, состоящую из нескольких уменьшенных изображений, каждое из которых имеет одинаковый размер. Можно определить мультипликацию из последовательности изображений в тайловом источнике. Тайловые источники также могут автоматически вычислять формы столкновений из данных изображений. Это очень полезно при создания плиточных уровней, с которыми могут сталкиваться и взаимодействовать объекты. Тайловые источники используются тайловыми картами (а также спрайтами и частицами) для совместного использования графических ресурсов. Стоит заметить, что атлас часто подходит лучше, чем тайловый источник. За подробностями обращайтесь к [руководству по тайловым источникам](/manuals/tilemap).
+![Tile source](images/icons/tilesource.png){.left} Тайловый источник описывает текстуру, состоящую из нескольких уменьшенных изображений, каждое из которых имеет одинаковый размер. Можно определить мултикадровую анимацию из последовательности изображений в тайловом источнике. Тайловые источники также могут автоматически вычислять формы столкновений из данных изображений. Это очень полезно при создания плиточных уровней, с которыми могут сталкиваться и взаимодействовать объекты. Тайловые источники используются тайловыми картами (а также спрайтами и частицами) для совместного использования графических ресурсов. Стоит заметить, что атлас часто подходит лучше, чем тайловый источник. За подробностями обращайтесь к [руководству по тайловым источникам](/manuals/tilemap).
 
 ## Вертексный шейдер (Vertex Program)
 
-![Vertex shader](images/icons/vertex-shader.png){.left} Вертексный шейдер вычисляет экранную геометрию примитивных полигональных форм компонента. Для любого типа визуального компонента, будь то спрайт, Spine-модель или модель, форма представлена набором позиций полигональных вершин. Вертексный шейдер обрабатывает каждую вершину (в мировом пространстве) и вычисляет результирующую координату, которую должна иметь каждая вершина примитива. За подробностями обращайтесь к [руководству по шейдерам](/manuals/shader).
+![Vertex shader](images/icons/vertex-shader.png){.left} Вертексный шейдер вычисляет экранную геометрию примитивных полигональных форм компонента. Для любого типа визуального компонента, будь то спрайт, Spine-модель или модель, форма представлена набором позиций полигональных вершин. Вертексный шейдер обрабатывает каждую вершину (в мировом пространстве) и вычисляет результирующую координату, которую должна иметь каждая вершина примитива. За подробностями обращайтесь к [руководству по шейдерам](/manuals/shader).

+ 58 - 0
docs/ru/manuals/gui-box.md

@@ -0,0 +1,58 @@
+---
+title: GUI-нода Box
+brief: В данном руководстве объясняется, как использовать GUI-ноду Box.
+---
+
+# GUI-нода Box
+
+Нода Box --- это прямоугольник, заполненный цветом, текстурой или анимацией.
+
+## Добавление ноды Box
+
+Добавьте новую ноду Box, либо <kbd>кликнув ПКМ</kbd> в *Outline* и выбрав <kbd>Add ▸ Box</kbd>, либо нажав <kbd>A</kbd> и выбрав <kbd>Box</kbd>.
+
+Можно использовать изображения и анимацию из атласов или тайловых источников, добавленных в GUI. Добавьте текстуры, <kbd>кликнув ПКМ</kbd> по иконке папки *Textures* в *Outline* и выбрав <kbd>Add ▸ Textures...</kbd>. Затем задайте свойство *Texture* для ноды Box:
+
+![Textures](images/gui-box/create.png){srcset="images/gui-box/[email protected] 2x"}
+
+Важно отметить, что ноды Box будет оттенять графику. Цвет оттенка умножается на данные изображения, то есть если установить белый цвет (по умолчанию), то оттенок применяться не будет.
+
+![Tinted texture](images/gui-box/tinted.png){srcset="images/gui-box/[email protected] 2x"}
+
+Ноды Box всегда рендерятся, даже если им не назначена текстура, или их альфа установлена в `0`, или они имеют размер `0, 0, 0`. Ноды Box всегда должны иметь назначенную им текстуру, чтобы рендерер мог правильно их сортировать и уменьшить количество вызовов отрисовки.
+
+## Воспроизведение анимации
+
+Ноды Box могут воспроизводить анимацию из атласов или тайловых источников. За подробностями обращайтесь к [руководству по мультикадровой анимации](/manuals/flipbook-animation).
+
+## Текстурирование Slice9
+
+В графических интерфейсах часто встречаются элементы, чувствительные к контексту в отношении их размера: панели и диалоговые окна, размер которых необходимо изменять, чтобы вместить содержащееся в них содержимое. Это может вызвать визуальные проблемы, если применять текстурирование к изменяемой в размерах ноде.
+
+Обычно движок масштабирует текстуру, чтобы она соответствовала границам ноды Box, но, определив краевые области Slice9, можно определить границы того, какие части текстуры должны масштабироваться:
+
+![GUI scaling](images/gui-box/scaling.png){srcset="images/gui-box/[email protected] 2x"}
+
+Нода Box *Slice9* включает в себя 4 числа, которые определяют количество пикселей для левого, верхнего, правого и нижнего полей, которые не должны подвергаться регулярному масштабированию:
+
+![Slice 9 properties](images/gui-box/slice9_properties.png){srcset="images/gui-box/[email protected] 2x"}
+
+Поля устанавливаются по часовой стрелке, начиная с левого края:
+
+![Slice 9 sections](images/gui-box/slice9.png){srcset="images/gui-box/[email protected] 2x"}
+
+- Угловые сегменты никогда не масштабируются.
+- Краевые сегменты масштабируются вдоль одной оси. Левый и правый краевые сегменты масштабируются по вертикали. Верхний и нижний краевые сегменты масштабируются по горизонтали.
+- Центральная область текстуры масштабируется по горизонтали и вертикали по мере необходимости.
+
+Описанное выше масштабирование текстуры *Slice9* применяется только при изменении размера ноды Box:
+
+![GUI box node size](images/gui-box/slice9_size.png){srcset="images/gui-box/[email protected] 2x"}
+
+Если изменить параметр Scale ноды Box --- нода и текстура будут масштабироваться без применения параметров *Slice9*.
+
+Из-за того, как работает мипмаппинг в рендере, при масштабировании сегментов текстуры иногда могут возникать артефакты. Это происходит при _масштабировании_ сегментов ниже исходного размера текстуры. Затем рендерер выбирает для сегмента мипмап с более низким разрешением, что приводит к появлению визуальных артефактов.
+
+![Slice 9 mipmapping](images/gui-box/mipmap.png){srcset="images/gui-box/[email protected] 2x"}
+
+Чтобы избежать этой проблемы, убедитесь, что сегменты текстуры, которые будут масштабироваться, достаточно малы, чтобы никогда не масштабироваться в меньшую сторону, а только в большую.

+ 73 - 0
docs/ru/manuals/gui-clipping.md

@@ -0,0 +1,73 @@
+---
+title: GUI-клипирование
+brief: В этом руководстве описано, как создавать GUI-ноды, которые маскируют другие ноды с помощью трафаретного клипирования.
+---
+
+# GUI-клипирование
+
+GUI-ноды могут использоваться с целью *клипирования* других нод, то есть в качестве масок, влияющих на отображение других нод. В этом руководстве объясняется, как работает эта возможность.
+
+## Создание ноды клипирования
+
+Ноды Box, Text и Pie могут быть использованы для клипирования. Чтобы создать ноду клипирования, добавьте ноду в GUI, а затем задайте ее свойства соответствующим образом:
+
+Clipping Mode
+: Режим, используемый для клипирования.
+  - `None` --- рендерит ноду без какого-либо клипирования.
+  - `Stencil` --- заставляет ноду вписаться в текущую трафаретную маску.
+
+Clipping Visible
+: Отметьте, чтобы рендерить содержимое ноды.
+
+Clipping Inverted
+: Отметьте, чтобы вписать инверсию формы ноды в маску.
+
+Затем добавьте ноду(ы), которую нужно клипировать, в качестве дочерней к ноде клипирования.
+
+![Create clipping](images/gui-clipping/create.png){srcset="images/gui-clipping/[email protected] 2x"}
+
+## Трафаретная маска
+
+Клипирование работает за счет того, что ноды записывают данные в *трафаретный буфер*. Этот буфер содержит маски клипирования: информацию, которая сообщает видеокарте, должен ли пиксель быть отрендерен или нет.
+
+- Нода без родителя-клиппера, но с режимом клипирования, установленным в `Stencil`, запишет свою форму (или ее инверсную форму) в новую маску клипирования, хранящуюся в трафаретном буфере.
+- Если у клипирующей ноды есть клипирующий родитель, то вместо этого она будет клипировать клипирующую маску родителя. Клипирующая дочерняя нода никогда не будет _расширять_ текущую маску клипирования, только клипировать ее дальш.
+- Ноды без клипирования, которые являются дочерними для клипируемых нод, будут рендериться с маской клипирования, созданной родительской иерархией.
+
+![Clipping hierarchy](images/gui-clipping/setup.png){srcset="images/gui-clipping/[email protected] 2x"}
+
+Здесь три ноды расположены в иерархической структуре:
+
+- Шестигранная и квадратная формы --- это трафаретные ножницы.
+- Шестиугольник создает новую маску клипирования, квадрат обрезает ее дальше.
+- Нода окружности --- это обычная нода Pie, поэтому она будет отображаться с маской клипирования, созданной ее родительскими клипперами.
+
+Для этой иерархии возможны четыре комбинации нормальных и инвертированных клиперов. Зеленая область отмечает часть окружности, которая рендерится. Остальная часть маскируется:
+
+![Stencil masks](images/gui-clipping/modes.png){srcset="images/gui-clipping/[email protected] 2x"}
+
+## Ограничения по использованию трафарета
+
+- Общее количество трафаретных ножниц не может превышать 256.
+- Максимальная глубина вложенности дочерних _трафаретных_ нод составляет 8 уровней. (Only nodes with stencil clipping count.)
+- Максимальное число смежников ноды трафарета --- 127. Для каждого уровня иерархии трафаретов максимальное ограничение уменьшается вдвое.
+- Инвертированные ноды имеют более высокую оценку. Существует ограничение на 8 инвертированных нод клипирования, и каждая из них уменьшает максимальное количество неинвертированных нод клипирования вдвое.
+- Трафареты рендерят трафаретную маску из _геометрии_ ноды (не текстуры). Можно инвертировать маску, установив свойство *Inverted clipper*.
+
+
+## Слои
+
+Слои можно использовать для управления порядком рендеринга (и пакетирования) нод. При использовании слоев и нод клипирования обычный порядок наслоения отменяется.
+
+- Порядок клипирования имеет приоритет над порядком слоев --- независимо от того, к какому слою принадлежит нода, она будет клипирована в соответствии с иерархией нод.
+- Слои влияют только на порядок отрисовки графики --- и более того, слой, заданный в ноде клипирования, влияет только на порядок отрисовки _в иерархии этого клиппера_.
+
+::: sidenote
+Нода клипирования и ее иерархия будут отрисованы первыми, если ей назначен слой, и в обычном порядке, если слой не назначен.
+:::
+
+![Layers and clipping](images/gui-clipping/layers.png){srcset="images/gui-clipping/[email protected] 2x"}
+
+Здесь нода клиппера "ocular" установлена в "layer3", а нода "bean" --- в "layer1". Поэтому текстура клиппера "ocular" отрисовывается поверх обрезанного bean'.
+
+Ноде "shield" задано "layer2", но это не влияет на порядок рендеринга ноды по отношению к "ocular" или "bean". Чтобы изменить порядок рендеринга ноды "shield", измените индексный порядок дерева нод.

+ 100 - 0
docs/ru/manuals/gui-layouts.md

@@ -0,0 +1,100 @@
+---
+title: GUI-компоновки
+brief: Defold поддерживает графические интерфейсы, которые автоматически адаптируются к изменениям ориентации экрана на мобильных устройствах. В этом документе объясняется, как работает эта возможность.
+---
+
+# GUI-компоновки
+
+Defold поддерживает графические интерфейсы, которые автоматически адаптируются к изменениям ориентации экрана на мобильных устройствах. Используя эту возможность, можно создавать графические интерфейсы, которые адаптируются к ориентации и соотношению сторон экранов различных размеров. Также можно создавать компоновки, соответствующие определенным моделям устройств.
+
+## Создание профилей отображения
+
+По умолчанию в настройках "game.project" указано, что используется встроенный файл настроек профилей отображения ("builtins/render/default.display_profiles"). По умолчанию используются профили "Landscape" (ширина 1280 пикселей и высота 720 пикселей) и "Portrait" (ширина 720 пикселей и высота 1280 пикселей). Для профилей не задаются модели устройств, поэтому они будут соответствовать любому устройству.
+
+Чтобы создать новый файл настроек профилей, либо скопируйте его из папки "builtins", либо <kbd>кликните ПКМ</kbd> подходящее место в представлении *Assets* и выберите <kbd>New... ▸ Display Profiles</kbd>. Дайте новому файлу подходящее имя и кликните <kbd>Ok</kbd>.
+
+Редактор откроет новый файл для редактирования. Добавьте новые профили, кликнув <kbd>+</kbd> в списке *Profiles*. Для каждого профиля добавьте набор *квалификаторов*:
+
+Width
+: Ширина пикселя классификатора.
+
+Height
+: Высота пикселя классификатора.
+
+Device Models
+: Список моделей устройств, разделенных запятой. Модель устройства соответствует началу названия модели устройства, например, `iPhone10` будет соответствовать моделям "iPhone10,\*". Имена моделей с запятыми должны быть заключены в кавычки, то есть `"iPhone10,3", "iPhone10,6"` соответствует моделям iPhone X (см. https://www.theiphonewiki.com/wiki/Models). Следует отметить, что единственными платформами, сообщающими модель устройства при вызове `sys.get_sys_info()`, являются Android и iOS. Другие платформы возвращают пустую строку и, следовательно, никогда не выберут профиль дисплея, содержащий квалификатор модели устройства.
+
+![New display profiles](images/gui-layouts/new_profiles.png){srcset="images/gui-layouts/[email protected] 2x"}
+
+Кроме того, необходимо указать, что движок должен использовать новые профили. Откройте "game.project" и выберите файл профилей отображения в настройках *Display Profiles* в разделе *Display*:
+
+![Settings](images/gui-layouts/settings.png){srcset="images/gui-layouts/[email protected] 2x"}
+
+::: sidenote
+Текущее приложение для разработчиков для iOS не соблюдает параметр *Dynamic Orientation*, оно всегда будет менять ориентацию динамически.
+:::
+
+Если вы хотите, чтобы движок автоматически переключался между книжной и альбомной раскладками при повороте устройства, установите флажок *Dynamic Orientation*. Движок будет динамически выбирать подходящую компоновку, а также менять ее при смене ориентации устройства.
+
+## GUI-компоновки
+
+Текущий набор профилей отображения может быть использован для создания вариантов компоновки конфигурации GUI-нод. Чтобы добавить новую компоновку в GUI-сцену, кликните ПКМ по иконке *Layouts* в представлении *Outline* и выберите <kbd>Add ▸ Layout ▸ ...</kbd>:
+
+![Add layout to scene](images/gui-layouts/add_layout.png){srcset="images/gui-layouts/[email protected] 2x"}
+
+При редактировании GUI-сцены все ноды редактируются в определенной компоновке. Текущая выбранная компоновка указывается в выпадающем списке компоновок GUI-сцены на тулбаре. Если компоновка не выбрана, ноды редактируются в компоновке *Default*.
+
+![Layouts toolbar](images/gui-layouts/toolbar.png){srcset="images/gui-layouts/[email protected] 2x"}
+
+![portrait edit](images/gui-layouts/portrait.png){srcset="images/gui-layouts/[email protected] 2x"}
+
+Каждое изменение свойства ноды, которое выполняется при выбранной компоновке, _переопределяет_ свойство по отношению к компоновке *Default*. Свойства, которые переопределяются, отмечены синим цветом. Ноды с переопределенными свойствами также отмечены синим цветом. Можно нажать на кнопку сброса рядом с любым переопределенным свойством, чтобы вернуть его к исходному значению.
+
+![landscape edit](images/gui-layouts/landscape.png){srcset="images/gui-layouts/[email protected] 2x"}
+
+Компоновка не может удалять или создавать новые ноды, она может только переопределять свойства. Если необходимо удалить ноду из компоновки, можно либо переместить ноду за пределы экрана, либо удалить ее с помощью логики скрипта. Также следует обратить внимание на текущую выбранную компоновку. Если добавлять компоновку в проект, то новая компоновка будет настроена в соответствии с текущей выбранной компоновкой. Также копирование и вставка нод учитывает текущую выбранную компоновку, при копировании *и* при вставке.
+
+## Динамический выбор профиля
+
+Динамический компоновщик оценивает каждый квалификатор профиля отображения в соответствии со следующими правилами:
+
+1. Если набор моделей устройств отсутствует, или модель устройства совпадает, для квалификатора вычисляется оценка (S).
+
+2. Оценка (S) рассчитывается с учетом площади дисплея (A), площади из квалификатора (A_Q), соотношения сторон дисплея (R) и соотношения сторон квалификатора (R_Q):
+
+<img src="https://latex.codecogs.com/svg.latex?\inline&space;S=\left|1&space;-&space;\frac{A}{A_Q}\right|&space;&plus;&space;\left|1&space;-&space;\frac{R}{R_Q}\right|" title="S=\left|1 - \frac{A}{A_Q}\right| + \left|1 - \frac{R}{R_Q}\right|" />
+
+3. Выбирается профиль с квалификатором с наименьшей оценкой, если ориентация (альбомная или книжная) квалификатора соответствует дисплею.
+
+4. Если профиль с квалификатором той же ориентации не найден, выбирается профиль с лучшим квалификатором другой ориентации.
+
+5. Если ни один профиль не может быть выбран, используется запасной профиль *Default*.
+
+Поскольку компоновка *Default* используется в качестве запасного варианта в runtime, если нет более подходящей компоновки, это означает, что если добавить компоновку "Landscape", она будет лучшей для *всех* ориентаций, пока также не будет добавлена компоновка "Portrait".
+
+## Сообщения о смене компоновки
+
+Когда движок переключает раскладку в результате поворота устройства, сообщение `layout_changed` отправляется в скрипты компонентов GUI, на которые влияет изменение. Сообщение содержит хэшированный идентификатор компоновки, чтобы скрипт мог выполнять логику в зависимости от того, какая компоновка выбрана:
+
+```lua
+function on_message(self, message_id, message, sender)
+  if message_id == hash("layout_changed") and message.id == hash("My Landscape") then
+    -- переключить компоновку на альбомную
+  elseif message_id == hash("layout_changed") and message.id == hash("My Portrait") then
+    -- переключить компоновку на портретную
+  end
+end
+```
+
+Кроме того, текущий рендер-скрипт получает сообщение каждый раз, когда окно (игровое представление) меняется, и это включает изменение ориентации.
+
+```lua
+function on_message(self, message_id, message)
+  if message_id == hash("window_resized") then
+    -- Размер окна был изменен. message.width и
+    -- message.height содержат новые размеры окна.
+  end
+end
+```
+
+При смене ориентации менеджер GUI-компоновок автоматически изменяет масштаб и расположение GUI-нод в соответствии с компоновкой и свойствами нод. Однако внутриигровое содержимое отображается в отдельном проходе (по умолчанию) с проекцией в текущее окно. Чтобы изменить это поведение, либо предоставьте свой собственный модифицированный рендер-скрипт, либо используйте [библиотеку камеры](/assets/).

+ 34 - 0
docs/ru/manuals/gui-particlefx.md

@@ -0,0 +1,34 @@
+---
+title: GUI-нода Particle FX
+brief: Это руководство объясняет, как работают эффекты частиц в GUI.
+---
+
+# GUI-нода Particle FX
+
+Нода Particle FX используется для воспроизведения систем эффектов частиц в пространстве экрана GUI.
+
+## Добавление ноды Particle FX
+
+Добавьте ноду Particle FX <kbd>кликнув ПКМ</kbd> в *Outline* и выбрав <kbd>Add ▸ ParticleFX</kbd>, или нажав <kbd>A</kbd> и выбрав <kbd>ParticleFX</kbd>.
+
+Можно использовать эффекты частиц, добавленные в GUI, в качестве источника для эффекта. Добавьте эффекты частиц <kbd>кликнув ПКМ</kbd> на папке *Particle FX* в *Outline* и выберите <kbd>Add ▸ Particle FX...</kbd>. Затем задайте свойство *Particlefx* для ноды:
+
+![Particle fx](images/gui-particlefx/create.png){srcset="images/gui-particlefx/[email protected] 2x"}
+
+## Управление эффектом
+
+Можно запускать и останавливать эффект, управляя нодой из скрипта:
+
+```lua
+-- запустить эффект частиц
+local particles_node = gui.get_node("particlefx")
+gui.play_particlefx(particles_node)
+```
+
+```lua
+-- остановить эффект частиц
+local particles_node = gui.get_node("particlefx")
+gui.stop_particlefx(particles_node)
+```
+
+За подробностями о работе эффектов частиц обращайтесь к [руководству по Particle FX](/manuals/particlefx).

+ 56 - 0
docs/ru/manuals/gui-pie.md

@@ -0,0 +1,56 @@
+---
+title: GUI-нода Pie
+brief: Это руководство объясняет, как использовать ноду Pie в GUI-сценах.
+---
+
+# GUI-нода Pie
+
+Pie nodes are used to create circular or ellipsoid objects ranging from plain circles to pies and square donut shapes.
+
+## Создание ноды Pie
+
+<kbd>Кликните ПКМ</kbd> на папке *Nodes* в *Outline* и выберите <kbd>Add ▸ Pie</kbd>. Новая нода Pie будет выделена, и теперь можно изменять ее свойства.
+
+![Create pie node](images/gui-pie/create.png){srcset="images/gui-pie/[email protected] 2x"}
+
+Следующие свойства уникальны для ноды Pie:
+
+Inner Radius
+: Внутренний радиус ноды, выраженный вдоль оси X.
+
+Outer Bounds
+: Форма внешних границ ноды.
+
+  - `Ellipse` --- расширит ноду до внешнего радиуса.
+  - `Rectangle` --- расширит ноду до ограничивающей рамки ноды.
+
+Perimeter Vertices
+: Количество сегментов, которые будут использоваться для построения формы, выраженное как количество вершин, необходимых для полного обхода периметра ноды на 360 градусов.
+
+Pie Fill Angle
+: Доля заполнения. Выражается как угол против часовой стрелки, начиная справа.
+
+![Properties](images/gui-pie/properties.png){srcset="images/gui-pie/[email protected] 2x"}
+
+Если для ноды задана текстура, изображение текстуры накладывается плоско, при этом углы текстуры коррелируются с углами ограничивающей рамки ноды.
+
+## Воздействие на ноду Pie в рантайме
+
+реагирует на любые общие функции манипуляции нодами по настройке размера, пивота, цвета и так далее. Существует несколько функций, предназначенных только для ноды Pie:
+
+```lua
+local pienode = gui.get_node("my_pie_node")
+
+-- получить внешние границы
+local fill_angle = gui.get_fill_angle(pienode)
+
+-- увеличить количество периметральных вершин
+local vertices = gui.get_perimeter_vertices(pienode)
+gui.set_perimeter_vertices(pienode, vertices + 1)
+
+-- изменить внешние границы
+gui.set_outer_bounds(pienode, gui.PIEBOUNDS_RECTANGLE)
+
+-- анимировать внутренний радиус
+gui.animate(pienode, "inner_radius", 100, gui.EASING_INOUTSINE, 2, 0, nil, gui.PLAYBACK_LOOP_PINGPONG)
+```

+ 149 - 0
docs/ru/manuals/gui-script.md

@@ -0,0 +1,149 @@
+---
+title: GUI-скриптинг
+brief: Данное руководство описывает GUI-скриптинг.
+---
+
+# GUI-скриптинг
+
+Для управления логикой GUI и анимацией нод используются Lua-скрипты. GUI-скрипты работают так же, как и обычные скрипты игровых объектов, но сохраняются как файл другого типа и имеют доступ к другому набору функций: функциям модуля `gui`.
+
+## Добавление скрипта в GUI
+
+Чтобы добавить скрипт в GUI, сперва создайте файл GUI-скрипта, <kbd>кликнув ПКМ</kbd> в каком-либо расположении в браузере *Assets* и выбрав <kbd>New ▸ Gui Script</kbd> и выпадающего контекстного меню.
+
+Редактор автоматически открывает новый файл скрипта. Он основан на шаблоне и оснащен пустыми функциями времени жизни, как и скрипты игровых объектов:
+
+```lua
+function init(self)
+   -- Добавьте здесь код инициализации
+   -- Удалите эту функцию, если она не нужна
+end
+
+function final(self)
+   -- Добавьте здесь код инициализации
+   -- Удалите эту функцию, если она не нужна
+end
+
+function update(self, dt)
+   -- Добавьте здесь код обновления
+   -- Удалите эту функцию, если она не нужна
+end
+
+function on_message(self, message_id, message, sender)
+   -- Добавьте сюда код обработки сообщений
+   -- Удалите эту функцию, если она не нужна
+end
+
+function on_input(self, action_id, action)
+   -- Добавьте сюда код обработки ввода
+   -- Удалите эту функцию, если она не нужна
+end
+
+function on_reload(self)
+   -- Добавьте сюда код обработки ввода
+   -- Удалите эту функцию, если она не нужна
+end
+```
+
+Чтобы прикрепить скрипт к компоненту GUI, откройте файл компонента GUI и выделите его корень в *Outline*, чтобы вызвать *свойства* GUI. Задайте свойству *Script* требуемый файл скрипта.
+
+![Script](images/gui-script/set_script.png){srcset="images/gui-script/[email protected] 2x"}
+
+Если компонент GUI был добавлен к игровому объекту где-либо в игре, скрипт будет запущен.
+
+## Пространство имен в "gui"
+
+GUI-скрипты имеют доступ к пространству имен `gui` и [всем gui-функциям](/ref/gui). Пространство имен `go` недоступно, поэтому необходимо отделить логику игрового объекта в компоненты Script и осуществлять связь между GUI и скриптами игрового объекта. Любая попытка использовать функции `go` приведет к ошибке:
+
+```lua
+function init(self)
+   local id = go.get_id()
+end
+```
+
+```txt
+ERROR:SCRIPT: /main/my_gui.gui_script:2: You can only access go.* functions and values from a script instance (.script file)
+stack traceback:
+   [C]: in function 'get_id'
+   /main/my_gui.gui_script:2: in function </main/my_gui.gui_script:1>
+```
+
+## Передача сообщений
+
+Любой компонент GUI с подключенным скриптом может взаимодействовать с другими объектами в рантайме игры посредством передачи сообщений, он будет вести себя как любой другой скриптовый компонент.
+
+Обращение к компоненту GUI происходит так же, как и к любому другому компоненту скрипта:
+
+```lua
+local stats = { score = 4711, stars = 3, health = 6 }
+msg.post("hud#gui", "set_stats", stats)
+```
+
+![message passing](images/gui-script/message_passing.png){srcset="images/gui-script/[email protected] 2x"}
+
+## Обращение к нодам
+
+GUI-нодами можно манипулировать с помощью GUI-скрипта, прикрепленного к компоненту. Каждая нода должна иметь уникальный *Id*, который задается в редакторе:
+
+![message passing](images/gui-script/node_id.png){srcset="images/gui-script/[email protected] 2x"}
+
+*Id* позволяет скрипту получить ссылку на ноду и манипулировать ею с помощью функций [пространства имен gui](/ref/gui):
+
+```lua
+-- расширить полосу здоровья на 10 единиц
+local healthbar_node = gui.get_node("healthbar")
+local size = gui.get_size(healthbar_node)
+size.x = size.x + 10
+gui.set_size(healthbar_node, size)
+```
+
+## Динамически создаваемые ноды
+
+Чтобы создать новую ноду со скриптом в рантайме, есть два варианта. Первый вариант --- создавать ноды с нуля, вызвав функции `gui.new_[type]_node()`. Они вернут ссылку на новую ноду, которую можно использовать для манипуляций с нодой:
+
+```lua
+-- Создать новую ноду Box
+local new_position = vmath.vector3(400, 300, 0)
+local new_size = vmath.vector3(450, 400, 0)
+local new_boxnode = gui.new_box_node(new_position, new_size)
+gui.set_color(new_boxnode, vmath.vector4(0.2, 0.26, 0.32, 1))
+
+-- Создать новую ноду Text
+local new_textnode = gui.new_text_node(new_position, "Hello!")
+gui.set_font(new_textnode, "sourcesans")
+gui.set_color(new_textnode, vmath.vector4(0.69, 0.6, 0.8, 1.0))
+```
+
+![dynamic node](images/gui-script/dynamic_nodes.png){srcset="images/gui-script/[email protected] 2x"}
+
+Альтернативным способом создания новых нод является клонирование существующей ноды с помощью функции `gui.clone()` или дерева нод с помощью функции `gui.clone_tree()`:
+
+```lua
+-- клонировать полосу здоровья
+local healthbar_node = gui.get_node("healthbar")
+local healthbar_node_2 = gui.clone(healthbar_node)
+
+-- кнопка клонирования дерева нод
+local button = gui.get_node("my_button")
+local new_button_nodes = gui.clone_tree(button)
+
+-- получить новый корень дерева
+local new_root = new_button_nodes["my_button"]
+
+-- переместить корень (и дочерние элементы) на 300 вправо
+local root_position = gui.get_position(new_root)
+root_position.x = root_position.x + 300
+gui.set_position(new_root, root_position)
+```
+
+## Id динамических узлов
+
+Динамически созданные ноды не имеют присвоенного им идентификатора. Это сделано специально. Ссылки, возвращаемые из `gui.new_[type]_node()`, `gui.clone()` и `gui.clone_tree()` --- это единственное, что необходимо для доступа к нодам, поэтому необходимо отслеживать эти ссылки.
+
+```lua
+-- Добавить ноду Text
+local new_textnode = gui.new_text_node(vmath.vector3(100, 100, 0), "Hello!")
+-- "new_textnode" содержит ссылку на ноду.
+-- Нода не имеет идентификатора, и это нормально.
+-- Нет причин выполнять gui.get_node(), когда у нас уже есть ссылка.
+```

+ 78 - 0
docs/ru/manuals/gui-spine.md

@@ -0,0 +1,78 @@
+---
+title: GUI-нода Spine
+brief: Это руководство объясняет, как использовать ноды Spine со скелетной анимацией в GUI сценах Defold.
+---
+
+# GUI-нода Spine
+
+Анимированные Spine-модели можно добавлять в качестве GUI-нод, а также в качестве компонентов игровых объектов. В этом руководстве объясняется, как использовать импортированные данные Spine-анимации в GUI-сценах.
+
+## Создание ноды Spine
+
+Во-первых, необходимо импортировать данные анимации и настроить ресурс Spine Scene.. О том, как это сделать, описано в [руководстве по Spine-анимации](/manuals/spine).
+
+Во-вторых, содержимое ресурса Spine Scene должно быть доступно в GUI-сцене. Добавьте его, <kbd>кликнув ПКМ</kbd> в секции *Spine Scenes* сцены в *Outline* и выберите <kbd>Add ▸ Spine Scenes...</kbd>. Выберите Spine Scenes (одну или несколько), которые вы хотите использовать в сцене
+
+![Add Spine Scene](images/gui-spine/add.png){srcset="images/gui-spine/[email protected] 2x"}
+
+В-третьих, создайте ноду Spine, <kbd>кликнув ПКМ</kbd> на секции *Nodes* в *Outline* и выбрав <kbd>Add ▸ Spine</kbd>.
+
+![New spine node](images/gui-spine/new_node.png){srcset="images/gui-spine/[email protected] 2x"}
+
+Новая нода будет выделена автоматически. Убедитесь, что заданы ее свойства:
+
+Spine Scene
+: Spine Scene, которую следует использовать в качестве источника данных для данной ноды.
+
+Spine Default Animation
+: Анимация, которая автоматически начнет воспроизводиться при инициализации сцены.
+
+Skin
+: Скин, который будет использоваться для анимации при инициализации сцены.
+
+## Управление анимацией в рантайме
+
+Нодами Spine можно управлять в рантайме посредством скрипта. Чтобы запустить анимацию в ноде, достаточно вызвать функцию [`gui.play_spine_anim()`](/ref/gui/#gui.play_spine_anim:node-animation_id-playback-[play_properties]-[complete_function]):
+
+```lua
+local catnode = gui.get_node("cat_note")
+local play_properties = { blend_time = 0.3, offset = 0, playback_rate = 1 }
+gui.play_spine_anim(catnode, hash("run"), gui.PLAYBACK_ONCE_FORWARD, play_properties, function(self, node)
+    print("Animation done!")
+end)
+```
+
+Используйте один из следующих режимов воспроизведения анимации:
+
+* gui.PLAYBACK_NONE
+* gui.PLAYBACK_ONCE_FORWARD
+* gui.PLAYBACK_ONCE_BACKWARD
+* gui.PLAYBACK_ONCE_PINGPONG
+* gui.PLAYBACK_LOOP_FORWARD
+* gui.PLAYBACK_LOOP_BACKWARD
+* gui.PLAYBACK_LOOP_PINGPONG
+
+## Скелетная иерархия
+
+Доступ к отдельным костям в скелете Spine можно получить в виде GUI-нод. Ноды именуются в соответствии с их именами в настройках Spine.
+
+![Spine bone names](images/gui-spine/bone.png){srcset="images/gui-spine/[email protected] 2x"}
+
+Например, чтобы присоединить другую ноду к существующей ноде кости, найдите ноду кости по имени с помощью [`gui.get_spine_bone()`](/ref/gui#gui.get_spine_bone) и присоедините к ней дочернюю ноду:
+
+```lua
+-- Attach a text node to the tail of the cat
+local cat = gui.get_node("cat_node")
+local textnode = gui.new_text_node(vmath.vector3(400, 0, 0), "Hello tail!")
+local tail = gui.get_spine_bone(cat, "tail")
+gui.set_parent(textnode, tail)
+```
+
+Кости также доступны через [`gui.get_node()`](/ref/gui#gui.get_node), по имени кости с префиксом имени ноды Spine и слэшем (`/`):
+
+```lua
+-- Прикрепить ноду Text к хвосту кошки
+local textnode = gui.new_text_node(vmath.vector3(400, 0, 0), "Hello tail!")
+local tail = gui.get_node("cat_node/tail")
+gui.set_parent(textnode, tail)
+```

+ 62 - 0
docs/ru/manuals/gui-template.md

@@ -0,0 +1,62 @@
+---
+title: GUI-нода Templates
+brief: This manual explains the Defold GUI template system that is used to create reusable visual GUI components based on shared templates or 'prefabs'.
+---
+
+# GUI-нода Templates
+
+GUI-нода Template предоставляет мощный механизм для создания многократно используемых компонентов GUI на основе общих шаблонов или "префабов". В этом руководстве объясняется, что это за функция и как ее использовать.
+
+GUI-шаблон --- это GUI-сцена, которая инстанцируется, нода за нодой, в другую GUI-сцену. Любые значения свойств нод исходного шаблона могут быть переопределены.
+
+## Создание шаблона
+
+GUI-шаблон --- это обычная GUI-сцена, поэтому он создается так же, как и любая другая GUI-сцена. <kbd>Кликните ПКМ</kbd> в каком-либо расположении в панели *Assets* и выберите <kbd>New... ▸ Gui</kbd>.
+
+![Create template](images/gui-templates/create.png){srcset="images/gui-templates/[email protected] 2x"}
+
+Создайте шаблон и сохраните его. Следует заметить, что ноды экземпляра будут располагаться относительно начала координат, поэтому целесообразно создать шаблон в позиции 0, 0, 0.
+
+## Создание экземпляров из шаблона
+
+На основе образца можно создать любое количество экземпляров. Создайте или откройте GUI-сцену, в которой нужно разместить шаблон, затем <kbd>кликните ПКМ</kbd> в секции *Nodes* в *Outline* и выберите <kbd>Add ▸ Template</kbd>.
+
+![Create instance](images/gui-templates/create_instance.png){srcset="images/gui-templates/[email protected] 2x"}
+
+Задайте свойству *Template* файл шаблона GUI-сцены.
+
+Можно добавить любое количество шаблонных экземпляров, и для каждого экземпляра можно переопределить свойства каждой ноды и изменить позицию, цвет, размер, текстуру и так далее.
+
+![Instances](images/gui-templates/instances.png){srcset="images/gui-templates/[email protected] 2x"}
+
+Любое свойство, которое вы измените, будет отмечено синим цветом в редакторе. Нажмите кнопку сброса рядом со свойством, чтобы установить его значение в значение из шаблона:
+
+![Properties](images/gui-templates/properties.png){srcset="images/gui-templates/[email protected] 2x"}
+
+Любая нода, имеющая переопределенные свойства, также окрашивается в синий цвет в *Outline*:
+
+![Outline](images/gui-templates/outline.png){srcset="images/gui-templates/[email protected] 2x"}
+
+Экземпляр шаблона отображается в виде сворачиваемой записи в представлении *Outline*. Однако важно отметить, что этот элемент в Outline *не является нодой*. Экземпляр шаблона также не существует в рантайме, но все ноды, которые являются частью этого экземпляра, существуют.
+
+Ноды, являющиеся частью экземпляра шаблона, автоматически именуются с префиксом и слэшем (`"/"`), прикрепленным к их *Id*. Префикс --- это *Id*, установленный в экземпляре шаблона.
+
+::: important
+Переопределение значений нод экземпляра шаблона в *Layouts* в настоящее время не работает в Editor 2. Если необходимо использовать макеты в сочетании с шаблонами, пожалуйста, используйте Editor 1, пока эта проблема не будет решена.
+
+См. https://github.com/defold/editor2-issues/issues/1124
+:::
+
+## Изменение шаблонов в рантайме
+
+Скрипты, которые манипулируют или запрашивают ноды, добавленные через механизм шаблонов, должны учитывать только именование нод экземпляра и включать *Id* экземпляра шаблона в качестве префикса имени ноды:
+
+```lua
+if gui.pick_node(gui.get_node("button_1/button"), x, y) then
+    -- Какие-либо действия...
+end
+```
+
+Не существует ноды, соответствующей самому экземпляру шаблона. Если требуется корневая нода для экземпляра, добавьте ее в шаблон.
+
+Если скрипт связан со GUI-сценой шаблона, он не является частью дерева нод экземпляра. Можно прикрепить один единственный скрипт к каждой GUI-сцене, чтобы логика скрипта располагалась в GUI-сцене, в которую инстанцируются шаблоны.

+ 58 - 0
docs/ru/manuals/gui-text.md

@@ -0,0 +1,58 @@
+---
+title: GUI-нода Text
+brief: В этом руководстве описано, как добавлять текст в GUI-сцены.
+---
+
+# GUI-нода Text
+
+Defold поддерживает особый тип GUI-ноды, позволяющий отображать текст в GUI-сцене. Любой ресурс Font, добавленный в проект, может быть использован для рендеринга ноды Text.
+
+## Добавление ноды Text
+
+Шрифты, которые планируется использовать в GUI-нодах Text, должны быть добавлены в компонент GUI. Кликните ПКМ на папке *Fonts*, используйте контекстное меню <kbd>GUI</kbd> или нажмите соответствующее клавиатурное сокращение.
+
+![Fonts](images/gui-text/fonts.png){srcset="images/gui-text/[email protected] 2x"}
+
+Нода Text обладает набором специфических свойств:
+
+*Font*
+: Любая созданная нода Text должна иметь настроенное свойство *Font*.
+
+*Text*
+: Отображаемый текст.
+
+*Line Break*
+: Выравнивание текста следует за настройкой пивота, и настройка этого свойства позволяет тексту располагаться на нескольких строках. Ширина ноды определяет, в каком месте текст будет перенесен.
+
+## Выравнивание
+
+Настроив пивот ноды, можно изменить режим выравнивания текста.
+
+*Center*
+: Если пивот установлен в `Center`, `North` или `South`, текст выравнивается по центру.
+
+*Left*
+: Если пивот установлен в какой-либо из режимов `West`, текст выравнивается по левому краю.
+
+*Right*
+: Если пивот установлен в один из режимов `East`, текст выравнивается по правому краю.
+
+![Text alignment](images/gui-text/align.png){srcset="images/gui-text/[email protected] 2x"}
+
+## Воздействие на ноду Text в рантайме
+
+Нода Text реагирует на любые общие функции манипуляции нодами по настройке размера, пивота, цвета и так далее. Существует несколько функций, предназначенных только для ноды Text:
+
+* Чтобы изменить шрифт ноды Text, используйте функцию [`gui.set_font()`](/ref/gui/#gui.set_font).
+* Чтобы изменить поведение переноса строки ноды Text, используйте функцию [`gui.set_line_break()`](/ref/gui/#gui.set_line_break).
+* Чтобы изменить содержимое ноды Text, используйте функцию [`gui.set_text()`](/ref/gui/#gui.set_text).
+
+```lua
+function on_message(self, message_id, message, sender)
+    if message_id == hash("set_score") then
+        local s = gui.get_node("score")
+        gui.set_text(s, message.score)
+    end
+end
+```
+

+ 351 - 0
docs/ru/manuals/gui.md

@@ -0,0 +1,351 @@
+---
+title: Разработка GUI
+brief: В этом руководстве рассматривается создание GUI для приложения в движке Defold, различные типы GUI-нод и GUI-скриптинг.
+---
+
+# Разработка GUI
+
+Defold предоставляет пользовательский Gui-редактор и эффективные средства написания скриптов, которые разработаны специально для создания и реализации пользовательских интерфейсов.
+
+В Defold GUI, или графический интерфейс пользователя --- это компонент, прикрепляемый к игровому объекту и помещаемый в коллекцию. Этому компоненту присущи следующие черты:
+
+* Обладает простыми, но мощными средствами компоновки, которые позволяют создавать пользовательский интерфейс независимо от разрешения и соотношения сторон.
+* К нему может быть привязано логическое поведение через *GUI-скрипт*.
+* По умолчанию отображается поверх прочего контента, независимо от вида камеры, поэтому даже если камера движется, элементы графического интерфейса останутся на экране. Поведение рендеринга может быть подвергнуто изменениям.
+
+Компоненты GUI рендерятся независимо от игрового представления. Поэтому они не размещаются в определенном месте и не имеют визуального представления в редакторе коллекции. Однако компоненты Gui должны находиться в игровом объекте, который имеет местоположение в коллекции. Изменение этого расположения не влияет на GUI.
+
+## Создание компонента GUI
+
+Компоненты GUI создаются из файла-шаблона GUI-сцены. Чтобы создать новый компонент GUI, <kbd>кликните ПКМ</kbd> в каком-либо расположении в браузере *Assets* и выберите <kbd>New ▸ Gui</kbd>. Введите имя нового файла GUI и кликните <kbd>Ok</kbd>.
+
+![New gui file](images/gui/new_gui_file.png){srcset="images/gui/[email protected] 2x"}
+
+Defold автоматически откроет файл в редакторе GUI-сцен.
+
+![New gui](images/gui/new_gui.png){srcset="images/gui/[email protected] 2x"}
+
+В *Outline* перечисляется весь контент графического интерфейса: список нод и какие-либо зависимости (см. ниже).
+
+В центральной области редактирования отображается GUI. Панель инструментов в правом верхнем углу области редактирования содержит инструменты *Move*, *Rotate* и *Scale*, а также селектор [компоновок](/manuals/gui-layouts).
+
+![toolbar](images/gui/toolbar.png){srcset="images/gui/[email protected] 2x"}
+
+Белый прямоугольник показывает границы текущей выбранной компоновки, ширину и высоту дисплея по умолчанию, установленные в настройках проекта.
+
+Выделив корневую GUI-ноду, в *Outline* отображаются *свойства* компонента GUI:
+
+Script
+: GUI-скрипт, привязанный к данному компоненту GUI.
+
+Material
+: Материал, используемый при рендеринге этого GUI.
+
+Adjust Reference
+: Управляет способом вычисления *режима адаптации* каждой ноды:
+
+  - `Per Node` --- подгоняет каждую ноду под измененный размер родительской ноды или измененный размер экрана.
+  - `Disable` --- отключает режим адаптации нод. Заставляет все ноды сохранять заданный размер.
+
+Max Nodes
+: Максимальное количество нод для данного GUI.
+
+## Зависимости
+
+Дерево ресурсов в игре Defold статично, поэтому все зависимости, необходимые для GUI-нод, должны быть добавлены к компоненту. В *Outline* все зависимости группируются по типам в "папках":
+
+![dependencies](images/gui/dependencies.png){srcset="images/gui/[email protected] 2x"}
+
+Чтобы добавить новую зависимость, <kbd>кликните ПКМ</kbd> в корне "GUI" в *Outline*, затем выберите <kbd>Add ▸ [type]</kbd> из всплывающего контекстного меню.
+
+Также можно <kbd>кликнуть ПКМ</kbd> на иконке папки для типа, который требуется добавить, и выбрать <kbd>Add ▸ [type]</kbd>.
+
+## Типы нод
+
+Компонент GUI формируется из набора нод. Ноды --- это простые элементы. Они могут быть трансформированы (перемещены, масштабированы и повернуты) и упорядочены в иерархии "родительский-дочерний" либо в редакторе, либо во время выполнения с помощью скриптов. Существуют следующие типы нод:
+
+Box
+: ![box node](images/icons/gui-box-node.png){.left}
+  Прямоугольная нода с одним цветом, текстурой или мультикадровой анимацией. См. [руководство по ноде Box](/manuals/gui-box).
+
+<div style="clear: both;"></div>
+
+Text
+: ![text node](images/icons/gui-text-node.png){.left}
+  Отображает тескт. См. [руководство по ноде Text](/manuals/gui-text).
+
+<div style="clear: both;"></div>
+
+Pie
+: ![pie node](images/icons/gui-pie-node.png){.left}
+  Круговая или эллипсоидная нода, которая может быть частично заполнена или инвертирована. См. [руководство по ноде Pie](/manuals/gui-pie).
+
+<div style="clear: both;"></div>
+
+Template
+: ![template node](images/icons/gui.png){.left}
+  Шаблоны используются для создания экземпляров на основе других файлов GUI-сцен. См. [руководство по ноде Template](/manuals/gui-template).
+
+<div style="clear: both;"></div>
+
+Spine
+: ![spine node](images/icons/spine-model.png){.left}
+  Отображает и анимирует Spine-модель. См. [руководство по ноде Spine](/manuals/gui-spine).
+
+<div style="clear: both;"></div>
+
+Particle FX
+: ![particlefx node](images/icons/particlefx.png){.left}
+  Воспроизводит эффект частиц. См. [руководство по ноде Particle FX](/manuals/gui-particlefx).
+
+<div style="clear: both;"></div>
+
+Добавьте ноды, кликнув правой кнопкой мыши на папке *Nodes* и выбрав <kbd>Add ▸</kbd>, затем <kbd>Box</kbd>, <kbd>Text</kbd>, <kbd>Pie</kbd>, <kbd>Template</kbd>, <kbd>Spine</kbd> или <kbd>Particle Fx</kbd>.
+
+![Add nodes](images/gui/add_node.png){srcset="images/gui/[email protected] 2x"}
+
+Также можно нажать <kbd>A</kbd> и выбрать тип для добавления в GUI.
+
+## Свойства нод
+
+Каждая нода имеет богатый набор свойств, которые отвечают за ее внешний вид:
+
+Id
+: Идентификатор ноды. Это имя должно быть уникальным в рамках GUI-сцены.
+
+Position, Rotation и Scale
+: Задают расположение, ориентацию и растяжение ноды. Для изменения этих значений можно использовать инструменты *Move*, *Rotate* и *Scale*. Значения можно анимировать из скрипта ([подробнее](/manuals/property-animation)).
+
+Size (ноды Box, Text и Pie)
+: По умолчанию размер ноды задается автоматически, но, установив для параметра *Size Mode* значение `Manual`, это значение можно изменять. Размер определяет границы ноды и используется при выполнении ввода. Это значение можно анимировать из скрипта ([подробнее](/manuals/property-animation)).
+
+Size Mode (ноды Box и Pie)
+: Если установлено значение `Automatic`, редактор сам устанавливает размер узла. Если установлено значение `Manual`, размер можно задавать самостоятельно.
+
+Text (нода Text)
+: Текст, отображаемый в ноде.
+
+Line Break (нода Text)
+: Устанавливается для переноса текста в соответствии с шириной ноды.
+
+Font (нода Text)
+: Шрифт, используемый при рендеринге текста.
+
+Texture (ноды Box и Pie)
+: Текстура для отрисовки в ноде. Это ссылка на изображение или анимацию в атласе или тайловом источнике.
+
+Slice 9 (нода Box)
+: Устанавливается для сохранения размера пикселей текстуры ноды по краям при изменении размера ноды. За подробностями обращайтесь к [руководству по ноде Box](/manuals/gui-box).
+
+Inner Radius (нода Pie)
+: Внутренний радиус ноды, выраженный вдоль оси X. За подробностями обращайтесь к [руководству по ноде Pie](/manuals/gui-pie).
+
+Outer Bounds (нода Pie)
+: Управляет поведением внешних границ. За подробностями обращайтесь к [руководству по ноде Pie](/manuals/gui-pie).
+
+Perimeter Vertices (нода Pie)
+: Количество сегментов, используемых для построения фигуры. За подробностями обращайтесь к [руководству по ноде Pie](/manuals/gui-pie).
+
+Pie Fill Angle (нода Pie)
+: Заполнение окружности. За подробностями обращайтесь к [руководству по ноде Pie](/manuals/gui-pie).
+
+Template (нода Template)
+: Файл GUIсцены, используемый в качестве шаблона для ноды. За подробностями обращайтесь к [руководству по ноде Template](/manuals/gui-template).
+
+Spine Scene (нода Spine)
+: Spine-сцена, используемая для данной ноды. За подробностями обращайтесь к [руководству по ноде Spine](/manuals/gui-spine).
+
+Default Animation (нода Spine)
+: Анимация, автоматически воспроизводимая в данной ноде. За подробностями обращайтесь к [руководству по ноде Spine](/manuals/gui-spine).
+
+Skin (нода Spine)
+: Скин, используемый для ноды. За подробностями обращайтесь к [руководству по ноде Spine](/manuals/gui-spine).
+
+ParticleFX (нода Particle FX)
+: Эффект частиц, который будет использоваться в данной ноде. За подробностями обращайтесь к [руководству по ноде Particle FX](/manuals/gui-particlefx).
+
+Color
+: Цвет ноды. Если нода текстурирована, цвет оттеняет текстуру. Цвет можно анимировать из скрипта ([подробнее](/manuals/property-animation)).
+
+Alpha
+: Полупрозрачность ноды. Значение Alpha можно анимировать из скрипта ([подробнее](/manuals/property-animation)).
+
+Inherit Alpha
+: Если установить эту опцию, нода унаследует значение alpha родительской ноды. Затем значение alpha ноды умножается на значение alpha родительской ноды.
+
+Leading (нода Text)
+: Значение масштабирования для межстрочного интервала. Значение `0` не оставляет межстрочного интервала. `1` (по умолчанию) --- обычный межстрочный интервал.
+
+Tracking (нода Text)
+: Значение масштабирования для интервала между символами. По умолчанию 0.
+
+Layer
+: Назначение ноде слоя отменяет обычный порядок отрисовки и вместо этого действует порядок слоев. Подробности ниже.
+
+Blend Mode
+: Отвечает за смешивание графики ноды с фоновой графикой:
+  - `Alpha` --- смешивает пиксельные значения ноды с фоном. Соответствует режиму наложения "Normal" в графических программах.
+  - `Add` --- добавляет пиксельные значения ноды к фону. Соответствует "Linear dodge" в некоторых графических программах.
+  - `Multiply` --- перемножает значения пикселей ноды с фоном.
+
+Pivot
+: Устанавливает пивот ноды. Это можно рассматривать как "центральную точку" ноды. Любое вращение, масштабирование или изменение размера будет происходить вокруг этой точки.
+
+  Возможные значения: `Center`, `North`, `South`, `East`, `West`, `North West`, `North East`, `South West` и `South East`.
+
+  ![pivot point](images/gui/pivot.png){srcset="images/gui/[email protected] 2x"}
+
+  Если изменить пивот ноды, нода будет перемещена так, чтобы новый пивот находился в позиции ноды. Нода Text выравнивается таким образом, что `Center` устанавливает выравнивание текста по центру, `West` --- по левому краю, а `East` --- по правому.
+
+X Anchor, Y Anchor
+: Анкеровка контролирует изменение вертикального и горизонтального положения ноды, когда границы сцены или границы родительской ноды растягиваются, чтобы соответствовать физическому размеру экрана.
+
+  ![Anchor unadjusted](images/gui/anchoring_unadjusted.png){srcset="images/gui/[email protected] 2x"}
+
+  Доступны следующие режимы анкеровки:
+
+  - `None` --- (для обоих *X Anchor* и *Y Anchor*) сохраняет положение ноды от центра родительской ноды или сцены, относительно ее *скорректированного* размера.
+  - `Left` или `Right` --- (*X Anchor*) масштабирует горизонтальное положение ноды так, чтобы сохранить положение от левого и правого краев родительской ноды или сцены в одинаковом процентном соотношении.
+  - `Top` or `Bottom` (*Y Anchor*) --- (*Y Anchor*) масштабирует вертикальное положение ноды так, чтобы сохранить положение от верхнего и нижнего краев родительской ноды или сцены в одинаковом процентном соотношении.
+
+  ![Anchoring](images/gui/anchoring.png){srcset="images/gui/[email protected] 2x"}
+
+Adjust Mode
+: Задает режим корректировки для ноды. Режим корректировки управляет поведением ноды, когда границы сцены или границы родительской ноды подгоняются под физический размер экрана.
+
+  Нода, созданная в сцене, где логическим разрешением является типичное разрешение ландшафта:
+
+  ![Unadjusted](images/gui/unadjusted.png){srcset="images/gui/[email protected] 2x"}
+
+  При подгонке сцены к портретному экрану сцена растягивается. Аналогично растягивается ограничивающая рамка каждой ноды. Однако, установив режим корректировки, можно сохранить соотношение сторон содержимого ноды. Доступны следующие режимы:
+
+  - `Fit` --- масштабирует содержимое ноды так, чтобы оно было равно ширине или высоте растянутой границы, в зависимости от того, что меньше. Другими словами, содержимое будет помещаться внутри растянутой границы ноды.
+  - `Zoom` --- масштабирует содержимое ноды так, чтобы оно было равно ширине или высоте растянутой границы, в зависимости от того, что больше. Другими словами, содержимое будет полностью покрывать растянутую границу ноды.
+  - `Stretch` --- растягивает содержимое ноды так, чтобы оно заполняло растягиваемую границу ноды.
+
+  ![Adjust modes](images/gui/adjusted.png){srcset="images/gui/[email protected] 2x"}
+
+  Если свойство GUI-сцены *Adjust Reference* установлено в `Disabled`, эта настройка будет проигнорирована.
+
+Clipping Mode (ноды Box, Pie и Spine)
+: Устанавливает режим обрезки для ноды:
+
+  - `None` --- отображает ноду как обычно.
+  - `Stencil` --- заставляет границы ноды определять трафаретную маску, которая используется для обрезки дочерних нод данной ноды.
+
+  За подробностями обращайтесь к [руководству по обрезке GUI](/manuals/gui-clipping).
+
+Clipping Visible (ноды Box, Pie и Spine)
+: Устанавливается для визуализации содержимого ноды в области трафарета. За подробностями обращайтесь к [руководству по обрезке GUI](/manuals/gui-clipping).
+
+Clipping Inverted (ноды Box, Pie и Spine)
+: Инвертирует трафаретную маску. За подробностями обращайтесь к [руководству по обрезке GUI](/manuals/gui-clipping).
+
+
+## Пивот, якоря и режим корректировки
+
+Комбинация свойств Pivot, Anchors и Adjust Mode позволяет весьма гибко конструировать графические интерфейсы, но понять, как все это работает, без конкретного примера бывает затруднительно. В качестве примера рассмотрим макет графического интерфейса, созданный для экрана 640x1136:
+
+![](images/gui/adjustmode_example_original.png)
+
+UI создан с X и Y Anchors, установленными на None, а Adjust Mode для каждой ноды оставлен на значении по умолчанию Fit. Пивот для верхней панели --- North, для нижней панели --- South, а для баров на верхней панели пивот установлен в значение West. Для остальных нод пивоты установлены в Center. Если мы изменим размер окна, чтобы сделать его шире, вот что произойдет:
+
+![](images/gui/adjustmode_example_resized.png)
+
+Теперь, что если мы хотим, чтобы верхний и нижний бары всегда были такой же ширины, как экран? Мы можем изменить режим Adjust Mode для панелей с серым фоном сверху и снизу на Stretch:
+
+![](images/gui/adjustmode_example_resized_stretch.png)
+
+Так лучше. Теперь панели с серым фоном всегда будут растягиваться по ширине окна, но бары в верхней панели, а также два бокса внизу расположены неправильно. Если мы хотим, чтобы бары в верхней части были расположены слева, нам нужно изменить X Anchor с None на Left:
+
+![](images/gui/adjustmode_example_top_anchor_left.png)
+
+Это именно то, что нам нужно для верхней панели. У баров на верхней панели Pivot уже установлены на West, что означает, что они будут позиционироваться так, чтобы левый/западный край баров (Pivot) был привязан к левому краю родительской панели (X Anchor).
+
+Теперь, если мы установим X Anchor в Left для бокса слева и X Anchor в Right для бокса справа, получим следующий результат:
+
+![](images/gui/adjustmode_example_bottom_anchor_left_right.png)
+
+Это не совсем ожидаемый результат. Два бокса должны находиться так же близко к левому и правому краю, как два бара на верхней панели. Причина этого в том, что пивот выбран неверно:
+
+![](images/gui/adjustmode_example_bottom_pivot_center.png)
+
+У обоих боксов пивот установлен в Center. Это означает, что при увеличении ширины экрана центральная точка (пивот) боксов будет оставаться на одинаковом относительном расстоянии от краев. В случае левого поля она находилась на расстоянии 17% от левого края при исходном окне 640x1136:
+
+![](images/gui/adjustmode_example_original_ratio.png)
+
+При изменении размеров экрана центральная точка левого бокса остается на том же расстоянии 17% от левого края:
+
+![](images/gui/adjustmode_example_resized_stretch_ratio.png)
+
+Если мы изменим Pivot с Center на West для бокса слева и на East для бокса справа и изменим положение боксов, мы получим желаемый результат даже при изменении размера экрана:
+
+![](images/gui/adjustmode_example_bottom_pivot_west_east.png)
+
+
+## Порядок отрисовки
+
+Все ноды отображаются в том порядке, в котором они перечислены в папке "Nodes". Нода, находящаяся в верхней части списка, отрисовывается первой и, таким образом, будет отображаться позади всех остальных нод. Последняя нода в списке отрисовывается последней, то есть она будет отображаться перед всеми остальными нодами. Изменение Z-значения ноды не влияет на порядок отрисовки; однако, если установить Z-значение за пределами диапазона отрисовки рендер-скрипта, нода не будет отрисована на экране. Индексное упорядочивание нод можно изменить с помощью слоев (см. ниже).
+
+![Draw order](images/gui/draw_order.png){srcset="images/gui/[email protected] 2x"}
+
+Выделите ноду и нажмите <kbd>Alt + Up/Down</kbd>, чтобы переместить ноду вверх или вниз и изменить индексный порядок.
+
+Порядок отрисовки может быть изменен в скрипте:
+
+```lua
+local bean_node = gui.get_node("bean")
+local shield_node = gui.get_node("shield")
+
+if gui.get_index(shield_node) < gui.get_index(bean_node) then
+  gui.move_above(shield_node, bean_node)
+end
+```
+
+## Иерархии "родительский-дочерний"
+
+Нода становится дочерней по отношению к другой ноде путем перетаскивания ее на ноду, которая должна стать родительской. Нода с родителем наследует трансформации (положение, поворот и масштаб), примененные к родителю относительно родительского пивота.
+
+![Parent child](images/gui/parent_child.png){srcset="images/gui/[email protected] 2x"}
+
+Родительские ноды отрисовываются раньше дочерних. Используйте слои, чтобы изменить порядок отрисовки родительских и дочерних нод и оптимизировать рендеринг нод (см. ниже).
+
+
+## Слои и вызовы отрисовки
+
+Слои обеспечивают тонкий контроль над тем, как отрисовываются ноды, и могут быть использованы для уменьшения количества вызовов отрисовки, которые движок должен создать для отрисовки GUI-сцены. Когда движок собирается отрисовывать ноды GUI-сцены, он группирует их в пакеты вызовов отрисовки, руководствуясь следующими условиями:
+
+- Ноды должны быть одного и того же типа.
+- Узлы должны использовать один и тот же Atlas или Tile Source.
+- Ноды должны рендериться с одинаковым режимом наложения.
+- Они должны использовать один и тот же шрифт.
+
+Если нода отличается от предыдущей по любому из этих пунктов, она нарушит пакетирование и создает новый вызов отрисовки. Ноды обрезки всегда нарушают пакетирование, каждый трафаретный участок также нарушает пакетирование.
+
+Возможность расположения нод в иерархии позволяет легко группировать ноды в управляемые единицы. Но иерархии могут существенно нарушить пакетный рендеринг, если смешать различные типы нод:
+
+![Breaking batch hierarchy](images/gui/break_batch.png){srcset="images/gui/[email protected] 2x"}
+
+Когда пайплайн рендеринга проходит по списку нод, он вынужден создавать пакет для каждой отдельной ноды, поскольку их типы различны. В целом для этих трех кнопок потребуется шесть вызовов отрисовки.
+
+Назначая нодам слои, их можно упорядочить по-разному, что позволяет пайплайну рендеринга группировать ноды вместе за меньшее количество вызовов отрисовки. Начните с добавления нужных слоев в сцену. <kbd>Кликните ПКМ</kbd> на иконке папки "Layers" в *Outline* и выберите <kbd>Add ▸ Layer</kbd>. Отметьте новый слой и присвойте ему свойство *Name* в представлении *Properties*.
+
+![Layers](images/gui/layers.png){srcset="images/gui/[email protected] 2x"}
+
+Затем установите свойство *Layer* каждой ноды в соответствующий слой. Порядок отрисовки слоев имеет приоритет над обычным порядком индексированных нод, поэтому установка графической кнопки ноды Box в "graphics" и кнопки ноды Text в "text" приведет к следующему порядку отрисовки:
+
+* Сначала все ноды в слое "graphics", начиная с верхней:
+
+  1. "button-1"
+  2. "button-2"
+  3. "button-3"
+
+* Затем все ноды в слое "text", начиная с верхней:
+
+  4. "button-text-1"
+  5. "button-text-2"
+  6. "button-text-3"
+
+Теперь ноды можно объединить в два вызова рисования вместо шести. В результате --- значительный выигрыш в производительности!
+
+Следует отметить, что дочерняя нода с неустановленным слоем неявно наследует настройку слоя своей родительской ноды. Отсутствие установки слоя у ноды неявно добавляет ее к "нулевому" слою, который отрисовывается перед каким-либо другим слоем.

+ 54 - 0
docs/ru/manuals/http-requests.md

@@ -0,0 +1,54 @@
+---
+title: HTTP запросы
+brief: Данное руководство объясняет как делать HTTP запросы.
+---
+
+## HTTP запросы
+
+Defold может делать обыкновенные HTTP запросы с использованием функции `http.request()`.
+
+### HTTP GET
+
+Это самый базовый запрос, чтобы получить некие данные от сервера. Пример:
+
+```Lua
+local function handle_response(self, id, response)
+	print(response.status, response.response)
+end
+
+http.request("https://www.defold.com", "GET", handle_response)
+```
+
+Данный код выполнит HTTP GET запрос на адрес https://www.defold.com. Эта функция асинхронна и она не заблокирует основной код по мере выполнения запроса. Как только запрос будет сделан и сервер отправит ответ, будет вызвана предоставленная функция обратного вызова. Функция обратного вызова получит полный ответ сервера, включая код статуса и заголовки ответа.
+
+::: sidenote
+HTTP запросы автоматически кэшируются на клиенте для повышения сетевой производительности. Кэшированные файлы хранятся по специфичному для каждой ОС пути в папке с именем `defold/http-cache`. Обычно вам не нужно беспокоиться о HTTP кэше, но если вам нужно очищать кэш во время разработки, вы можете вручную удалить папку, содержащую кэшированные файлы. На macOS эта папка располагается в `%HOME%/Library/Application Support/Defold/http-cache/`, а на Windows в `%APP_DATA%/defold/http-cache`.
+:::
+
+### HTTP POST
+
+Посылка данных, таких как очки или некие данные аутентификации, на сервер обычно делается через POST запросы:
+
+```Lua
+local function handle_response(self, id, response)
+	print(response.status, response.response)
+end
+
+local headers = {
+	["Content-Type"] = "application/x-www-form-urlencoded"
+}
+local body = "foo=bar"
+http.request("https://httpbin.org/post", "POST", handle_response, headers, body)
+```
+
+### Другие HTTP методы
+
+HTTP запросы в Defold также поддерживают методы HEAD, DELETE и PUT.
+
+### Справочник по API
+
+Обратитесь к [Справочнику по API](/ref/http/) чтобы узнать больше.
+
+### Расширения
+
+Альтернативную реализацию HTTP запросов можно найти здесь [TinyHTTP extension](https://defold.com/assets/tinyhttp/).

binární
docs/ru/manuals/images/debugging/add_breakpoint.png


binární
docs/ru/manuals/images/debugging/[email protected]


binární
docs/ru/manuals/images/debugging/break.png


binární
docs/ru/manuals/images/debugging/[email protected]


binární
docs/ru/manuals/images/debugging/callstack.png


binární
docs/ru/manuals/images/debugging/[email protected]


binární
docs/ru/manuals/images/debugging/console.png


binární
docs/ru/manuals/images/debugging/[email protected]


binární
docs/ru/manuals/images/debugging/download_container.png


binární
docs/ru/manuals/images/debugging/[email protected]


binární
docs/ru/manuals/images/debugging/overview.png


binární
docs/ru/manuals/images/debugging/[email protected]


+ 1 - 0
docs/ru/manuals/images/debugging/pause.svg

@@ -0,0 +1 @@
+<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41421" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m0 0h16v16h-16z" fill="none"/><path d="m5.5 3h-2c-.276 0-.5.224-.5.5v9c0 .276.224.5.5.5h2c.276 0 .5-.224.5-.5v-9c0-.276-.224-.5-.5-.5m6.5.5v9c0 .276-.224.5-.5.5h-2c-.276 0-.5-.224-.5-.5v-9c0-.276.224-.5.5-.5h2c.276 0 .5.224.5.5" fill="#8f9295" fill-rule="nonzero"/></svg>

binární
docs/ru/manuals/images/debugging/physics_debug_setting.png


binární
docs/ru/manuals/images/debugging/physics_debug_visualisation.png


+ 1 - 0
docs/ru/manuals/images/debugging/play.svg

@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><rect id="Page-1" serif:id="Page 1" x="0" y="0" width="16" height="16" style="fill:none;"/><clipPath id="_clip1"><rect id="Page-11" serif:id="Page 1" x="0" y="0" width="16" height="16"/></clipPath><g clip-path="url(#_clip1)"><g id="Layer-1" serif:id="Layer 1"><path d="M11.786,8.408l-7.226,4.262c-0.257,0.151 -0.56,-0.07 -0.56,-0.408l0,-8.523c0,-0.34 0.303,-0.56 0.56,-0.409l7.226,4.262c0.285,0.168 0.285,0.648 0,0.816" style="fill:#8f9295;fill-rule:nonzero;"/></g></g></svg>

binární
docs/ru/manuals/images/debugging/script.png


binární
docs/ru/manuals/images/debugging/[email protected]


binární
docs/ru/manuals/images/debugging/step.png


binární
docs/ru/manuals/images/debugging/[email protected]


+ 1 - 0
docs/ru/manuals/images/debugging/step_in.svg

@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><rect id="Page-4" serif:id="Page 4" x="0" y="0" width="16" height="16" style="fill:none;"/><g id="Layer-1" serif:id="Layer 1"><path d="M11.633,5.764c-0.303,-0.283 -0.776,-0.267 -1.06,0.034l-0.823,0.878l0,-3.676c0,-0.414 -0.336,-0.75 -0.75,-0.75c-0.414,0 -0.75,0.336 -0.75,0.75l0,3.704l-0.857,-0.803c-0.303,-0.284 -0.777,-0.268 -1.06,0.033c-0.283,0.303 -0.268,0.777 0.034,1.06l2.189,2.053c0.139,0.131 0.322,0.203 0.513,0.203l0.024,0c0.198,-0.007 0.387,-0.092 0.522,-0.237l2.052,-2.188c0.283,-0.303 0.269,-0.777 -0.034,-1.061m-0.792,6.736c0,1.016 -0.824,1.841 -1.841,1.841c-1.016,0 -1.841,-0.825 -1.841,-1.841c0,-1.017 0.825,-1.841 1.841,-1.841c1.017,0 1.841,0.824 1.841,1.841" style="fill:#8f9295;fill-rule:nonzero;"/></g></svg>

binární
docs/ru/manuals/images/debugging/step_into.png


binární
docs/ru/manuals/images/debugging/[email protected]


+ 1 - 0
docs/ru/manuals/images/debugging/step_out.svg

@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><rect id="Page-5" serif:id="Page 5" x="0" y="0" width="16" height="16" style="fill:none;"/><g id="Layer-1" serif:id="Layer 1"><path d="M11.133,4.317l-2.188,-2.052c-0.145,-0.136 -0.321,-0.217 -0.538,-0.203c-0.198,0.006 -0.386,0.091 -0.522,0.236l-2.052,2.189c-0.283,0.302 -0.268,0.777 0.034,1.06c0.145,0.136 0.329,0.203 0.513,0.203c0.2,0 0.399,-0.079 0.547,-0.237l0.823,-0.878l0,3.865c0,0.414 0.336,0.75 0.75,0.75c0.414,0 0.75,-0.336 0.75,-0.75l0,-3.893l0.858,0.804c0.301,0.283 0.777,0.268 1.059,-0.034c0.283,-0.302 0.269,-0.777 -0.034,-1.06m-0.792,8.183c0,1.017 -0.824,1.841 -1.841,1.841c-1.016,0 -1.841,-0.824 -1.841,-1.841c0,-1.016 0.825,-1.841 1.841,-1.841c1.017,0 1.841,0.825 1.841,1.841" style="fill:#8f9295;fill-rule:nonzero;"/></g></svg>

+ 1 - 0
docs/ru/manuals/images/debugging/step_over.svg

@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><rect id="Page-3" serif:id="Page 3" x="0" y="0" width="16" height="16" style="fill:none;"/><g id="Layer-1" serif:id="Layer 1"><path d="M13.893,5.308c-0.064,-0.409 -0.449,-0.689 -0.857,-0.624c-0.41,0.064 -0.689,0.448 -0.624,0.857l0.169,1.079c-1.171,-0.878 -2.603,-1.37 -4.081,-1.37c-1.902,0 -3.733,0.807 -5.023,2.213c-0.28,0.305 -0.259,0.78 0.046,1.06c0.306,0.279 0.779,0.26 1.059,-0.046c1.007,-1.098 2.435,-1.727 3.918,-1.727c1.205,0 2.368,0.421 3.304,1.165l-1.265,0.199c-0.409,0.065 -0.688,0.448 -0.624,0.858c0.058,0.37 0.377,0.633 0.74,0.633c0.039,0 0.078,-0.003 0.117,-0.009l2.964,-0.467c0.409,-0.065 0.688,-0.448 0.624,-0.858l-0.467,-2.963Zm-3.553,7.192c0,1.016 -0.823,1.841 -1.84,1.841c-1.017,0 -1.84,-0.825 -1.84,-1.841c0,-1.017 0.823,-1.841 1.84,-1.841c1.017,0 1.84,0.824 1.84,1.841" style="fill:#8f9295;fill-rule:nonzero;"/></g></svg>

+ 1 - 0
docs/ru/manuals/images/debugging/stop.svg

@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><rect id="Page-6" serif:id="Page 6" x="0" y="0" width="16" height="16" style="fill:none;"/><g id="Layer-1" serif:id="Layer 1"><path d="M13,3.909l0,8.182c0,0.502 -0.407,0.909 -0.909,0.909l-8.182,0c-0.502,0 -0.909,-0.407 -0.909,-0.909l0,-8.182c0,-0.502 0.407,-0.909 0.909,-0.909l8.182,0c0.502,0 0.909,0.407 0.909,0.909" style="fill:#8f9295;fill-rule:nonzero;"/></g></svg>

binární
docs/ru/manuals/images/debugging/variables.png


binární
docs/ru/manuals/images/debugging/[email protected]


binární
docs/ru/manuals/images/gui-box/create.png


binární
docs/ru/manuals/images/gui-box/[email protected]


binární
docs/ru/manuals/images/gui-box/mipmap.png


binární
docs/ru/manuals/images/gui-box/[email protected]


binární
docs/ru/manuals/images/gui-box/scaling.png


binární
docs/ru/manuals/images/gui-box/[email protected]


binární
docs/ru/manuals/images/gui-box/slice9.png


binární
docs/ru/manuals/images/gui-box/[email protected]


binární
docs/ru/manuals/images/gui-box/slice9_properties.png


binární
docs/ru/manuals/images/gui-box/[email protected]


binární
docs/ru/manuals/images/gui-box/slice9_size.png


binární
docs/ru/manuals/images/gui-box/[email protected]


binární
docs/ru/manuals/images/gui-box/tinted.png


binární
docs/ru/manuals/images/gui-box/[email protected]


binární
docs/ru/manuals/images/gui-clipping/create.png


binární
docs/ru/manuals/images/gui-clipping/[email protected]


binární
docs/ru/manuals/images/gui-clipping/layers.png


binární
docs/ru/manuals/images/gui-clipping/[email protected]


binární
docs/ru/manuals/images/gui-clipping/modes.png


binární
docs/ru/manuals/images/gui-clipping/[email protected]


binární
docs/ru/manuals/images/gui-clipping/setup.png


binární
docs/ru/manuals/images/gui-clipping/[email protected]


binární
docs/ru/manuals/images/gui-layouts/add_layout.png


binární
docs/ru/manuals/images/gui-layouts/[email protected]


binární
docs/ru/manuals/images/gui-layouts/landscape.png


binární
docs/ru/manuals/images/gui-layouts/[email protected]


binární
docs/ru/manuals/images/gui-layouts/new_profiles.png


binární
docs/ru/manuals/images/gui-layouts/[email protected]


binární
docs/ru/manuals/images/gui-layouts/portrait.png


binární
docs/ru/manuals/images/gui-layouts/[email protected]


binární
docs/ru/manuals/images/gui-layouts/settings.png


binární
docs/ru/manuals/images/gui-layouts/[email protected]


binární
docs/ru/manuals/images/gui-layouts/toolbar.png


binární
docs/ru/manuals/images/gui-layouts/[email protected]


binární
docs/ru/manuals/images/gui-particlefx/create.png


binární
docs/ru/manuals/images/gui-particlefx/[email protected]


binární
docs/ru/manuals/images/gui-pie/create.png


binární
docs/ru/manuals/images/gui-pie/[email protected]


binární
docs/ru/manuals/images/gui-pie/properties.png


binární
docs/ru/manuals/images/gui-pie/[email protected]


binární
docs/ru/manuals/images/gui-script/dynamic_nodes.png


binární
docs/ru/manuals/images/gui-script/[email protected]


binární
docs/ru/manuals/images/gui-script/message_passing.png


binární
docs/ru/manuals/images/gui-script/[email protected]


binární
docs/ru/manuals/images/gui-script/node_id.png


binární
docs/ru/manuals/images/gui-script/[email protected]


binární
docs/ru/manuals/images/gui-script/set_script.png


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů