Як ви зазначали, коли ви працюєте над ігровою механікою, швидкість ітерації є критичною. Чим довший час між роздумом про модифікацію та можливістю перевірити цю модифікацію, тим менш продуктивним ви будете і тим більше відволікаєтесь. Як результат, ви точно хочете керувати своїм часом ітерації.
Для мене я вважаю, що моя продуктивність дійсно починає знижуватися, коли час на тестування простої зміни перевищує приблизно п’ять секунд. Тож, коли ви експериментуєте, щоб вдосконалити те, як почуває себе гра, однією з ваших цілей має бути з'ясування "як я можу внести зміни, а потім грати, використовуючи цю зміну за п'ять секунд". Не важливо, як ви це зробите, доки ви можете утримувати час ітерації приблизно до цього рівня.
Багато великих сучасних двигунів (Unity, Unreal тощо), як правило, роблять це, вводячи свого редактора всередину ігрового двигуна, так що ви можете робити більшість модифікацій в прямому ефірі, ніколи не перезапускаючи гру. Менші двигуни / ігри, як правило, фокусують роботу в іншому напрямку; змушуйте компілювати гру та запускати її так швидко, що не має значення, чи доведеться перезавантажувати гру для кожної зміни; Ви все ще будете проходити тестування до того, як закінчиться п'ять секунд.
У моєму поточному проекті мені потрібно десь десять секунд, щоб зробити невелику перекомпіляцію, зв’язати, запустити гру, а потім дійти до геймплея (більшість із яких генерує геометрию світового світу, що завантажується, завантажуючи збережену гру). І це занадто довго. Тому я створив окремі «тестуючі» режими гри, які дозволяють мені перевірити різні частини гри, не завантажуючи всі реальні ігрові активи, тому я можу входити та виходити набагато, набагато швидше; як правило, приблизно за дві-три секунди. Якщо я хочу протестувати якийсь інтерфейс, я можу це зробити, не завантажуючись у реальну гру. Якщо я хочу перевірити візуалізацію, у мене є інший режим, в якому я можу перевірити це, знову ж таки, не завантажуючи всю ігрову систему.
Я бачив інших людей, які вирішили проблему, розмістивши логіку гри в DLL і дозволивши виконуваному файлу гри в пам'яті перезавантажувати DLL під час роботи гри, так що ви можете відновити DLL і просто перезавантажити його всередині вже завантажений виконуваний файл, тому вам не потрібно буде перезавантажувати / відновлювати художні активи вашої гри. Мені це здається безумством, але я бачив, як це робилося.
Набагато простіше, ніж було б вказати поведінку гри та / або конфігурацію в скриптах або файлах даних, і надати спосіб вашій системі перезавантажити ці файли на вимогу або, можливо, просто спостерігати за їх змінами, не потребуючи закриття гру вниз, знову з’єднайте її та знову запустіть її.
Підходів багато. Виберіть те, що найкраще підходить для вас. Але одним із ключів до успішного вдосконалення ігрового механіка є надзвичайно швидка ітерація. Якщо у вас цього немає, це майже не має значення, чим ще займаєтесь.