Hi,
while it was mentioned before that this course feels much more like a type-fest with little room for self-exploration and learning. This becomes increasingly so in the lobby section. The “challenges” are around the graphics and the layout of the game not around building something multiplayer.
I would have preferred some lectures in between with some architectural diagrams to know what will come and why it is designed in a specific way, and then when everyone knows how things are supposed to work, to implement a part of it on your own, and see if you did it right. It was very well done at the beginning of the 2D course (still kind of source on the last part of the course that was way below the rest of it in my feeling).
As for the lobby, we are also left with a system that works only partly. There was a comment on the updates to later players that I was not able to implement based on the discussion here (Lobby Info update on non-host clients). And it is kind of a sad result from the course that I am not able to gauge where to enter these bits of code. In my feeling, this does neither belong in RTSPlayer, not in RTSNetworkManager, and LobbyMenu is not a NetworkBehavior (and making it one does sound not right, and did not work for me). It feels like this was not really well designed, maybe tagged on. In my feeling, there is an abstraction layer missing doing the match/lobby management. Something like an RTSMatchManager that manages the lobby.
One bug that is also still in the lobby system is: if you have 3 people in the lobby (Host, Player 2, Player 3) and Player 2 leaves and rejoins, you have 2x Player 3. If the host leaves, no one will be the host, and the lobby is not closed.
The Steam integration does not solve this, since how to take over the Steam name as the username is not even covered in the lecture. I know some things are due to not having the correct steam game ID but in the current state of the game I would not even know how to extend the game to make it possible to join a session before the game is started (e.g. starting the game and directly going into the right lobby - which I think the real game experience should be).
So, while I was really happy with the 2D course where I learned tons of things, and I recommended the course to several people who asked for good Unity courses, this course leaves me kind of miffed. I don’t think I can recommend it to anyone who wants to learn multiplayer since you are missing so many things. the key things that are missing for me are:
- Showing the architectural planning or at least the plan of how segments work together. And tie the challenges to that.
- Cover both scenarios, peer-to-peer and dedicated server and not copping out to a “Host” only set up and leaving the “Server only” with connecting clients out.
- Build the headless server
- Automatically start a lobby
- How to test a Multiplayer game
- Test Scenarios
- Host + 1 Player, Host + multiple Players, Server + Players
- Player dropping during the Lobby and rejoining
- Player drop handling during a game/allowing rejoin (might belong into an advanced course)
- How to test with multiple editors and synchronized Project Directories (Kind of like done in this tutorial: https://youtu.be/qkoZ7d6eQ8k?t=822) or using the ParrelSync Project (https://github.com/VeriorPies/ParrelSync) )
- Test Scenarios
- While the game might not need multiple games on one server setup, the architecture of different players in different scenes/with different information is quite complicated but important to understand for multiplayer games.
The first point is the most important. At a lot of places, it would have been good to know why something is done a specific way. E.g. why we do not care that the owner of a unit knows what it is targeting.
The last point might be too much for this setup and I would be totally happy when the other parts would have been covered, but extending the game to a “Multi Match on one server setup” with a little Matchmaking in it could be a great “Advanced Network Programming with Unity and Mirror” course.
Still, I want to thank you for the course and hope that the promise at the end of it that more content will come is not forgotten there but will actually happen.