Как они отслеживают NPC-зомби в Left 4 Dead?
Я говорю о NPC, которые просто заходят в стены или бесцельно бродят вокруг. Даже если игроки их не видят, они есть (скажем, в комнатах или за дверями). Скажем, есть около 10 или так зомби в коридоре, так и внутри помещений. Сохраняет ли игра всех этих зомби в списке и повторяет их команды? Они просто появляются, когда пользователь находится в пределах определенного радиуса или достиг специального местоположения?
Скажем, вы разместили 4 юнита (контролируемые игроками) в совершенно разных местах по всей карте. Давайте предположим, что вас не роят, и тогда вы не убили ни одного из этих бесцельных NPC. Будет ли игра отслеживание 10 х 4 = 40 зомби в общей сложности?
Или мое понимание полностью выключено?
Причина, по которой я спрашиваю, заключается в том, что если бы я реализовал нечто подобное на мобильном устройстве, отслеживание 40 или более NPC может быть не такой уж хорошей идеей.
источник
Ответы:
Вы заинтересованы в документе, найденном здесь:
AI системы Left 4 Dead
источник
Я не читал статью, на которую ChrisE написал ссылку, но из разговора, который у меня был с сотрудником Valve, или где-то в их вики-разработке (не могу вспомнить), я помню, что мне сообщили, что у них, по сути, есть только пара реальные лица (директор ИИ); аватары, которые вы видите, изображающие зараженных NPC, являются просто «марионетками» для этих сущностей. Они сделали это, чтобы свести к минимуму количество записей эдикта (словаря сущностей), поскольку очевидно, что существует тонна зараженных NPC, которые нужно отслеживать.
Словарь сущностей движка имеет фиксированный размер и не может расти. Это означает, что любая игра, построенная на этом движке, которая требует большого количества NPC - или любой сущности в этом отношении - должна использовать такую систему, чтобы движок функционировал должным образом и не подавлялся (и в конечном итоге падал), потому что количество объектов слишком велико.
источник
Я не могу говорить о том, как работает Мертвая реализация Left 4, но я могу сказать, как я, вероятно, сделать это.
Я бы пойти на то , как ваш второй вариант, отслеживать каждый игрок и загружать только NPC , когда игроки двигаются мимо триггерные точек. Ключ в системе , как это, чтобы сделать триггерные точки достаточно далеко от игрока , что они не в состоянии связать , что
walking past this fence post
спусковыеthat car to blow up, and shoot a zombie at them.
Я бы, вероятно, имел активную коллекцию NPC, триггерные точки которой либо добавляли, либо удаляли NPC из коллекции. Это позволяет вам тратить ресурсы CPU / GPU на NPC, с которыми игроки на самом деле взаимодействуют, но дает вам возможность загружать NPC в любое время.
Подумайте о боссе, который может слышать звуки, возможно, босс загружен в начале карты, и если игрок, проходящий по карте, издает много шума (гранаты, трубные бомбы и т. Д.), Босс будет искать игрока и атаковать. неожиданно, вместо того, чтобы ждать, пока игрок не достигнет босса.
источник