Syncing player inputs won't work unfortunately, since most simulations, especially physics engines, are not deterministic so the same set of inputs isn't guaranteed to create the same results. It is not entirely impossible to create a deterministic simulation, but it has some drawbacks and it is so complex that it is almost never done.
If you want the game to be fast paced and real time, you really don't have a better option than to use prediction on the client. You can do it in a peer-to-peer setup by having one of the players act as the authoritative server. Of course the downside of that is, that the host player will most likely have a significant advantage.
Also you mention reliable connection, if you are referring to TCP that's really not good enough for fast paced action games and you will want to switch to UDP eventually (which will also require handling dropped packages).
None of this is trivial, but there is a ton of information out there if you really want to dig into it. You can definitely do it if you are determined, just don't expect it to be easy or quick if this is all new to you.
The easy way out would be to find a high level abstraction that fits your need, or a template project that does it well. Since I am new to Godot myself, I don't know what is available in this regard. Doing it yourself is a lot more satisfying though and the knowledge you acquire from doing so will be useful forever.