MantisBT - Zandronum | |||||
View Issue Details | |||||
ID | Project | Category | View Status | Date Submitted | Last Update |
0002043 | Zandronum | [All Projects] Suggestion | public | 2015-01-02 06:17 | 2015-01-02 06:38 |
Reporter | ZzZombo | ||||
Assigned To | |||||
Priority | normal | Severity | major | Reproducibility | N/A |
Status | new | Resolution | open | ||
Platform | OS | OS Version | |||
Product Version | 2.0-beta | ||||
Target Version | Fixed in Version | ||||
Summary | 0002043: Separation of actor logic between the client and server | ||||
Description | Reference quote: <ZzZombo> I was thinking about having actor class structure being separate and different between client/server. <ZzZombo> Example: I have a tracking missile that constantly spawns ParticleFountain as a trail. The latter is +CLIENTSIDEONLY currently. <ZzZombo> It could be rewritten like, on server, it's a tracking missile that doesn't spawn the particles at all; on clients, it doesn't call the homing codepointer. <ZzZombo> Win-win for both parties and less bandwidth usage. <ZzZombo> It's how it's done in Source, and gives great possibilities. <ZzZombo> More complex example: I have monsters that use extensively CustomInventory giving as a mean to avoid copy-paste. But online the client doesn't predict item giving so it causes major freaking out. I could instead split the monsters in two, on client I'd replace such places with whatever, the server will do the rest. I suggest to allow separate logic between client and server for actors. It would address several problems: * Jumping handling: the client online ignores any jumps it can't handle n its own and continues execution of states; it often is not desirable. With this modders could make the actor stay on the frame (with the wait keyword) until the server tells the client to change it. * Reduce bandwidth and CPU usage: see the examples in the quote. | ||||
Steps To Reproduce | |||||
Additional Information | One way to implement this is introduce a new "ClientStates" block (opposed to the "States" block) and make the client use it if exists. Another is to have a class literally split into two versions, for each party, and somehow linked together. There are some issues to resolve first tho: * how the server will tell the client to change state of an actor? * if the client performs an action resulting in destroying of an actor, but not the server, what to do? We can just consider this "don't do that!". | ||||
Tags | No tags attached. | ||||
Relationships | |||||
Attached Files | |||||
Issue History | |||||
Date Modified | Username | Field | Change | ||
2015-01-02 06:17 | ZzZombo | New Issue | |||
2015-01-02 06:38 | Blzut3 | Note Added: 0011205 |
Notes | |||||
|
|||||
|
|