It's even worse. This will literally retrieve all Users into memory and then iterate over it. Every time you want to find this single one. Looks like the person who wrote it never actually wrote a single backend server using Entity Framework. It also does so synchronously, while async method is available. This means that this thread will be locked until it finishes this IO and won't be able to process anything else.
I think FFXIV has a hard cap of around ~350 per zone, but you get some silly processing outcomes when everyone is in the same area (entities or attacks not being rendered, area of effect attacks randomly only hitting a portion of people within the target zone, etc).
You are right, definition of MMO is stretched quite a bit when you have such limitations. One could argue that counter strike is an MMO because you thousands of players are playing on same universe (I guess gun skins are the only real progress of the game :) ) and each server is an instance. I think calling something an MMO mostly depends on how well it is hiding that it is not really a MMO
350 sounds quite impressive. Looks like eve online handled 2,670 at some point: https://en.wikipedia.org/wiki/Bloodbath_of_B-R5RB . eve online slowdowns the server to a crawl when there are such large scale battles though
The funny thing is that the maximum number of people on the screen before performance issues really hasn't improved much in MMOs in 16+ years.
They're probably pumping up the graphical effects and maintaining a stasis there. But there are also hard caps to how much data or how many position updates you want to be sending in packets before perceived latency degrades too.
FFXI in particular had a famous meme "PS2 limitations" where the game was being held back technically due to supporting the older platform, not to mention it was built with dial up internet in mind and a very low update rate. Many MMOs in general want to cast a wide net and will rarely improve to the point where players with older systems can't join in. That's for the sequel!
In practice it wasn't utterly horrible to play this way, it was just very surreal to be running around engaging in combat with name-plates floating in the void.
But, that method is difficult to get right in Unreal Engine and impossible to do with Unity. That's why you only see it in high end titles like Battlefield but not in any indie MMORPG.
This is the default mechanism for electron apps to auto update, and I haven't heard any issues from it to do with rate limiting.
* You checked in your .vs folder, my understanding is that it is the .suo equivalent and shouldn't be checked in.
* Pulling updates from the GitHub releases page will probably get your repository rate-limited if not taken down, you need to think carefully about how to scale that up.
* While the readme says it pulls updates from GitHub, I can't find any code that actually does it. As far as I can tell the Launcher folder is completely empty boilerplate.
* Using XAML for the launcher UI seems like it would negatively impact portability unless you're pairing it with something that supports Mac and Linux (I couldn't tell if you are). It would make a lot more sense to implement your launcher in Unity (as a separate executable) since the end-user already is using Unity.
* You appear to have checked in local copies of NuGet packages, which is a bad idea. You should gitignore that folder so developers' msbuild can restore the packages locally.
* It looks like you also checked in third-party Unity asset files? I'm not sure you should do that either.
* You appear to not be making use of indexes for many of your queries, for example:
var user = db.Users.ToList().Find(x => x.Name.Equals(name));
This will stop scaling almost instantly.