単純なゲーム仕様ならsurface で簡単にできる

地形複雑だとアクティブ同士の衝突検出使った方法でsurface のclipping rectangle 機能で矩形blit領域を指定、そこにキャラクターアニメーションなどをBlit してエフェクトかければ部分的に色を変えたりできるよ

もっと複雑な地形だとアルファチャンネル事前に作っておくとかかなやりたくないが