Последняя реплика,
Как мне показалось, основную нагрузку создают юниты, а не навешанные на них обработчики событий.
Когда вы спавните бота, инициализируются скрипты FSM формата, они моделируют, дополнительно к тому что в движке, поведение бота.
Вы что хотели показать таким сравнением? Что мало кому ведомо сколько ресурсов процессора берёт AI армы, это не знает только ленивый.
Плюс вы сунули в спавн 100 ботов инициализирующий код, плюс ещё нагрузка, которая будет зависеть от объёма исполняемого кода.
Говорите, юниты больше забирают, а с чего бы им так нагружать процессор, всё просто, там 5 копеек, здесь рубль, а немного погодя, в сумме целое состояние.
Оптимизацией, видимо озабочены только особо одарённые. Им делать больше не чего!
А те кому 100 евант хандлеров не нагрузка, позже начинают высказывать мнения типа, движок г ... но, фризит и лагает!
С чего бы так?
Нагрузка вообще не как непоменялась что с юнитами что без них у меня далеко не пенек первый для сервера и там кроме него только форум который по сути вообще ничего не жрет да и кстати с выходом новой эпохи и арма 1.48 у всех фпс просел вдвое и без юнитов. Столько напостили а адекватного ничего, почему то любая тема на форуме созданая мной или пост превращаеться в общественное мерянье членами я просил простой ответ в помощи:
Вот так работает:
Инициализация юнита:
[this] exec "kill.sqs";
Сам скрипт kill.sqs:
d6 = _this select 0
@(!alive d6)
player setPos [8487.2188,25250.588,0];
hint parseText format["<t align='center' size='1.8' color='#3b4b2e'>ТЮРЕМНЫЙ ОСТРОВ</t><br/><t size='1.2' color='#3b4b2e'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Вы направлены на тюремный остров за убийство члена дружественной группировки<br/>"];
exit
Почему вот так неработает и как написать чтоб заработало в таком же формате не привязываю к имени юнита, а просто скрипт исполнялся у любого юнита у которого есть вышеупомянутая строка в инициализации, локальная переменная _ARMY = _this select 0 должна определять любого юнита вместо конкретного с инициализауией вызова данного скрипта.
_ARMY = _this select 0
@(!alive _ARMY)
player setPos [8487.2188,25250.588,0];
hint parseText format["<t align='center' size='1.8' color='#3b4b2e'>ТЮРЕМНЫЙ ОСТРОВ</t><br/><t size='1.2' color='#3b4b2e'>????????????????????????<br/>Вы направлены на тюремный остров за убийство члена дружественной группировки<br/>"];
exit
Имхо должно работать.
А вы поперли обработчики килов засовывывать которые ненужны, в инициализацию игрока полезли которую трогать нельзя в моем случае. И единственным решением как бы я обозначил написанние массивов именованных юнитов и прикручивание данного к скрипту где переменная _ARMY = массиву именованных юнитов. Это избавляет как бы от наличия 150 одинаковых скриптов. Я спросил как сделать именгно в таком формате а не придумывать неподходящие пути, данный метод взят из инциклопедии по скриптописанию.
По поводу арма движков все мы прекрасно знаем насколько они глючные кривые и с нулевой оптимизацией тут можно не выгараживать богемию не целовать ее в очко, и не надо говорить что 150 юнитов дают нагрузку больше чем 5000 деревьяев или 10 000 000 единиц травы. Существует параметр как дальность прорисовки и если б окружение не рисовалось вокруг юнита а прорисовывалось все сразу то мы бы с вами охренели. 150 юниттов из которых бегают от силы по точкам 50 не придел возможностей игрового мира, а стоящий тупо у костра юнит мало чем отличаеться от стоящего дерева.
Edited by Kludge, 18 July 2015 - 16:15.