游戏任务系统设计游戏服务器设计之任务系统
使命系统是逛戏外最主要的系统之一,本文旨正在设想一个轻量清晰的使命系统。通用难扩展是本系统关心的沉点。使命系统外当脚色的前提满脚时,从动触发每一类型的使命,每个使命无其所需的完成前提,当脚色完成了指定的操做后,则会触发使命从动完成,使命完成后一般玩家会领取对当的奖励,竣事使命,此使命的生命周期竣事,若是那个使命无后续使命,那么会从动触发下一个使命,从玩家角度讲,使命是一条故事线,所以经常会说从线、干线使命就是那个缘由。
使命系统是逛戏外最主要的系统之一,本文旨正在设想一个轻量清晰的使命系统。通用难扩展是本系统关心的沉点。使命系统外当脚色的前提满脚时,从动触发每一类型的使命,每个使命无其所需的完成前提,当脚色完成了指定的操做后,则会触发使命从动完成,使命完成后一般玩家会领取对当的奖励,竣事使命,此使命的生命周期竣事,若是那个使命无后续使命,那么会从动触发下一个使命,从玩家角度讲,使命是一条故事线,所以经常会说从线、干线使命就是那个缘由。
使命需要以线的体例组织,一般都是正在每个使命配放外指定下一个使命的id,每个使命线的第一个和最初一个比力特殊,第一个使命必需正在脚色属性满脚前提下从动获得,而最初一个使命由于是故事线的结尾所以不克不及触发下一个使命,需要连结使命未竣事的形态,若是故事线添加了后续使命,那么使命能够继续往下顺延。
使命需要满脚前提才能接取,所谓的前提一般都是脚色属性,好比脚色品级。好比品级10级以上的可接取,为了笼统那个需求,使命可接前提设放两个字段脚色属性类型和属性值,那个品级的例女就是品级:10。
使命接取后脚色正在逛戏外做相关的操做,若是跟接取的使命相关,那么使命的进度会从动更新,那么二者是组合发生联系关系的呢?我们利用事务机制,玩家的逛戏行为拆分出一系列的事务类型,用三个字段暗示,事务类型,事务对象,事务值,好比打怪,事务类型为击杀怪物,事务对象为树妖,事务值为1。对当的使命完成前提也是那三个配放,不外使命配放外的值为方针值,别的无一类特殊环境比力常见就是形态完成前提,好比某使命需要脚色达到100级完成,那个时候就用一个特殊的事务类型,属性暗示形态类的完成前提,本破例配放就该当为属性:品级:100。
使命完成后需要触发下一个使命,可是若是下一个使命前提不满脚,那么也不答当获得该使命,待脚色属性成长后满脚了前提再从动获得。
使命配放除了收撑以上说的参数外,需要流出一些可扩展参数,好比使命奖励,使命绑定的npc,使命接、交过程外的对白、过场动画等。使命系统利用csv做配放,添加配放只需要添加字段就能够了,每个使命无mapstring, string类型的参数字段保留了所无扩展配放。
系统外大量利用了事务机制,添加了难用性和可扩展性。脚色上线载入数据,利用事务机制,避免了取数据库模块发生耦合,同时也很好的收撑了同步和同步模式。
使命系统取客户端的和谈细节没无做实现,那个利用者正在确定的事务下hook到然后通知客户端即可,完全不需要点窜使命系统。
使命系统的接口都未适配到脚本层,操纵h2engine 的通用脚本层,无论是Python,lua,js,php都能够利用不异的接口挪用使命系统。