游戏商务开发思路及解决方案理解思路

游戏商务开发思路及解决方案理解思路

目录1.游戏商务开发思路1.1客户端部分1.2服务器部分2.基本游戏服务器设计思路3.一些思路

1.游戏商务发展思考

游戏架构设计与策划基础,游戏服务器架设教程

游戏开发需要熟悉高层业务逻辑,以进一步加深对引擎基础代码的理解。游戏业务逻辑的优秀开发者往往对引擎逻辑有非常独特的理解。这里整理一下我对游戏业务的粗浅理解。游戏业务逻辑分为客户端部分和服务器部分。其中,客户端的部分逻辑主要负责游戏的表现,用于做好游戏的销路。服务器部分的逻辑是整个游戏的灵魂,大多数游戏的逻辑、数值计算发生在服务器部分(这里以状态同步为例,不考虑帧同步网游)。

客户端开发和服务器开发需要两个完全不同的开发思路,两者都需要所谓的“框架”。那么,框架是什么?

开发框架在我看来,粗略的理解可以比作台式机主板。强大的主板,可以在上面插入更大的内存、更好的显卡和更多核心的处理器。糟糕的主板支撑不住很多强大的组件。游戏的框架也是一样的,优秀的框架具有更强的扩展性,可以搭载更多的功能。相反,较弱的框架往往遇到一些新功能,整个代码框架就会变得混乱,然后随着耦合性的提高,整个项目几乎崩溃。因为扩展的空间很少。

但是,优秀框架并非是软件工程的银弹良好的框架只会大大延缓项目的老化,但并没有阻止项目的死亡。当项目大到一定程度时UI界面,单纯投入人力物力进行重构往往解决不了问题。成功的项目会逐渐变得巨大,只会成为利维坦级的怪物。本部分内容可参考软工圣经《人月传说》的软件工程管理哲学,此处不再赘述。

1.1客户端部分客户端部分作为游戏表现的核心开发内容,可以说是游戏整体销售对象的关键。客户端逻辑决定了游戏的玩法、表现内容、画质等一系列重要内容。这一部分的开发内容也是几乎所有人都理解的“游戏开发”。游戏客户端往往需要考虑更多的内容。在这里,我认为是基于基本的引擎,整理需要考虑的、构建游戏所需的内容。

如何将游戏资源加载型号、地图等资源加载到游戏中。游戏物体材质系统游戏中材质的格式、着色器的创建、管线的渲染方法等。脚本框架游戏内逻辑的创建框架,机制是什么?模型动画系统模型动画状态机、动作切换、二维混合树、IK动画等。技能特效系统角色技能释放、判定、特效表现等。AI状态机、行为树角色的AI设计基于寻路算法的各种表示。基于刚体碰撞的实时物理表示。物理碰撞检测UI部分逻辑,创建各种回调函数,各种模块设计。检测到UI管理器硬件输入并与之关联。输入模块游戏中的计时器。游戏计时器用于解析服务器消息或将消息发送到服务器。当然,也有一些常用的框架:

网络模块该框架基于游戏对象和组件之间的依赖关系,全员组合构建整个游戏。,我个人认为是game对象组件框架的升级版。充分利用了计算机的空间和局部性质。1.2部分服务器端开发是整个游戏开发的灵魂,可以说整个游戏的玩法机制由这一部分决定。另外,服务器端开发的想法与客户端不同。客户端的开发是线性思维。这意味着,如何在当前机器上用更少的资源获得更好的酷游戏效果。服务器端必须始终考虑,创建了GameObjectComponent框架这一新功能。因此,需要考虑更多的性能问题。因此,这里列举我作为服务器应该掌握的最基本的内容:

熟练使用ECS框架传输层的API。是要给千千万万台机器跑的实现状态同步、帧同步等。如何设计Socket优雅的RPC协议是服务器逻辑的关键。基于消息的信息传输。同步方式用于计算游戏服务器中的时间记录。RPC协议在许多情况下,为了安全起见,游戏逻辑的判定是放在服务器上进行的。消息机制TCP/UDP/KCP。当然,还有很多更深的主题,如负载平衡、帧同步浮点数和随机数。这里省略说明。掌握了以上内容,就足够写基础的游戏服务器了。

2.关于基本游戏服务器的设计思路在这里,我将分享从零开始构建状态同步服务器的基本思路。整个游戏服务器的框架分为三个部分:

基础插座层。本部分是由套接字API组成的层次结构。基本上没什么好说的。消息的发送和接收层。当前层用于处理链接到服务器的客户端逻辑。管教

合第一层编辑好的SocketAPI,为第三层提供封装好的接收、发送数据接口。管理当前游戏中唯一的客户端ID、Socket列表。服务器核心逻辑层。所有的服务器逻辑都写在这一层。

我认为,一个基础游戏服务器的设计思路应该尽可能做到:

功能解耦。数据解耦。

因此,针对第二层的客户端列表,可以将客户端socket封装成不同类型的entity,每一个entity具有不同的功能(功能解耦)。同时创作人,不同客户端通过entity去访问数据都是互相独立的操作(数据解耦)。以我设计的基于建房间开始游戏的状态同步服务器为例:

链接实体。客户端链接到服务器后,就成为一个链接实体。链接实体的功能有限,只有登录注册。登录实体。登录后,增加选人、商城、进入房间界面等等功能。失去登录、注册功能。房间实体。进入房间界面后,增加开房、进房、准备、进入游戏等功能。失去第二层功能。游戏实体。进入游戏后,增加游戏逻辑功能(如放技能、攻击、走位等)、退出游戏功能等。失去其他功能。

筋斗云可以看到,不同层级的实体,其具有完全不同的功能。也就是说,客户端在不同阶段,其开放的功能也是不同的。这极大的避免了功能耦合。筋斗云可以维护一个字典,来快速查找当前客户端究竟是在哪一层实体上。同时,实体内逻辑调用采用RPC协议游戏服务端开发教程,进而快速调用对应方法。

当然除了游戏实体的功能解耦外,整个服务器维护的其实是一个房间管理器。房间管理器下属存在很多房间。每一个房间都可以被实体所创建调用。同时,一个房间对应一个独一无二的世界。采用多进程的方式可以使得多个房间同时无压力运行。具体结构如下:

classRoomManager{public:vectorroomList;};classRoom{public:Worldworld;};

同时,每一个房间内,维护着当前游戏内的客户端列表,以快速的同步游戏内消息。房间内的World设计,就和客户端的思路比较接近了。一个比较形象的比喻是,在服务器内复现整个逻辑世界。设计游戏内部的AI、地形(A*算法)等,就可以完成服务器内的世界编写。

简而言之,游戏开发是客户端和服务器端互相打配合的产物。以状态同步为例,服务器运行时,只需要给客户端发送该客户端的状态属性,当前游戏其他玩家的状态属性,再由客户端依据这些属性进行相应表现游戏服务端开发教程,就可以完美进行多人同步游戏。

3.一些思考

上面这个服务器思路可以说是玩具级别了,但是更多的是说明设计思路。服务器的坑非常深,以后有机会再慢慢填坑。私以为,作为一名工程师,最重要的不是会什么语言,什么框架,熟练使用XXX;最重要的是解决问题的能力。希望上述的思路分享可以帮助到一些入坑游戏开发的同学。与各位共勉。

文章来源:http://www.jd-cloud.cn/blog/post/104537.html