Since filling areas with water would be buggy, i suggest spikes. Spikes are 1x1 building that kills what drops on it but doesnt damage the sides. We can lower ground level and place theese spikes at the bottom and wait for the victims
And palisade, stone and castle gate houses with drawbridges. Drawbridge allows us to pass over 1 tile. We can make a moat of 1 tile wide beneath the walls and walk over the moat thanks to drawbridge.