Como esses jogos java sand controlam tantas partículas?

Alguém pode lançar alguma luz sobre como um programa como esse pode ser estruturado?

Quais classes de java eles empregariam para rastrear tantas partículas e depois checá-las contra coisas como detecção de colisão? As partículas precisam saber de que partículas estão próximas ou que não estão próximas de nada para que possam cair etc.

Aqui está Por exemplo, caso você não tenha certeza do que é um jogo de areia.

questionAnswers(2)

yourAnswerToTheQuestion