Unity 年度总结:一款游戏的从0到1

本文记录了一款FPS吃鸡手游的开发过程,从事件管理层、Protobuf协议工具到网络协议管理层、UI系统等多个方面进行了详细总结。作者反思了在C#与Lua层通信、协议解析、资源管理等方面的挑战与优化空间,展示了游戏开发中的关键技术和经验教训。
摘要由CSDN通过智能技术生成

2020年开端,公司刚好开始一款新的项目,一款FPS吃鸡类手游。

到今日,大部分功能都已经实现,基于自己在此项目中的经历,写下此文。

思考自己一年来学习到的方方面面的知识点,以及部分做的不够好的地方。

目录

一、项目角度

(一)事件管理层

(二)Protobuf协议工具

(三)网络协议管理层

(四)界面管理层

(五)UI规范文档

(六)资源管理工具(未完全完成版本)

(七)各种UI组件

(八)背包系统

(九)音效系统

(十)Buff系统(部分功能)

(十一)聊天系统(支持图文混排)

(十二)多语言版本系统

(十三)技能系统

(十四)其他功能

二、个人角度

三、总结


一、项目角度

主要具体到自己负责的内容,进行反思与总结。

以下为负责的内容,并不包含所有负责的内容,只写出比较重点以及有所反思的:

(一)事件管理层

前提:

全新的整套事件管理层

具备以下功能:

  • 事件侦听,移除侦听,触发等
  • 支持多参数,不同参数类型,自定义参数类型
  • 只是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界面的管理,界面的异步加载,生命周期,事件监听,界面适配方面的功能。

具备以下功能:

  • 适配各个分辨率的手机
  • 尽可能的达到跟美术效果图效果一样

实现难点:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值