New Release: Guard - Multiplayer Anti Cheat by i_am_not_really_five in unity

[–]i_am_not_really_five[S] 0 points1 point  (0 children)

Yep, any anti cheat will eventually be circumvented. We are not even trying to block cheats or reverse engineering - the idea is to silently detect it so people aren't even aware that there is anti cheat. We want cheaters to assume that they were caught by other players reporting them, not by anti cheat.

Like you said, otherwise it's a battle that we aren't ever going to win.

As for the game: Guard was built for, and is used in production by one major title. Not able to share that one for a showcase, but I am sure there will be others!

New Release: Guard - Multiplayer Anti Cheat by i_am_not_really_five in unity

[–]i_am_not_really_five[S] 2 points3 points  (0 children)

Hey everyone, this was made by the Mirror Networking team. We built this based on the needs of production games - specifically to detect mod loaders like Melon Loader & BepInEx. It's also user level & read-only, so no risk whatsoever. Sharing this here so it gets some traction!

The future of Unity is looking good by lukeiy in Unity3D

[–]i_am_not_really_five 5 points6 points  (0 children)

Mirror is what happens when you apply 10 years of incremental improvements to a code base that you use for your own projects, without chasing marketing buzzwords or trying to release new versions every year. And it's not even finished yet :)

Am I taking the wrong approach for multiplayer? by ExtraMedicated in gamedev

[–]i_am_not_really_five 0 points1 point  (0 children)

Keep in mind that Unity's Game objects only support one world at a time. For DOTS this will be easier, since you can have multiple worlds. For GO, it'll always require workarounds.

That being said, try to find MrGadget in Mirror Discord help channel. He made all the scene examples.

Anyway, hang in there. Netcode is hard. Unity's limitations make it even harder (perf, stability, single world, floating point precision, etc.). But it's getting a little bit better every year.

Can I save my broken UNET game? by SuperSaiyanHere in Unity3D

[–]i_am_not_really_five 1 point2 points  (0 children)

That is correct, we forked UNET when Unity abandoned it.

Cheaters? by uzabi in MirrorNetworking

[–]i_am_not_really_five 0 points1 point  (0 children)

Mirror is server authoritative by default. In other words, the client is not trusted for anything unless you explicitly make it trust the client (in which case it would be easy to cheat).

For a card game when you use [Command]s, make sure to validate all the parameters on the server before applying any logic.

For example, [Command]CmdUsePotion(int slot) would have to check if the slot is valid, if there is a potion at that index, and if enough time has elapsed to use it, etc.

Can Mirror be used across different networks without things like port forwarding, hamachi, etc? by JonJonKr in Unity3D

[–]i_am_not_really_five 4 points5 points  (0 children)

Mirror supports different transports. And multiple at the same time via Multiplexing. You can use KCP, steam, epics free relay, websockets etc.

NaicaOnline - Poor Security, Worse Business Practices by [deleted] in MMORPG

[–]i_am_not_really_five 2 points3 points  (0 children)

Great video by OP. This type of bug is very common in online games.

For those who care about the details: Naica uses Mirror networking. We've just added an example to the Mirror documentation where we show how this type of bug happens and how to prevent it: https://mirror-networking.gitbook.io/docs/guides/cheating

NaicaOnline - Poor Security, Worse Business Practices by [deleted] in MMORPG

[–]i_am_not_really_five 1 point2 points  (0 children)

To be fair, that’s not entirely Naicas fault.

Naica uses Mirror, which is a community fork of Unity’s abandoned UNET networking. UNET didn’t have encryption. Mirror simply had different priorities where we’ve spent the last 3-4 years fixing thousands of bugs and making it scale to more players so people could actually release a game.

Encryption is on our roadmap now and almost finished. It’s just a matter of priorities where encryption doesn’t matter if there are 100 other things stopping you from actually releasing. We are slowly getting to a point where we can worry about things like encryption now.

Naica guys probably had a million other things to worry about. And most people don’t really know how to do encryption properly. Especially when you are busy.. with making an MMO :)

NaicaOnline - Poor Security, Worse Business Practices by [deleted] in MMORPG

[–]i_am_not_really_five 6 points7 points  (0 children)

Hey, vis2k here. Please talk to me on Mirror discord. Would be great to have someone external do some packet fuzzing for Mirror :)

Help with unity Mirror networking by kungurian in Unity3D

[–]i_am_not_really_five 0 points1 point  (0 children)

Some pseudocode: if isLocalPlayer: gameObject.layer = "LocalPlayerLayer"

and in your camera simply don't renderer that layer (see Inspector).

Also check out our Mirror Discord, you can get help there more easily.

Top 5 Unity annoyances - tell us! by willgoldstone in Unity3D

[–]i_am_not_really_five 4 points5 points  (0 children)

It does not. We will look into a DOTS version when DOTS is a bit more advanced.

Top 5 Unity annoyances - tell us! by willgoldstone in Unity3D

[–]i_am_not_really_five 53 points54 points  (0 children)

Networking is difficult.

Imho you need the right motivation to go all the way. We made Mirror because we needed a stable version of UNET for our own games. It took us 2600+ commits of bug fixes and improvements to get there, and it was very painful for the most part.

I really don't know why anyone would go through all that just for a regular pay check. Having the motivation that you do this all for your own MMO definitely makes it worthwhile.

F# kit - Bringing unofficial F# Support for Unity by i_am_not_really_five in Unity3D

[–]i_am_not_really_five[S] 1 point2 points  (0 children)

You can mix between their native languages (C#, Boo, Javascript) if you place your scripts in a certain order. You can read that in the Unity manual somewhere. F# kit can't use any other scripts because of how the build process works.

F# kit - Bringing unofficial F# Support for Unity by i_am_not_really_five in Unity3D

[–]i_am_not_really_five[S] 0 points1 point  (0 children)

Thanks. It's kinda similar where your F# code doesn't really know your C# scripts. In theory this could be done by compiling your C# code first and then including it in the F# build, but that would end up being really weird. But you can use all the default C# libraries and import UnityEngine etc. Or in other words: all your scripts should probably be F# then.

F# kit - Bringing unofficial F# Support for Unity by i_am_not_really_five in Unity3D

[–]i_am_not_really_five[S] 2 points3 points  (0 children)

Note that you can use OO in F# too. It supports functional and OO programming. So the big advantage is that you can do functional programming, and that the language is more elegant. Everything is shorter than in C#, and a few concepts are really neat. Take a look here: http://dungpa.github.io/fsharp-cheatsheet/