Issues with the lobby system and general course feedback

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) )
  • 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.

7 Likes

Hi there,

Thank you for taking the time to write this detailed feedback, it is much appreciated. I definitely understand where are you coming from on many of these points.

This course has a very different teaching style than previous gameDev.tv courses which tends to get mixed feedback as students are not used to it. I have been encouraging those who feel multiplayer aspects are not explained enough throughout the course, to return the first section and review that material periodically throughout the course.

As well there are limitations with what you can achieve in a course where all the services the students might need to access are free or consistent between setups. For example having a dedicated server and testing this would require the students to pay a for or use a free trial of a server like AWS or something similar. Peer-to-peer IP connections are also limited since there are security issues and firewalls to worry about that are different on each users computer. I have even had multiple students projects not work because ParrelSync didn’t play nice with Mirror.

This is all to say that as soon as you are working outside of Unity, things become a little more complicated. Hopefully this brings a little more understanding to the choices made when creating this course. Again, I appreciate your feedback, and it will be taken into consideration when developing future content.

Thank you for your answer and I understand the problems with a long living course like this.
Relying on 3rd party tools will cause support that you should kot have to do.
But I want to clarify some things I might have not written clear enough.

  • When I said „dedicated server“ I should have said „headless build“. I totally see that using a AWS instance or similar will increase the uncertainty and support (again) out of proportion.
    But building the design in a way that supports using the Host-Mode or Server-Only Mode would have been something I exspected.
  • when saying peer to peer I meant the current mode where someone runs the Host. As a differentiation from having one „server only“ instance and the rest „client only“

My main criticism is around the lack of understanding of the architectural choices before typing the code. Designing and entity model how things communicate where information resides (server/client) and what does need to be communicated.
Programming a network game is much harder. It needs more planing and it is way harder to debug (clients easily disconnect when you run into a breakpoint etc)… so covering these parts and showing option that can be used to help with this development. Also showing the right test strategy during the course. One Host and one client does not cover the minimal requirements since client-client interaction is different than client-Host.

Anyway. Thanks again for keeping up with these forums and answeothe questions.

2 Likes

I completely agree with this feedback. I am an experienced programmer, but all too often it was clear that the instructor was just transcribing code he’d already prototyped and often neglected to explain what he was doing until it was completed. At other times, the reasoning behind the choices was lacking and as you suggested it didn’t leave me feeling well prepared to address these issues in my own games. Much of it felt rushed, and the final code feels very disorganized, with code duplicated behind multiple if conditions, and methods calling commands invoking events triggering listeners creating interdependencies across multiple classes. The Steam integration was particularly rushed, and there are several errors that have been introduced in updates since this course was made, which I needed to search through the comments to resolve. Unfortunately, there is a lot of studying of the Mirror documentation and the included examples ahead, as this complete course–as indicated by the official response–provides its only real information in the initial sections.

While I was working on this course, the “More to Come” section disappeared. So it seems that promise, was in fact forgotten. As-is, this course is not up to GameDev’s normal standards.

5 Likes

Thanks for the comments Kevin, your feedback is greatly appreciated.

Privacy & Terms