基于Socket/Tcp开发网络游戏(完整游戏流程,socket入门实战)

改变,从写好每一篇博客开始。以后所有后悔的时光,都将随努力慢慢逝去。

游戏效果图:

游戏运行前,先在VS运行服务端。开始面板,摄像机漫游场景,点击登录按钮进入登录界面。

基于Socket/Tcp开发网络游戏(完整游戏流程,socket入门实战)_第1张图片

登录面板和注册面板,点击登录发送登录请求到服务端,查询数据库看是否存在用户名,点击注册就进入注册面板进行注册账户。登录成功进入游戏房间列表。(UI组件都用DoTween做了动画,游戏场景内有音效)

基于Socket/Tcp开发网络游戏(完整游戏流程,socket入门实战)_第2张图片

房间列表左边显示当前账户的账号,战绩,点击创建房间可以创建房间,进入等待另一个玩家加入的面板,也就是房间面板;点击刷新可以刷新列表,看是否有其他人创建了房间,点击加入可以加入该房间。

基于Socket/Tcp开发网络游戏(完整游戏流程,socket入门实战)_第3张图片

玩家加入房间后,房主点击开始游戏就会进入游戏场景,非房主点击开始游戏则会提示不能开始游戏信息。

进入游戏场景后,可以按上下右左进行人物的控制(有人物的动画,状态机很简单),点击鼠标发射箭矢,箭矢射中物体会有爆炸特效,射中敌人同时发出射中敌人的音效,两方可以在这个游戏场景内对战,每人初始血量为200,每支箭矢的伤害在10~20之间随机,有一方死亡则会显示战败(胜利),然后重新进入房间列表面板。

基于Socket/Tcp开发网络游戏(完整游戏流程,socket入门实战)_第4张图片

————————————————————————————————————————————————————————

UML图:

基于Socket/Tcp开发网络游戏(完整游戏流程,socket入门实战)_第5张图片

基于Socket/Tcp开发网络游戏(完整游戏流程,socket入门实战)_第6张图片

基于Socket/Tcp开发网络游戏(完整游戏流程,socket入门实战)_第7张图片

基于Socket/Tcp开发网络游戏(完整游戏流程,socket入门实战)_第8张图片

 

第一张UML:首先有个Server类,主要用来绑定ip和端口号,然后负责接收来自客户端的连接,然后把接收到客户端映射到Client类,在Client类处理接收到的数据,这里通过Message类来解析打包数据,然后把处理好的数据调用Server类处理请求的方法,把来自客户端的不同请求分发给ControllerManager。在Client这个类里面还要做发送数据给客户端,连接数据库等功能。(Client类是服务端接收到客户端连接后映射出客户端的类,是属于服务端的)  在ControllerManager类,根据不同的Request调用不同的Controller,每个Controller继承自BaseController,Controller通过DAO层在连接数据库,数据库有两个表,分别是用户信息表,战绩表,所有Model层有User类和Result类。不同的Controller里面调用不同的方法处理了请求后,返回响应给客户端。

第二张UML:服务端与客户端的通信流程,通过这种方式来传递数据,好处方便解析处理数据,通过不同RequestCode来调用不同的Controller,通过不同的ActionCode来调用不同的方法,每个ActionCode对应一个RequestCode,每个RequestCode对应一个或多个ActionCode,一个RequestCode对应一个Controller。

第三张UML:这是一个类库,包括各种Code,在服务端和客户端都引用,方便开发,我用的是unity5.6版本开发的,所以类库的版本得用2.0,不然Unity识别不了。

第四张UML:这是介绍客户端,首先有个游戏入口类,也就是Gamefacade类,管理了所有的Manager,同时也是一个中介者,每个Manager之间调用方法通过Gamefacade来调用,减少耦合性。游戏以panle为单位,每个panel对应一个继承自Basepanel的panel类,每个panel类对应一个或多个继承自BaseRequest类的request类。(有一个UIPanelTypeInfo的josn文件,包含panel名字和panel路径,方便调用,在UIManager里面解析JSON)

注释:这是我看教程然后自己做的,很全面,涉及面较多,感觉还不错,是一个入门网络游戏的很好实例。(需要源码的朋友私聊,免费分享共同学习)

你可能感兴趣的:(LittleDemo)