Anton Koudinov (Anton Koudinov) wrote in world_of_tanks,
Anton Koudinov
Anton Koudinov
world_of_tanks

Category:

Куда делись мои 30 FPS?

Возвращаясь к теме шмодиков:
- почему в ангаре у меня видеокарта закипает?
- куда пропали мои FPS?
- почему снаряд летит не туда?

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

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

Итак, разберём простейший пример, часики в ангаре. Они многим и даже очень многим знакомы до выхода часов в XVM. ( Файлик logos.swf, чистый флеш на AS3, до 0.9.4 использовался в каждой сборке или 99% ).

Декомпилируем, смотрим код. Код там маленький, казалось бы, где там можно ошибиться?

1. Ошибка 1 . Импортируем сразу все классы, по звёзочке, вместо одного нужного. На всякий случай.
import flash.display.*;
import flash.events.*;
import flash.text.*;

Обычно загружают только то, что надо, например, import flash.text.TextField;
А вы представляете себе сколько объектов находится в import flash.display.* ?

В данном случае, это равносильно тому, что брать на работу с собой содержимое всей квартиры.

2. Ошибка 2
function frame1() : *
{
addEventListener(Event.ENTER_FRAME,this.UpdateClock,false,0,true);
}

Открываем http://gameware.autodesk.com/documents/sf_4.2_best_practices.pdf
Читаем, как делать не надо:

"Minimize the use of onEnterFrame (AS2) or Event.ENTER_FRAME (AS3) event handlers, or at the very least install and remove them when necessary, rather than having them executed all the time.
Having too many onEnterFrame/Event.ENTER_FRAME handlers may drop performance
significantly. As an alternative, consider using setInterval and setTimeout functions. When
using setInterval:
• Do not forget to call clearInterval when the handler is no longer needed.
• setInterval and setTimeout handlers may be slower than
onEnterFrame/Event.ENTER_FRAME if they are executed more frequently than
onEnterFrame/Event.ENTER_FRAME. Use conservative values for the time intervals to
avoid this."


Вкратце, о чём речь, сделано так, как нельзя делать или крайне не рекомендуется

Опционально

3.
В свойствах сцены укажем FPS побольше, таким образом, пункт 2 будет выполняться в 2-3 раза чаще.

4.
Добавим красивостей, свечение, тень.

"Real time filters are very expensive. This is more of a limitation of Flash itself, than of Scaleform GFx. Like anything, there are correct ways to do things, and incorrect ways. ActionScript tends to be slow, and we advise avoiding it for time critical elements, particularly in the HUD. For front end stuff, it shouldn't be much of an issue. ActionScript tweening can be expensive, depending upon how it is implemented. There are some AS functions you just should never use, or should only use sparingly. (onEnterFrame events is one such example - alternatively, investigate setInterval, but it really depends upon how and where you use these functions)."

Красивости обрадуют процессор в совокупности с пунктами 3 и 2. Прямо в геометрической прогрессии и в сввокупности.

Что хотел сказать то?

Я вам привёл пример простейшего и очень популярного мода, (правда уже бывшего) в котором всё сделано, как специально, наоборот тому, что написано в официальном документе к Scaleform.

Можете представить что делается в этих ваших прицелах и дебагпанелях? А там ещё питончик добавляется.

Что делать?

Мододелам внимательно читать документацию и рекомендации, разобраться в вопросе, а не лепить абы как. Отличная идея - ещё не значит хорошая реализация

Разработчикам WG реализовать наиболее популярные фичи, которых многим не хватает без модов.

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

Удачи!

UPD1
Помимо вышеописанного "дурного тона" в наисании кода, большая проблема мододелов - отсутствие какой-либо официальной инструкции, скажем, как делать правильно. Тут надо отдать должное энтузиастам, собирающим и публикующим данную информацию + команде XVM, которая в открытом доступе делится своими наработками с исходными кодами.

Я бы пожелал разработчикам предоставлять больше информации об используемых технологиях, например, какая версия Scaleform, SWF и т.п. и предлагать хотя бы простые эталонные примеры в духе "Hello, world"

А то возможность официально делать моды предоставили, а информации как делать правильно и как всё это работает, - минимум.
Subscribe

  • Post a new comment

    Error

    Comments allowed for members only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 30 comments