Here's how I do hills for Optio, but this can apply to any ruleset. I needed the following:
1. Non-adhesive magnetic sheets, the kind you use for vehicle signage and the like. Quite cheap and widely available
2. Ferrite magnets. These are dirt cheap and also widely available
3. Printed cloth. This costs a bit more but once you've got it you've got it. I got mine from TMP link a printing company that specialises in point of sale stuff like banners and printed tablecloths. Or you can just use a painted sheet. But nothing too thick. Felt is no use.
4. Cardboard. Reasonably thick and sturdy.
The magnet sheets are trimmed to accommodate the printed battlefield cloth. I have two to vary the depth of the battlefield (I have two cloths).
Put the printed cloth on top.
With the carboard I made 4 basic hill segments, each the size of a battlefield square. Here is a hilltop:
The side of a hill:
The corner of a hill:
And what I call an inverted corner:
Next the ferrite magnets:
I use them in 2's for more strength:
They are used to join the segments together. This is a bit fussy and I suspect not strictly necessary. I'll try the next game without them.
The completed hill. You can see where the inverted corners come into the picture:
Next slide the cloth over the hill. For now it's all creasy and messy:
I had made several rounded sheet magnet sections with the printed cloth glued on top:
The smaller sections smooth out the creases around the hill and fix it in place:
The larger sections and some small sections are used to stretch the corners of the cloth and get rid of most remaining creasing. And voila!