Как динамически визуализировать космический фон в actionscript3? - PullRequest
0 голосов
/ 20 июля 2009

Я создаю космическую игру в actionscript / flex 3 (flash). Мир бесконечно большой, потому что нет карт. Чтобы это работало, мне нужно динамически (программно) визуализировать фон, который должен выглядеть как открытое пространство.

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

Игрок может «прокручивать» «карту», ​​пролетая по краям экрана, так что определенная часть мира видна только сразу, но игрок может идти куда угодно. Прокрутка работает, перемещая все объекты, кроме игрока, в противоположном направлении, создавая впечатление, что игрок двигался в этом направлении. Фон также должен быть перемещен, но он должен отличаться на новой обнаруженной местности (динамически создаваемой).

Теперь мой вопрос: как мне сделать что-то подобное, какие вещи мне нужно использовать и как их реализовать? Производительность также должна быть принята во внимание, так как в игре будет еще много объектов.

1 Ответ

1 голос
/ 20 июля 2009

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

Фон, возможно, должен состоять из набора плиток, которые вы можете повторять более или менее случайным образом (вам действительно нужен фон, на самом деле? Не будет ли достаточно некоторых частиц?). Используйте ту же технику, что и для объектов.

Итак, в конце концов, у вас получится модель для объектов, плиток или частиц (которую вы сгенерируете в начале). Таким образом, вы добавите только несколько поплавков (вы можете добиться дополнительной производительности, если не рассчитываете положение объектов, которые находятся далеко от FAR. Дерево квадов должно помочь вам в этом, но я думаю, что в этом нет необходимости) Если объект, имеющий вид, покидает сцену, освободите вид и используйте четырехугольное дерево, чтобы проверить, появляются ли новые объекты.

Если вы используете много объектов / частиц, рассмотрите возможность использования пула объектов . Если объекты только двигаются, а не вращаются / масштабируются, рассмотрите возможность использования DisplayObject::cacheAsBitmap.

...