People seem to think this is like... way more complicated than it really is, especially for a single player game. Most "gameplay" code is already something you write for a specific game. There's some example code and systems to get you started in engines, but it's very normal to not use any of that and build your own logic from scratch. It's just too dependent on the specific game to necessarily provide a bunch of reusable stuff in a broad engine designed for multiple genres.
Physics is probably the most commonly used piece in game engines on the gameplay side, but it's also pretty reasonable to use your own code for that if there's a reason to. The main reason people often end up using engine physics solutions is that they are often coupled a bit more tightly to networking, which is something that fewer people want to entirely roll their own. Obviously not an issue in a single player game.
So yeah it's completely reasonable and not particularly complicated to use all your own gameplay logic, including physics engine and so on, and drive all the UE rendering from that. It's possible to do that even in a networked game too, it just gets a bit more gnarly as physics and the like interact with netcode state and prediction and so on. If you bring your own netcode with your own physics though, that's obviously still nicely decoupled.
In any case there are also various game genres that I think are better suited to just rolling your own code than using the stuff that is in these general purpose engines. RTS is a big one, but also anything with deterministic gameplay/netcode is often something that's just easier to do yourself rather than try and make general engine systems deterministic.