There's really no difference between "work over the internet" and working over LAN, except dealing with issues of security and firewalls. You still need some kind of network-based communications protocol.

From what I read, you can have two different models:

  1. Client-server based, where a server maintains the state of the game and each player, and keeps everything synchronized or
  2. Distributed, where there is no central server, and game and player state is held by all of the players


There are advantages and disadvantages to each model.

In a client-server design, the server always has to be running so clients can connect to it (or the first player to sign on automatically starts the server on their PC), and the server listens for broadcasts from clients requesting to join. All the game complexity is in the server, and the clients only have to be aware of their own player's view of the world. But a client-server model may not scale very well - the more players added, the higher the level of communication and the more state the server must maintain. And if the server goes down, the whole game goes down.

In a distributed model, there is no server, so the protocol has to be implemented so that all players are connected in some way to each other. Any player can come in or leave at any time without affecting the overall running of the game. But now every instance of the game must maintain the state of the game, so the executable is more heavy-weight. A distributed design could also scale better, for example, if players only need to know about other players who are "near" each other in the game world, then that player can ignore updates from players who are too far away to matter.