Производительность Flash для игры dev: собственный кадровый буфер VS BitmapData рендеринга

var xxx = require("../lib/your-library.js")

или

import xxx from "../lib/your-library.js" //get default export
import {specificPart} from '../lib/your-library.js' //get named export
import * as _name from '../lib/your-library.js'  //get full export to alias _name
20
задан Community 23 May 2017 в 11:53
поделиться

5 ответов

Обновление: спасибо за высоконагруженная версия. Опять же, я не видел разницы, просто бегая вокруг. Но я ловко понял, что «r» сбрасывает турели, и когда я сбросил 20-30 турелей, нативная версия была несколько медленнее, чем ручная, так что, возможно, я ошибался. (Я не заметил разницы в использовании памяти.) По-прежнему кажется, что выполнение вещей изначально должно иметь потенциал для ускорения, но вполне может быть, что для этого потребуется специализированная обработка некоторого непрозрачного вида.

Поскольку это было принято, я добавлю примечание, чтобы пояснить то, что я сказал в комментарии к другому ответу: «Если все ваши активы сами являются растровыми изображениями, то, как указывает HanClinto» Неудивительно обнаружить, что их компоновка вручную может быть быстрее, чем создание собственных объектов и разрешение Flash выполнять эту работу, поскольку это устраняет накладные расходы, связанные с отображаемыми объектами, такими как структуры событий.

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

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

4
ответ дан 30 November 2019 в 01:30
поделиться

Если вы делаете сотни или тысячи объектов на экране (например, с интенсивными эффектами частиц), тогда у вас будет лучшая производительность с CopyPixels.

A многое зависит от того, что вы пытаетесь сделать, верно?

2
ответ дан 30 November 2019 в 01:30
поделиться

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

1
ответ дан 30 November 2019 в 01:30
поделиться

Я обнаружил, что настраиваемая версия (с визуализацией растрового изображения) намного быстрее, и я ожидал этого.

DisplayList Flash разработан с учетом огромного количества различий в DisplayObjects и результат не будет наиболее эффективным путем (если вы в конечном итоге не учтете все эти отклонения самостоятельно в AS3, и в этом случае вы проиграете нативному коду).

Например, для рендеринга тайлов (где вы выполняем copyPixels для плиток), настраиваемое средство рендеринга растровых изображений будет намного быстрее, чем сотни объектов DisplayObject в DisplayList. Вы также, вероятно, можете использовать специализированный клипер для удаления тайлов, тогда как Flash в конечном итоге выполняет очень общие вычисления и тесты ограничивающего прямоугольника.

В re: variance, например, в вашей пользовательской версии "здание"

4
ответ дан 30 November 2019 в 01:30
поделиться

У меня младший ноутбук, Intel Mobile 1.6Ghz / 512MB, Firefox 3.5.x, Flash10.0.32.18, WinXP

Я ясно вижу большую разницу.

native версия: менее 10 секунд загружается до 99% ЦП и движение прерывистое. пользовательская версия: остается ниже

Кстати, есть ли шанс получить пример кода в качестве упражнения.

0
ответ дан 30 November 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: