XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
SRes
1110101000
offline
Опыт: 9,997
Активность:
Омг, извращение, мне легче делать через массивы и одним таймером проходится по ним\нему, при добавлении новых ячеек проверяю на пустые и уж тогда добавляю. Я не думаю что одновременно в игре может быть 8192+ объектов о_О.
Старый 29.03.2009, 11:48
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
при добавлении новых ячеек проверяю на пустые и уж тогда добавляю

еще больше иззвращение у в десятки раз медленее, никаких проверок не дб
Старый 29.03.2009, 12:05
ScorpioT1000
Работаем
offline
Опыт: отключен
ну это метод "в лоб", а ассоциативные массивы это всеже массивы =)
Старый 29.03.2009, 12:08
SRes
1110101000
offline
Опыт: 9,997
Активность:
J, Это почему же? Хорошо, тогда в игре массив перевалит за 8192 и ОП крит, гениально... Вполне разумный способ, при учете того, что объектов в этом массиве около 20 одновременно будет. Проход от 0 до 20 лупом и если есть пустые ячейки записывать в него новые данные - очень даже нормальный способ. Предложите лучше, раз так.
Старый 29.03.2009, 12:15
ScorpioT1000
Работаем
offline
Опыт: отключен
SRes, обходить тысячный массив несколько раз в секунду - не лучшее решение
Старый 29.03.2009, 12:18
MF
Что-то вокруг не так
offline
Опыт: 26,594
Активность:
Ребят, вы в серьез рассматриваете карты с 8192+ движущимися прожектилами? Нафиг такое надо? Тем более все это делается более разумно: все прожектилы одного типа складываются в 1 массив, другого в другой, для каждого свой таймер.
Цитата:
SRes, обходить тысячный массив несколько раз в секунду - не лучшее решение

Как бы все все равно выполняется на одном процессоре, разницы особой не будет.
Старый 29.03.2009, 12:26
SRes
1110101000
offline
Опыт: 9,997
Активность:
ScorpioT1000, Ты читал мое сообщение ?
Цитата:
Сообщение от SRes
Вполне разумный способ, при учете того, что объектов в этом массиве около 20 одновременно будет. Проход от 0 до 20 лупом и если есть пустые ячейки записывать в него новые данные - очень даже нормальный способ.

Кажется, нет. Какие тысячи ?
Старый 29.03.2009, 12:49
PlayerDark
Coraline
offline
Опыт: 10,569
Активность:
А вы проверяли его на производительность ?

PlayerDark добавил:
Вобще то как я понял это не совсем хороший способ. Тк остаются все глюки связанные с аттачем, плюс к этому добавляется неудобство работы с массивами и ограниченное количество адресов.
Старый 29.03.2009, 13:31
ScorpioT1000
Работаем
offline
Опыт: отключен
SRes, не вижу значения твоего поста. Ну проходим циклом по массиву в 20 элементов и что? Как оно относится к теме ассоциативных массивов?
Старый 29.03.2009, 16:31
MF
Что-то вокруг не так
offline
Опыт: 26,594
Активность:
ScorpioT1000, так что ассоциативные массивы не самая интуитивно понятная вещь. Да и не пользуюсь ими и вам не рекомендую
Старый 29.03.2009, 16:56
adic3x

offline
Опыт: 108,439
Активность:
вот они эти ваши ассоциативные массивы
Код:
set var[I2Sx/*return bug*/("MyString")]=0x00
Старый 29.03.2009, 18:17
Toadcop

offline
Опыт: 54,313
Активность:
ADOLF здесь будет сейв\лоад брейк =) так что тока для статик данных.
Старый 30.03.2009, 03:05
alexkill

offline
Опыт: 18,872
Активность:
Цитата:
Сообщение от ADOLF
если хендл обьекта превысит 0x00102000

include vjass
Код:
globals
     integer array myArray [40000]
  endglobals

стольких одновременно запущенных таймеров не будет на карте (максимум 200 и то перебор)
безусловно, удаление ссылок и обнуление хэндлов никто не забывал )
Цитата:
Сообщение от SRes
Омг, извращение, мне легче делать через массивы и одним таймером проходится по ним\нему

кто мешает в данной системе это сделать? видимо, ты вовсе не разобрался в ее сути.
Цитата:
Сообщение от ELDAR
Этот метод чем то похож на SCV

как и сам автор )
Цитата:
Сообщение от PlayerDark
Вобще то как я понял это не совсем хороший способ. Тк остаются все глюки связанные с аттачем, плюс к этому добавляется неудобство работы с массивами и ограниченное количество адресов.

ребята, вы так говорите, будто бы сцв настолько удобная система, что лучше некуда...
_________
Лично я этот метод использую очень давно (не в такой извращенческой форме, безусловно). Ни разу сбоев не возникало.

По факту, на статью это не тянет, поскольку не хватает инфы о тех же структурах, указания существенных недостатков сцв (раз уж название столь громкое) и т.п.

Отредактировано alexkill, 30.03.2009 в 17:54.
Старый 30.03.2009, 13:21
PlayerDark
Coraline
offline
Опыт: 10,569
Активность:
И все же, в чем его преимущество ? может я и нуб, но мне никто так и не ответил ?

PlayerDark добавил:
+ пример в карте на 5 реализуется с помощью массивов.
Старый 30.03.2009, 13:30
Toadcop

offline
Опыт: 54,313
Активность:
Цитата:
globals
integer array myArray [40000]
endglobals
это уже доступ через интерфейс функции ну или на крайняк инлайн. вида

Код:
if x<5 then
 if x<3 then
  if x<2 then
  // 1
  else
  // 2
  endif
 else
  if x<4 then
  // 3
  else
  // 4
  endif
 endif
else
 if x<7 then
  if x<6 then
  // 5
  else
  // 6
  endif
 else
  if x<8 then
  // 7
  else
  // 8
  endif
 endif
endif

// здесь можно чють оптимизировать для случиев из 5 массивов т.е. сделать для 5го тока 1 переход. тем самым 5й массив будет быстрей чем все остальные.
Старый 30.03.2009, 14:06
alexkill

offline
Опыт: 18,872
Активность:
Цитата:
Сообщение от PlayerDark
И все же, в чем его преимущество ? может я и нуб, но мне никто так и не ответил ?

понятное дело в том, что отпадает необходимость кеша
Цитата:
+ пример в карте на 5 реализуется с помощью массивов.

это ты к чему? метод и использует массивы
Старый 30.03.2009, 17:57
agentex

offline
Опыт: 34,834
Активность:
Цитата:
Омг, извращение, мне легче делать через массивы и одним таймером проходится по ним\нему, при добавлении новых ячеек проверяю на пустые и уж тогда добавляю.

циклы в любом случае хуже, так что извращение - у тебя

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

согласен, но если юзать эту цифру, изначальный индекс может быть не 1 2 3 а 400 - 500, а это уже серьезное число если сравнивать с 8190.
Старый 30.03.2009, 18:48
PlayerDark
Coraline
offline
Опыт: 10,569
Активность:
alexkill эээ... тут же остаются все глюки кэша связанные с аттачем хендлов. Чем кеш хуже ?
Цитата:
это ты к чему? метод и использует массивы

нед, массивы - это просто пробежка циклом с использованием одного таймера.
Старый 30.03.2009, 18:48
MF
Что-то вокруг не так
offline
Опыт: 26,594
Активность:
agentex, вопрос спорный что лучше: пробежать по массиву из 20 элементов в одном таймере, или запустить 20 таймеров для каждого элемента. Я выбираю первый вариант (хотя в алгоритмическом плане имеет место быть и то и другое, вопрос скорее вкуса чем извращений)
Старый 30.03.2009, 18:50
agentex

offline
Опыт: 34,834
Активность:
Цитата:
запустить 20 таймеров для каждого элемента

эм а кто об этом говорит?
Старый 30.03.2009, 18:51
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 12:09.