Правильный способ сохранить медиа ресурсы для флеш игры - PullRequest
1 голос
/ 10 июня 2011

Мы разрабатываем эпическую игру, используя flash cs5 и actioncript 3 (вообще не флекс).В библиотеке много изображений и других медиа-материалов, которые нам нужно использовать.Раньше я просто держал их в своем основном .fla, но потом компиляция swf стала очень медленной (больше изображений - больше времени для компиляции).Поэтому я помещаю все свои изображения в файловую систему вне флеш-памяти, и это помогает.Но затем появились некоторые лаги и ошибки, особенно когда мы тестировали игру на удаленном сервере.Похоже, файлы просто не имеют времени для загрузки (или они загружены не полностью) - хотя я сделал это довольно правильно, последовательно, с такими событиями, как onload и так далее.

Наконец-то я создал еще один SWF со всеми изображениями и ресурсами.Я загружаю его один раз в основной файл SWF и скомпилирую его только тогда, когда мне нужно добавить новое изображение.Это работает довольно хорошо, но у меня есть ощущение, что я делаю это неправильно или есть другой правильный способ упорядочить ресурсы.Также есть небольшие проблемы со вторым SWF;например, я должен заставить пользователя ждать, пока он загрузится в мой первый файл, и если я хочу запустить с моего рабочего стола, я всегда должен держать эти два файла рядом в одном месте.И по мере увеличения и увеличения количества изображений становится раздражающим снова компилировать мой второй SWF, даже если мне нужно делать это не так часто.

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

Ответы [ 2 ]

4 голосов
/ 10 июня 2011

Что вам нужно сделать, это создать класс (или классы) менеджера активов. Этот класс должен иметь дело с all загрузкой активов, чтобы вы могли легко изменить способ их загрузки без необходимости вносить изменения повсеместно.

Разумным способом разработки является внешняя загрузка файлов, вы можете легко заменить их, и если вы работаете в команде, вам не придется сталкиваться с проблемой конфликтов в вашем основном .fla файле. (Это означает, что каждый файл сам по себе, а не один файл SWF)

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

Тем не менее, при развертывании на сервере, в зависимости от типа вашей игры, может возникнуть проблема с получением всех этих файлов. Многие сайты флеш-игр даже не поддерживают несколько файлов, а предпочитают один гигантский .swf. Вот когда пришло время сиять вашему классу загрузки ресурсов, так как он весь обернут одним классом, вы можете изменить его внутреннюю работу на использование файлов .zip или, если вы хотите один файл, тег [Embed] (требуется компилятор mxmlc , но это очень легко настроить)

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

1 голос
/ 10 июня 2011

Существует несколько способов, с помощью которых разработчики флеш-памяти могут организовывать ресурсы для игр, но лучший способ зависит от того, какую игру вы разрабатываете.

Во многих играх используются плитки для построения своих уровней и спрайт-листы для сущностей /символов / и т.д., поэтому можно найти несколько фреймворков со встроенной функциональностью - на ум приходит PushbuttonEngine (http://pushbuttonengine.com/) - но я предполагаю, что вы продвинулись слишком далеко, чтобы переключить движки на этом этапе.

Одна из стратегий, которую вы, возможно, захотите проверить, - поместить каждый набор плиток (или группу связанных ресурсов) в zip-файл, а затем загрузить его. Существует много хороших библиотек AS3, которые позволяют вам анализировать zip-файлы внутри Flash, нореализация nochump.com, пожалуй, одна из лучших: http://nochump.com/blog/archives/15

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

Кроме того, поскольку вы жалуетесь на длительное время компиляцииво Flash попробуйте: в настройках Actionscript снимите флажок «Режим предупреждений».Режим Warnings выдает предупреждения компилятора о таких очевидных вещах, как нетипизированные переменные или дублирующиеся переменные и т. Д., Но отключение может реально сократить время компиляции.

Я обнаружил это, когда работал над очень ресурсоемким проектом, и после его отключения я пошел от 30 секунд до 5 секунд, чтобы скомпилировать мой swf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...