Hi dsyleixa,
Thanks for investigating, that's interesting, I think it makes sense that they're chosing to effectively overload the abs() function, so that it will operate with float data types in C++17 in the future.
In the ESP32's "Arduino.h" file, I noticed that they moved the min() and max() macros to the bottom of the file (after the <algorithm> include). If the Arduino abs() macro definition:
// undefine stdlib's abs if encountered
#ifdef abs
#undef abs
#endif
#define abs(x) ((x)>0?(x):-(x))
...is also moved to the bottom of the "Arduino.h" file as well, it effectively overrides the standard library's abs() function and your LunarLander code works with abs() oncemore.
In other words the Arduino abs() macro itself works just fine, it's just that it's currently in the wrong place in the ESP32's "Arduino.h" file.