Не могли всі ігри уникнути завантаження після запуску?


23

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

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


16
Зауважте, що у багатьох "безшовних" іграх з відкритим світом є періоди завантаження, коли гравець переїжджає в непередбачуване місце. Можна їхати з одного кінця Нью-Йорка до іншого в відділенні, не подаючи екран завантаження, тоді як швидка поїздка до місця вимагає завантаження. Вся справа в тому, щоб знати, що завантажувати далі.
Фельсір

2
@Felsir Dungeon Siege зробив це так само.
Мейсон Уілер

Як приклад, Batman Arkham Origins використовує завантажувальні екрани безпосередньо перед коронками та при вході в абсолютно нові області. Його прогресивний характер, орієнтований на історію, добре піддається і дає користувачеві природну перерву. Це особливо добре спрацьовує через дуже широкі райони з активами дуже високої чіткості. Кодування та тестування цієї функції було б дуже трудомістким для малої користі.
Кейсі Кубалл

піднесіть оперативну пам'ять до 128 Гб. Створіть об'єм оперативної пам'яті на 64 Гб або близько, завантажте свою гру на диск ОЗП. Часи завантаження будуть настільки швидкими, що ви ледве помітите їх. Я перейшов до SSD, і час завантаження значно скорочується. Оновлення відеокарти, особливо до більшої кількості оперативної пам'яті.
кібернард

Завантаження Async потребує часу, який може змінюватися залежно від швидкості процесора та диска. Ви не завжди можете бути впевнені, що речі будуть завантажені до того часу, коли вам це потрібно.
Алан Вулф

Відповіді:


31

Відповідь - так, це можна було б зробити в більшості випадків хоча б певною мірою.

Причин цього не робиться багато:

  • На це потрібно час і гроші, щоб зробити це правильно.
  • Кількість помилок, які проходять тестування, буде вище
  • Часи завантаження приймаються користувачами.
  • Можуть бути й інші причини часу завантаження, наприклад, балансування завантаження сервера.
  • Загальні рішення, які можна придбати з полиці, більше сумісні з "завантажувати все відразу".

Наслідуючи точку "навантаження на балансуючий сервер", багато онлайн-ігор, що надходять на ринок сьогодні, мають унікальну для вас центральну область "хаб", і ніхто більше не може отримати доступ до неї. Досить часто ці ділянки розміщуються за зоною завантаження або повільною прогулянковою зоною (наприклад, BOO у «Відділі»), щоб вони могли безпечно зняти екземпляр, в якому ви були раніше, і помістити вас у свій приватний примірник .
СГР

7
Існує також питання пам’яті. Можливо, не вдасться завантажити існуючий рівень, зберігаючи поточний у пам'яті (особливо для консолей або портативних пристроїв), тому вам доведеться використовувати екран завантаження
Jezzamon

@Jezzamon Я думаю, що карта Скайріма ніколи не зберігається в пам'яті в будь-який момент часу. Може, я помиляюся? Якщо ні, то чому б будь-яка інша ситуація була непридатною для динамічних стратегій завантаження масових ігор у відкритий світ?
Візіонер

Практично ніхто вже не скручує власний ігровий движок з нуля. Вони купують двигун (Unreal, Unity, CryEngine) та купу проміжного програмного забезпечення та склеюють його разом. Зазвичай базові двигуни не налаштовуються на постійне введення вмісту або для перезавантаження без повторного завантаження. Подумайте, скільки разів ви загинули в грі, лише зіткнувшись із часом завантаження 60 секунд, незважаючи на те, що активи та рівень уже завантажені. Причини @Peter також є причинами того, що ви не бачите ігор, які дозволяють почати в них грати, поки ви дуже часто завантажуєте активи.
Том Б

2
@ Візіонерські рівні зазвичай багато разів використовують текстури, а інший рівень використовує інший набір текстур. Рівень підземелля використовуватиме багато текстур підземелля, пустельний рівень використовуватиме піщані та пустельні скельні текстури, гірський рівень використовуватиме текстури скелі, трави та снігу тощо. Для ігор, де це відповідає дійсності, вивантажуйте половину рівня, коли те саме текстури, які використовуються на всьому рівні, звільнять лише невелику частину використовуваної пам'яті (або вона вивантажить текстури, які вам ще потрібні).
Пітер - Унбан Роберт Харві

10

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

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


Чому б не встановити пріоритет для завантаження важкого / часто доступного меню? У будь-якому RPG, якщо я відкрию меню, це 90% часу, щоб обладнати щось, що я знайшов, або використати предмет. Ви можете почати з меню тез. Або почніть з меню, яке потребує 5 хвилин для завантаження, і скасуйте завантаження, якщо користувач вийде з меню.
DrakaSAN

1
@DrakaSAN Але це часто оптимізується. Навіть оригінальний Diablo показав вам інвентар на краплі капелюха. Підхід "дочекайтеся всього", схоже, спричинив велике відродження сучасних консолей, які були дуже обмеженими в пам'яті порівняно з ПК. Оскільки так багато ігор, як на ПК, так і на консолі, переносяться на консоль-> ПК, деякі обмеження консолі успадковуються в процесі. Порівняйте Diablo III або Divinity з Skyrim або Dark Souls - відмінності досить очевидні.
Луань

2
Чи меню повільного завантаження є справжньою проблемою в іграх? №
Алан Б

@AlanB, лише якщо єдиний спосіб отримати доступ до витратних матеріалів через це меню. Див. Destiny на Xbox 360 / PS3 та скільки часу потрібно для використання пакету боєприпасів порівняно з версіями XB1 / PS4.
SGR

1
@SGR Я збирався використовувати Destiny на PS4 як приклад меню з неприпустимо довгими часом завантаження, я не можу уявити, наскільки гірше це на консолях останнього ген.
IllusiveBrian

5

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

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

Звичайно, ви сказали "не змінюючи оточення", але я просто хотів навести приклад " Ореол" , оскільки це щось, що я хотів би бачити більше.

У межах безперервної кампанії, або коли розробник має великий контроль над розташуванням гравця, таке рішення, безумовно, є життєздатним, як ви кажете. Naughty Dog любить виконувати час завантаження, у Jak і Daxter, як відомо, немає часу завантаження на PS2, а Uncharted ігри мають на початку єдиний час завантаження.

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


3
У Jak і Daxter є час завантаження. Вони просто сховані за дверима, аналогічно ліфтам ME1 і тому, як вони ховають час завантаження.
Nzall

2
Але час завантаження, прихований за залами S-кривої, і таке не відчуває часу завантаження.
Алмо

Якщо я правильно розумію, відкриті карти світу, як-от Skyrim, не завантажуються в пам'ять, просто ті шматки, які користувач повинен побачити негайно, тож не змогли ви попередньо завантажувати невеликі стартові частини всіх (20?) Карт? При правильній оптимізації даних карт, здається, що реальна оперативна пам’ять не є великою проблемою з точки зору сучасного обсягу оперативної пам’яті навіть на мобільному пристрої. Я думаю, що саме ця візуалізація відеокарти, яка є вузькими місцями більшості ігор, я думаю. Я просто здається, що ви можете завантажити користувачу початкові області всіх цих гало-карт, а потім зробити вибрану, скинувши решту з пам'яті.
Візіонер

1
Карти - це не те, що потрібно вічно завантажувати - це величезні текстури, файли моделей, шейдерні програми тощо, які є специфічними для рівня чи області.
Том Б

3

Час.

Вам потрібен час, щоб заощадити час. Або вам потрібні гроші, щоб компенсувати брак часу. У будь-якому випадку, "Немає часу завантаження!" це особливість, яку можуть запропонувати лише ті, хто має розкіш, щоб собі це дозволити. Потрібно дуже ретельне планування, і вам потрібно дуже добре зрозуміти, що ви робите, і не всі розробники ігор мають ресурси для цього.


2

Зрештою, це обмежені ресурси.

Ігри з відкритим світом і, особливо, ММО, в значній мірі підготовлені до передбачуваності - ви завжди знаєте, які дані потрібно заздалегідь завантажити. Це можна побачити в архітектурі світів - у будь-який час існує багато ресурсів, які потрібно завантажити, у вас є певний спосіб запобігти користувачеві бачити ще не завантажені речі. Найпоширеніший спосіб - це ворота та входи, які блокують ваш погляд у наступну зону протягом вирішальних кількох секунд, необхідних для завантаження. Більшість MMO також використовують менш деталізовані моделі та текстури, що значно скорочує навантаження.

Деякі речі все ще непередбачувані, навіть при ретельному дизайні. Наприклад, можуть бути спеціальні банери, які носять гравці, які відображаються лише після того, як відповідні дані будуть надіслані на ваш комп'ютер по мережі. Звичайно, більшість ігор намагаються обмежити це, щоб здешевити його (наприклад, банери Diablo III - це прості композиції, легко надіслати якомога менше байтів даних). Але в кінцевому підсумку іноді просто потрібно чекати, коли дані надійдуть. І вам потрібно щось показати, поки триває завантаження - у багатьох іграх це може спричинити перерву в зануренні, коли ви бачите сіру модель з низькою деталізацією, яка відображається під час очікування завантаження даних.

І при всьому цьому завантаження подібним чином є вирішеною проблемою (TM), але це не робить його простим. Це витрачає багато ресурсів і часу, як на оптимізацію ресурсів, так і на їх використання для забезпечення безперебійного відтворення, а в самому коді - асинхронний код важкий. Це також може означати зменшення досвіду гри, навіть якщо все піде правильно - це означає, що ви повинні переконатися, що ви не перетинаєте можливості пропускної здатності вашого найнижчого загального знаменника, тому вам потрібно знизити якість моделей і текстур або зробити їх менш різноманітні, а геометрія ваших світів сильно обмежена. Якщо ви цього не зробите, то гра буде зовсім неспроможною - поки я пам’ятаю людей, які грали в ігри, на які було потрібно 10 хвилин (а то й довше!), Щоб завантажити карту, просто тому, що їхній комп’ютер був не зовсім під силу, гра сама після цього добре працює. Якби у нього було безшовне завантаження, гра просто заморожувала б або демонструвала потворні текстури та моделі весь час, очікуючи завантаження даних. Відкладене завантаження не є виграшним, це компроміс, як і більшість інженерних речей :)


2

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

Прогнозування того, що завантажувати, а що не завантажувати, часто не вдається, і це може бути згубним досвідом, коли це робиться. Один з найгірших прикладів цього - Rage by id Software. Принаймні, у ранніх версіях системи мегатекстури зробили це так, що навіть щось на кшталт обертання навколо занадто швидко створювало величезні кількості текстури та навіть артефакти геометрії, перш ніж повільно згасати.

Ці проблеми просто не є проблемою - все попередньо завантажено.

Щось потрібно враховувати не обов’язково, що завантажувати, а що вивантажувати. Коли у вас лише стільки бюджету на простір, коли ви завантажуєте нові речі, які старі потрібно видалити? Наскільки ви впевнені, що ці активи не будуть використані протягом наступних секунд? Це важкі проблеми для вирішення.

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

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


2

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

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

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

А тепер уявіть швидку подорож. Немає жодного способу передбачити, куди користувач може вибрати. Вони мають (як правило) майже всю карту на вибір. Попереднє завантаження всіх можливих місць швидкого подорожі зайняло б занадто багато пам’яті (ви можете спочатку завантажити всю карту в пам’ять) і занадто багато часу (якщо припустити, що не було завантажено всю карту). Коли це станеться? Коли вони відкривають діалог швидкого подорожі? Проблема стала б лише в кілька разів гіршою!

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

Тепер уявіть, що це стосується ігрових ресурсів загалом, де відносини часто не очевидні. Вам нарешті доведеться або завантажити всі можливі варіанти, або почати здогадуватися, що робитиме користувач. Гадати дорого (як в розробці, так і в процесорі) і складний безлад для програмування. Конкретні приклади:

  • Збереження файлів: вам потрібно буде завантажити кожен файл збереження до того, як користувач вийде на екран збереження, або здогадайтеся, який файл він може завантажити (останні 5 тощо).
  • Інтерфейс користувача: Багато стратегічних ігор змінюють свій інтерфейс користувача залежно від вашої фракції. Вам потрібно буде завантажити всі можливі розробки інтерфейсу користувача, перш ніж користувач розпочне свою гру.
  • Ігровий світ: у процедурно створених іграх, таких як Minecraft або RTS-ігри, такі як Civilization, світ не існує до перегляду, з різними масштабами. Попереднє завантаження цього неможливо, оскільки вони не існували для початку; попередній їх обчислення в кращому випадку можна зробити аналогічно попередньому завантаженню, і це не застосовується у випадку RTS.

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

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

Ідея фонового завантаження полягає у використанні мертвих циклів для кращого використання, але є лише стільки мертвих циклів. Те ж саме стосується і пам'яті - попереднє завантаження може істотно збільшити використання пам'яті гри. За допомогою екрана завантаження ви зможете скинути наявні ресурси. Немає такої розкоші з фоновим завантаженням, це означає, що це могло б подвоїти потребу в пам’яті гри лише на цьому рахунку.


1

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

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

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

Затримки також не завжди прийнятні. Я чув про випадки в Starcraft, коли ви "зігрівали" свою гру, завантажуючи карту, яка має побічний ефект кешування кожної динамічно завантаженої моделі / зображення. Потім ви вийдете і граєте в гру нормально. Для елітних геймерів це мінімізувало заїкання GUI, що насправді вплинуло на їх ігровий процес. Намагаючись довести, які затримки будуть прийнятними для користувачів, а які - не складно.

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