They would need a good diagram tool and a telnet client ;)
Making an existing game multiplayer is very tricky to do properly. Much of the logic needs to be delegated to the server so that players cannot cheat by modifying the client.
Existing libraries that may make this process easier are things like Distributed Objects. http://www.aplaypowered.com/
You might be interested in some of the ideas I presented in a paper at GAS2013(ICSE2013). It attempts to create a system to distribute local data in video games.
I find one thing that helps in a language is that cleanup is automatic but also deterministic (i.e in C++). This way, it is possible to send a message as soon as a local object is destroyed. There are many ways round this when using a garbage collected language but I prefer not having to think about this issue.