Так каков же механизм, с помощью которого персонаж появляется в игровом мире? В следующий раз, играя в FPS или другую «стрелялку», посмотрите на ступни персонажей при ходьбе или беге. Несомненно, они немного сдвигаются относительно персонажа. Это обусловлено тем, что обычно анимации персонажей создаются «на месте». Проиллюстрировать связь персонажа, его анимаций и кода можно с помощью заводного игрушечного солдатика. Поднимите игрушку, заведите ее и держите над полом. Ноги солдатика двигаются, но с полом не соприкасаются. Преодоление расстояния моделируется перемещением вашей руки: игрушка не стоит на полу и не идет по нему самостоятельно. В случае персонажа игры в реальном времени роль руки исполняет код - он перемещает персонаж, запускает одну анимацию, когда происходит определенное событие, или другую, когда случается следующее, кажется, что персонаж бежит, идет, отступает в сторону или назад (рис. 5.9).
Рис. 5.9. Заводная игрушка «Солдатик Betty»
Этот подход, несмотря на свою простоту, не может в полной мере имитировать реальность по двум причинам. Во-первых, скорость, с которой код перемещает персонаж, невозможна в реальном времени. Действие должно быть быстрым, яростным и стремительным. Поэтому персонажи двигаются быстрее, чем должны; как правило, масштаб игрового мира огромен, и в этом мире просто не существует способа, которым можно было бы путешествовать в реальном времени на большие расстояния.
Согласно проведенным оценкам в игре Doom персонажи бегут со скоростью около 145 км/ч. В игре Quake скорость движения персонажей уменьшилась до 101 км/ч, а в Quake II они двигались с ничтожной скоростью 82 км/ч.
Рис. 5.10. Длина каждого шага от старта до финиша разная