Она требует 78 проверок на столкновения в кадре. Помните однако, что это максимальное число проверок на кадр, если все шары двигаются. Когда двигаются лишь несколько шаров, это число значительно уменьшается в результате способа оптимизации проверки столкновений в данной игре (описанного выше в этом разделе).
Когда вы кодируете что-либо требующее от процессора значительных ресурсов, важно потратить некоторое время, чтобы попытаться понять, почему код требует таких затрат. Обычно есть способы уменьшить нагрузку на процессор путем анализа причин медленной работы скрипта и нахождением альтернативных способов кодирования. Если вы можете придумать хорошие способы для этой игры в бильярд, скажем, разделить шары (в памяти) на четыре квадранта стола и выполнять обнаружения столкновений основываясь на местоположении на столе, то вы могли бы уменьшить загрузку процессора в достаточной степени, чтобы сделать игру 8-шаров, которая хорошо работает!
Кто первый?
Я применил в этой игре другую методику, которую я не использовал никогда прежде: порядок столкновения. Это вполне возможно для более чем двух шаров, сталкивающихся в течение одного кадра. В действительности, возможно определить, что два шара столкнулись, когда они не должны были столкнуться. Позвольте мне объяснить. Представьте, что на столе двигаются три шара. Шар 1 и 2 двигаются друг к другу с противоположных сторон стола и находятся на траектории столкновения. Шар 3 двигается перпендикулярно этим двум шарам по траектории столкновения с шаром 1. Поскольку обычным образом для обнаружения столкновений мы используем циклы, мы можем ошибочно обнаружить столкновение между шарами 1 и 2, даже если шар 1 в действительности сталкивается с шаром 3 на долю секунды раньше. Если шар 1 сталкивается сначала с шаром 3, то он, вероятно, отклонится с траектории столкновения с шаром 2, и неизбежное столкновение с шаром 2 никогда не произойдет. Наши скрипты обнаружения столкновения рассматривают возможности столкновения между двумя шарами и даже не принимают во внимание факт, что существуют другие шары