|
•Re: Re: разработчикам клонов игры - Barloggg, 04.08.2004 15:47:12 |
|
|
А у меня еще проще. для каждого игрока есть своя карта видимости (которая выводится на радаре) по размерам равная общей карте и все расчеты начинаются только в том случае, если враг зашел в зону видимости. В этом случае начинается определение кто его видит и кто его может захотеть. А если враг не заходит на зону видимости игрока, то игрок естественно зря процессор не нагружает.
хотя конечно такое решение довольно энергоемко.
а насчет того чтобы не просчитывать все объекты это еще проще: ведь не все же объекты способны, скажем, атаковать. Так какой смысл его включать в эту операцию?
При движении своих юнитов зона видимости (конкретно в моей демке) не пересчитывается а дополняется ну, в смысле, пролетел АВАК а за ним полоса видна до конца хода, враги все равно ведь не движутся, за чем усложнять себе жизнь? В оригинальном МАХ зона видимости просчитывается полностью каждое движение любого юнита. А это, естественно, означает накладывание всех кругов скана на общую карту.
правда демка, где есть зоны видимости не выложена, так что вам ее пока не потрогать.
Твое решение - проверки по радиусам для всех объектов вообще очень компактно так как никаких вспомогательных массивов. Но в наше то время чего экономить? подумаешь отбабахал лишний мегабайт оперативки при карте скажем 500х500 для четырех игроков. Это же мелочь :))))).
Могу дать такой совет: найди самый большой радиус действия из всех объектов на карте и проверяй только в его пределах, прочие ведь юниты все равно, по любому, не дотянутся. И это быстро и компактно (если конечно в твоем проекте нет ракетниц с радиусом действия на всю карту).
кстати:
помня о том, что наши игроки очень редко ставят стационарную защиту и редко оставляют юниты на реакции (кроме зениток естественно) то я собираюсь просчитывать реакцию у всех дееспособных вражеских юнитов. Не думаю, что это сильно отразится на скорости работы. Хотя кто-то мне жаловался, что один только алгоритм поиска пути через всю карту полностью подвешивает ему машину на несколько секунд...
между прочим в МАХ ситуация, когдя юнит стреляет дальше зоны видимости это норма. Вишибаешь врагу сканеры и смело заходишь в зону стрельбы тех же краулеров. |
|
| |