I’ve recently gained a train of curiosity about understanding the client-server workflow in other game engines compared to Roblox, so I was wondering if anyone has had experience in other engines regarding client-server interaction and how it differs from Roblox.
From what we understand with Roblox, the client and the server denote two different machines: one that is the server itself and then every other user connected to that server, a client. Admist this we recognise that client interaction is fueled by LocalScripts and Scripts for the server-side. Clients cannot access server-side elements or unreplicated information.
Now with another game engine (e.g. UE4, Unity, CryEngine, whatever), I lack any kind of understanding on their dynamics but just… imagine you’re installing a game. Naturally, when installing the game, you need to install everything to make the game work at all. Wouldn’t you then be installing the server-side components too, such as pieces of the engine that make the game function? What stops a client in another engine from tampering with the server-side?
I’ve looked up a bit on this topic and there’s been a couple of different ideas floating around. Some notable ones I’ve picked up are that games without any online interaction are completely client-sided and servers cannot do anything without clients. This idea is wholly different on Roblox where the server can act independently of the client and we rely on the server for quite a few things in games.
So with that, I leave my question. If anyone’s had any experience with other game engines, how does their client-server interaction model differ from the way we know it on Roblox?
client-server interaction in other games is essentially the same as roblox
when you download a multiplayer game you’re only downloading the client, never the server (unless it lets you host your own servers, in which case it’s usually either built into the client or a separate program to run).
the client can interact with the server without needing to have it downloaded
Would a server-side be involved for a purely offline game as well, or a game that supports both on and offline play? How is that facilitated? If you’re purely downloading the client, then I’m wondering how the server gets across so the game can complete the other half of its functionality.
For example, in an offline game, enemy combat could be part of the game’s client-side mechanics. You get instant feedback and can play without any real delays or anything. When you start introducing other players into the mix, how do games retain that gameplay fluidity? (And would it be possible within a Roblox environment as well?)
if the game is purely offline, then there’s no server involved and everything runs on the client.
if you have a server involved, the client will connect to it and then send information to the server, which can send information back to your client or to other clients connected to it
retaining fluidity when you introduce multiplayer can be tackled in a lot of different ways. some games will keep enemies purely client-side, with no replication between players. most games will do client-side prediction with server validation: the client instantly shows effects like hitmarkers/blood/etc. and the server will validate the hit and decide whether it’s legit or not.
The issue I’ve found with this is that it is easy for the client to mispredict, which can be a source of significant frustration.
I’m wondering if anyone has pulled off a “reverse-validation” scheme on roblox, where a client communicates its prediction to the server, where it can be used if the server did not detect a hit.