当前位置:首页 > 每日看点 > 正文内容

Unity收费事件后,为何大家选择了Godot而不是Cocos?

卡卷网10个月前 (01-07)每日看点153

最近有位同学面试CocosCreator,我们把面试时问道的题列举出来,并配上参。

<>问题1:你们公司项目时如何做战斗的?

面试官你好,做战斗和架构的时候,我们一般把代码逻辑分成3层来设计,同时把数据出来,我们的项目设计如下,不同公司可能不一样,我们之前公司是这样做的:

1:我们会把战斗中的功能,做成组件,如,动画切换,伤害计算等;我们叫做功能层;

2:我们会把战斗单元做一个组件,如Charactor,然后让Charactor来has功能组件,并在Charactor中提供标准的通用的策略,如,行走,技能释放等;同时不是的角色,我们会编写Player,Enemy等来继承自Charactor,并绑定对应角色的战斗数据,用战斗数据来驱动一的逻辑;

3:作层:我们会把战斗中的作出来,如UI作,网络事件,AI事件等,通过事件模块,来调用到战斗中的具体策略,这样,可以实现不同作层来驱动战斗,调用战斗策略;

4:战斗中的数据,我们一般都用excel表格来给策划填写,更具策划的游戏需求来制定好对应的数据格式。如果有必要,还可以做一些可视化工具(技能编辑器),来给策划使用,最后导出战斗数据。

5:技能编辑器:可视化的制定技能的一些数据,如uff时间,攻击时间,等具体要根据游戏需求来定;

<>对惹,这里有一个游戏开发交流小组<>,希望大家可以点击进来一起交流一下开发经验呀!

<>问题2:项目中出现多个spine卡顿怎么办?

目前cocoscreator提供spine的动画组件,他有几种模式,性能最好的是预先ake模式,就是把每个骨骼在某一帧的位置预先计算出来然后存起来,这样能提升性能。可以开启spine动画的合批模式,降低Drawcall,但是有,需要每个spine只有一种混合模式,一张贴图才能进行Drawcall合并。如果多个spine还是卡顿,那么就把spine换成帧动画,提升一些性能。

<>问题3:百人同屏如何优化drawcall?

如果是2D游戏,只要保证角色的动画是同一个图集的帧动画(spine动画好像无法合批,待确认)就能最大限度地合批,同时把角色UI属性地相关内容,和原来的2D角色分开,把UI单做,然后UI节点和角色节点做位置同步,这样,角色的动画就可以再一个图批,不会被自己的昵称,血条等打断合批。

如果是3D游戏,就要将3D动画的每个顶点的位置,aker到一个纹理里面,然后使用GPUInstancing合批,来优化掉3D动画组件,从而合批,同样,UI等,都要单开发,这样防止打乱合批。

<>问题4:你们项目的场景切换是怎样做的?

目前主流的游戏开发中场景切换做法有3个,不同的公司可能不一样:

1:直接把场景做好,然后内容方场景里面,调用cocosAPI,来直接加载与运行对应的场景;

2:直接把场景做成场景资源,打入a包中,来调用cocosAPI,从资源加载中加载场景,然后运行;

3:直接只用一个场景,通过预制体来做相关的内容展示,不存在场景切换。

具体的选择,可以根据框架与项目来决定。如,3D游戏中需要场景中做静态光照,我们就可以采用方法2,把场景看作是地图。如简单的游戏就可以直接使用方法1or方法3。

建议采用方法2,or方法3。方法1最大的问题,是场景无法分a包,全部都打入到main包里面,这样做分包的时候会有问题;

<>问题5:动画的帧率是多少最为合适?

动画的帧率,要看,都可以,主要根据动画的类型来定,可以是15FPS,30FPS,60FPS.一般目前骨骼动画这些帧率都是控制在15~30FPS,有些可以是10FPS。具体要根据,帧率,资源大小等,做一个平衡,如帧动画,帧过多,就会导致内存占用过大,帧过少,动画又不流畅。

<>问题6:GpuInstance怎么用的?

1:要满足GPUinstancing合批的条件,同一个材质,同一个shader,同一个mesh;

2:渲染的时候,不能被别的物体打乱;

3:在材质的地方勾选Gpuinstancing选项,就可以实现Instancing合批;

<>问题7:你在游戏开发中是如何做内存得;

面试官你好,关于使用CocosCreator开发做内存,可能需要注意得点,我是这样看的:

CocosCreator开发游戏的内存占用主要是由以下部分组成,

1:逻辑数据的内存占用,如,节点,组件实例,字符串对象等;

2:纹理,模型顶点等显存的内存占用;

3:就是加载资源,场景切换过程中的一些中间状态的内存占用,如,一个png的图片到内存,可能会要从资源里面把资源数据读到内存中再。

对于3的中间状态,最终会被引擎所释放,我们只要关注切换,加载时候的内存峰值,不要让内存峰值引发奔溃就可以了,如果内存峰值很高,这个时候,我们可以考虑

延后加载等。具体还要根据项目来定位。

对于2,我们一般是把不用的资源即时的给他释放掉,这个时候,我们做资源的时候,要尽量的把同一个功能场景的资源,打入一个a包,这样,用的时候整个a包都用,不用的时候都可以释放。

对于2,我们只要根据内存的峰值情况,再特定的时机,把不用的资源释放掉即可,如果我们的内存可以承受,那么可以不释放。

对于1,TypeScript/JaScript一般的都有回收的机制,我们一般不用考虑释放的问题,直接new就可以了,但是也要避免大量的反复的new,如,在update里面不断地new一个对象;

这种要尽量地避免。当我们地内存出现峰值地时候,可以主动地启动回收来进行回收处理。对于大量反复创建地节点,我们可以考虑使用缓存池来处理,这样避免直接像反复地new/free。

目前是我对CocosCreator开发,关于内存要注意地点,可能有遗漏,具体项目还要根据实际情况具体分析。

<>问题8.你认为怎样的编码才算规范?

编码规范这个不同的项目,不同的公司可能要求不一样,我理解的规范的代码,大概从几个方面讲:

1:用英文来做好命名,命名要能代表函数or变量or类的功能和作用,命名的习惯可以一,如

私有变量用_开头等;

2:要注意权限,改私有的私有,改公有的公有;

3:命名规范的时候,可以和引擎做适当的一些区分;

4:把逻辑流程的代码与具体功能代码来分开,流程代码负责流程,功能代码负责具体功能。

5:写代码要符合项目的实性,符合大家的习惯性认识,尽量少造概念等。

6:注释的一些要求,如果看具体项目和公司的团队成员的水平与协作来决定注释要写到什么程度

...

具体不同的项目规范不一样,还是可以提前规划好。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/6689.html

分享给朋友:

相关文章

个人站长为什么越来越少了?个人网站还能做吗?

个人站长为什么越来越少了?个人网站还能做吗?

在互联网快速发展的浪潮中,个人站长曾经有过辉煌的时代,但如今却面临着诸多困境,甚至走向 “死亡”。一、竞争激烈,难以立足如今的互联网行业,巨头林立,各大平台凭借着雄厚的资金、技术和资源优势,占据了绝大部分市场份额。无论是搜索引擎、社交媒体还...

那些极速版软件其存在目的是什么?

那些极速版软件其存在目的是什么?

我看了很多回答,其实都没有回答道点子上。你知道极速版APP为什么叫极速版吗?是他看视频更快吗?显然不是。只是它的安装包体积更小,下载安装速度更快而已,所以叫极速版app。当然啦,现在极速版APP和原声版APP,安装包已经没有区别了,这是因为...

台积电通知其中国客户,从下周开始,所有 7nm 及以下芯片出货将停止。如何看待这一行为?

台积电通知其中国客户,从下周开始,所有 7nm 及以下芯片出货将停止。如何看待这一行为?

我说美国快要没招了,你信么?这次台积电宣布停止向中国大陆客户供应7纳米及更先进AI芯片,再加上前段时间台积电对华为的制裁,我们基本可以认为,台积电在高端芯片领域,已经彻底把大陆给拉黑了,这也意味着中美芯片战已经到了最关键的时刻,一旦我们克服...

在追求家居美学的过程中,如何选择一款电视机,使其既具备出色的音画质又能与家居装饰相得益彰?

在追求家居美学的过程中,如何选择一款电视机,使其既具备出色的音画质又能与家居装饰相得益彰?

先看照片,你就说美不美吧?我家这个40平的客厅东西放得不少,其中最提升观感的是各种灯光,在这么多灯光中,是不是第一眼视觉中心就落在了电视上?没错,因为这电视是非常特别的环景光电视,与显示器的神光同步一样,会随着画面的变化而变化不同的光效,它...

自己拥有一台服务器可以做哪些很酷的事情?

自己拥有一台服务器可以做哪些很酷的事情?

我就有一台,跑了两年了,ipv6 ddns 网络,加虚拟化平台.跑了个 winserver 和 ubuntu 服务器。稳的雅皮!拆掉后盖,散热更好。烟盒固定硬盘。键盘防止灰尘掉落。电池拆掉,屏幕拆掉,也是散热考虑。屏幕拿去做便携副屏了。换...

领导给我介绍了私活,挣了3W。该给领导分多少合适呢?

你看,这就是网络的好处了。这种问题,你去问亲戚朋友,一大帮子人有一大帮子说法,还不排除有人眼红故意坑你瞎出主意。你这隔网上一问,大家素昧平生,反而因为想骗个赞跟你使出浑身解数来出主意。多好你看。其实这事道理很简单。人脉是人家的,活是你干的。...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。