在2D中最有效的方法来实现墙和阴影

我正在制作一个类似于robocode的2D自上而下的编程游戏。 在舞台上将有多达1000个墙(线),并有多达50个机器人。 每个机器人都可以看到一个90度的弧线,而且看不到墙壁。 我需要一个有效的方法来计算每个机器人可以看到的(其他机器人和墙壁)。 我已经有一个网格的实施。 我想知道什么是解决这个问题最有效的方法。

如果该方法还包含绘制阴影以进行可视化的方法,那将是非常好的,但这不是必需的。

我正在使用C ++和Qt框架。

总结:主要问题是如何生成每个机器人可以看到的机器人和墙壁列表。 例如:

Robot 1 can see: Robot 6 Robot 15 A wall from (50,60) to (70,80) Robot 2 can see: ... 

那么我建议把它们存储在某种场景图中,这样你只需要画出你能看到的东西,并且很容易计算出你能看到的东西。 而对于他们可以看到的,我建议光线投射或简化版本