Hey, fellow carbon-based lifeforms! For this issue of my running dev blog, I’d like to speak on the steps we took to improve our game after the first official play test.

Before that though, we would like to thank and appreciate those who assisted us in our testing. None of our play testing would have proven useful if not for our good friends. We received lots of support and constructive criticism. It made the next steps easy and gave us the energy to continue — and any further support or criticism is greatly appreciated.

So, the night of the play test — Tensions were high. The smell of craft beers and dominos pizza permeated the air of our normally industrial office space — where we huddled in a conference room and watched our summoners battle their monsters to the last. With the help of our awesome support, we played a host of buggy games until we declared our first World Champion.

Once that was accomplished, we looked over our various notes and the multitude of new bugs we had found.

Games that were not joined or had a player disconnect were “ghosts”, and hung around in the list of matches.

The Solution:

This problem was thankfully fairly easy to solve. I looked through the Unet and Unity documentation to find all I could on disconnecting, and found that we probably weren’t destroying our matches afterward. So, we needed to do two things. One, if you made a match, store that match’s information so you can properly destroy it. Like so…

Once the match is successfully created, we store the match as a local variable (MyMatch)

That way, if you quit…

It destroys your match! Yay, no more ghosts!

Notice the top function is a callback for DestroyMatch, so once it fires off we clean up after it

The list of matches never refreshes, so players resort to exiting the lobby menu and re-entering

The Solution:

Another easy one! I had just recently learned about co-routines, so we settled on something like this to get us through. What this code does is just sets a chain of requests to the lobby matchmaking service, looking for games… so the list updates!

Look at this cute little function.. If EveryTwo isn’t currently going, it starts again!

Players timeout and the game freezes or continues with massive bugs for the player still in game

The Solution:

This one was a bit more obvious after having dealt with the first issue. A player disconnecting needs to be handled correctly! So now that I had some idea on how to destroy a match, we made the following code to set the player still in game to a disconnect scene, so he knows that he won by default and that his opponent is long gone. The coward.

OnClientDisconnect is the function that goes off if you’re just a client, OnServerDisconnect for the Host player

In conclusion, these are some of the small steps we took to improve the quality of our first game! As always, thanks for reading, robots.