Tiles need not be flat, also not at its perimeter. Make sure that neighbored tiles have the same kind of edge at the common seam, i.e. they use the same sequence of intermediate vertex positions. If you do this in the manner of module assembly you still have a limited set of shapes what probably makes the level design easier.
Some details to be considered are:
* There need to be a height information for every point where a dynamic game entity can be placed.
* In dependence on the camera height and pitch as well as the modeled slope, depth test and/or backface culling may be needed.
* The camera height need to be adjusted if the player character impends to leave the upper display edge.
* The simple top-down texture mapping looks ugly if the slope gets stronger due to texel stretching. You may support extra texture tile sizes.