Що все має відбуватися під час завантаження екрана?


19

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

Які спільні речі, які потрібно попередньо завантажити в ігри? Скільки потрібно попередньо завантажити?

Чи варто показувати якусь смугу прогресу? Як я можу тримати короткий час завантаження? Як повинен виглядати екран завантаження?

Назвіть кілька хороших прикладів завантаження екранів? Будь-які приклади коду?

Зокрема, моя гра призначена для Andriod (Java / mobile), але сміливо робіть свої відповіді загальними.


2
Я знаю, що це не конкретно те, що ви просите, але моя порада щодо того, що має відбуватися під час завантажувального екрану: Щось цікаве! :) Забавляйте гравця трохи сюжету (на кшталт касину), міні-гри або, можливо, вже покажіть меню, наскільки це можливо.
Барт ван Хекелом

Відповіді:


13

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

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

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


19

Потрібно бути "сітчастими шпонками"


2
Ха-ха, приємна довідка :)
Брайан Денні

Хоча це, очевидно, жарт, +1 за посилання на чудовий приклад утримання гравців під час завантаження. Така проста техніка, яка передбачає не більше зусиль, ніж додавання дурницького тексту. "Не голодуй" - це ще один приклад гри, яка робить це добре, а також випадково (або ні) також передбачає " Повторення
twiz

3

Залежить, чи будете ви переходити на один завантажувальний екран та переходи миттєвого рівня чи на кілька завантажень.
Я б сказав, що останній краще на пам’ять.
Щось на зразок:
//First loading screen
Load menu layouts or whatever
Load GUI assets
Show something to pass the time
Switch to menu

//In between levels
Remove any graphics specific to the last level - get rid of something that isn't going to reappear like a boss.
Load level graphics that haven't already been loaded
Again, show progress or something to pass the time

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


1
Заради Піта, якщо у вас є анімаційний бар завантаження з відсотком, зробіть так, щоб він рухався вгору поступово і точно, замість того, щоб залишатися на 10% протягом 90% часу, а потім стрибати до 100%. Якщо у вас є безпроцентна анімація завантаження, принаймні зробіть її так, щоб вона запитувала завантаження - таким чином ви можете зупинити її, коли завантаження з якоїсь причини припиняється. Я бачу занадто багато ігор, які анімують завантажувальну анімацію у власній темі, і коли завантажувальна нитка руйнується, анімація радісно грає. Це якось перемагає мету завантаження анімації.
Кай

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

2

На платформах iphone та Android потрібно завантажувати всі текстури та звуки. Завантаження текстур і звуків на старих телефонах дуже повільне, як iphone 2G, 3G або G1. Ви не можете це зробити в грі.


2

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

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

Ось екран завантаження для APB. Досить химерно круто. :) http://www.youtube.com/watch?v=p5STix1t_1E&feature=related

Ось кілька псевдокодів для відображення рядка прогресу на екрані завантаження:



LoadScreen::Init()
{
  mAssetsToLoad.add("Background.png");
  mAssetsToLoad.add("Player.png");
}

LoadScreen::Update()
{
  mProgress += 1;
  mAssetManager.load(mAssetsToLoad.top());
  mAssetsToLoad.pop();

  if mAssetsToLoad.empty()
    mDone = true;
}


LoadScreen::Draw()
{
  for( int i = 0; i != mProgress; ++i)
  {
     Vector2 pos(i*mProgressPartTexture.Width, 100);
     DrawProgressBarPart(pos, mProgressPartTexture);
  }
}

Фу, змушений використовувати! = Тому, що він зірвав візуалізацію коду, коли я використовував <


1
Нічого, завантажувальні екрани APB виглядають дуже здорово :)
Брайан Денні

Якщо ви вставте код з чотирма пробілами замість тегів <pre> <code>, ви зможете використовувати <замість! =, Не порушуючи форматування.
mmyers

так, але це великий біль у попці. Чому не існує просто спеціального тегу коду?
Срекель

1

Екрани завантаження можна використовувати для приховування майже будь-чого; завантаження активів, будь-яких з'єднань, які потрібно здійснити (tcp тощо), заповнення карт об’єктами гри та ініціалізація.

Я, як правило, займаюся тим, щоб мати якийсь менеджер активів (або, можливо, менеджер для кожного типу активів - звуків, графіки тощо) і змусити їх завантажити те, що буде використано в пам'яті. Тоді просто запропонуйте вашій грі витягнути з менеджерів посилання.

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

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

Ось таке питання, яке може вас зацікавити.


1

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

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

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


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

1

Для екранів завантаження в Conquest я ознайомився з невеликим описом місії (який тип гри це, а також трохи сюжетної лінії для місії) та деякою базовою допомогою щодо команд.

На задньому плані я завантажував звуки. Графіка була завантажена на вимогу, і це, здавалося, спрацювало досить добре для нашої гри, але звуки були ведмедими, тому я передзавантажив усі звуки, необхідні для місії. Кнопка "Завантажити / Пуск" відключена, поки все не завантажується, але у мене немає анімації (що було б непогано додати).

Це наша перша гра, тому ми ще багато чого вчимося, але це досі добре для нас.

Завантажувальний екран Conquest

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