
游戏后端
文章平均质量分 85
凌云天空
这个作者很懒,什么都没留下…
展开
-
最短路径-----Dijkstra算法相关以及实现
最近开始时开发时,需要计算行军的最短路径,重温大学时的数据结构那本书中关于Dijkstra算法相关内容,看了网上一些博客,将我对算法的浅显的理解记下来。如图是一个多个节点,每个节点多条路劲的,没有方向的路径图。以A为起点找出A到B、C、D、E、F的最短路径。 Dijkstra算法只会关注当前结点能连接到的节点,不关注远处连接不了的点。比如要求A到B、C、D、E、F的最短路径,只会关注A->B和A->C,而不会关注A到D、E、F节点。A->B...原创 2021-06-04 13:42:58 · 234 阅读 · 0 评论 -
游戏的大地图中对象状态的同步
游戏战场的地图很大,在地图上活跃着成百上千的玩家。服务器是如何同步地图上玩家英雄、怪物、建筑等地图对象的状态呢?肯定不能把地图上所有对象的状态同步给玩家,因为数据量实在太大,服务器只要将玩家视野周围的地图对象状态同步给玩家即可,这样既可以满足需求,下面介绍如何同步玩家视野周围的地图对象状态。 可以把地图看成由很多个小方格组成的,而玩家英雄、怪物、建筑都在方格上,而服务器只需要将视野所在格子周围格子上的地图对象的状态变化同步给玩家即可,这正是玩家屏幕所看到的区域。如图: 我们可...原创 2020-09-22 17:17:59 · 1052 阅读 · 0 评论 -
网络游戏中使用TCP处理粘包的两种思路
TCP作为面向连接的、可靠的、基于字节流的传输层网络通讯协议,应用非常广泛。由于是基于字节流的网络协议,我们使用TCP协议进行网络通讯,底层会将发送的数据进行拆分组合,这样一般都会遇到粘包和半包的问题。一般我们为了解决粘包问题,解决粘包和半包问题有两种思路:将发送数据封装成包,就像TCP协议一样加一个包头。 使用分隔符,对发送数据时在数据尾部加入分割符。 第一种方式处理粘包,可以在要发送数据的首部加2字节大小的包头储存数据包的长度,在数据结束位置加一个字节的包尾用来校验数据。校...原创 2020-09-07 19:15:05 · 741 阅读 · 0 评论 -
网络游戏战斗系统之skill系统具体设计实现
网络游戏的战斗系统中,技能是战斗单元释放作用在目标上造成一系列的技能效果。一个战斗单元可以拥有多个技能,根据玩家操作或者自动,判断技能释放满足条件(cd,魔力等条件)释放技能,这时候根据技能生成一个技能Action对象,最终在目标上生效。 每一个战斗单元需要一个skillManger对象管理其拥有技能(skill对象),skill对象保存技能的基础配置数据,技能上次释放时间等信息,用于生成skillAction对象。而skillAction对象根据时间线执行,最终在目标上产生技能效果。...原创 2020-08-31 18:57:03 · 1684 阅读 · 0 评论 -
网络游戏战斗系统之buff系统具体设计实现
在网络游戏中的战斗形式多种多样,不同游戏的战斗逻辑也有很大的差异。但是一般都会涉及技能系统和buff系统,两种之间相互关联,技能可以产生buff作用在目标上,影响目标。同时buff也会影响技能的释放效果,两者都可以算得上游戏战斗系统最重要的元素。 在游戏战斗中有许多各种各样复杂的buff和技能,这些buff和技能是由基础的buff和技能效果机制组合形成的。通过基础的机制效果的组合,形成各种各样的复杂的buff和技能。这些基础的buff效果机制和技能效果机制支持策划通过配置表配置数据,来影响...原创 2020-08-29 10:50:09 · 4331 阅读 · 0 评论 -
网络游戏对战数据同步浅析
在网络游戏中玩家间对战,数据同步一般有两种方式,状态同步和帧同步。 在状态同步中战斗逻辑放在服务器端,客户端上传玩家操作,根据操作由服务器验算战斗逻辑,然后服务器周期性的将逻辑数据比如玩家的坐标、朝向、属性值等数据发送给客户端。而客户端就相当于一个播放器。 状态同步中这样的优点是不会存在数据不一致问题,因为是同步状态断线重连恢复比较快,由于逻辑在服务器端所以作弊比较困难,但是缺点是流量消耗大,对于实时性要求比较高的游戏,手感也会差。 在帧同步中战斗逻辑放在客户端,服务器会...原创 2020-08-21 16:54:25 · 1262 阅读 · 0 评论