Player Isolation System
Purpose: for isolating players from other players (instancing).
Explanation
Right now only a very rough outline exists, that while technically compiling does not actually do much. The idea is that lua scripts, the game engine, or admins (through lua commands) can isolate players from other players on the server for various different reasons. Many things like this have been accomplished before with JKA (JA+ alt dimension, Daggo's server etc). We will probably use it primarily for duels, quest instancing and shadow banning.
The system will use a set of bit values to determine what aspects should be isolated. Here's what we'll probably have:
- 0 = damage, whether or not the two players can harm one another
- 1 = collision, whether players can be affected by each other's hitboxes/physic collisions/knockback etc
- 2 = challenge interactions, whether players can send things like trade requests, party invites, duels. Discussion: do we need to separate each one or can we get away with all/nothing?
- 3 = visual, whether the players can see each other visually. Discussion: Is all or nothing sufficient, or do we need more states such as a ghostly transparent version of players in other dimensions)?
- 4 = audio, whether the players can hear each other (footsteps, pain etc),
- 5 = chat(local chat), whether players can see the other players chat
Are there other situations we should be thinking about? These will probably also apply to all entities, not just players.
The idea is that all of these can be controlled/toggled simultaneously. (This could result in some odd combinations if not used with caution, such as being able to damage people, but not visually see them). By default all players would exist in a primary dimension (0), but when isolated could be sent to an alternate dimension with other players/npcs (such as when a quest instances a party together to an alternate location). For example, a party could be sent to dimension (2) where they only perceive people in that dimension. However, you can individually address each aspect if you wanted to, such as still allowing them to chat with dimension 0.
Common usages: quest isolation, duels, shadow banning someone annoying to a server where they can see everyone but can't interact and no one can interact with them.
What am I forgetting not accounting for? Too complicated? Is there an easier way to do this?
Player Isolation System
Purpose: for isolating players from other players (instancing).
Explanation
Right now only a very rough outline exists, that while technically compiling does not actually do much. The idea is that lua scripts, the game engine, or admins (through lua commands) can isolate players from other players on the server for various different reasons. Many things like this have been accomplished before with JKA (JA+ alt dimension, Daggo's server etc). We will probably use it primarily for duels, quest instancing and shadow banning.
The system will use a set of bit values to determine what aspects should be isolated. Here's what we'll probably have:
Are there other situations we should be thinking about? These will probably also apply to all entities, not just players.
The idea is that all of these can be controlled/toggled simultaneously. (This could result in some odd combinations if not used with caution, such as being able to damage people, but not visually see them). By default all players would exist in a primary dimension (0), but when isolated could be sent to an alternate dimension with other players/npcs (such as when a quest instances a party together to an alternate location). For example, a party could be sent to dimension (2) where they only perceive people in that dimension. However, you can individually address each aspect if you wanted to, such as still allowing them to chat with dimension 0.
Common usages: quest isolation, duels, shadow banning someone annoying to a server where they can see everyone but can't interact and no one can interact with them.
What am I forgetting not accounting for? Too complicated? Is there an easier way to do this?