一个数值框架,让效率提升10倍!(2)

    xiaoxiao2021-03-25  127

    系统内分配

    某个系统的的属性分配主要包含4个模块: 可分配属性:对应系统间分配出来的属性、分配思路:文字描述,记录自己在这个养成系统是用怎样的思路分配每级的属性的,否则到后面自己都会忘记为何这样分配,如果有特殊的计算公式的话我也会记录在这里。分配参数:即使是几百上千级的成长,也可根据几个参数和公式来调控。最终属性表:通过上面三个模块计算得出的最终结果,如下图  

    经济关联

    做经济系统时,我会将每天把消费产出全部拿完的玩家定为标准玩家,然后可以通过产出和消耗预算出标准玩家的成长情况。因为没有办法确定玩家具体会进行什么样的操作,所以这里的一切计算都是估算,比如玩家可能优先把材料全用来升武器,也可能材料全都放背包里不用,没有办法确定,所以我就按照玩家将所有材料平均分配到每一件装备上培养来估算玩家的装备培养等级。 所有系统的经济做完后,我们可以得到一张表,里面有玩家在每个等级时各个养成系统的等级和玩家的总属性,类似下图:  

    怪物属性

    有了通过经济关联算出的玩家属性,我们可以很轻松地得出各个等级对应的每种怪物属性。为了调整方便,我用怪物被玩家打时的生存时间和怪物打死玩家要用的时间来做参数。最终会得到一个类似于下图的表: 如果没有特殊需求的话,所有怪物都可以从这个表中直接取值。 做怪物数值时需要注意的点: 上图中的表格没有技能,实际使用时需要注意技能的计算没有特殊需求的话,就将所有种类怪物的防御统一为一个值,比如玩家攻击的80%或是直接用0。表中是以“格斗家”为标准做的怪物数值,在一些职业特性比较强的游戏中需要注意各个职业的战斗体验,否则可能出现治疗职业半分钟杀一个小怪之类的问题

    配置导出

    将计算结果按照配置的形式关联到另一张表,然后通过VBA导出配置表,并不是很难,一会提供代码,先简单说下使用我的导出需要注意的地方: 要在b1单元格填入导出后的表名需要导出的工作表的命名中需要有“-3”代码的本质是将第六行以下所有有内容的单元格复制到另一个EXCEL中,并将该EXCEL重命名存在与数值框架相同路径下的output文件夹中用这种方式导出的表需要另建一个文档写相关的配置说明需要注意一些美术资源的配置要养成在数值框架中改表导出的习惯 这个导表VBA并不是很强大,使用不熟练时很容易出错,但一旦用顺手之后效率会提升很多倍。 Sub 单表导出()      If Dir(ThisWorkbook.Path & "\output" , vbDirectory) = "" Then          MkDir (ThisWorkbook.Path & "\output" )      End If          If ActiveSheet.Name Like "*-3*" Then          With ActiveSheet              a = .Range( "a65535" ).End(3).Row              b = .Range( "IV6" ).End(1).Column              arr1 = .Range(.Cells(6, 1), .Cells(a, b))                          Filename = .Range( "b1" )          End With          If Filename = "" Then              MsgBox (Sheets(i).Name & "中的表名为空" )              i = Sheets.Count          End If                  For Each xls In Workbooks              If xls.Name = Filename & ".xlsx" Then                  xls.Close              End If                      Next                                  Dim wb As Workbook          Set wb = Workbooks.Add          wb.ActiveSheet.Range(Cells(1, 1), Cells(a - 5, b)) = arr1                  Application.DisplayAlerts = False          wb.SaveAs ThisWorkbook.Path & "\output\" & Filename & " .xlsx"          Application.DisplayAlerts = True              wb.Close      End If End Sub   Sub 导出()      If Dir(ThisWorkbook.Path & "\output" , vbDirectory) = "" Then          MkDir (ThisWorkbook.Path & "\output" )      End If          For i = 1 To Sheets.Count          If Sheets(i).Name Like "*-3*" Then              With Sheets(i)                  a = .Range( "a65535" ).End(3).Row                  b = .Range( "IV6" ).End(1).Column                  Filename = .Range( "b1" )                  arr1 = .Range(.Cells(6, 1), .Cells(a, b))              End With              If Filename = "" Then                  MsgBox (Sheets(i).Name & "中的表名为空" )                  i = Sheets.Count              End If                          For Each xls In Workbooks                  If xls.Name = Filename & ".xlsx" Then                      xls.Close                  End If                              Next                                              Dim wb As Workbook              Set wb = Workbooks.Add              wb.ActiveSheet.Range(Cells(1, 1), Cells(a - 5, b)) = arr1                          Application.DisplayAlerts = False              wb.SaveAs ThisWorkbook.Path & "\output\" & Filename & " .xlsx"              Application.DisplayAlerts = True                      wb.Close          End If      Next i     End Sub 其他 数值框架中包含游戏中所有的数值,后期框架中将有很多个工作表,建议做一个目录根据自己的需求去设计框架结构,少做无用功。我曾经为了结果准确,做了个很复杂的战斗模拟器,做完时程序的战斗模块已经做完了,之后我再全都是配到游戏中直接体验,再也没有用过这个模拟器。用颜色区分一下内容的类型,但不要用太多的颜色。实际应用时记得在框架中体现出不同层次玩家的数据,这样可以帮助你猜想各类玩家的体验  

    结语

    文章中的截图是我临时做的一个简化框架,其中只做了“格斗家”一个职业的详细数值,但功能基本是完整的。仅供各位参考,欢迎各种交流~查看原文:http://www.51xyyx.com/2994.html
    转载请注明原文地址: https://ju.6miu.com/read-8816.html

    最新回复(0)