I am currently building a 2d game engine, with the future intention of adding some sort of networking functionality. I have past experience making networking games in Unity and whatnot, however I am sort of conflicted as to how to structure the networking part. So far I have thought of two scenarios:
I give a low-level/high-level API to the user to do networking on their own (like UNet I guess?). Basically just building the networking on top of the game engine, which means the other functionalities (like rendering, physics, etc.) don't need to know about networking right?
I assume every game is multiplayer (multiplayer with 1 player if single player) and kind of build networking into the engine natively.
In past experiences adding networking to a single-player game is quite hard, and I assume this principle will apply to a game engine as well (ie. add networking later down the line). But this would only be the case if I choose to go with scenario 2 right? Meanwhile if I go with scenario 1, I could just add networking whenever because the game engine isn't dependant on it. Or am I misunderstanding something?