Abstract
I will introduce Skill Control system for MMORPG Server. It is somewhat hybrid(partially hit collision detection logic is positioned on client and server both) designed but thanks to this architecture, action based skill system could be implemented.
Overall Skill System
Skill System
For supporting action based skill(which requiring rapid server response time) and non-targeting scheme, this skill controller depends on client logic. Once a user triggers skill, game server verifies skill meta data and await hit notify sent from client. If a hit target notify is received within the skill time, server verifies target info and calculates damage, triggers state/action abnormal states.
As the main physic engine is handled on client side(collision detection, target selecting, directional operation, etc), the server must guarantee each notification is valid to accept.
even though this redundancy, this could provide quick server responding(a client does not need to wait server response for each skill use) and user experience would increase.
Tricky Points
Positioning the main hit detection and physics are not just cool for preventing cheating. Though it would reduce server calculations and decrease responding times, more defending logics are tend to required.
If this server is not intended for action based combat, maybe more logics are moved to server side.
Target Handling
Fig.1 shows simple target handling scheme, but it could be expand to handle more details.
It could give variations on hit timing as Fig2.
in this scheme, server slices the skill time and handles each hit request on different slot. And it means the one can control detailed skill damage amount and timing on server side.
If this logic could process on client side, one can divide a skill master data into n amounts and changing skill sequence id(this sequence is embedded in hit request protocol), hit could be diversified.
Skill Hooking
Some skill may trigger certain cut-scene playing, chained skill set or spawning. Further more, skill combination could be checked. The main purpose of this control is centralizing events handling.
Protocol
More details