The idea is to do the following steps:
1)Start with some normal engine that I will call A (you can use your original engine or use existing chess engine)
2)Define the following functions for a chess position
a)find the evaluation of A based on search to depth d(d=0 is the static evaluation function of the engine)
b)find the chess result of A play against itself based on search to depth d.
3)Build a new engine that I will call engine B
a)evaluation function of engine B at iteration d is simply the result of a game of A against itself at depth d in case of a mate result and otherwise the evaluation function that A returns if you search to depth d.
b)For search of engine B you can start with alphabeta and test ideas to improve it.
I guess the new engine is going to be weaker than the starting point engine but the question is by how many elo points.
A possible advantage of the new engine may be detecting fortress and be careful not to allow the opponent to go for them because basically a very high evaluation of the engine that is not a mate score is probably a fortress.
People may complain about wrong mate scores but today mate score is not what I consider to be an evaluation.
Evaluation means that you are not sure and it can be better or worse. If mate score can only improve to shorter mate then it is not what I consider to be an evaluation.