主程技术分享: 游戏项目帧同步,状态同步如何选

网络游戏开发项目中帧同步,状态同步如何选?

网络游戏的核心技术之一就是玩家的网络同步,主流的网络同步有”帧同步”与”状态同步”。今天我们来分析一下这两种同步模式。同时教大家如何在自己的项目中采用最合适的同步方式。接下来从以下3个方面来阐述:

1: 状态同步的原理与常用的处理方式;

2: 帧同步的原理与常用的处理方式;

3: 哪些游戏适合帧同步,哪些游戏适合状态同步;

这里有个学习交流小组 里面有大佬 有萌新 大家可以一起学习交流哦

希望能帮助大家掌握帧同步与状态同步原理,并能做出对项目与团队最正确的选择。

状态同步的原理与常用的处理方式

状态同步是在服务器上跑完整的游戏逻辑,包含每个角色在游戏地图上行走,攻击。角色与角色的战斗,都要编写代码实现在服务端。可以理解为是跑在服务端的没有图像渲染的游戏。同时由于多人在线,服务器端接收每个玩家的客户端传过来的输入操作,根据玩家操作来迭代计算游戏。一般采用状态同步的网络游戏,在服务器上实现战斗逻辑,寻路导航,地图, 技能释放, 怪物AI行为决策, 物理引擎等常见的游戏开发的功能与模块(具体是哪些模块需要根据不同的项目来决定)。

每个玩家+NPC+怪物都在服务器上有对应的数据对象,并且这么多对象都要处理,而且这些对象为避免线程锁等开销,一般都在一个线程, 所以像MMORPG 每个地图的同时在线的游戏人数是有上限的,上限取决于服务器的机器配置与游戏逻辑的复杂度。比如魔兽世界”一个地图”最多同时在线约3000人左右。有人就会问魔兽世界每天同时在线的人数远远超过3000人,怎么你说它一个地图最多是3000人”同时在线”呢?这里的”同时在线”指的是同一个地图的两个玩家,走到同一个地方,彼此能看到对方。而不是两个玩家同时在玩同一个地图名字,但是走到地图的同一个位置彼此看不见 (相当于两个不同的逻辑服,用的是同一个地图)。到目前为止你可以想像成状态同步的服务器是一个跑有若干玩家的游戏逻辑,这些玩家的操作输入指令来自于网络客户端。

游戏玩家是要看图像的,不能只看数据在那里跑, 客户端就要根据服务器上的”状态”重现出服务器上当前的游戏画面。如果客户端把服务器上所有的玩家角色都创建并渲染出来, 客户端性能可能达不到,也没有必要,每个玩家都有一个特定的”视野” 范围, 视野内的游戏角色的画面在客户端构建同步出来就可以了,视野外的可以不用管。所以客户端是同步视野范围内服务器的状态的画面。

大家都是根据服务器上的状态来显示画面的,所以不同客户端能”同步”。准确的讲是同步显示的服务器上元素状态。什么是”状态”?一般游戏里面我们把一些关键的信息叫做”状态”, 举一个例子:

   角色怪物出生
   角色怪物的Idle, Walk, Attack, Dead等

接下来我们拿玩家从创建对象, 到待机,到行走,到攻击,回到待机来举例,来看下角色的状态变化以及这个过程中客户端如何同步。

服务器上创建了一个角色对象A,这个角色对象A就会出现在”若干玩家”的视野里(AOI算法),对于这若干玩家而言状态发生了变化,服务器给它们都发送一个角色创建的状态信息含角色的位置,角色的类型,朝向角度,角色状态(Idle)等,这些玩家客户端就把这些角色创建出来。对于角色对象A对应的客户端,服务器要把它视野范围内(AOI)的其它客户端的角色状态发送给它,然后它根据这些状态信息把画面绘制出来。接下来服务器就按照角色状态进行迭代,待机的待机,行走的行走。客户端按照状态也进行迭代,一但状态变化就同步,我们接着角色对象A创建出来的idle状态来分析,那么服务器上角色对象A是Idle其它玩家看它也是Idle。角色对象A发了一个行走的操作给服务器,服务器先判断这个操作的合法性,如果合法,服务器就把角色对象A的状态(位置,旋转,状态等关键指标)+玩家的行走操作(寻路走到目的地dst)一起发送给能看见A玩家的人(能看见A的客户端+包含A自己),关键来了,收到这个状态变化后,每个客户端先重置一下角色数据的状态(位置,旋转,缩放)与服务器同步,在大家都同步到服务器的状态的基础上再做寻路移动操作。接下来角色对象A开始行走了,服务器上要寻路,然后迭代A的行走数据,客户端上的对象A也要寻路,也要再客户端上行走,这个过程可以和服务器失去联系(服务器走服务器的,客户端走客户的端的)。这样角色A就在客户端走起来。行走过程中客户端A发现了一个怪物,点了一下怪物,触发攻击操作,这个时候服务端收到这个客户端A的攻击操作,先判断检查是否合法,如果合法了角色A就要从Walk状态到Attack状态了,这个时候服务端先把服务器上角色A目前的状态(位置,旋转,缩放等)+服务器上角色A的操作一起发给对可见角色A的客户端+角色A自己。收到这个数据后,先同步状态(重置客户端上的角色状态到为服务器上的状态),然后基于同步服务端状态后的再做攻击操作,客户端播放攻击动画,服务端计算攻击逻辑和伤害。当服务器迭代的过程中发现了怪物已经被打死了(状态变化),那么就把角色A的状态+怪物状态,同步给对角色A感兴趣的客户端,然后同步怪物与角色A的状态,然后客户端就把角色A由攻击变成idle状态了,位置也同步了服务器上的。

总结一下,客户端根据服务器的状态+后续操作来重现游戏画面,服务器接收玩家操作,独立迭代游戏逻辑,迭代中发现状态变化(玩家操作等决策引起),通知客户端,客户端先同步服务器上的状态,然后基于这个状态再结合操作播放动画。总之服务端迭代服务端的,客户端迭代客户端的,服务器每次状态变化,同步到客户端后再接着播放动画。客户端与服务器上同步的是服务器上的最后的一个状态。

帧同步的原理与常用的处理方式

做单机游戏时,根据客户端的帧率来驱动我们的游戏逻辑,每帧检查玩家有没有操作,如果有操作就进行处理。单机游戏的本质就是基于帧率来进行驱动的。帧同步原理就是把这个帧率在本机的转为由服务器每隔一段时间向客户端发送数据来作为帧来驱动游戏, 同样的服务器的驱动,同样的客户端逻辑代码,每个客户端跑出来的结果就是一致的。

服务端只要负责把每帧采集到的玩家操作,转给所有客户端, 这样客户端根据服务端的帧操作来迭代游戏。客户端的帧率是60左右给玩家的感觉是比较流畅的,服务器以多少的帧率来驱动客户端玩家感觉会是流畅的呢?60FPS是画面的流畅度,服务器同步的是操作,人的反应时间是50~100ms,所以服务器只需要20FPS左右就能够获得非常流畅的操作手感,所以帧同步服务器的帧率一般是每秒15~20FPS左右。

了解帧以后,接下来看如何基于帧同步, 服务器如果确认了每秒20FPS,那么服务器帧的时间间隔就确定了为50ms, 当我们收到一个新的服务器帧的时候,先不着急处理,而是先要回到上一帧的状态(位置,旋转等),然后基于上一帧的操作来使用50ms时间间隔来迭代这帧的结果,再基于当前同步后的状态处理服务器给我们发过来的帧操作,播放动画等。所以帧同步是每帧都同步。客户端根据当前帧来展现动画,到下一帧来的时候先做同步计算,这样达到客户端同步,这里的同步准确的说是每一个服务器帧都进行同步, 这一帧能同步是基于上一帧同步的基础上同样的操作+同样的时间间隔迭代出来的同步。和状态同步不同,状态同步的状态全部记录在服务端了,而帧同步是需要依赖前一帧,前一帧又依赖前前帧,这样直到第1帧。所以帧同步每次断线重连,时间久就是这个道理,因为要重新新从第一帧开始算起。

哪些游戏适合帧同步,哪些游戏适合状态同步

搞懂了上面的原理,我们来看下哪些游戏适合帧同步,哪些游戏适合状态同步。状态同步基本上适合绝大部分的游戏,包括帧同步擅长的领域用状态同步做也能做的很好。帧同步的局限性就大很多了,接下来我们来分析帧同步的优点与缺点。帧同步与状态同步相比,服务器要简单很多,而且服务器的项目可以高度重用,因为写好一个游戏的服务端帧同步,下一个游戏的服务器基本不用改,所以腾讯推出一些服务端的集成方案就有帧同步的服务器,每个游戏项目都可以用, 做到服务端高度重用。帧同步与状态同步相比,帧同步更平滑,不会有一些峰值,这样导致玩家的手感一直很好,什么叫做峰值,状态同步,突然某个时刻状态变化比较多,同步的数据量大,网络和处理可能会有瞬间的卡顿,而这种可能就影响关键时候的手感,帧同步在这块就更平滑。每次只要同步玩家的操作,数据包更小。所以一些强调操作手感的游戏是可以用帧同步来做的。帧同步每一个玩家对应的角色都要在客户端计算迭代,而不像状态同步只迭代视野范围内的,所以帧同步对客户端的运算量会变大,同时帧同步不能适用在同时3000人一起玩的游戏,因为3000个角色都要在客户端,每帧都同时迭代计算,客户端性能达不到。所有MMORPG, 这种游戏基本都不采用帧同步,采用帧同步的都是固定一起对战的人数的,如王者荣耀5v5, 守望先锋等。帧同步每次同步都是当前帧依赖前一帧,每次断线重连,只能从第1帧开始迭代计算,快速的跳到最新的帧,所以采用帧同步的游戏一局的时间不能太长,比如一局游戏可以打2天,你每帧都要保存住,如果某个玩家断线从连,要从2天前的帧开始计算,这个就只能呵呵了,MMORPG 这种游戏不适合帧同步。帧同步的计算全部放客户端,所以没有状态同步那么安全。

分析完后我们得到一条结论: 一局时间不长的游戏,每一局不允许玩家中途进来的游戏,每一局的人数是少量固定的(5vs5, 10vs10),对客户端计算不敏感,这种游戏可以采用帧同步。帧同步能获得很好的操作手感,降低服务端的开发难度,如果没有服务端的团队,还可以用腾讯的帧同步服务器。

今天的分析就到这里了,主页有一个小组,里面有萌新,有大佬 还有一个比较好的游戏教程分享,详细的讲解了帧同步的20个流程详解与状态同步的实战解密等。

相关推荐

【实操篇】做爆款超休闲游戏的一些经验与教训!

表里有一个难度等级,我们指定一个难度等级的评判标准,比如,不用看广告过关的就是0星难度,看1次广告能过关的就是1星,最高我们是3星,然后内部我们把这些关卡体验进行难度评价。有了这些难度等级后,我们把表格数据,丢个AI,再给它设定一个难度曲线模型,比如螺旋上升曲线方程,这样,AI就可以给你生成一个关卡映射脚本,把映射好的,写回表格。经验4:当自己没有办法去买量验证的时候,应尽快的联系发行+合作,让他们先买起来,不要等时间,时间才是最宝贵的,有发行对接与搭配,能学习到外部的很多技巧。

voidinit的专栏 308

2026 AI大模型产业布局分析

一说到垂直领域的大模型,大家立刻会想到参数少,没有那么智能,但是能满足行业的需求的模型+机密的行业数据。目前AI主要是替代工具,并没有产生新的商业模式与生产力,除非免费使用AI的用户,能通过另外的商业模式变现回来,目前还没有看到。To B卖云服务给企业,相当于企业有一块"私有的机房+私有模型+私有数据",行业数据不会泄露的同时能获得专属大模型提供的服务,这里未来就是阿里云,腾讯云,百度云,华为云的阵地,他们获得各种推理大模型,然后部署,企业向他们购买服务,使用专属大模型的同时,构建自己的知识库等。

voidinit的专栏 320

【启发级】拆解与分类小游戏畅玩榜前100名的玩法模板,看下你手里有几个致富模板

今天(2026年5月8日)闲着无聊,我来把微信小游戏《畅玩榜》的所有游戏的玩法模板统计归纳一下,看看超休闲小游戏目前是哪些模板玩法在影响着我们的玩家。有两个或两个以上的同类游戏,我就把它称为"模板",只有一个游戏的类型,我称为"个例"。大家可以都玩一下,看看别人的创意与变种,看看这么多人做的题材为什么它火了,有哪些创新。羊了个羊+抓大鹅+救救我鸭+麻将消除模板。打螺丝 + 毛线 + 3D打螺丝毛线模板。拼图找茬+狙击找茬类游戏模板。躺平发育类塔防游戏模板。压力消除+三消类模板。消水果+物理阻挡模板。

voidinit的专栏 177

【收藏级】个人开发者如何使用AI解决美术问题实操经验分享(一)

我们与专业的美工,除了审美,美术设计以外,还缺的就是对各种基本美术工具的操作,比如ps等。让我们去学习PhotoShop的操作,显然也不现实,我的路径如下,把一些要切图的等一些美工的操作,都做成代码工具,用脚本来执行处理,代码工具的代码,用AI来完成。比如我专门有个文件夹是用Node.js来写的工具(建议大家用Node.js与Python,后期转MCP会更容易),这些工具完成特定的美术功能,比如,去掉周围多余的透明度,Gif转帧动画,图片缩放等,每个工具,我都做成了命令行,都能批量处理。

voidinit的专栏 431

【收藏级】小游戏如何安排工作计划能最快上线运营微信+抖音双平台

游戏名字一定不能有违规敏感字,避免做完软著后,微信通过了,抖音却过不了(在抖音里名字可能能创建小游戏后台,但未必审核通过,《废土摸金小队》在抖音创建小游戏的时候能通过,但是基础信息审核的时候无法通过,后来重新换名字做软著,浪费了时间还有两个品牌)。(6)微信的游戏名字创建的时候能过,表示就能通过,抖音的游戏名字要到基础信息审核通过后才能正式确定,所以会出现微信通过,抖音初步创建成功,可是当软著下来,到抖音提交基础信息审核时,抖音审核不过,所以游戏名字尽量不要有违规敏感字。

voidinit的专栏 457

AI实战:如何更好的使用AI开发游戏项目

这个过程AI就不是那么的擅长,所以需要你一步步的先搭建框架,再来指导AI主要的流程,分割出一个个的模块,一步步的把整个架子搭起来,最后再用AI将一个个功能区填充。比如你GameMgr里面有两种模式的玩法,AI分析出来以后,就会得到两种模式玩法的概念,这样你用这些"概念"去下提示词,就能更精准的操控AI,生成你要的代码。AI擅长开发工具脚本代码,有了AI,我们能出很多提升我们工作流效率的代码工具,以前为了节约工具开发时间的功能,而被迫手动处理的,现在都可以无限的交给AI写工具脚本来完成。

voidinit的专栏 569

个人开发者如何拉升产品运营数据

2: 皮肤,这个是最常用的通用手段,"奖励"是"每日登录"等模块的灵魂,玩家为什么会来挑战,因为有他想要的奖励,而奖励最常见的就是皮肤。拉升运营数据一般的指标有:人均用户时长,人均看广告的次数与看广告的动力,游戏的留存数据,社交裂变,产品矩阵。1:搭建产品矩阵,不再以单个的产品来看用户留存来看运营数据,而是通过多款产品来拉升用户的整体的运营数据。游戏上线后需要一波波的加一些内容上去,拉升爬坡产品数据,获得更好的运营结果,从而有机会获得更多的流量。这里列举的是通用的游戏模块,每个游戏都可以从,同时可重用。

voidinit的专栏 271

总结篇:新游戏如何调试买量模型与运营数据

一个个变量的调整,我们的调整顺序为:用户时长,用户次留,核心用户的时长,用户的pv,最后上“流氓广告”手段。例如游戏定位12~18岁的目标用户,就找对应的周边用户体验,拿反馈。加入,你一天买10W的量,可能5W是目标用户,5W为非目标用户,会导致整体的运营数据无法分析,波动很大。我们买到目标用户的判断为平均用户时长,所以我们只有在假定"产品匹配目标用户后用户平均时长>= 5+分钟"前提下去调整买量,当我们买回一批批量时,我们看用户平均时长是否达标,不达标继续调买量区间,价格,素材,广告计划,投放版位等。

voidinit的专栏 451

Unity转微信小游戏的版本迭代时的资源缓存过期的方案处理

老用户的"新代码+旧资源"加载的时候,会读取到旧资源的版本号,与服务器固定地址的最新版本号(干脆直接带到代码里的资源版本号,这样就不用部署服务器了)进行比对,如果不一样,就比较"最新的"与"老的"资源列表文件,删除掉md5不一致的资源文件,再进入游戏,这样老用户就能使用到 "新代码+新资源"。Unity+YooAssets关于新版本功能更新后,新用户使用的是"新代码+新资源",而老用户使用的却是"新代码+老资源",老用户使用的还是本地缓存的老资源,导致程序报错,无法正常启动。

voidinit的专栏 556

《废土摸金小队》2月8日~2月11日的运营总结与技巧分享

刚开始,我也是百思不得其解,我猜是买不到好的用户的量,然后打算错峰去买,同时我感觉系统会带你去那些没有人买的流量区去探索,所以我就排除掉一些不用的渠道,专注于朋友圈,视频号,小程序广告等,2月11日凌晨,我设置好日预算200,排除掉其它"垃圾渠道",把单价直接拉升到2块,高于大盘"射击类目"的平均值。我的操作手段有:提高出价,降低ROI,提高ROI,再次提高出价,限定年龄,排除49岁以上的,排除掉渠道"优量汇",换账号投放,使用AI智能投放等。到2月10日,我的问题仍然没有解决。其实目前的比例还挺好。

voidinit的专栏 728

Unity转3D微信小游戏从研发到上线发布踩坑记录与经验分享

对于H5来说,跑在微信上的小游戏没有这个问题,我们降帧到60FPS后,之前有问题的 1+ ace3也能流畅的运行,考虑到小游戏,而且小游戏的60FPS与120FPS没有差别,所以最后我们降帧到60FPS上线,手机apk的120FPS要比小游戏120FPS效果要强很多。裁剪的时候,一个个裁剪级别提升。某些情况下只能用同步加载的(比如UI界面的ICON,当你打开一个界面,要显示ICON,这就不适合异步加载,因为界面关闭后,还有icon没有加载完成,加载完成后会报错)我们被迫会要使用预加载+缓存Get的模式。

voidinit的专栏 779

Unity自动化美术资源校验工具(模型/材质规范检测)技术详解

csharp[CreateAssetMenu(fileName = "ValidationRule", menuName = "Tools/校验规则")]// 条件判断// 适用于的资源类型Model,Material,Texture,Animation,Prefab,AnyFileSize,Dimension,CountEqual,NotEqual,LessThan,Contains,EndsWith质量保障。

voidinit的专栏 1138

Unity基于GraphView的可视化关卡编辑器开发指南

csharp// 添加交互控制器// 缩放控制// 背景样式// 获取兼容的端口用于连接// 防止自连接// 防止同一节点连接// 输入只能连接输出// 类型必须匹配});// 创建房间节点// 创建敌人节点css/* 基础样式 */#关卡图 {/* 节点通用样式 */.node {/* 房间节点样式 *//* 敌人节点样式 */

voidinit的专栏 1281

分享一个好玩的:一次提示词让AI同时开发双引擎框架

既然是两个引擎的代码要同时生成,我就要把这两个引擎的框架代码做好规划,统一的放到一个文件夹下,让Cursor的工程关联到这个文件夹。在你的设计下,使用AI 写框架,具体代码不用自己写,能节约大家的时间,提升工作效率。对框架来说目录结构很重要,当用AI把大部分的框架的核心接口都生成出来后,我们进一步对目录结构做好规范,并同步设计思路给到AI,让它接下来的工作更"懂你",符合你的要求。AI 要用的好,需要人来给他指明一些方向,所以我们在使用AI写框架的时候,先给他指明一些基本的方向,目录结构就是很重要的一环。

voidinit的专栏 1188

试玩小游戏运营投放全流程详解

试玩基础库与小游戏基础库一样,API 会挂载在全局的 wx 对象上,但试玩里面能用的 wx 接口是不一样的,有些接口名虽然和小游戏的接口名一样,但定义上有细微差别,请仔细查看试玩的 API 文档。管理试玩内容在微信服务商平台完成,服务商管理员或服务商运营人员登录微信服务商平台后,点击【小游戏】->【试玩广告】->【去制作】即可进入试玩内容管理界面,管理该账号下的已有的试玩内容和创建新的试玩内容。当某个小游戏想要做试玩小游戏投放时,首先要开通小游戏的试玩能力,登录"MP后台",开通"试玩能力"。

voidinit的专栏 1384

AI游戏开发全自动编程课程体系(Cursor版,支持Unity/Cocos, Laya后续支持)

1: 基于AI工具+阅读《C#服务器+双客户端(Unity/Cocos)TurnKey》方案的架构与设计;基于《C#服务器+(Unity/Cocos)客户端Turnkey方案》全栈自动开发《好友对战五子棋》基于《C#服务器+(Unity/Cocos)客户端Turnkey方案》全栈自动开发《对战射击类游戏》基于《C#服务器+(Unity/Cocos)客户端Turnkey方案》全栈自动开发《捕鱼达人3D》基于《C#服务器+(Unity/Cocos)客户端Turnkey方案》全栈自动开发《割草类》

voidinit的专栏 1272

技术分享:游戏战场中如何处理角色死亡时各种姿势的“尸体“

Step2: 要模拟角色"死亡"后不同的骨骼摆放的位置,姿势各有不同,那么我们要给人形动画的每个关节带上一些物理刚体RigidBody+物理形状。(3)全部把"物理人形骨骼"开启以后,在脚下给"物理人形骨骼"一个"物理爆炸"的力。Step5: "物理爆炸"结束2秒后,再禁用"物理人形骨骼",这样角色就会躺在地面上,骨骼摆放为不同的姿势。运行的时候,正常情况下,"物理人形骨骼"都被禁用,不会对角色正常控制产生任何的影响。单独的针对"人形骨骼"的节点做一个独立的物理分组,不与其它的物理分组产生任何碰撞。

voidinit的专栏 831

搜打撤类技术分享:基于人形动画的上下半身分层状态控制

Move(下半身)+Idle(上半身)做为普通的Move状态,Move(下半身)+瞄准射击(上半身)做为带攻击的Move状态。支持Unity/Cocos双客户端,以“第三人称射击类”游戏为玩法主体,基于目前比较火的”搜“,”打“,”撤“的游戏结构,玩家通过战斗,收集装备,升级装备,获取宝物等可以战斗,可以撤退。ShootLayer: 播放角色的idle 或者 瞄准射击动画,把ShootLayer的人形动画,带一个动画Mask, 只作用上半身。(2):完整的第三人成射击类的”地图编辑器“的工具开发;

voidinit的专栏 637

给出一套方案:角色如何自由搭配枪械与武器

支持Unity/Cocos双客户端,以“第三人称射击类”游戏为玩法主体,基于目前比较火的”搜“,”打“,”撤“的游戏结构,玩家通过战斗,收集装备,升级装备,获取宝物等可以战斗,可以撤退。如果每种武器对于不同的模型,手臂的挂载点的位置不一样,我们可以在骨骼里面添加特殊的挂载点,来做到更好的匹配。分为"单手"模式与"双手模式",单手又分为"左手"与"右手",左手就绑定到左手的"锚点",右手就绑定到右手的"锚点"。step4: LateUpdate里面武器把自己的"锚点"与角色的"骨骼点"同步;

voidinit的专栏 748

关于“SUD全资收购Cocos“对开发者影响的一些看法

每次版本重大的升级,都会有很多的调侃,"这很Cocos",“这很王哲”。对于开发者而言,其实也没有必要过于的担心,如果下一阶段Cocos的引擎还可以满足企业的需求,那继续用就可以了,如果不能满足需求,换别的引擎即可,从一个引擎换到另外一个引擎,对于开发者的技术成本没有那么高,代码能力,设计思想,处理经验等,不会随着引擎的切换而改变。不同的工具,不同的生态,不同的做法,也会带来很多思路上的不同和思维上的碰撞,其实对开发者更多是好事。"变化"能给"一潭死水"的生活带来"意想不到"的变化。

voidinit的专栏 576

新课发布:《逃离鸭科夫》搜打撤类商业化方案

考虑射击游戏的题材,本游戏为3D游戏,不考虑2D模板。游戏的商业化渠道主要面向微信抖音小游戏,来做关卡和策划案,如果是手游或Steam,再做更复杂的场景+关卡。《肉鸽类》同一套数值,同时支持2D/3D类游戏,商业化方案已经完成,很多学员关心接下来是哪个方案。我们在找全免素材的过程中发现一套素材还不错,角色也是百搭,正好结合最近很火的《逃离鸭科夫》我们决定下一个课程方案为:第三人人称射击类游戏,核心玩法为鸭科夫的核心玩法”搜,打,撤“。(1):完整的第三人称射击类的"搜打撤"玩法的策划案,数值与成长体系;

voidinit的专栏 586

如何基于全免费素材,0美术成本开发游戏

最近我们肉鸽游戏原型方案开发完毕,接下来做商业化。遇到的第一个问题就是美术成本太贵。找了一些美术外包公司评估,报价都在15万以上。和之前的游戏美术成本评估有比较大的差距。IAA纯小游戏在没有验证的时候就投入"高成本"(相对于小游戏来说)无疑风险比较大。我们内部商议决定:"游戏商业化可以分为"数值商业化+美术精品化“。先快速试水与迭代,做好数值精品化。如果数据可以,再做美术精品化"。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀观点1:免费素材3D比2D好,精品化2D比3D成本低

voidinit的专栏 1522

战斗系统核心设计:如何提供机制解决游戏项目中的成百上千的Buff

每一类Buff我们称为一个BuffModel, BuffModel实现了Buff的计算逻辑与策略,Buff框架根据BuffId的类型,找到匹配的BuffModel,再根据相关"属性"找到对应的处理函数,而BuffModel的编写留给具体的项目逻辑,我们只提供BuffModel的机制。比如复活以后,5秒的无敌状态,我们的实现逻辑为,计算伤害的时候,如果目标有"无敌Buff",那么我们就不计算伤害直接返回。-1,表示的是大类默认的,如果有特殊的小类,我们就可以注册这个属性的特殊的小类。有限状态机,行为决策树?

voidinit的专栏 1378

战斗系统架构:为什么游戏战斗适合ECS架构?

以此来代替传统复杂的继承体系。2: 游戏世界中的角色:玩家(主角,其它玩家角色,小兵队友等),敌人(近战小怪,远战小怪,精英怪,Boss怪等),道具(戒子,宝石,加速鞋等), 传送门,NPC(任务NPC, 商城兑换NPC等),游戏子弹等。8: 面对5种英雄,8种军团兵种,25种敌人怪物,37种道具,49种技能,32种局内升级,15级的局外天赋升级,我们是如何做好技能与Buff的架构?优势4: 组织结构更加的清晰规范,基于不同的迭代,分开代码文件,避免一个代码文件中,N个不相关的代码逻辑,也方便重构与替换。

voidinit的专栏 953

《商业化陪跑肉鸽项目》正式结束!

2: 本教程的详细目录如下:(注:框架使用我们商用框架,课程没有包含在内)(8): 战斗逻辑采用ECS架构,扁平独立的逻辑处理,替代继承体系;(5)适合微小,抖小的创业者,快速基于我们的工具构建自己的产品项目;(2): 8种暗影军团角色,包含远战与近战,局外天赋与局内升级;(1)熟练掌握商业化项目的框架设计,策划案,项目开发;第048节战斗范围的调试区域绘制与被攻击时的决策规则。第080节局外战斗Buff与局内升级Buff的初始化。(4): 16种技能,17种道具,59种Buff;

voidinit的专栏 500

游戏开发中的暂停的设计

如此一来,当游戏战斗世界要暂停的时候,只要针对"游戏管理"来暂停不迭代,从而导致游戏管理的update不再迭代其它的战斗单元的"Logic Update",这样导致整个的游戏世界+游戏战斗单元全部暂停。思考2: 游戏暂停,我们是针对战斗逻辑暂停,其它的部分可以不用暂停,这样开宝箱等动画需求时,都不会受到影响,我们只是暂停游戏的逻辑迭代+游戏角色的动画暂停,游戏世界中的粒子暂停。(一)针对游戏战斗世界暂停,游戏逻辑管理负责做好游戏战斗单元的暂停与恢复即可:暂停战斗单元迭代,暂停战斗单元动画,特效。

voidinit的专栏 933

团体战斗核心技术:如何防止团体进攻中角色堆叠在一起

比如A, B两个角色同向向右移动,当A,B发现彼此"堆叠"后,A迭代完移动,然后堆叠处理模块再把A往回迭代,这样A就不动,B正常移动,这样多次处理后,A与B保持安全距离了,则A继续移动。如:角色与怪物走进了自己的攻击区域,则发起攻击,不会继续前进,自然就通过攻击来将"异类"的堆叠避免,如果有必要,也可以把同类堆叠处理改成全类防堆叠处理。"堆叠模块"在每次迭代的最后的逻辑处理。如下图的代码接口,战斗迭代的时候,堆叠发生在寻路导航,AI处理,技能释放等迭代的最后,最后再调用堆叠模块"来"修正堆叠"现象。

voidinit的专栏 721

经典面试题:“你们的项目中是如何做红点系统的“?

面试官你好,红点是复杂游戏必备的提醒玩家与推进玩家游戏进程的工具与手段,在项目中非常常用。每个公司的项目的需求不同,设计的方式和结构可能不一样,我们公司之前的某个项目是这样做的。

voidinit的专栏 607

面试经典问题:如何设计红点系统?

游戏开发中,随着功能越来越复杂,我们会有一些重点的提示,需要让玩家每天都了解与清楚,比如新触发的任务,未领取的奖励,商城中的特惠活动,有未读的系统消息,有新的装备可以穿戴上,达成可以升级条件,升级相关的角色与装备等需求。而二级界面下面可能又有不同,比如任务,二级分类为"系统任务",“好友任务”,下面就有新的任务需要显示红点,一级分类"任务"有红点,同时二级分类"系统任务",“好友任务”也要有红点提示。红点数据,不同的界面层级,有不同的红点数据,比如,一级界面的红点可能显示的是,任务,邮件,商城,奖励等。

voidinit的专栏 1061

Unity面试技巧每日分享

某个类型的某个新上架的商品。1: 方便有红点需求的地方,调用一个接口就可以把红点展示出来,所以我们会提供一个显示红点的接口,只要调用,就能在特定的位置显示红点;而二级界面下面可能又有不同,比如奖励,下面就有未领取的奖励需要显示红点,而正式因为有未领取的奖励,所以一级界面"奖励"那里才有红点。3: 红点的显示有对应的层级,我们会把红点单独的放一个层级,这样避免红点来打乱界面的合批,同时能让红点在一起渲染。红点数据,不同的界面层级,有不同的红点数据,比如,一级界面的红点可能显示的是,任务,邮件,商城,奖励等。

voidinit的专栏 291
上一篇: Unity常用设计模式之代理模式
下一篇: Unity huatuo革命性热更新系列【1】
Clank的游戏栈
Clank的游戏栈 企业官方账号 企业官方账号
博客等级 码龄21年 2889粉丝 561原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值