I am trying this approach right now with the functional clojure 2d engine 'gdl'https://github.com/damn/gdl , which just 'organically' evolved out of developing https://github.com/damn/Cyber-Dungeon-Quest , an action RPG.
Which means that all features have been created by an actual need.