Suggestion: More control/power over networking (Instances?)

So, I’d like to suggest for Garry and the rest of the team to please, look into and expose whatever they can when it comes to networking/physics/or whatever else might be responsible for entity “instancing”.

Currently Instancing in Garry’s Mod is possible, and has been done, but it’s rather troublesome to pull off and rather expensive as well.

With increased player count this could be more explored more by the developer community in S&Box than it ever was in Garry’s Mod - This could serve as an optimization opportunity or as a base for new, elaborate features, like MMO-like “shards”, Instanced housing and so much more. Think multiple mini-games that all appear in one world-space.

In Garry’s Mod it’s possible to “instance” players, instance sounds, instance user interactions etc and so on, but anything beyond that quickly becomes bit too much for the engine. The server I work with has pulled some of the stuff off, although it is rough around the edges.

It’d just be cool if we had more power over things than we do with Lua - Ideally, anything could be tied to an “instance”, not just entities like Players and so, but mesh geometry, bullets, sounds, particles etc.

Huh? :flushed:

I imagine what you’re talking about is the capability for servers to communicate entities and events between each other and also trade authority of these things depending on certain conditions.

If you mean instancing more like: A player enters a building and loads into a different ‘instance’ (server/shard), then I feel that it would be more up to the developer of that content to properly synchronize information between servers whether it’s through a database or whatnot. It would be nice to have a generic networking solution to serialize entities of any type though.

Maybe even a layer on top of the Networked Entities concept that also communicates server-server.

Edit: Garry talked about giving developers access to the connection routine. This would be the entry point for authorizing instanced locations to players.

2 Likes

Very similar to my thread here:

1 Like

Didn’t really mean inter-server instancing - I more so meant instancing on the same server between different entities. But what you’re mentioning would allow for “hub”-like worlds, like in Minecraft, where you have thousands of players seemingly in one world.

All of the entities could have a method like, .SetInstance( index Instance ), 0 being the global instance, anything else being it’s own “world”. Onset, for example, allows this in their wiki https://dev.playonset.com/wiki/SetObjectDimension.

It requires more than just networking, though - We’ll need to have a way to efficiently separate inter-entity collisions between the entities - If something is on Instance 0, it shouldn’t be seen or even touchable by instance 1, 2, 3, etc. Bullet traces shouldn’t hit things on other instances, nor should any other traces.

2 Likes

This is exactly what i meant in my post. Not cross-server but1 server with multiple dimensions/Instances. Players/Entities are logically separated, not server separated.

2 Likes