model view controller c++11 2d game library