Póki co lepiej by było 2D ogarnąć. Sam SFML w sobie jest niejako kombajnem różnych bibliotek/modułów. Jeśli znasz/znacie OpenGL na dobrym poziomie możecie go wykorzystać do renderu, a SFMLa np. do obsługi wydarzeń. Osobiście proponuję zrobić coś co znacznie ułatwi i przyśpieszy pracę.
Przykład z mojej bibliotek: Zamiast używać jakiejś tam metody Keyboard::isKeyPressed(sf::Keyboard::A) (czy jakoś tak) z dodatkowym boolem blokującym ciągłe trzymanie (żeby po przytrzymaniu klawisza if wykonał się tylko raz) mam własną, prostą funkcję IOS.Check(Key::A(Pressed));.
Grunt żeby skupić się na kwiestiach I/O (coś w stylu jak wyżej pokazałem), uproszczona obsługa wydarzeń, render wielowarstwowy z shaderami (OpenGL Shading Language - GLSL, daje ogromne możliwości), jakaś lepsza konsola debugerska (nie ta cmd, tylko wbudowana w okno gry), manager zasobów (np. spr.setTexture(RES.GetTexture("id_tekstury");), ogromna ilość funkcji pomocniczych (rand, length(point1,point2), ToString, ToInt, parsery itp). I ważna kwiestia: Jeśli już coś robicie, to róbcie to porządnie i przemyślanie, bo refaktorycja (pisanie od nowa) może być pracochłonne i obniżające morale.