Не совсем уверен, что происходит, но вот некоторые вещи, которые нужно попробовать:
Вы можете установить маску для всех единиц с помощью self.mask.fill (). На этом этапе столкновение маски должно быть идентичным столкновению на основе прямоугольника.
Вы можете вызвать print (self.mask.count ()), которая покажет количество установленных пикселей. Убедитесь, что это не 0 или что-то еще.
Вы можете вызвать i.mask.overlap (Player.mask (0, 0)) и подтвердить, что они перекрываются, когда имеют одинаковый верхний левый угол.
Это может быть проблемой при создании маски, или смещения в некотором роде неверны; это должно сузить проблему.
Проверьте страницу справочника в течение времени. Можно указать строку формата, где возможно произвести информацию о памяти. Например:
>time -f"mem: %M" some_random_command mem: NNNN
произведет максимальный размер резидентного набора процесса в течение его времени жизни, в Килобайтах.
Разве Вы не можете использовать PS? например. ps v <pid>
возвратит информацию о памяти.