浏览代码

Translation(RU). Workflow section. Part 1: Translated 1st 4 Articles: "Adapting to different screen sizes", "Bundling an application", "Bob the builder", "Hot reloading" (#213)

N C 3 年之前
父节点
当前提交
8150743efd
共有 46 个文件被更改,包括 459 次插入0 次删除
  1. 118 0
      docs/ru/manuals/adapting-graphics-to-screen-size.md
  2. 161 0
      docs/ru/manuals/bob.md
  3. 58 0
      docs/ru/manuals/bundling.md
  4. 122 0
      docs/ru/manuals/hot-reload.md
  5. 二进制
      docs/ru/manuals/images/bundling/bundle_menu.png
  6. 二进制
      docs/ru/manuals/images/hot-reload/gui-reloaded.png
  7. 二进制
      docs/ru/manuals/images/hot-reload/[email protected]
  8. 二进制
      docs/ru/manuals/images/hot-reload/gui.png
  9. 二进制
      docs/ru/manuals/images/hot-reload/[email protected]
  10. 二进制
      docs/ru/manuals/images/hot-reload/menu.png
  11. 二进制
      docs/ru/manuals/images/hot-reload/[email protected]
  12. 二进制
      docs/ru/manuals/images/hot-reload/target.png
  13. 二进制
      docs/ru/manuals/images/hot-reload/[email protected]
  14. 二进制
      docs/ru/manuals/images/profiling/android_profiler.png
  15. 二进制
      docs/ru/manuals/images/profiling/build_report.png
  16. 二进制
      docs/ru/manuals/images/profiling/[email protected]
  17. 二进制
      docs/ru/manuals/images/profiling/build_report_html.png
  18. 二进制
      docs/ru/manuals/images/profiling/[email protected]
  19. 二进制
      docs/ru/manuals/images/profiling/gapid.png
  20. 二进制
      docs/ru/manuals/images/profiling/instruments.png
  21. 二进制
      docs/ru/manuals/images/profiling/[email protected]
  22. 二进制
      docs/ru/manuals/images/profiling/opengl.png
  23. 二进制
      docs/ru/manuals/images/profiling/[email protected]
  24. 二进制
      docs/ru/manuals/images/profiling/visual_profiler.png
  25. 二进制
      docs/ru/manuals/images/profiling/webprofiler_frame_data.png
  26. 二进制
      docs/ru/manuals/images/profiling/webprofiler_frame_timechart.png
  27. 二进制
      docs/ru/manuals/images/profiling/webprofiler_frames_overview.png
  28. 二进制
      docs/ru/manuals/images/profiling/webprofiler_frames_plot.png
  29. 二进制
      docs/ru/manuals/images/profiling/webprofiler_mode.png
  30. 二进制
      docs/ru/manuals/images/profiling/webprofiler_page.png
  31. 二进制
      docs/ru/manuals/images/profiling/webprofiler_resources_page.png
  32. 二进制
      docs/ru/manuals/images/screen_size/highdpi-enabled.png
  33. 二进制
      docs/ru/manuals/images/screen_size/retro-font_sampler.png
  34. 二进制
      docs/ru/manuals/images/screen_size/retro-font_with_sampler.png
  35. 二进制
      docs/ru/manuals/images/screen_size/retro-font_without_sampler.png
  36. 二进制
      docs/ru/manuals/images/screen_size/retro-original_1280x800.png
  37. 二进制
      docs/ru/manuals/images/screen_size/retro-original_320x200.png
  38. 二进制
      docs/ru/manuals/images/screen_size/retro-player.png
  39. 二进制
      docs/ru/manuals/images/screen_size/retro-settings_linear.png
  40. 二进制
      docs/ru/manuals/images/screen_size/retro-settings_nearest.png
  41. 二进制
      docs/ru/manuals/images/screen_size/retro-subpixels.png
  42. 二进制
      docs/ru/manuals/images/screen_size/retro-tiles.png
  43. 二进制
      docs/ru/manuals/images/screen_size/retro-zoomed_1280x800.png
  44. 二进制
      docs/ru/manuals/images/screen_size/retro-zoomed_linear.png
  45. 二进制
      docs/ru/manuals/images/screen_size/retro-zoomed_nearest.png
  46. 二进制
      docs/ru/manuals/images/screen_size/simulate-resolution.png

+ 118 - 0
docs/ru/manuals/adapting-graphics-to-screen-size.md

@@ -0,0 +1,118 @@
+---
+title: Адаптация графики к разным размерам экрана 
+brief: В этом руководстве объясняется, как адаптировать игру и графику к разным размерам экрана.
+---
+
+# Введение
+
+При адаптации игры и графики к разным размерам экрана необходимо учесть несколько моментов:
+
+* Это будет ретро-игра с pixel-perfect графикой низкого разрешения или современная игра с графикой HD-качества?
+* Как должна вести себя игра в полноэкранном режиме на экранах разных размеров?
+  * Должен ли игрок видеть больше игрового контента на экране с высоким разрешением или графику следует адаптивно масштабировать, чтобы всегда отображать один и тот же контент? 
+* Как игра должна работать с соотношением сторон экрана, отличным от того, что установили в game.project ?
+  * Должен ли игрок видеть больше игрового контента? А может быть там  должны быть чёрные полосы? Или, может быть, элементы графического интерфейса с измененными размерами? 
+* Какие меню и экранные компоненты графического интерфейса вам нужны и как они должны адаптироваться к разным размерам экрана и ориентации экрана?
+  * Должны ли меню и другие компоненты графического интерфейса менять свою компоновку при изменении ориентации или они должны сохранять такую же компоновку независимо от ориентации? 
+
+В этом руководстве будут рассмотрены некоторые из этих вопросов и предложены наилучшие практики.
+
+
+## Как изменить способ отображения вашего контента 
+
+Рендер скрипт в Defold дает вам полный контроль над всем конвейером рендеринга. Рендер скрипт определяет порядок, а также что и как рисовать. Поведение рендер скрипта по умолчанию - всегда рисовать одну и ту же область пикселей, определяемую шириной и высотой в файле *game.project*, независимо от того, изменяется ли размер окна или фактическое разрешение экрана не совпадает. Это приведет к растягиванию содержимого при изменении соотношения сторон и увеличению или уменьшению масштаба при изменении размера окна. В некоторых играх это может быть приемлемо, но более вероятно то, что вы захотите показать большую или меньшую область игрового контента, если разрешение экрана или соотношение сторон отличается, или, по крайней мере, хотели бы убедиться, что произошло масштабирование контента без изменения соотношения сторон. Поведение при растягивании по умолчанию можно легко изменить, и вы можете узнать больше о том, как это сделать, в [Руководство по рендерингу](https://defold.com/ru/manuals/render/#проекция-вида-по-умолчанию). 
+
+## Ретро/8-битная графика
+
+Под ретро / 8-битной графикой часто подразумевают игры, имитирующие графический стиль старых игровых консолей или компьютеров с их низким разрешением и ограниченной цветовой палитрой. Например, Nintendo Entertainment System (NES) имела разрешение экрана 256x240, Commodore 64 - 320x200, а Gameboy - 160x144, и все это лишь небольшая доля от размеров современных экранов. Чтобы игры, имитирующие этот графический стиль и разрешение экрана, можно было воспроизводить на современном экране с высоким разрешением, графику необходимо масштабировать или увеличивать в несколько раз. Один из простых способов сделать это - нарисовать всю графику в низком разрешении и в стиле, который вы хотите имитировать, и масштабировать графику во время рендеринга. Этого легко добиться в Defold с помощью скрипта рендеринга и параметра [Fixed Projection](/manuals/render/#fixed-projection), установленного в подходящее значение для масштабирования. 
+
+Давайте возьмем этот набор тайлов и персонажа игрока ([источник](https://ansimuz.itch.io/grotto-escape-game-art-pack)) и воспользуемся ими для 8-битной ретро-игры с разрешением 320x200: 
+
+![](images/screen_size/retro-player.png)
+
+![](images/screen_size/retro-tiles.png)
+
+При установке разрешения в 320x200 в файле *game.project* и запуске игра будет выглядеть так: 
+
+![](images/screen_size/retro-original_320x200.png)
+
+Окно совершенно крошечное на современном экране высокого разрешения! Увеличение размера окна в четыре раза до 1280x800 делает его более подходящим для современного экрана: 
+
+![](images/screen_size/retro-original_1280x800.png)
+
+Теперь, когда размер окна стал более подходящим, нам также нужно что-то сделать с графикой. Графика настолько мизерная, что очень сложно понять, что происходит в игре. Мы можем использовать скрипт рендеринга, чтобы установить проекцию с фиксированным соотношением сторон и масштабированную: 
+
+```Lua
+msg.post("@render:", "use_fixed_projection", { zoom = 4 })
+```
+
+Это даст нам следующий результат:
+
+![](images/screen_size/retro-zoomed_1280x800.png)
+
+Это уже лучше. И окно, и графика имеют хорошие размеры, но если мы присмотримся, то обнаружим очевидную проблему: 
+
+![](images/screen_size/retro-zoomed_linear.png)
+
+Графика выглядит замыленной! Это обусловлено тем, каким способом увеличенная графика семплируется из текстуры при рендеринге графическим процессором. По умолчанию в файле *game.project* в разделе «Графика» установлено значение *linear*: 
+
+![](images/screen_size/retro-settings_linear.png)
+
+Изменение этого параметра на *nearest* даст результат, который нам нужен: 
+
+![](images/screen_size/retro-settings_nearest.png)
+
+![](images/screen_size/retro-zoomed_nearest.png)
+
+Теперь у нас есть четкая pixel-perfect графика для нашей ретро-игры. Есть еще кое-что, что нужно учитывать, например, отключение субпикселей для спрайтов в *game.project*: 
+
+![](images/screen_size/retro-subpixels.png)
+
+Когда параметр «Subpixels» отключен, спрайты никогда не будут отображаться на половинных пикселях, а вместо этого всегда будут привязываться к ближайшему целому пикселю. 
+
+## Графика высокого разрешения 
+
+При работе с графикой высокого разрешения нам нужно подходить к настройке проекта и контента иначе, чем к ретро / 8-битной графике. С растровой графикой вам необходимо создать свой контент таким образом, чтобы он хорошо смотрелся на экране с высоким разрешением при отображении в масштабе 1: 1.
+
+Как и для ретро / 8-битной графики, вам нужно изменить скрипт рендеринга. В этом случае вы хотели бы, чтобы графика масштабировалась в соответствии с размером экрана при сохранении исходного соотношения сторон: 
+
+```Lua
+msg.post("@render:", "use_fixed_fit_projection")
+```
+
+Это гарантирует, что размер экрана будет изменяться, чтобы всегда отображать то же количество контента, что указано в файле *game.project*, возможно, с дополнительным контентом, показываемым сверху и снизу или по бокам, в зависимости от того, отличается соотношение сторон или нет.
+
+Вы должны настроить ширину и высоту в файле *game.project* на размер, позволяющий отображать содержимое игры в немасштабированном виде. 
+
+### Настройка высокого разрешения и Retina экраны 
+
+Если вы также хотите поддерживать экраны Retina с высоким разрешением, вы можете включить это в файле *game.project* в разделе Display:
+
+![](images/screen_size/highdpi-enabled.png)
+
+Это создаст вторичный буфер высокого разрешения (high dpi back buffer) для поддерживающих его дисплеев. Игра будет отображаться в двойном разрешении от того, что установлено в настройках ширины и высоты, что по-прежнему будет логическим разрешением, используемым в скриптах и свойствах. Это означает, что все измерения останутся прежними, и любой контент, отображаемый в масштабе 1x, будет выглядеть так же. Но если вы импортируете изображения с высоким разрешением и масштабируете их до 0,5x, они будут иметь высокое разрешение на экране. 
+
+
+## Создание адаптивного графического интерфейса
+
+Система для создания компонентов графического интерфейса основана на нескольких базовых строительных блоках, или [нодах](/manuals/gui/#node-types), и, хотя она может показаться слишком простой, ее можно использовать для создания чего угодно, от кнопок до сложных меню и всплывающих окон. Создаваемые вами графические интерфейсы пользователя можно настроить для автоматической адаптации к изменениям размера и ориентации экрана. Вы можете, например, удерживать узлы привязанными к верхней, нижней или боковым сторонам экрана, а узлы могут либо сохранять свой размер, либо растягиваться. Взаимодействие между узлами, а также их размер и внешний вид также можно настроить для изменения при изменении размера или ориентации экрана. 
+
+### Свойства нод
+
+Каждая нода в графическом интерфейсе имеет точку поворота (pivot point), горизонтальную и вертикальную привязку, а также режим настройки.
+
+* Точка поворота определяет центральную точку узла.
+* Режим привязки контролирует, как поменяется вертикальное и горизонтальное положение узла, когда границы сцены или границы родительского узла растягиваются, чтобы соответствовать физическому размеру экрана.
+* Настройка Adjust mode контролирует, что происходит с узлом, когда границы сцены или границы родительского узла настраиваются в соответствии с физическим размером экрана. 
+
+Вы можете узнать больше об этих свойствах [в руководстве по графическому интерфейсу](/manuals/gui/#node-properties). 
+
+### Компоновки
+
+Defold поддерживает графические интерфейсы пользователя, которые автоматически адаптируются к изменениям ориентации экрана на мобильных устройствах. Используя эту функцию, вы можете спроектировать графический интерфейс, который может адаптироваться к ориентации и соотношению сторон из диапазона различных экранов. Также можно создавать компоновки, соответствующие конкретным моделям устройств. Вы можете узнать больше об этой системе в [Руководстве по GUI-компоновкам](/manuals/gui-layouts/) 
+
+## Тестирование экранов разных размеров
+
+В меню «Debug» есть возможность имитировать разрешение либо определенной модели устройства, либо настраиваемое разрешение. Пока приложение работает, вы можете выбрать <kbd>Debug->Simulate Resolution</kbd> и выбрать одну из моделей устройства из списка. Размер окна запущенного приложения изменится, и вы сможете увидеть, как ваша игра выглядит в другом разрешении или с другим соотношением сторон. 
+
+![](images/screen_size/simulate-resolution.png)

+ 161 - 0
docs/ru/manuals/bob.md

@@ -0,0 +1,161 @@
+---
+title: Руководство по сборщику проектов Defold 
+brief: Bob - это инструмент командной строки для создания проектов Defold. В этом руководстве объясняется, как использовать инструмент.
+---
+
+# Сборщик Bob
+
+Bob - это инструмент командной строки для сборки проектов на Defold вне обычного рабочего процесса в редакторе.
+
+Bob может делать сборки (соответствует этапу сборки при выборе пункта меню редактора <kbd>Project ▸ Build</kbd>), создавать архивы данных и создавать автономные распространяемые бандлы (соответствует пункту меню редактора <kbd> Project ▸ Bundle ▸ ... </kbd>)
+
+Bob распространяется в виде Java _JAR_ архива, содержащего все необходимое для сборки. Вы найдете дистрибутив *bob.jar* последней актуальной версии на [странице загрузки Defold](http://d.defold.com) и на [GitHub странице релизов](https://github.com/defold/defold/releases) . Выберите релиз, затем загрузите *bob/bob.jar*. Чтобы запустить утилиту Bob, вам необходимо [установить на вашем компьютере OpenJDK 11](https://openjdk.java.net/projects/jdk/11/). 
+
+## Применение
+
+Bob запускается из оболочки или из командной строки, вызовом `java` (или` java.exe` в Windows) и передачей файла java-архива утилиты bob в качестве аргумента: 
+
+```text
+$ java -jar bob.jar --help
+usage: bob [options] [commands]
+  -a,--archive                       Build archive
+ -ar,--architectures <arg>           comma separated list of architectures
+                                     to include for the platform, for example
+                                     "arm64-android,armv7-android"
+  -u,--auth <arg>                    User auth token
+     --binary-output <arg>           Location where built engine binary
+                                     will be placed. Default is
+                                     "<build-output>/<platform>/"
+ -br,--build-report <arg>            Filepath where to save a build report
+                                     as JSON
+ -brhtml,--build-report-html <arg>   Filepath where to save a build report
+                                     as HTML
+     --build-server <arg>            The build server (when using native
+                                     extensions)
+ -bo,--bundle-output <arg>           Bundle output directory
+     --bundle-format <apk|aab>       Which format to generate Android bundle in
+  -d,--debug                         Use debug version of dmengine (when
+                                     bundling). Deprecated, use --variant
+                                     instead
+     --debug-ne-upload               Outputs the files sent to build server as
+                                     upload.zip
+     --defoldsdk <arg>               What version of the defold sdk (sha1)
+                                     to use
+     --exclude-build-folder          Comma separated list of folders to exclude
+                                     from the build
+  -e,--email <arg>                   User email
+  -h,--help                          This help message
+  -i,--input <arg>                   Source directory. Default is current
+                                     directory
+     --identity <arg>                Sign identity (iOS)
+  -k,--keep-unused                   Keep unused resources in archived
+                                     output
+     --keystore <arg>                Which keystore file to use when signing the
+                                     Android bundle.
+     --keystore-pass <arg>           Path to file with keystore password used to
+                                     when bundling for Android.
+     --keystore-alias <arg>          Name of alias from provided keystore to use
+                                     when bundling for Android.
+  -l,--liveupdate <arg>              yes if liveupdate content should be
+                                     published
+ -mp,--mobileprovisioning <arg>      mobileprovisioning profile (iOS)
+  -o,--output <arg>                  Output directory. Default is
+                                     "build/default"
+  -p,--platform <arg>                Platform (when bundling)
+  -r,--root <arg>                    Build root directory. Default is
+                                     current directory
+     --settings <arg>                Path to a game project settings
+                                     file. more than one occurrance are
+                                     allowed. the settings files are
+                                     applied left to right.
+     --strip-executable              Strip the dmengine of debug symbols
+                                     (when bundling iOS or Android)
+ -tc,--texture-compression <arg>     Use texture compression as specified
+                                     in texture profiles
+ -tp,--texture-profiles <arg>        Use texture profiles (deprecated)
+     --use-vanilla-lua               Only ships vanilla source code (i.e.
+                                     no byte code)
+  -v,--verbose                       Verbose output
+     --variant <arg>                 Specify debug, release or headless
+                                     version of dmengine (when bundling)
+     --version                       Prints the version number to the
+                                     output
+     --with-symbols                  Generate the symbol file (if
+                                     applicable)
+```
+
+Доступные команды:
+
+`clean`
+: Удалить собранные файлы в каталоге сборки.
+
+`distclean`
+: Удалить все файлы в каталоге сборки.
+
+`build`
+: Собирает все данные проекта. Добавьте параметр `--archive` для создания файла архива данных («game.darc» в каталоге сборки). 
+
+`bundle`
+: Создает бандл под конкретную платформу. Бандлинг требует наличие собранного архива (`билд` с параметром --archive) и указание целевой платформы (ключом `--platform`). Bob создает бандл в каталоге вывода, если другой каталог не указан ключом `--bundle-output`. Бандл будет назван в соответствии с настройкой project name в *game.project*. Ключ `--variant` указывает тип исполняемого файла для сборки при бандлинге и вместе с ключом `--strip-executable` заменяет ключ `--debug`. Если не указан ключ `--variant`, вы получите релизную версию движка (без debug символов для Android и iOS). Установка ключа `--variant` в debug и опускание ключа ` --strip-executable` дает тот же тип исполняемого файла, что и ключ `--debug`. 
+
+`resolve`
+: Подтягивание всех зависимостей внешних библиотек. 
+
+Доступные платформы и архитектуры
+Available platforms and architectures:
+
+`x86_64-darwin`
+: macOS 64 бита 
+
+`x86_64-win32`
+: Windows 64 бита
+
+`x86-win32`
+: Windows 32 бита
+
+`x86_64-linux`
+: Linux 64 бита
+
+`x86_64-ios`
+: iOS macOS 64 бита (Эмулятор iOS)
+
+`armv7-darwin`
+: iOS с доступной 32-битной архитектурой `armv7-darwin` и 64-битной` arm64-darwin`. По умолчанию значение аргумента `--architectures` - `armv7-darwin,arm64-darwin`. 
+
+`armv7-android`
+: Android с доступной 32-битной архитектурой `armv7-android` и 64-битной` arm64-android`. По умолчанию значение аргумента `--architectures` - `armv7-android,arm64-android`. 
+
+`js-web`
+: HTML5 с доступными архитектурами `js-web` и `wasm-web`. По умолчанию значение аргумента `--architectures` - `js-web,wasm-web`. 
+
+По умолчанию Bob ищет в текущем каталоге проект, который нужно собрать. Если вы измените текущий каталог на проект Defold и вызовете bob, он соберёт данные для проекта в каталоге вывода по умолчанию *build/default*. 
+
+```sh
+$ cd /Applications/Defold-beta/branches/14/4/main
+$ java -jar bob.jar
+100%
+$
+```
+
+Вы можете связывать команды вместе, чтобы выполнить последовательность задач за один раз. В следующем примере выполняются подтягивание библиотек, стирание каталога сборки, сборка данных архива и сборка приложения macOS (с именем *My Game.app*): 
+
+```sh
+$ java -jar bob.jar --archive --platform x86-darwin resolve distclean build bundle
+100%
+$ ls -al build/default/
+total 70784
+drwxr-xr-x   13 sicher  staff       442  1 Dec 10:15 .
+drwxr-xr-x    3 sicher  staff       102  1 Dec 10:15 ..
+drwxr-xr-x    3 sicher  staff       102  1 Dec 10:15 My Game.app
+drwxr-xr-x    8 sicher  staff       272  1 Dec 10:15 builtins
+-rw-r--r--    1 sicher  staff    140459  1 Dec 10:15 digest_cache
+drwxr-xr-x    4 sicher  staff       136  1 Dec 10:15 fonts
+-rw-r--r--    1 sicher  staff  35956340  1 Dec 10:15 game.darc
+-rw-r--r--    1 sicher  staff       735  1 Dec 10:15 game.projectc
+drwxr-xr-x  223 sicher  staff      7582  1 Dec 10:15 graphics
+drwxr-xr-x    3 sicher  staff       102  1 Dec 10:15 input
+drwxr-xr-x   20 sicher  staff       680  1 Dec 10:15 logic
+drwxr-xr-x   27 sicher  staff       918  1 Dec 10:15 sound
+-rw-r--r--    1 sicher  staff    131926  1 Dec 10:15 state
+$
+```

+ 58 - 0
docs/ru/manuals/bundling.md

@@ -0,0 +1,58 @@
+---
+title: Бандлинг (сборка пакета) приложения
+brief: В этом руководстве рассказывается, как создать бандл приложения.
+---
+
+# Бандлинг приложения
+
+При разработке приложения вы должны выработать привычку как можно чаще тестировать игру на целевых платформах. Это необходимо для того, чтобы выявлять проблемы с производительностью на ранних этапах процесса разработки, когда эти проблемы гораздо легче исправить. Также рекомендуется тестировать на всех целевых платформах, чтобы найти расхождения в таких вещах, как шейдеры. При разработке на мобильных устройствах у вас есть возможность использовать [приложение для мобильной разработки](/manuals/dev-app/) для отправки содержимого в приложение вместо того, чтобы выполнять полную пересборку и цикл удаления/установки.
+
+Вы можете создать бандл приложения для всех платформ, которые поддерживает Defold, из самого редактора Defold без каких-либо внешних инструментов. Вы также можете сделать бандл из командной строки с помощью наших инструментов командной строки. Бандлинг приложения требует сетевое соединение, если ваш проект содержит одно или несколько [native extension-ов](/manuals/extensions). 
+
+## Бандлинг прямо из редактора
+
+Создать бандл можно из меню Project и опции Bundle: 
+
+![](images/bundling/bundle_menu.png)
+
+Выбор любого из пунктов меню вызовет диалог Бандла для этой конкретной платформы. 
+
+### Отчеты о сборке
+
+При сборке вашей игры есть возможность создать отчет о сборке. Это очень полезно, чтобы получить представление о размере всех ассетов, входящих в бандл. Просто установите флажок *Generate build report* при сборке игры. 
+
+![build report](images/profiling/build_report.png){srcset="images/profiling/[email protected] 2x"}
+
+Чтобы узнать больше об отчетах о сборке, обратитесь к [Руководству по профилированию](/manuals/profiling/#build-reports).
+
+### Android
+
+Создание бандла для Android (файл .apk) описано в [Руководстве по Android](/manuals/android/#creating-an-android-application-bundle).
+
+### iOS
+
+Создание бандла для iOS (файл .ipa) описано в [Руководстве по iOS](/manuals/ios/#creating-an-ios-application-bundle).
+
+### macOS
+
+Создание бандла для macOS (файл .app) описано в [Руководстве по macOS](/manuals/macos).
+
+### Linux
+
+Создание бандла для Linux не требует специальной настройки и дополнительной конфигурации для конкретной платформы в [файле настроек проекта][project settings file](/manuals/project-settings/#linux) "game.project".
+
+### Windows
+
+Создание Windows-приложения (файл .exe) описано в [Руководстве по Windows](/manuals/windows).
+
+### HTML5
+
+Создание HTML5 билда, а также дополнительная настройка описаны в [руководстве по HTML5](/manuals/html5/#creating-html5-bundle).
+
+#### Facebook Instant Games
+
+Можно создать специальную версию HTML5 билда специально для Facebook Instant Games. Этот процесс задокументирован в [руководстве по Facebook Instant Games](/manuals/instant-games/).
+
+## Бандлинг из командной строки
+
+При повседневной разработке вашего приложения вполне вероятно, что вы собираете и бандлите прямо из редактора Defold. В других обстоятельствах вы можете захотеть автоматически создавать бандлы, например, пакетный бандлинг для всех платформ при выпуске новой версии или при создании ночных сборок последней версии игры, возможно, в среде CI. Сборка и бандлинг приложения могут выполняться вне обычного рабочего процесса в редакторе, с помощью [инструмента командной строки Bob](/manuals/bob/). 

+ 122 - 0
docs/ru/manuals/hot-reload.md

@@ -0,0 +1,122 @@
+---
+title: Горячая перезагрузка
+brief: В этом руководстве объясняется функция горячей перезагрузки (перезагрузки на лету) в Defold. 
+---
+
+# Перезагрузка ресурсов на лету
+
+Defold позволяет выполнять горячую перезагрузку ресурсов. При разработке игры эта функция помогает значительно ускорить выполнение определенных задач. Она позволяет вам изменять код и содержимое игры во время ее работы. Типовые варианты использования:
+
+- Для настройки параметров игрового процесса в Lua-скриптах.
+- Для редактирования и настройки графических элементов (например, эффектов частиц или элементов графического интерфейса) и просмотра результатов в актуальном контексте.
+- Для редактирования и настройки кода шейдера и просмотра результатов в актуальном контексте.
+- Для облегчения тестирования игры путем перезапуска уровней, настройки состояния и т. д. без остановки игры. 
+
+## Как сделать горячую перезагрузку
+
+Запустите свою игру из редактора (<kbd>Project ▸ Build</kbd>).
+
+Чтобы затем перезагрузить обновленный ресурс, просто выберите пункт меню <kbd> File ▸ Hot Reload </kbd> или нажмите соответствующую комбинацию на клавиатуре: 
+
+![Reloading resources](images/hot-reload/menu.png){srcset="images/hot-reload/[email protected] 2x"}
+
+## Горячая перезагрузка на устройстве
+
+Горячая перезагрузка работает как на устройстве, так и на компьютере. Чтобы использовать её на устройстве, запустите отладочную сборку своей игры или [приложение для разработки](/manuals/dev-app) на своем мобильном устройстве, затем выберите его в качестве цели в редакторе: 
+
+![target device](images/hot-reload/target.png){srcset="images/hot-reload/[email protected] 2x"}
+
+Теперь при сборке и запуске редактор загружает все ассеты в работающее приложение на устройстве и запускает игру. После этого любой файл, который вы загружаете в горячем режиме, будет обновлен на устройстве.
+
+Например, чтобы добавить пару кнопок в графический интерфейс, который отображается в запущенной игре на вашем телефоне, просто откройте файл графического интерфейса: 
+
+![reload gui](images/hot-reload/gui.png){srcset="images/hot-reload/[email protected] 2x"}
+
+Добавьте новые кнопки, сохраните и перезагрузите GUI-файл в горячем режиме. Теперь вы можете видеть новые кнопки на экране телефона: 
+
+![reloaded gui](images/hot-reload/gui-reloaded.png){srcset="images/hot-reload/[email protected] 2x"}
+
+При горячей перезагрузке файла движок выведет в консоль каждый перезагруженный файл ресурсов. 
+
+## Перезагрузка скриптов
+
+Любой перезагруженный файл Lua-скрипта будет повторно выполнен в среде исполнения Lua. 
+
+```lua
+local my_value = 10
+
+function update(self, dt)
+    print(my_value)
+end
+```
+
+Изменение `my_value` на 11 и горячая перезагрузка файла дадут немедленный эффект: 
+
+```text
+...
+DEBUG:SCRIPT: 10
+DEBUG:SCRIPT: 10
+DEBUG:SCRIPT: 10
+INFO:RESOURCE: /main/hunter.scriptc was successfully reloaded.
+DEBUG:SCRIPT: 11
+DEBUG:SCRIPT: 11
+DEBUG:SCRIPT: 11
+...
+```
+
+Обратите внимание, что горячая перезагрузка не влияет на выполнение функций жизненного цикла. Например, вызова `init()` при горячей перезагрузке не произойдёт. Однако, если вы переопределите функции жизненного цикла, будут использоваться новые версии. 
+
+## Перезагрузка Lua модулей 
+
+Пока вы добавляете переменные в глобальную область видимости в файле модуля, перезагрузка файла приведет к изменению этих глобальных переменных: 
+
+```lua
+--- my_module.lua
+my_module = {}
+my_module.val = 10
+```
+
+```lua
+-- user.script
+require "my_module"
+
+function update(self, dt)
+    print(my_module.val) -- hot reload "my_module.lua" and the new value will print
+end
+```
+
+Распространенный паттерн модуля Lua - создать локальную таблицу, заполнить ее и затем вернуть: 
+
+```lua
+--- my_module.lua
+local M = {} -- a new table object is created here
+M.val = 10
+return M
+```
+
+```lua
+-- user.script
+local mm = require "my_module"
+
+function update(self, dt)
+    print(mm.val) -- will print 10 even if you change and hot reload "my_module.lua"
+end
+```
+
+Изменение и перезагрузка "my_module.lua" _не_ изменит поведение "user.script". См. [Руководство по модулям](/manuals/modules) для получения дополнительной информации о том, почему и как избежать этой ошибки.
+
+## Функция on_reload()
+
+Каждый компонент скрипта может содержать определение функции `on_reload()`. Если она существует, она будет вызываться каждый раз при перезагрузке скрипта. Это полезно для проверки или изменения данных, отправки сообщений и так далее: 
+
+```lua
+function on_reload(self)
+    print(self.velocity)
+
+    msg.post("/level#controller", "setup")
+end
+```
+
+## Перезагрузка кода шейдера
+
+При перезагрузке вершинных и фрагментных шейдеров код GLSL перекомпилируется графическим драйвером и загружается в GPU. Если код шейдера вызывает сбой, что легко сделать, поскольку GLSL написан на очень низком уровне, это приведет к остановке движка. 

二进制
docs/ru/manuals/images/bundling/bundle_menu.png


二进制
docs/ru/manuals/images/hot-reload/gui-reloaded.png


二进制
docs/ru/manuals/images/hot-reload/[email protected]


二进制
docs/ru/manuals/images/hot-reload/gui.png


二进制
docs/ru/manuals/images/hot-reload/[email protected]


二进制
docs/ru/manuals/images/hot-reload/menu.png


二进制
docs/ru/manuals/images/hot-reload/[email protected]


二进制
docs/ru/manuals/images/hot-reload/target.png


二进制
docs/ru/manuals/images/hot-reload/[email protected]


二进制
docs/ru/manuals/images/profiling/android_profiler.png


二进制
docs/ru/manuals/images/profiling/build_report.png


二进制
docs/ru/manuals/images/profiling/[email protected]


二进制
docs/ru/manuals/images/profiling/build_report_html.png


二进制
docs/ru/manuals/images/profiling/[email protected]


二进制
docs/ru/manuals/images/profiling/gapid.png


二进制
docs/ru/manuals/images/profiling/instruments.png


二进制
docs/ru/manuals/images/profiling/[email protected]


二进制
docs/ru/manuals/images/profiling/opengl.png


二进制
docs/ru/manuals/images/profiling/[email protected]


二进制
docs/ru/manuals/images/profiling/visual_profiler.png


二进制
docs/ru/manuals/images/profiling/webprofiler_frame_data.png


二进制
docs/ru/manuals/images/profiling/webprofiler_frame_timechart.png


二进制
docs/ru/manuals/images/profiling/webprofiler_frames_overview.png


二进制
docs/ru/manuals/images/profiling/webprofiler_frames_plot.png


二进制
docs/ru/manuals/images/profiling/webprofiler_mode.png


二进制
docs/ru/manuals/images/profiling/webprofiler_page.png


二进制
docs/ru/manuals/images/profiling/webprofiler_resources_page.png


二进制
docs/ru/manuals/images/screen_size/highdpi-enabled.png


二进制
docs/ru/manuals/images/screen_size/retro-font_sampler.png


二进制
docs/ru/manuals/images/screen_size/retro-font_with_sampler.png


二进制
docs/ru/manuals/images/screen_size/retro-font_without_sampler.png


二进制
docs/ru/manuals/images/screen_size/retro-original_1280x800.png


二进制
docs/ru/manuals/images/screen_size/retro-original_320x200.png


二进制
docs/ru/manuals/images/screen_size/retro-player.png


二进制
docs/ru/manuals/images/screen_size/retro-settings_linear.png


二进制
docs/ru/manuals/images/screen_size/retro-settings_nearest.png


二进制
docs/ru/manuals/images/screen_size/retro-subpixels.png


二进制
docs/ru/manuals/images/screen_size/retro-tiles.png


二进制
docs/ru/manuals/images/screen_size/retro-zoomed_1280x800.png


二进制
docs/ru/manuals/images/screen_size/retro-zoomed_linear.png


二进制
docs/ru/manuals/images/screen_size/retro-zoomed_nearest.png


二进制
docs/ru/manuals/images/screen_size/simulate-resolution.png