终于这个元旦假期在《芈月传》的陪伴下落下了帷幕,小菜鸟又要开始和大家一起分享心得了,我们今天要讲点什么呢?
Unity~unity~菜鸟在线主讲unity!
没错,还是跟大家分享一下关于unity手游的技术知识。
大家都知道开发一款网络游戏,首先要考虑的是客户端服务端之间用何种编码格式进行通信。之前我们介绍了Unity游戏前端使用protobuf的方法。今天我们来谈谈服务端如何使protobuf。在游戏服务端语言百花齐放的今天,除了比较传统的c/c++外,其实Java,Erlang,Python都有很多团队还在使用。
那我们就来一下Java作为服务端开发语言。在国内很多出色的页游和手游都是采用Java作为服务端语言的。今天主要探讨如何简化Protobuf程序的开发。
按照传统的开发流程,都是如下:
1.先编写proto文件格式,例如
看图
2.运行编译程序,生成实体类Person
3.在程序中可以直接使用Person类的相关函数进行序列化和反序列化
上面的流程看似很方便了,有什么问题呢?还能不能再改进呢?我们先看看生成的Person类代码吧,竟然有几千行。
实际上我们只是包含了3个变量而已,可读性大大降低了。其次,开发过程每次都得借助外部的编译工具来生成代码。
于是我们可能就有了一个简单的思路。自己编写Person的类,然后通过外部的api,直接对这个类进行序列化和反序列化。
直接抛弃了protoc工具。
这个思路,已经有人实现出来了,最早是在c#语言版本的protobuf-net实现了。它利用c#的Attribute(类似Java的Annotation注解)+反射来实现普通实体类的Protobuf序列化和
反序列化。