What I did
Well this sprint could have gone better. It turns out that creating multiplayer games in Unity is massively more complex than I was lead to believe. If you’re making a more traditional game where you control a single character then it’s easy to get started and move on from there, but unfortunately I need to figure out a lot of the more complex stuff before I can do much at all.
As a result only 2 tasks actually got completed this sprint. The first one was to increase the number of checks done when calculating levels of cover. That was just a matter of doubling a couple of numbers, but I did refactor the code to make it a bit nicer at the same time. The other task was upgrading to Unity 5.1 and Visual Studio 2015 which went well, although the outlining shader I was using to draw the movement circle is now broken. I’ll need to replace this in the near future, but not until after I finish implementing multiplayer.
What I didn’t do
Every single task involved in making the game Multiplayer friendly. From what I’ve learnt know so far I need to rewrite a lot of my tasks to better explain what I’ll need to do. Some of this was hampered by a lack of tutorials out there, and the only good ones I’ve found so far have been a YouTube series on UNET (which is excellent), and the official Unity manual (detailed, but a bit dry). More resources are always better, but those should teach me bulk of what I need to know about UNET.
Aside from this I also had a task to fix aiming so that you could aim from behind cover which might currently block your shot. I’ve not make any progress with this other than mull over a couple of ideas for how to get it working, and unfortunately none of them really fit the bill. I’ll need to do some research into how this is done in traditional tabletop games to find some inspiration, but this will wait until after I’ve finished the multiplayer.
I’ve also done little to flesh out the setting and backstory for my game. I’ve thought a few things over and decided to drop some elements that feel a bit too forced, but I’ve not yet put pen to paper to write it out in any detail. I really need to scale this up.
What I will do next time
The main focus for now is the multiplayer. Because it’s more complicated than I first thought, I need to make a simpler prototype to make sure I understand the basics. It doesn’t need to be anything too fancy, just a simple game where you take turns clicking a button, changing the colour of a box for all players. Before starting on this, I need to finish watching the UNET tutorials on YouTube, and read the entire official manual. There’s bound to be things I don’t understand the first time through, but I’m hoping that both should give me enough of an understanding to make it through.
After I’m happy with how I’ve got the prototype to work, I’ll start off simply, creating a player spawn point for each team and creating a roving camera which each player controls independently. From there I’ll set up the controls so that only one player can interact with them at a time, only moving on to the other player when the first has finished.
After I’ve done this, I will sync up the character’s movements, so that when you finish on one machine, the correct character will follow the same path on the other. If possible I should probably send the path to follow over and redo the movement to cut down on the amount of data that sent over the wire.
When a player tries shooting at someone I need to make sure the other player sees this. I’m not sure I want to try drag them into the 3rd-person view over the shoulder of the other player, but I can at least pan the camera over to them to show the shot taking place. After that, I need to make sure I show the updated health level, and kill the character if they’ve run too low.
Finally, when the game is over I should take each player to the correct win/lose screen. This one should be pretty simple, but it’s important to make sure I do it before I next release a tech demo.
As always, you can see my current Trello board here.