Pisz dalej swoją grę, ale wszystkie podstawowe mechanizmy napisz tak, żebyś mógł je wykorzystać w dowolnej innej grze. Tak powstaną zarysy silnika, a dalej już powinieneś sam wpadać na pomysły/potrzeby co do dalszego rozwoju. Na początek możesz napisać swoją biblioteke matematyczną (działania na wektorach chociażby, macierzach jeśli potrzebujesz [nie wiem na jak niski poziom chcesz wchodzić pisząc silnik], quaternion), klasę do obsługi inputu i inne takie niezbędne rzeczy. Później klasy/interfejsy w stylu sf::Drawable czy sf::Transformable (przykłady, twój silnik może działać ofc działać w inny sposób :D) z ktorych użytkownicy silnika będą mogli dziedziczyć pisząc swoje klasy - to jak już będziesz miał więcej konkretów jak silnik będzie wyświetlał rzeczy w oknie..
Dużo zależy od tego na jak niski poziom chcesz schodzić o czym już wspomniałem. Czy będziesz bazował na tym co oferuje sfml czy inna biblioteka graficzna czy chcesz od zera pisać swój renderer (w takim wypadku musisz zacząć od nauki jakiegoś interfejsu graficznego (OpenGL, DirectX, Vulkan przy czym zdecydowanie odradzam Vulkana na początek)). Czy chcesz wykorzystać przechwytywanie inputu z jakiejś biblioteki czy samemu się babrać w API systemów operacyjnych? Podobnie z tworzeniem samego okna i kontekstu dla wybranego przez ciebie interfejsu graficznego. Także powtarzam - bardzo wiele zależy od tego na jak niskim poziomie chcesz się bawić, ale to od czego możesz na pewno zacząć napisałem ci w pierwszym akapicie :)