I have made sure that everything moves at the same speed independent of the framerate and that all the objects could have their information sent to a server to be reproduced there.
As for sending messages, I will likely send them at fixed time intervals for player movement. As for many of the other objects in the game, the only thing that is really important is when they were created since no data really changes for them beyond their position which is very predictable. The server will be the one that decides whether or not something was hit.
As for finding games, people will be able to serve public or private games, and users will be able to directly connect to a server or use a matching service. If there are players waiting for a server and no servers are available, then I may have the program try to initialize itself as a server for other clients.
Here is a screenshot of the current progress: