2020年开端,公司刚好开始一款新的项目,一款FPS吃鸡类手游。
到今日,大部分功能都已经实现,基于自己在此项目中的经历,写下此文。
思考自己一年来学习到的方方面面的知识点,以及部分做的不够好的地方。
目录
一、项目角度
主要具体到自己负责的内容,进行反思与总结。
以下为负责的内容,并不包含所有负责的内容,只写出比较重点以及有所反思的:
(一)事件管理层
前提:
全新的整套事件管理层
具备以下功能:
- 事件侦听,移除侦听,触发等
- 支持多参数,不同参数类型,自定义参数类型
- 只是C#层与Lua层共通,互通,能同时触发C#层与Lua层
实现难点:
- 事件的存储结构,C#层与Lua层语法不同,存储结构不同,调用事件的方式不同。
- 双层互通,大部分C#层事件不会触发到Lua层,大部分Lua层也不会触发到C#层,使用Bool标记位,决定具体事件是否触发到两个层级。
- 双层互通,中间参数传输的GC消耗,内存消耗等等。
反思:
- C#层与Lua层通信的那部分,可以继续优化一波,特别是自定义类型参数的优化。
(二)Protobuf协议工具
前提:
Protobuf的协议是支持各个方面的脚本的,为了更方便的使用,进行协议文件分析,导出部分文件,使得工作开发更快。
具备以下功能:
- 支持Protobuf中,协议结构,枚举类型等各个方面的数据,在Lua层生成对应数据结构体
- 支持Protobuf中,各个协议的协议号,在Lua层生成对应的协议号枚举类型
- 支持Protobuf中,所有数据结构,协议等注释,同时在Lua层产生提示功能
实现难点:
- 本身Protobuf的协议版本有很多,需要支持大部分的版本。
- 开发服务端的各个服务端工作人员编写协议时候,各自有不同的写法习惯,导致部分解析不同,需要广泛的支持各种代码写法。
反思:
- 解析协议的代码部分,应该可以写出更加高效的解析方法。
(三)网络协议管理层
前提:
当上面的Protobuf协议工具写完,发现另外一个问题。
因为公司同期有一个项目也在开发unity手游,开发了接近半年的项目,所以我们这个项目也是拿了那个项目的部分架构。
在使用中,才发现,使用的Protobuf解析那块,还是使用的protoc-gen-lua的解析方式,此方式并不支持很多复杂的类型,例如数据嵌套,map等。
所以我开始重新构建整个网络协议管理层,并且,转而使用莉莉丝工作的starwing编写的lua-protobuf。
具备以下功能:
- 支持各种复杂的数据结构类型
实现难点:
- 在项目开发了几个月的时期,修改协议架构,需要尽可能的少改动到上层代码。
反思:
- 因为开发周期紧张,此网络协议管理层,并不包含很好的优化管理,以及队列信息管理等。
- 有空一定要改。(狗头)
(四)界面管理层
前提:
界面管理层,完整搭建整个UI界面的管理,界面的异步加载,生命周期,事件监听,界面适配方面的功能。
具备以下功能:
- 适配各个分辨率的手机
- 尽可能的达到跟美术效果图效果一样
实现难点: