Jump to content
Korean Random
Kotyarko_O

[Bug(s)] showPostmortemTips, подстановка значений макросом {{.}}

Recommended Posts

можешь полный конфиг прикрепить?

Вот как раз и собираю всё =)

 

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

Но конфиг запутанный: configs.rar

Реплей: 20160729_1544_japan-J27_O_I_120_01_karelia.rar

Share this post


Link to post

Short link
Share on other sites

Воспроизвел. Ну и тормозит на твоем конфиге... 

Share this post


Link to post

Short link
Share on other sites

 

 

Ну и тормозит на твоем конфиге...
Это сейчас так. До 9.15.1 всё было нормально.
Придётся избавляться от такого количества подстановок?

Share this post


Link to post

Short link
Share on other sites

Я посмотрю что можно сделать. Вроде все подстановки должны кешироваться. Вот только {{alive}} динамический сейчас, может из-за него тормозит.


Пока что могу сказать, что тормозят макросы:

 

ncalls  cumtime  percall  name
    15805   18.784    0.001  B:Macros.FormatString
      138    1.442    0.010  V:XvmVehicleMarker.draw()
     1407    0.905    0.001  B:Macros.Format
     7283    0.276    0.000  V:Macros.FormatNumber
        1    0.180    0.180  B:BattleXvmView.onConfigLoaded()
       60    0.127    0.002  L:Macros.Format
     3939    0.104    0.000  B:Macros.FormatNumber
     4232    0.100    0.000  V:Macros.FormatBoolean
     2129    0.076    0.000  V:Macros.FormatString
      272    0.070    0.000  V:Macros.Format
      390    0.040    0.000  B:BattleState.onUpdatePlayerState()
       28    0.026    0.001  V:XvmVehicleMarker.ctor()
      924    0.024    0.000  B:Macros.FormatBoolean
        1    0.018    0.018  B:BattleState.setVehiclesData()
      138    0.016    0.000  V:XvmVehicleMarker.super.draw()
      451    0.015    0.000  L:Macros.FormatNumber
       69    0.013    0.000  V:XvmVehicleMarker.updateHealth()
        2    0.012    0.006  V:BattleState.setVehiclesData()
      269    0.012    0.000  L:Macros.FormatBoolean

Попробую заняться оптимизацией.


"B:" - это боевой интерфейс - уши, таб.

"V:" - это маркеры, с ними вроде нормально все.


хотя тут тоже не очень хорошо:

0.010  V:XvmVehicleMarker.draw()

каждый маркер перерисовывается в среднем 10мс, это довольно много.

 

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


А вот что получается, если сделать {{alive}} статическим:

 

ncalls  cumtime  percall  name
    20247    1.504    0.000  B:Macros.FormatString
      142    1.467    0.010  V:XvmVehicleMarker.draw()
     1437    0.290    0.000  B:Macros.Format
     7422    0.282    0.000  V:Macros.FormatNumber
        1    0.179    0.179  B:BattleXvmView.onConfigLoaded()
       60    0.128    0.002  L:Macros.Format
     3921    0.102    0.000  B:Macros.FormatNumber
     4307    0.102    0.000  V:Macros.FormatBoolean
     2166    0.077    0.000  V:Macros.FormatString
      278    0.070    0.000  V:Macros.Format
      393    0.041    0.000  B:BattleState.onUpdatePlayerState()
       28    0.026    0.001  V:XvmVehicleMarker.ctor()
      924    0.023    0.000  B:Macros.FormatBoolean
      451    0.018    0.000  L:Macros.FormatNumber

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

Сейчас попробую сделать {{alive}} статическим.


Вроде сделал {{alive}} статическим, твой конфиг стал работать значительно быстрей. Но надо проверить, что ничего не поломалось.


А с ошибкой все понятно - у тебя в markersDeadExtended.xc есть такая подстановка:

{{.StatisticsTemplates.MarkersXC.DeadExtended.PlayerName.format}}

При этом в StatisticsTemplates.xc:

 

"MarkersXC": {
 ...
   "DeadExtended": {
     "PlayerName": "{{.Nicknames.{{name}}|{{name}}}} {{.Clans.{{clannb}}|{{clan}}}}"
   }

то есть нужно или убрать "format" в подстановке, или добавить в шаблонах.

По тексту ошибки видно, что он дошел до PlayerName, и в его значении пробует найти "format".


Я сделал дополнительное логгирование для такой ситуации, может будет понятней где искать.

  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

Извиняюсь за долгий ответ, без сети сидел.
 

А с ошибкой все понятно

Мда. Всё это время был мой косяк, стыдно, однако)

 

Вроде сделал {{alive}} статическим, твой конфиг стал работать значительно быстрей. Но надо проверить, что ничего не поломалось.

Прирост быстродействия действительно ощущается, здорово.

Но альфа в экстраполях с кастомной иконкой техники (в текущем режиме ушей, как союзных так и вражеских) перестала обновляться. Объясню подробнее:

'Конструкция'

  "TankIconsRight": {
    "alpha": "{{alive?90|40}}",
    "x": 0,
    "y": 0,
    "bindToIcon": true,
    "format": "<img src='xvm://res/contour/{{vehiclename}}.png'>",
    "shadow": {}
  },


Например, выбран режим "large", уничтожается союзник\противник - иконка не приобретает альфу 40. Переключаем режим на "short" - иконка с правильной альфой; "medium", "medium2" - аналогично, всё в порядке. Возвращаемся на "large" - иконка не изменилась, альфа всё та же - 90.

Допустим, имеем одного уничтоженного противника (описанного выше) с иконкой, имеющей альфу 90 (что неправильно) в режиме "large". Переключаемся, например, на "medium". Уничтожается второй противник и в этом режиме у его иконки тоже неправильная альфа. В остальных режимах всё в порядке.

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

 

Конфиг с иконками, для проверки: res_mods.rar

 

Можно было описать ситуацию и покороче, но это не мой метод =)

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

ок, с этим понятно.


Вроде починил, надо тестить.

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...