I'd like to know if the construct 3 multiplayer system is good enough to create a multiplayer game like minecraft, terraria or something online, you know what Im talking about?
If you knows could help me I'd be greatul! -
Dani10
Short answer: Yes. It is. (coming from someone with work experience in networking/distributed applications)
I did some experimenting, and I can say its multiplayer plugin robust enough for these sorts of games (and even for an MMORPG if you know what you're doing).
(For instance, I have a working demo where even if the server drops, another client becomes the server and the gameplay continues smoothly for all connected peers)
Multiplayer is always challenging and demands prior knowledge, a solid understanding of networking, multiplayer architecture, and extensive planning.
You can read more about Multiplayer in Construct here: construct.net/en/make-games/manuals/construct-3/plugin-reference/multiplayer
It has a robust set of features: UDP, Automatic data compression, Binary transmission, and specific datatypes.
And you can also opt not to use the built-in "Multiplayer plugin" and go full-on scripting to leverage the Web APIs (such as WebTransport) directly via JavaScript/TypeScript. Meaning, there's literally no limitation compared to any other modern web/browser-based approach.
--------
Some insights:
I recall watching a YouTube video where a developer failed to create his MMORPG using Construct due to performance issues. After seeing it, I concluded, "The problem wasn't Construct itself, but the multiplayer architecture he went with. Attempting to develop a real-time multiplayer game with hundreds of objects and players wouldn't fly, no matter the engine!" There's a reason most MMOs have tab-targeting combat.
For example, in a Terraria or Minecraft game, relying on the built-in Sync object for every map tile would be excessive and could lead to various issues. It's better to develop your own set of Messages that indicate when a tile is created, destroyed, or changed. You should also create custom functions to handle the synchronization of these actions across all clients. Additionally, you might need to implement another message type for transmitting larger map sections (Binary transfer) and, finally, allow each client to handle collisions and platforming locally for smoother gameplay.
Construct is very easy to use, but when it comes to Multiplayer, throwing things around without proper planning and using Sync object for everything without much thinking will cause you to hit a wall. You'll hear people saying that "Construct's multiplayer isn't robust enough". However, this is mainly due to the contrast between how easy Construct is to use and how challenging multiplayer can be. In more complex game engines, players tend to complain less about multiplayer capabilities because users of those engines are already accustomed to everything being difficult.
--------
edit: My last two cents. In general, if you fail to create your multiplayer game in Construct, you will likely fail to do so in any other game engine.