I'm wondering how a system can be made compatible with networking operations (client-server). By saying "networking operations" I mean a system that can handle online operations, multiple user interactions and client-server processes. For example, in programming term, lets imagine we created a Board class for our awesome board game and this game is played with multiple players but we don't know how to make this game online (This Board class to be online for multiple users) since we don't know how to convert our board game to online, we decided to make the board game be able to convertible to online board game. For example, you made this game and posted to github.com and someone found your game very interesting and said "I want to make this online with a game library or engine". In that case, the first (positive, good) scenario is that the person that wants to make this game online will say "Yeah this game's codes can be converted to online so I can do it" and the second (negative, bad) scenario is that the person will say "This game is quite nice but the codes are as terrible as that cannot be converted to online" So if we want first scenario to happen, we have to make the codes convertible to online. But I don't know what the requirements are and how to achieve this. But I have a theory.
My theory: the board class that represents whole game must be convertible to JSON to transfer the board from server to client or from client to server. So the board that is in client can easily be synchronized with server's board by JSON data transferring. So my board class must represent methods like named "getBoardAsJSON(), toJSON()" so the JSON data that is obtained from the board can be carried to client and to server.
My questions are:
What fundamentals, features are needed for my board game to be able to converted to online?
Is JSON convertible feature enough for my board game to be online?