This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold містить вбудований налагоджувач Lua з можливістю інспектування. Разом із вбудованими інструментами профілювання це потужний засіб, що допомагає знаходити причини помилок в ігровій логіці або аналізувати проблеми продуктивності.
Найпростіший спосіб налагоджувати гру в Defold — налагодження за допомогою виведення. Використовуйте виклики print() або pprint(), щоб спостерігати за змінними або відстежувати хід виконання. Якщо ігровий об’єкт (game object) без скрипту поводиться дивно, до нього можна додати скрипт лише для налагодження. Усі функції виведення надсилають текст на панель Console у редакторі та до журналу гри.
Крім виведення тексту, рушій також може малювати на екрані налагоджувальний текст і прямі лінії. Для цього надсилайте повідомлення до сокета @render:
-- Draw value of "my_val" with debug text on the screen
msg.post("@render:", "draw_text", { text = "My value: " .. my_val, position = vmath.vector3(200, 200, 0) })
-- Draw colored text on the screen
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 })
-- Draw debug line between player and enemy on the screen
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/debug/always_on_top.font, який використовує матеріал /builtins/fonts/debug/always_on_top_font.material."draw_debug_text" працює так само, як "draw_text", але текст відображається заданим кольором.Зауважте, що ці дані, найімовірніше, потрібно оновлювати кожного кадру, тому доречно надсилати повідомлення у функції update().
Щоб запустити налагоджувач, виберіть Debug ▸ Start/Attach: ця команда запускає гру з під’єднаним налагоджувачем або під’єднує налагоджувач до вже запущеної гри.

Щойно налагоджувач під’єднано, ви можете керувати виконанням гри за допомогою кнопок налагоджувача в консолі або меню Debug:


end під рядком із викликом функції nextspawn():

Один рядок коду Lua не обов’язково відповідає одному виразу. Під час покрокового виконання налагоджувач переходить на один вираз уперед, тому наразі для переходу до наступного рядка може знадобитися натиснути кнопку кроку кілька разів.
nextspawn():


Щоб встановити або видалити точку зупину, натисніть у стовпці безпосередньо праворуч від номерів рядків у редакторі коду. Також можна вибрати в меню Edit ▸ Toggle Breakpoint.
Enabled. Вимкнені точки зупину відображаються порожніми всередині, що вказує на їхній неактивний стан.


Щоб змінити умову точки зупину, натисніть правою кнопкою миші у стовпці безпосередньо праворуч від номерів рядків у редакторі коду або виберіть у меню Edit ▸ Edit Breakpoint.

Наразі змінювати змінні за допомогою засобу обчислення виразів неможливо.

Коли ви працюєте з багатьма точками зупину в різних скриптах, вкладка Breakpoints дає змогу переглядати всі точки зупину й керувати ними в одному місці.
Для роботи з окремими точками зупину:
Виберіть кілька точок зупину за допомогою Ctrl/Cmd+click або Shift+click, а потім натисніть правою кнопкою миші, щоб виконати групові дії. Ви можете одночасно змінювати умови кількох точок зупину, перемикати їхній активний стан або повністю видаляти їх.
Кнопки на панелі інструментів дають змогу ввімкнути, вимкнути або перемкнути стан усіх точок зупину одночасно. Це зручно, коли ви хочете запустити гру без зупинок, зберігши позиції точок зупину. Також можна видалити всі точки, коли сеанс налагодження завершено.
Lua постачається з бібліотекою налагодження, корисною в деяких ситуаціях, особливо коли потрібно інспектувати внутрішній стан середовища Lua. Докладніше про неї можна прочитати в розділі про бібліотеку налагодження в посібнику Lua.
Якщо виникла помилка або гра поводиться не так, як очікувалося, скористайтеся цим переліком перевірок для налагодження:
Перевірте виведення консолі та переконайтеся, що немає помилок під час виконання.
Додайте виклики print до коду, щоб переконатися, що він справді виконується.
Якщо код не виконується, перевірте, чи зроблено в редакторі всі налаштування, потрібні для його виконання. Чи додано скрипт до правильного ігрового об’єкта? Чи отримав скрипт фокус введення? Чи правильно налаштовано тригери введення? Чи додано код шейдера до матеріалу? Тощо.
Якщо ваш код залежить від значень змінних (наприклад, в умовній конструкції if), виведіть ці значення за допомогою print там, де вони використовуються або перевіряються, або інспектуйте їх за допомогою налагоджувача.
Іноді пошук помилки буває складним і тривалим: доводиться послідовно переглядати код, перевіряти все, звужувати область пошуку несправного коду та усувати джерела помилок. Найкраще для цього підходить метод «розділяй і володарюй»:
Вдалого полювання!
Якщо виникли проблеми з фізикою й колізії працюють не так, як очікувалося, рекомендується ввімкнути налагодження фізики. Установіть прапорець Debug у розділі Physics файлу game.project:

Коли цей прапорець установлено, Defold малюватиме всі форми колізій і точки контакту колізій:
