Проблемы с запуском игры.

31.03.2019

I am struggling with choosing the right memory size for my WebGL game Silly World Series . I"ve read all unity answers threads I could find on the topic of WebGL Build memory size, but I have some questions.

For the record, my WebGL Memory Size is currently set to 400Mb.

Error Messages

To make sure I get this right: This error occurs when the content is loading, and the browser tries to allocate 400mb of memory, but the browser says "Nope, can"t give you that much." Is that correct?

Uncaught Exception: Out of Memory

Again, to make sure I understand correctly: this is what shows up when the game is running, but the 400mb aren"t enough to run it anymore. Correct?

Uncaught RangeError: Invalid Array Buffer Length

I have no idea what this one is about. Any ideas?

Weird issues / Inconsistencies

    Someone tried to play the game using Firefox on Windows 8.1 and a powerful gaming PC. They got a message saying "The browser could not allocate enough memory for the WebGL Content", which I assume is what shows up as "Array Buffer allocation failed" in my dev tool. (Using Chrome on the same PC worked)
    Which factors determine how much memory Firefox can allocate? Because we"ve tested it using Firefox on a Macbook Pro and had no memory issues. Is there a setting for how much memory the browser can allocate?

    When testing on our Macbook Pros, we"ve never run into any "out of memory" issues (regardless of browser), even with a smaller memory size than 400mb. On my coworker"s Macbook Air however, the game runs out of memory halfway through. I realize that the game might not always use the exact same amount of memory, but since it happens consistently on one computer and never on the other, I wonder: Why would the 400mb be enough on one computer but not the other?

Solutions?

    Since it"s very frustrating for players to start playing the game and then running out of memory, I am more inclined to increase the memory size: I"d rather people know if they can run the game at the beginning, instead of getting interrupted halfway through.
    However: The more content I add, the bigger the memory will have to be, the fewer people will be able to play my game - is that something I just have to accept or can I do anything about it?

    What can I do to reduce memory usage? I"m pooling objects and caching variables as best I can. What other things have an impact on how much memory my game will need? (For the record: code stripping is enabled, I"m making "fastest" builds, import settings of textures etc. are set to "compressed" and appropriate sizes...)

ПРОБЛЕМЫ С ЗАПУСКОМ ИГРЫ ИГРА НЕ ЗАПУСКАЕТСЯ Попробуйте сделать следующие действия, возможно одно из них вам поможет: - После запуска игры не переключайтесь в другие вкладки. В случае, если вы смените окно - загрузка игры зависнет. - Обновите браузер до последней версии - Почистите куки (зайдите в настройки браузера - очистить временные файлы/cookies) - Запустите игру в других браузерах (в настоящее время нам не известны браузеры в которых бы у всех игра не запускалась. тем не менее, у кого то игра идет только в хроме, а у кого то только в мозиле) - Обновите драйвера видеокарты до последней версии - Используйте программу типа CCleaner для оптимизации работы компьютера. Если ни один из вышеперечисленных способов вам не помог - к сожалению, ваша игровая видеокарта "не тянет" игровые текстуры и не поддерживает режим 3D. Тем не менее, вы можете играть в режиме 2D. ЧЕРНЫЙ ЭКРАН ПРИ ЗАГРУЗКЕ смотри раздел Игра не запускается ИГРА ГРУЗИТСЯ СЛИШКОМ ДОЛГО После запуска игры не переключайтесь в другие вкладки. В случае, если вы смените окно - загрузка игры зависнет. Игра подгружает достаточно большое к-во игровых текстур, и, если у вас достаточно слабый интернет, загрузка боя может занимать до нескольких минут МОЖНО ПРОПУСТИТЬ ЗАСТАВКУ? Нет, нельзя. Во время показа заставки происходит загрузка самого боя. Если у вас мощный компьютер и широкий интернет канал - заставка показывается буквально пару секунд. Тем не менее, если вы не хотите ждать - вы всегда можете использовать 2D режим. НЕ РАБОТАЕТ WebGL Игра “Гладиаторы 3D: Арена и Кровь” использует технологию WebGL для своей работы. Если игра не работает, но ваш браузер поддерживает WebGL, то попробуйте совершить следующие действия Google Chrome Во-первых, включите аппаратное ускорение: Зайдите на страницу chrome://settings Нажмите кнопку “Показать дополнительные настройки” внизу страницы Нажмите галочку “Использовать аппаратное ускорение (при наличии)” (после этого действия понадобится перезапустить Google Chrome) Затем, включите WebGL: Зайдите на страницу chrome://flags Включите “Доступ к разрабатываемым расширениям WebGL” (после этого действия понадобится перезапустить Google Chrome) После этого проверьте статус WebGL: Зайдите на страницу chrome://gpu Проверьте параметр WebGL в разделе “Graphics Feature Status”. Статус принимает одно из следующих значений: Hardware accelerated - WebGL и аппаратное ускорение работают Software only, hardware acceleration unavailable - WebGL работает, но не является аппаратно ускоренным. Unavailable - WebGL не работает. Если статус WebGL не “Hardware accelerated”, то причина может быть указана в разделе “Problems detected”. Mozilla Firefox Во-первых, включите WebGL: Зайдите на страницу about:config Найдите настройку webgl.disabled Поставьте значение false (после этого действия понадобится перезапустить Firefox) Затем, проверьте статус WebGL: Зайдите на страницу about:support Найдите пункт “Визуализатор WebGL” в разделе “Графика” Если в данном пункте отображается информация по вашей видеокарте, то WebGL включен Если данный пункт содержит что-то вроде “Blocked for your graphics card because of unresolved driver issues”, то ваша видеокарта находится в черном списке Если ваша видеокарта находится в черном списке, то вы можете (данные действия могут привести к непредсказуемым последствиям!!!): Зайти на страницу about:config Найти параметр webgl.force-enabled Поставить значение true. ==ОШИБКА ТИПА invalid_request error_description:Security Error== Это внутренняя ошибка социальной сети, возникает только в браузере Google Chrome. Чтобы избавиться от нее, нужно просто перелогиниться во Вконтакте (в правом верхнем углу открыть меню под своим аватаром, нажать выйти, войти снова, введя свои логин и пароль). ==ОШИБКА ТИПА Uncaught RangeError: Array buffer allocation failed== Ошибка переполнения памяти браузера. Рекомендуем очистить кэш браузера и перезапустить его (закрыть все окна, затем запустить снова). ==ОШИБКА ТИПА uncaught exception: out of memory== Ошибка переполнения памяти браузера. Рекомендуем очистить кэш браузера и перезапустить его (закрыть все окна, затем запустить снова). ==ОШИБКА ТИПА uncaught abort... во время боя на арене== Ошибка переполнения памяти браузера. Рекомендуем очистить кэш браузера и перезапустить его (закрыть все окна, затем запустить снова). ==ОШИБКА ТИПА static-mm... во время запуска игры== Ошибка интернет-соединения. Попробуйте зайти в игру позже. В случает обнаружения других ошибок, пишите в теме

В этой простейшей программе есть ошибка JavaScript, которую нам и нужно найти, поскольку с ней наш код не работает и модальное окно не показывается. Мало того, в JavaScript многие ошибки можно назвать фатальными, поскольку из-за них может прекратить работу не только ваш скрипт, но и сторонние библиотеки JavaScript до тех пор, пока ошибка не будет исправлена.

JavaScript. Быстрый старт

Что же поможет найти ошибки JavaScript? Консоль браузера. Здесь мы вкратце пройдемся по этому инструменту в различных браузерах, в частности это будет Firefox и Chrome. В обоих браузерах консоль есть из коробки.

Начнем с Firefox. Для того, чтобы увидеть ошибку в нашем коде, необходимо открыть консоль браузера. Для этого кликаем в окне браузера правой кнопкой мыши и в контекстном меню выбираем пункт Исследовать элемент.

Внизу окна появится панель, в которой мы можем исследовать и отлаживать наш код. Полагаю, если вы верстали сайты, вы уже могли использовать этот инспектор кода для исследования верстки. Инструмент значительно упрощает жизнь верстальщика, даже и не представляю, как раньше верстали сайты без него

Итак, в открывшейся панели рядом со вкладкой Инспектор есть вкладка Консоль, она то нас и интересует. Переключимся на нее, еще раз обновим страницу и увидим все ошибки JavaScript. В нашем случае это всего одна синтаксическая ошибка, которая произошла в файле scripts.js на первой строке.

Нам остается лишь перейти в данный файл, заметить, что мы забыли заключить строку в кавычки и исправить эту ошибку:

Вот теперь ошибок нет и код успешно выполнился. Кроме встроенной консоли для Firefox можно отдельно установить расширение Firebug, которое, по сути, является аналогом. После установки Firebug можно вызвать, как и встроенную консоль, из контекстного меню или использовать для этого горячую клавишу F12. Вот таким образом выглядит Firebug:

Ну и консоль Хрома:

Она также вызывается из контекстного меню или клавишей F12.

Конечно, для исправления ошибки в единственной строке кода консоль зачастую не нужна. Но если кода десятки и сотни строк, тогда без консоли обойтись практически нереально. При этом в консоли можно не только смотреть ошибки, но и даже писать собственный JavaScript код, но это уже тема отдельной статьи.

На этом статья подошла к концу, теперь вы знаете, как найти в своем коде ошибки JavaScript и исправить их. Если вы хотите больше узнать о JavaScript, тогда рекомендую обратить свое внимание на и отдельный . Удачи!

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения