Методи налагодження в режимі реального часу


18

Немає нічого подібного до рутинного налаштування змінної, складання коду, яке займає кілька хвилин, виконання коду, розуміння того, що ваш твік був у неправильному напрямку та повторення процесу заново.

Я хотів би почати взаємодію зі своєю логікою гри під час сеансу. Які деякі способи ви вирішили зробити це?

Я б хотів слухати рішення для iOS, C / C ++ та C # / XNA.

Відповіді:


12

Щойно відкрили це для розробників iOS -

AsyncSocket
Ви налаштуєте сервер у своїй програмі та підключитесь до нього через термінал. Потім можна перекачувати віддалені команди та починати маніпулювати змінними в режимі реального часу. Досить струнка.


4

Інтеграція мови, що повністю інтерпретується, може дозволити вам переписати ігрові елементи дуже-дуже легко на льоту.

Python, Lua тощо можуть бути використані для цього прямо. Angel Engine, ймовірно, може слугувати прикладом.

Гаряча завантаження - це ще один елемент, який слід перевірити (в основному, подія знімається, повідомляючи про те, що актив змінився - конфігураційний файл, елемент мистецтва тощо.), І ви запускаєте його через ряд кондиціонерів, які змінюють його для остаточний формат перед заміною існуючого на новий.

Я працював з швидким прототипуючим двигуном, який використовував гарячу завантаження, і це було приємно.


2

Що стосується C ++, C # і C # з XNA, Visual Studio має чудові інструменти для налагодження - призупиняйте додаток у режимі реального часу в будь-якій точці коду, переглядайте значення, присвоєні змінним у будь-який час, переглядайте функціональні виклики , проаналізуйте стек викликів тощо. Крім того, такі інструменти, як Pix та CLR Profiler, роблять розробку за допомогою DirectX (Pix) та мов на основі CLR (CLR Profiler) чудовими.

Крім того, одна особливо корисна частина роботи з іграми полягає в тому, що у нас є ця гігантська область для написання налагоджувального тексту, графіки тощо. Графіки використання пам'яті в реальному часі, кількість намальованих об'єктів / вершин, рамка кадрів тощо - це звичайні речі для малювання на екрані.


1
Незважаючи на те, що VS є видатним інструментом розробки, для звичайної налагодження потрібен час - пошук точок прориву, перехід коду, зміна змінних, перезапуск потоку. Це питання шукає негайний спосіб зробити такі речі, як переміщення компонента інтерфейсу або налаштування коефіцієнта атаки боса тощо.
Девід Макграув

2

У C / C ++ простий трюк полягає в тому, щоб перетворити свою змінну в статичну змінну, запустити точку розриву, змінити статику в налагоджувачі і вона залишається стійкою до виходу.


Зробити це статичною змінною всередині функції. Якщо це глобальна статична студія Visual, можливо, не зможе показати її значення.
Кай

2

Запис HTTP - це величезна допомога, і не важко вставати та працювати. Ви навіть можете використовувати двигун Google Apps як швидкий спосіб запустити це. Дані завжди корисні.

Сценарії та XML вони можуть бути перезавантажені на льоту та не потребують скидання. Дозвольте їм вийти з ладу, не збиваючи гру. Це дає багато сил художникам, тестерам та дизайнерам.

Меню налагодження в грі Просте меню налагодження в грі, яке ви можете породити в дитинстві і заморозити гру як з повзунками двигуна, так і з повзунками гри. Дозволяє налаштувати ключові номери під час виконання та, можливо, виконувати одну-дві функції налагодження чи інформаційні скиди.

Я також люблю розетки ASYNC, як згадується у відповіді Девіда

Простота в користуванні Ваша команда з ігор повинна мати можливість додавати до цих інструментів і користуватися ними дуже легко, інакше вони просто не звикнуть.


2

Я знаю, що Шон Джеймс це вже сказав . Але якщо серйозно, Visual Studio (конкретно інструменти налагодження) надзвичайно надзвичайний для цього.

Я мало використовую C ++ в наші дні, тому я не впевнений, наскільки добре вони там діють. Але для C # (включаючи C # Express) у вас є:

І це може підірвати ваш розум (він підірвав мій, коли я дізнався про це):

Негайне вікно насправді важко знайти (це в меню налагодження / Windows).

Єдиний головний недолік використання відладчика Visual C # - це те, що він не любить зміни constзначень. Тому, як правило, я просто формую свої значення, пов'язані з ігровим процесом, staticпід час їх налаштування.

(Також: наявність двох моніторів дуже допомагає.)


Тепер я мушу визнати, що вищезазначений метод передбачає призупинення вашої програми - що може бути невтішно повільним для деяких особливо прискіпливих речей.

У цих рідкісних випадках, що я роблю (у XNA), це просто зламати трохи коду (можливо, використовуючи «Правка» та «Продовжити», як вище), щоб схопити Keyboard.GetState().IsKeyDown()(насправді я маю простіший для цього тип обгортки) та налаштувати значення за допомогою натискань клавіш. Все, що складніше, не варте зусиль.


На практиці те, що мені зазвичай набагато важливіше - це можливість візуалізувати (а не змінювати) значення в режимі реального часу. Для цього в мене є гарний маленький клас, який може буферизувати рядки та текст, який можна намалювати в кінці кадру. Це також корисно для швидкого прототипування.

(І, знову ж таки, приємно мати можливість "Редагувати та продовжувати" ці візуалізації під час виконання.)


(джерело: andrewrussell.net )
( звідси )

Я боюся, що наразі не маю "приємного" джерела для публікації (можливо, пізніше). Але це в основному лише список рядків (для цієї бібліотеки круглих ліній ) та рядків (для вбудованої SpriteBatch XNA). Просто зробіть це public staticдесь і намалюйте все відповідним перетворенням, щоб все з’явилося у «світовому просторі» (а потім очистіть списки для наступного кадру).


1

Написання простої системи відображення для C / C ++ досить тривіально. Таким чином ви можете переглядати всі свої змінні в грі (будь то за допомогою мережевого інструменту, клавіатури або джойстика) та змінювати їх на вміст вашого серця. Це працює для мене, але всі вищезазначені відповіді однаково справедливі.

Відредаговано, щоб додати: Тепер нитка стосується налаштування, а не налагодження відповідно до заголовка теми.


0

Одне з рішень, які я бачив у багатьох студіях, - це програма зовнішньої налагодження, яка приєднується до вашої програми за допомогою мережі. Ця програма показує конкретні відкриті змінні та дозволяє редагувати їх у режимі реального часу. Додавання нових змінних - це питання додавання деяких макросів до ігрового коду.

Початкова настройка ігрових макросів, сервера / клієнтського протоколу (рішення, яке я бачив, просто серіалізує xml назад і вперед), а також записує клієнта. Однак це надзвичайно корисно, тим більше, що використання мережі для зв'язку означає, що ви можете працювати на будь-якій платформі.


0

Зв’яжіть завантаження та зчитування змінної у текстовому файлі та запустіть її за допомогою певного прив'язки клавіш чи команди з консолі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.