No, do not completely replace all raw pointers.
The use of smart pointers (unique_ptr, shared_ptr) is really useful only for those pointers that own and manage pointer memory. However, if a function takes a pointer as a parameter, then you do not want to transfer ownership. The function just needs access to the pointer.
void ShowCredits(GameManager* game)
PS If ShowCredits relies on a game that is always active (that is, it may not necessarily be nullptr), then you might be better off if the parameter is of type GameManager &.
source share