Місяці проблем зі звуком у Apex Legends, спричинені «одним рядком коду», підтверджує Respawn

Проблеми зі звуком у Apex Legends, викликані «одним рядком коду», підтверджує Respawn

Вихідний вузол: 2627193

Сьогодні в новинах «Створювати відеоігри важко»: подорож Respawn, щоб відстежити помилку, яка спричинила місяці проблем зі звуком у Apex Legends. Гранати, які не вибухають, зброя, яка не стріляє, пошкодження, які не мають джерела, і місяці болісного розслідування — все це, очевидно, викликано одним рядком коду, доданим в оновленні 16 сезону Apex Legends.

Як зазначено в а ретельний допис на Reddit (відкривається в новій вкладці) Менеджер спільноти Respawn Емі Тіссен, проблеми почалися на початку 16 сезону в лютому. Студія почала отримувати повідомлення про «зникнення голих» в Apex. Невдовзі Respawn визначив, що гранати не зовсім «зникали», але іноді вони не вибухали, незважаючи на пошкодження гравців.

«Цього не траплялося під час нашого ігрового тестування 16 сезону, не можна було відтворити всередині після початкових звітів, і було дуже важко визначити за допомогою живих відео ігрового процесу, оскільки першопричина не завжди відображалася в POV гравця», — йдеться в дописі.

Respawn краще впорався з проблемою після того, як отримав подібні звіти про відсутні звукові ефекти гармати та ефекти частинок. «Після попереднього розслідування було встановлено, що основним підозрюваним є система, яку наші сервери використовують для надсилання команд «старт»/«стоп» для різних ефектів (наприклад, певних звуків, систем частинок, фізичних впливів, трасуючих куль, вибухів)».

Оновлення команди розробників: оновлення аудіо від r / apexlegends

По суті, під час матчу відбувалося щось, що могло перевантажити ліміт сервера для звукових ефектів або частинок, спричиняючи випадання деяких звуків і ефектів.

«Звідси випливає теорія, що щось може переповнювати обмеження двигуна, вимагаючи тисячі ефектів щосекунди!» у дописі йдеться. «Але чи була це системна проблема чи це може бути одна особа? Кожне оновлення сезону містить тисячі змін до активів, коду, сценарію та рівнів. Що означало знайти голку в стозі сіна».

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

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

Куди ви йдете звідти? Respawn вирішив перевірити свою теорію перевантажених ефектів, навмисно зламавши сервери Apex Legends. Команда створила тестову збірку та створила 50 персонажів, які одночасно стріляли зі зброї та нескінченно використовували здібності, щоб збільшити навантаження ефектів на сервері. Це спрацювало — нарешті команда змогла відтворити звуки, подібні до звітів про помилки, але як це відбувалося з реальними гравцями, досі залишалося загадкою.

«Це дало нам доказ того, що FX буде відкинуто, але лише з абсолютно нереалістичними тестами. Були досліджені різні аспекти продуктивності нашого сервера, але нічого певного не було знайдено».

Respawn уважно стежив за цією проблемою, поки вирував 16 сезон. Зрештою команда помітила, що пропущені аудіозвіти, як правило, походять від гри на високому рівні. Це дало їм ідею розгорнути оновлення сервера, яке дозволило Respawn відстежувати нові показники в меншій підмножині збігів, що миттєво призвело до прориву.

«Поки завершувалося оновлення сервера, ми його знайшли. Було визначено, що причиною проблеми є один рядок коду. Нова зброя 16 сезону».

Цією зброєю є Nemesis, найновіша енергетична штурмова гвинтівка Apex. Nemesis має унікальну механіку, завдяки якій завдаючи шкоди, рушниця «заряджається» і змушує її стріляти швидше (як продемонстрований (відкривається в новій вкладці) YouTuber Dazs вище). Цей ефект заряджання візуально відображається на пістолеті за допомогою електричної дуги всередині стовбура. Respawn каже, що рядок коду, призначений для того, щоб наказати цьому ефекту «зупинитися», поки рушниця не була заряджена чи в кобурі, насправді повторювався безкінечно для всіх гравців, які тримали Немезиду в своєму інвентарі.

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

Досить смішно, але це також пояснює, чому падіння звуку траплялися частіше під час гри на високому рівні. «14 клієнтів із Nemesis, що працює зі швидкістю 180 кадрів в секунду, було б достатньо, щоб FX почав відпадати». На цей раз це були найкращі комп’ютерні гравці, які мали недолік.

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

«Сборки, які використовувалися для тестування, могли мати недостатню кількість Nemesis у кобурі в грі, мали більш рідкісну кореляцію з відсутніми ефектами або не мали достатньо клієнтів із такою частотою кадрів в секунду — про що ми повинні пам’ятати та вдосконалювати для майбутніх тестувань».

Патч, застосований минулого тижня, нарешті назавжди придушив цю помилку. І ось воно — неприємна звукова помилка зі складною першопричиною, яка в довгостроковій перспективі допоможе Respawn виявити подібні помилки до того, як вони досягнуть гравців. Respawn завершив публікацію відміткою про тестування, нагадавши гравцям, що «хвилина гравців, які грають в Apex, еквівалентна 10 тестувальникам, які грають у гру протягом року!»

Часова мітка:

Більше від PC Gamer