The code version of the “How to Draw an Owl” meme

I’ve been reading the Unity manual during my morning commute on BART… because the life of a game developer is non-stop excitement. Today I read something that made me burst out laughing in the middle of a crowded train, a single short bullet pointed list page entitled: Converting a Single Player Game to Multiplayer

If you’ve never made a multiplayer game from a code base someone else has made, attempting to follow these tutorial instructions is the programmer equivalent of the old art meme:

At first I thought it was extremely funny that all you’d need to do to convert a single player designed game to multiplayer is “Make important member variables into SyncVars” and “Create Lobby Scene” but as I thought about it more I began to be worried that seeing something like this might make a student think it was an easy process that they can do “later.” Trying to oversimplify networking by talking about it being a matter of syntax instead of needing to understand concepts like everything needing to be asynchronous is making the process more mysterious, not less. I understand the one to one correlations between the class names could be useful, but I think manuals should take more care when they switch from showing best practices to showing “worst practices” as trying to shoehorn in networking clearly is.

For the most part if a student programmer does find themselves in the position of needing to put multiplayer into a fundamental single player game I look forward to hearing all the rants about rewrites due to discovering something else that is fundamentally unsyncable due to the way it was written and assumptions made.

Good luck with “Converting a Single Player Game to Multiplayer”

2 Replies to “The code version of the “How to Draw an Owl” meme”

  1. Perhaps the shock and dissapointment would serve as a valuable lesson? Might discourage people though.

  2. I can only agree wholeheartedly regarding Unity’s “HLAPI”. I had my own go at creating a little network game in Unity using the HLAPI and it was a nightmare. Even figuring out how to support something as simple as drop in clients was horrible and seemed to not have been a consideration with the way the api works. It has terribly glib documentation (for the parts that even have documentation), out of date examples and various parts simply don’t work right. I spent more time figuring out how to work round it, rather than with it. I wouldn’t mind all this if the documentation and pages describing the HPAPI were covered in ‘under development!’ warnings, but they’re not.

    And as you say, “converting a single player game to multiplayer” should just be a single line: “Rewrite your game.”

Leave a Reply

Your email address will not be published. Required fields are marked *