续ShaderEditor、Inspector之后又一成功爆品,2周260+单!

news2024/11/26 22:22:33

01 前言

大家好,我是98K!五一前,我上架 Cocos Store 的『高性能割草框架』增加 Cocos Creator 2.4.x 引擎,已经支持的老铁可免费更新!

后续的更新计划是:完善2D游戏案例、增加3D案例、支持RVO和群聚,让框架更实用,应用范围更广。

19183a97144c12bd2b8410a454005ef1.png

感谢大家的支持,『98K Cocos 技术交流群』开3群了,进群可领取50优惠券,欢迎大家一起交流、学习、共同成长!

34aa7580fef99f7fe4e0e4d22c7ab1a0.gif

最近弹幕,割草非常的火爆,从独立开发吸血鬼幸存者大火,到大赚 10 亿的弹壳特工。

9a81c69d5949b8e00e16800f6db8d8aa.gif

还有后起的成绩喜人的通神榜、土豆兄弟、黎明前20分钟......相信没人能会拒绝,满屏小怪被弹雨突突的击杀的快感,还有超武的爽快激动。

6a80da7c56236b7bd56982945d75a5f9.gif

这次在 ChatGPT AI 的加持下,我为大家提供一个支持1000怪同屏,通用高性能2D/3D动态碰撞检测方案。

f765c87503fcdfc185bd252f1de05b02.gif

02 性能测试

在开始介绍之前,我先公布一下性能测试结果,如果你觉得还不够用,那就不浪费时间,继续往下看了。

AABB 2D碰撞测试

ef5d57b9a65c1c86e3210495eb543b39.png
  • 设置设备:小米10 骁龙865

  • 浏览器:系统自带浏览器

  • 测试数据:2000节点,平均5ms

AABB 3D碰撞测试

6aac48642c3d35c9cff184ddfb61e493.png
  • 设置设备:小米10 骁龙865

  • 浏览器:系统自带浏览器

  • 测试数据:2000节点,平均8ms

2D割草DEMO测试

5abdfe15b952360114496c5994cd66a1.png
  • 设置设备:小米10 骁龙865

  • 浏览器:系统自带浏览器

  • 测试数据:400节点,平均2ms

这里是 H5 链接,您也可以在自己设备上测试体验:
http://learncocos.com/rougelike/

下面我再讲讲,具体的碰撞优化思路与ChatGPT给予我的一些帮助,希望能对你有所帮助。

03 技术要点

碰撞系统分为动态和静态两种,不同的情形会使用不同策略。

动态碰撞检测

动态碰撞检测,主要针对运动物体、例如角色、子弹、技能等,基于智能分轴扫掠优化方案,使用了(优化版SAP + OBB等......)适用各种2D/3D、运动物体检测,如:角色、弹幕、子弹、攻击。

静态碰撞检测

静态碰撞检测,主要针对静止物体,例如:场景、物品、障碍等。基于空间静态分割优化方案,使用了(octree + kdtree + gjk + epa等算法) 适用于 3D 世界行走、3D表面行走、边界检测(FPS、MMO、RPG等类型的游戏)。

动态碰撞检测系统组成

79fa0935dfe4fb547b86b019facb2d9e.png
  1. AABB 包围盒更新

  2. 粗略碰撞算法筛选

  3. 最后形状精确碰撞

最近 AI 很火,听说它要来抢我饭碗。我到要看看,能不能先跟他交个朋友,助我实现,上面所说的三件套。

04 ChatGTP 能力加持

先科普一下,这次为什么会挑选 SAP ?因为各大物理引擎都能看它的身影,存在即是理由。

SAP全名:Sweep And Prune,是一种对轴向排序扫掠算法,有种SAT剪枝的味道。

4c0f5a8d3d7a5915f8c42ee049b9d651.png

对 X 轴投影可以快速分离排除相交

f37e6bdd72aee8dbfa9fc728c9bf170b.png

优点如下:

1. 物体更新快(物体实时更新位置)

由于要对分轴排序,你可能会想到用快排 nlogn。

但是 SAP 有个真正灵魂的地方,由于运动物体相邻帧情况下排序是相对稳定,所以实际中使用插入排序会更快,大部分情况接近 O(n) 的性能,整体上会比nlogn 快很多。

其他树状如四叉、八叉、BVH等算法,更新物体需要调整树结构是消耗成本不低的。

2. 物体间相互检测快(常说的 trigger)

由于使用的是顺序存取结构,读写性能比其他树形结构要高。

同时轻易进行相互 trigger 检测,而且这顺序结构天生就带去重检测功能。

例如:四叉树、八叉树、格子等,这一类多次分割,还要进行去重标记检测,无形增加性能消耗。

3. 支持2D/3D无范围限制 (兼容性)

由于是对轴向排序分割检测,所以不存在空间大小限制,也不受维度的限制,很好的支持全范围的2D/3D 空间检测。

像四叉,八叉,格子,可能会受到空间范围大小限制。

3c3b2843bf16f90857cc1acc52aaa8f3.png

本着人生第一信条,谁提出问题就让谁来解决问题。我决定让 AI 它解决自己抛出的问题。

73314a04bbd87991c251edd638741b7b.png

好家伙,一声音不哼地啪啪啪打起代码来了,感觉流程可以!但是,还是缺少点灵魂,武功心法掌握的是十足,但打起功夫来,还是差了点。

兄弟这不太行啊!看来,老哥我只能循循诱导,给它提起优化建议。66534680c72789c822b5e6b35338844d.png

经过一轮交谈,也收集得差不多了。本着个人第二信条对技术负责的态度,在 AI 编写的框架上进行自己的精准的改造。

同时结合自己的优化方式,对 SAP 算法进行了深入的改造,为后面碰撞检测提供最大的效力。

05 AABB与Shape

粗略筛选完成了,成功了一大半,还有两个环节:AABB、Shape 如何实现呢?

1. AABB 包围盒更新

本着个人第三信条,能不动手坚决不动手,于是再次唤醒 AI 起来啪啪啪写代码。0da169313c40772d44d46460e5e927f5.png

求算旋转后的 AABB,提供给 SAP 筛选。c7879a6286971edbdc1dc03ceb1c8b7f.png

What? 打住,你给我整 8 个顶点的来算运动中的 AABB,老板看到不得血压爆表,行行行,再好好规劝一下。ccb30ac7a30f9a4d2e83aa33732dba4e.png

好家伙,你是知道得挺多的就是不给我,AI兄弟你这不厚道啊,行行赶紧给我写出代码。

兄弟(看样子快成形了,我心里暗喜,再求求它)再帮忙优化一下,游戏优化飞起,老板看到一开心,就发我薪水啦!!!e3d80543d2110eedc44e1d925f39ab45.png

e9e9b0d1d2e8e51edfc2d73509f28bee.png

行吧,这代码算是到点子上,本着个人第二信条对技术负责,最后优化细节简化由我再进行处理。

这样 AABB 旋转更新完成,可以交付到SAP进行粗略碰撞筛选。

2. Shape形状精确碰撞

目前暂时支持 Box、Sphere 检测(后续会支持其他常用),支持3D旋转操作的碰撞。

所以我们要实现OBB vs OBB 和 OBB vs Sphere 的检测。本着个人第三信条,厚着脸皮再次唤醒了 AI。

  1. Sphere vs Sphere 的碰撞检测,不为难它了

  2. OBB vs Sphere (旋转方体与球体 精确碰撞)1d16c34c42ffb4c3455c2ad674dc2660.png有这个检测,只需要把Sphere转到OBB 旋转坐标系下,就可以转化为AABB求交。

  3. OBB vs OBB (旋转方体之间精确碰撞)8524b33dd45210d836e0b57edc0b13ef.png

本着个人第三信条,再次让AI啪啪啪的工作起来。8e9f30b3a772c8352f39ea47adfde5dc.png

本着个人第二信条原则,最后优化细节简化由我再进行处理。

自此,三大件在 AI 的协助下,得到了很好解决。

最后在我的组装修改下,碰撞系统终于运行了起来,AI是可以写代码,但是它不一定完美,需要从业者有一定知识储备,才能更好地发挥它效力。

假以时日,在不断地训练下,和全球广大的知识网库的加持下,它终究会成为那个巨人。

06 小结

2e7fa16f81548318a0604b6502eb0ac3.png

今天分享的内容,而非 98K 大佬本人的极限,98K高性能割草框架,未来还会继续迭代更新,内容如下:

  • 增加实用Shape

  • 支持群聚的优化

  • 增加高性能查询

各位老铁们,敬请期待!后续更新免费升级~ 

如果你对 Cocos 游戏开发、技术、变现感兴趣,欢迎加晓衡微信:z6346289。

往期精彩

  • CocosStore卖家成长指南

  • Creator 3.x 入门修炼指南  

  • 用ChatGPT做一款二次元卡牌游戏

  • 坚持做一个长期主义者

  • 一个公式35岁让自己过的越来越好!

  • 《我的世界》体素类游戏完整解决方案!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android WebView 长按弹出的文本选择器如何监听滑动和如何弹出完全自定义的菜单栏

在这次改版中,h5小伙伴与我沟通说要把长按选择改用成原生的拉选框,之前我也没搞过呀,开始研究吧。 怎么研究呀,当然是百度一下了。 百度了一天总结如下: 好多文章都是告诉你如何在系统的基础上来修改自己的文字和点…

vue2 框架运行原理剖析系列(二)之 组件挂载$mount神秘之旅!!!

一、vue组件挂载 1.1 上一篇文章中,介绍到组件执行 mountComponent 函数,本文对此展开详细的讲解。 1.2 调用改方法的位置在于entry-runtime-with-compiler.js 的Vue.prototype.$mount,具体代码如下: 其中, &#xff…

【图像融合】Dif-Fusion:基于扩散模型的红外/可见图像融合方法

文章目录 摘要一、前言二、相关工作1.红外线和可见光的图像融合2.扩散模型(可见博主之前的博客) 三、方法1.红外线和可见光图像的联合扩散2*.多通道扩散特征的融合 四、实验1.实验设置2.融合性能分析(效果展示)3.泛化实验 总结 摘…

通知短信 API 技术细节以及发送流程机制原理解析

引言 短信是一种简单、直接、高效的通信方式,被广泛应用于各个领域。在移动互联网时代,短信成为了客户服务、政府通知、公共服务等方面的重要工具。为了更好地利用短信这种通信方式,通知短信 API应运而生。短信API可以帮助企业、政府和应用程…

RK3588旗舰32T人工智能多网口边缘智能网关交换机

32T边缘智能网关发布,助力多行业数字化升级,运维降本增效,搭载RK3588旗舰芯 搭载瑞芯微RK3588芯片的边缘智能网关XM-RK3588,算力可扩展至32T,适用于电力能源、智慧交通、智慧城市、智慧安防、智慧医疗、工业互联网等领…

前端的加密和解密,crypto-js的应用,AES / RSA / md5

每日鸡汤:每个你想学习的瞬间,都是未来你的向自己求救 内容预警*****新手内容,自己学习总结用****大佬请绕道 之前看https原理,看到对称加密和非对称加密,各种加密方法,看得云里雾里,即便是总结…

报错main.py: error: unrecognized arguments: stack_size 4 1001,770,123

运行从GitHub上面下载下来的代码时,按照作者提供的输入命令输入后报错: main.py: error: unrecognized arguments: stack_size 4 1001,770,123 将报错的部分在网上百度,找到部分方法,得出理解:输入的命令是出错的&am…

【RS专题】怎么知道你遇到的是rs风控

本文属于技术分享、如有侵权可联系本人下架 最简单的方法就是查看cookie,在控制台输入【document.cookie】 如果出现如上图中有【xxxxxxT】或者【xxxxxxP】的,并且它的值都为英文数字和下滑线加点,那么基本可以确定这个网站用了rs反爬 什么是rs反爬,下面抄一段内容 瑞数动…

【瑞数RS专题】首层代码分析,和获取eval层代码,cookie反爬虫详解

如有侵权、联系本人下架 以下面两个网站为例 1.aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuL25ld19ob3VzZS9uZXdfaG91c2VfZGV0YWlsLmh0bWw= 2.aHR0cHM6Ly93d3cubm1wYS5nb3YuY24veWFvd2VuL3lwamd5dy9pbmRleC5odG1s 首先明确一下目标,我们要先获取网页200的源代码,RS5代第一次响应为…

unittest自动化测试框架讲解以及实战

为什么要学习unittest 按照测试阶段来划分,可以将测试分为单元测试、集成测试、系统测试和验收测试。单元测试是指对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,通常指函数或者类,一般是开发完成的。 单元…

软件架构:软件架构设计的三个维度

架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中去体会。这篇文章主要介绍面向对象OO、面向方面AOP和面向服务SOA这三个要素在架构设计中的位置与作用。   架构设计有三个维度,或者说是我们…

文案改写神器软件-文案改编神器

文案改写神器软件 文案改写神器软件通常致力于通过人工智能技术将一篇已有文案进行改写和改编,以达到复用或优化的目的。以下是文案改写神器软件通常可以做的事情: 改写原文:文案改写神器可以通过自定义规则、语法分析和文本相似性匹配等功能…

设计模式之【组合模式】,树形结构的完美解决方案

文章目录 一、什么是组合模式1、组合模式三大角色2、组合模式应用场景3、组合模式注意事项和细节 二、透明组合模式1、学院院系案例2、透明组合模式总结 三、安全组合模式1、linux目录系统案例2、安全组合模式总结 四、源码中使用的组合模式1、HashMap2、ArrayList3、MyBatis 一…

跨平台应用开发进阶(六十一):uni-app 跨平台技术开发框架可行性调研

文章目录 一、流程类二、研发类(uni-app框架)三、心得分享(研发踩坑&uni-app踩坑)四、拓展阅读 一、流程类 IOS和安卓企业开发者账户申请流程(申请渠道、需要提供的相关证明、审核时间等)。 答:uni-app使用HBuliderX作为开发IDE,支持邮箱、密码方式注册&#x…

95、Image Restoration with Mean-Reverting Stochastic Differential Equations

简介 主页:https://github.com/Algolzw/image-restoration-sde 扩散模型终于在去噪、超分辨率等应用了。 这是一种基于随机微分方程的通用图像恢复方法,关键结构包括均值还原SDE,该SDE将高质量图像转换为具有固定高斯噪声的平均状态的降级…

怎么压缩png图片的大小?4个简单高效工具分享

怎么压缩png图片的大小?大家都知道jpg和png是目前电脑上最主流的两大图片文件格式,jpg图片的体积比较小,因为它属于有损压缩的图片格式,而png图片的体积相对就要大很多了,因为png属于无损压缩的图片格式。大家也同样知…

Redission实现分布式锁之源码解析

Redission实现分布式锁之源码解析 1、Redission实现分布式锁之源码解析1.1 分布式锁-redission功能介绍1.2 分布式锁-Redission快速入门1.3 分布式锁-redission可重入锁原理1.4 分布式锁-redission锁重试和WatchDog机制1.5 分布式锁-redission锁的MutiLock原理 1、Redission实现…

5G+工业互联网观察——应用篇

5G与工业互联网的结合是5G应用的重要领域,前一篇《5G工业互联网观察——政策篇》我们对5G工业互联网的相关政策进行了整理和分析,本篇继续从应用的角度整理目前的典型场景和重点行业,并进行简单的分析。 文 | 无界 全文4500字,预计…

原创 | 一文读懂蒙特卡洛算法

作者:陈之炎本文约2000字,建议阅读10分钟 本文介绍了蒙特卡洛算法。 蒙特卡洛算法(Monte Carlo algorithm)是一种基于随机采样的计算方法,其基本思想是通过生成随机样本,利用统计学原理来估计数学问题的解。…

MySQL实战之主从数据同步机制

主从同步的重要性: 解决数据可靠性的问题需要用到主从同步;解决 MySQL 服务高可用要用到主从同步;应对高并发的时候,还是要用到主从同步。 一、MySQL 主从同步流程 当客户端提交一个事务到 MySQL 的集群,直到客户端收…