加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
漫云服务热线13103827627

方块兽卡牌app开发游戏软件开发

更新时间
2024-07-01 20:09:00
价格
1000元 / 件
漫云科技
方块兽卡牌app开发游戏软件开发
联系电话
13103827627
联系手机
13103827627
联系人
王乾
立即询价

详细介绍

    renqi策略卡牌手游《新斗罗大陆》

    OMNIDREAMGAMES是一家核心团队在卡牌品类有着超过8年积累的开发商,旗下以《新斗罗大陆》为代表的系列产品累积流水破40亿,用户总数4000万+。

    在多年开发过程中,团队也积累了一套游戏优化方案。我将基于团队一款全新的卡牌游戏「omniheros」,和大家分享几个行之有效的卡牌游戏优化方法,以及自己的一些心得。这款游戏目前正在测试阶段,敬请期待!

    本文将重点介绍以下6个优化方法:

    红点设计:减少判断逻辑重复计算,支持多个显示类型和周期shua新。

    音频加速:支持不同音频自定义变速。

    ASTC分块压缩:减少内存、tisheng加载速度、更jingque地选择压缩块大小。

    性能分级:让高、低端机性能均有tisheng。

    动态绘制:减少overdraw、降低drawcall、提高帧率。

    小包策略:减少首包包体、tisheng流畅度。

    1、红点设计

    解决问题

    减少判断逻辑重复计算。

    红点之间父子关系清晰可见。

    支持多种显示类型。

    支持周期shua新。

    红点树的构想

    每个UI需要显示的红点都对应有一个id。

    用树结构建立红点与红点之间的层级关系。

    使用数据结构,保存红点的激活状态。

    红点树的设计

    只有叶子节点才有且必须有自己判断逻辑。

    叶子节点的判断方法不需要参数或者需要固定的参数。

    非叶子节点的红点显示状态取决于他的子节点的显示状态。

    业务层只需要关心每个子节点的判断逻辑,何时shua新,shua新时是否需要传参数即可。

    红点激活流程

    104,105,106,107,108为叶子节点,分别绑定了自己的check方法。

    104的check方法里有一个固定传参1,这个参数在每次判断的时候都会传入。

    当105在func(2)的判断下从未激活变成了激活,会将状态传给101,101有一个激活状态的子节点,不需要管其他子节点,自己也会变成激活,并将激活状态传给100,而使得100也变成了激活。

    当107在func()的判断下变成了未激活,会将状态传给103,103只是根据107的未激活并不能直接决定自己的激活状态,它需要检查其他子节点的状态,所以需要检查108的激活状态,若108是激活的,则自己激活;若108未激活,则自己未激活,并将状态传给100。

    如果107检查前和检查后的状态有变化则会将状态传给父节点103,如果没有变化则不用向父节点传递。

    参数混合树状结构

    叶子节点所需要的参数不固定,即需要动态参数。

    非叶节点的子节点需要相同的动态参数。

    非叶节点的子节点需要不同的动态参数。

    红点激活流程

    104,105需要相同的动态参数e1,即101的子节点需要相同的动态参数。

    107需要动态参数g1,108需要动态参数g2,即103的子节点需要不同的动态参数。

    在动态参数的树结构里,对于叶节点107或者105,没法确定其他兄弟叶节点的参数是否与自己一致,所以这里需要遵循一个原则,只有激活状态可以传给父节点,动态参数不能传。

    对于103,子节点需要不同动态参数,所以对于107和108的shua新只能选择各自分别shua新,然后同时将状态传给103。

    对于101,子节点需要相同动态参数,所以对于104和105的shua新可以选择各自分别shua新,也可以选择shua新101并且将动态参数传给子节点104和105。

    列表结构红点

    因为列表每个元素不固定,元素数量不固定,所以没法绑定红点id,即列表的红点处理目前选择自己判断,不走树结构。

    红点配置表

    id为红点对应id,有些id可能为虚拟id,在UI里没有对应界面。

    name为注释。

    parent红点的父节点,只有大的根节点没有父节点。

    update_type为更新类型:

    默认为0前端判断,通过绑定的检查方法判断;

    可以设置为1后端判断,因为在登录游戏到主城过程里,部分功能是不需要拉取对应的消息的,那这部分的红点激活状态没法通过数据的逻辑判断,只能靠服务器判断之后将结果返回,等到进入对应功能拉取到该功能信息以后,才接管为绑定的检查方法判断。

    refresh_type为shua新类型:

    默认0及时shua新,无需标记;

    1为登录shua新,每次登录只红一次,标记过后这次登录就不会再红了;

    2为每天shua新,每天只红一次,标记过后这天就不会再红了;

    3为每周shua新,每周只红一次,标记过后这周就不会再红了。

    function_id为功能id,用于红点功能开启判断,减少无效的判断耗时。

    priority优先级,在update_type为1时,可以设置优先级让比较简单的判断逻辑先判断,减少后端判断耗时。

    show_type为显示类型,配合显示优先级使用,优先级越高先显示,可自由设置每个显示类型对应的显示优先级:

    默认0,红色的点;

    1为绿色箭头,只显示绿色箭头;

    2为满,只显示满;

    3为新,只显示新;

    -1为任意类型,取决于判断逻辑或子节点传给的显示优先级高的类型。

    红点业务开发工作

    配置红点id关系表。

    在UI上gua载红点显示组件。

    绑定红点id的检查方法。

    在需要变化的时候shua新红点。

    标记红点是否点击过。

    2、音频变速

    解决问题

    音频可以设置变速。

    不同音效可自定义不同的变速。

    音频变速几种方式

    修改底层支持音频变速。

    接入wwise引擎。

    接入fmod引擎。


联系方式

  • 电  话:13103827627
  • 联系人:王乾
  • 手  机:13103827627
  • 微  信:13103827627