zoukankan      html  css  js  c++  java
  • MMORPG游戏服务器技能系统设计【上篇】

    本文主要从一个程序员的角度阐述一下mmorpg服务器技能系统的程序框架设计,最近在做这个,就当做一个总结吧,其中某些概念可能没有解释清楚,欢迎大家拍砖讨论

    技能其实是战斗系统的一个组成部分,战斗基本上都可以由技能触发,技能系统实际上就是一套完整的逻辑,我们用表格来设计,将技能的逻辑用属性字段抽象出来,然后依据属性字段来控制逻辑,策划人员可以通过更改属性字段来配置出不同的逻辑属性

     

    1. 1. 表格属性字段的设计

    为了减少冗余,我们将技能属性字段设计在4个不同的表中

    Skill表:  技能表的入口表,包括cast表,buffer表,op表,技能的释放需求,伤害

    Cast表:   技能的释放过程表,包括技能吟唱时间,技能命中距离等等

    Buffer表:各种人物状态,静态和动态的光环,效果等等

    Status表:角色状态表,角色在状态下能使用或被使用的技能或者buffer

    • op表:        技能的伤害计算公式

    skill表字段设计:

     

        名称:技能名称,如火球术

        技能id:技能id值

        技能名称id:技能系,id一样表示一个系技能

        技能类型:加血、物理攻击、魔法攻击、buffer、地图技能

        公共CD时间:多个技能可以共cd,比如所有吃药技能

        CD时间:cd时间

        CD保存类型:cd时间在人物下线后是否保存数据库

        需要角色等级:角色等级需求

     

    角色状态限制:使用技能的角色状态限制,这个字段需要斟酌以后重新设计成一个表格

    需要武器:技能释放需要的武器类型,如弓,刀,剑等等

    消耗类型:需要消耗,如hp,mp,xp等等

    消耗数量:hp,mp,xp的消耗数量

    是否有益:是否是有益技能

    技能属于:生活技能、装备技能、职业技能等等

    升级技能:改技能的升级技能

    调用cast表:调用cast表的id号

        

     

    调用describe表:调用技能描述表id号

    影响形状:范围技能的影响范围,直线、圆、扇形

    影响个数:范围技能影响的npc个数

    Buffer1:技能触发的buffer1

    概率1:技能触发buffer1的概率

    Buffer2:技能触发的buffer2

    概率2:技能触发buffer2的概率

     

    伤害效果:技能产生的伤害

    调用op表计算效果:op表中数值计算的公式

    是否产生伤害仇恨:是否产生仇恨值

    携带仇恨:技能产生的仇恨值

    cast表字段设计:

     

    名称:cast表对应技能名称

    是否对地释放:是否对地释放

    是否对他人释放:是否可以对他人释放该技能

    是否对自己释放:是否可以对自己释放该技能

    是否前摇打断:前腰是否可以打断

    前摇时间:动画前摇的时间

    飞行时间:魔法的飞行时间

    持续施法时间:技能的施法时间

     

    吟唱时间:吟唱时间

    释放距离:释放技能距离目标的距离

    技能命中:技能命中率

    命中最大距离:指向型技能当目标出了fire区域就不受攻击了

     

    buffer表字段设计:

     

    名称:对应skill表中的技能名称

    Id:buffer id

    效果nameID:表示一个系列的buffer

    类型:静态、动态、状态buffer

    是否有益:是否有益处

    角色状态:加了buffer后角色处于的状态,如沉默,天神下凡,嗜血等等

    伤害效果:buffer的伤害

    调用op表:指向op表中的公式id

    动态次数:对应动态buffer生效次数,对静态buffer无效

     

            

    生效间隔:对应动态buffer每次生效的间隔时间,静态buffer无效

    持续时间:对应静态buffer的持续时间,-1表示永久buffer

    产生buffer:某些 buffer可以给队友或敌人加

    影响范围:buffer影响的范围

    是否可以移除:对应驱散技能

    移除类型:对应驱散技能等级

    是否可以覆盖:同类型buffer是否可以覆盖,还是效果叠加

     

         

    覆盖类型:大的覆盖小的

    是否需要from:计算效果时是否需要buffer来源

    status表字段设计:

     

    状态名称:角色的状态名称,如沉默,死亡,天神下凡等等

    状态id:角色状态的id号

    角色动作最大值:在该状态下可以使用或者被使用的技能的最大值,如无敌不能受伤害

    角色动作最小值:在该状态下可以使用或者被使用的技能的最小值,如无敌不能受伤害

    状态最大值:在该状态下,可以被使用buffer的最大值

    状态最小值:在该状态下,可以被使用buffer的最小值

    不涉及数值计算的模块的话,技能系统的表格属性字段基本上设计好了,下一篇文章我们讨论一下技能程序框架的设计

  • 相关阅读:
    C#.NET常见问题(FAQ)-如何给Listbox添加右键菜单
    C#.NET常见问题(FAQ)-如何捕捉窗体关闭的事件,弹窗确认是否退出
    C#.NET常见问题(FAQ)-控制台程序如何输出Messagebox
    C#.NET常见问题(FAQ)-TabControl如何隐藏和显示页面
    C#.NET常见问题(FAQ)-SplitPanel如何设置上下和左右
    Oracle 存储过程
    Oracle的存储过程
    Oracle通用分页存储过程的创建与使用
    winform窗体间传值
    多线程下访问控件的方式
  • 原文地址:https://www.cnblogs.com/GameDeveloper/p/2869257.html
Copyright © 2011-2022 走看看