Unity游戏逻辑服务器实践

Posted hackmind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity游戏逻辑服务器实践相关的知识,希望对你有一定的参考价值。

0x01:前言

由于服务器需要做客户端战斗模拟,我们的服务器是用python写的,理所当然我们战斗服务器也采用python重写了一套战斗服务器,遇到了哪些问题:
1、浮点数运算精度问题
2、运行效率问题
3、Unity核心库源码问题

0x02:奇思妙想

我们团队内部想,既然客户端有现成的代码,何不自己实现网络通信部分,把战斗部分代码剥离出来,直接用Unity导出运行文件不就行了,况且Unity支持跨平台。好吧又一次我们天真了。遇到问题:
1、线上服务器的操作系统版本,Unity不支持
2、线上服务器只有很弱的VGA(Standard VGA Graphics Adapter)集成显卡,Unity压根不支持

0x03:回到本源

1、Unity如何实现跨平台
2、Unity那些核心库需要自己实现

0x04:问题解决

1、引入Mono
2、统一部分Unity库
3、剥离战斗部分代码
4、添加网络通信

0x05:反思

1、游戏整个设计过程中,如果要做录像功能,需要将渲染这部分代码有抽象层,这样在后期做秒算,或者服务器运算的时候,只要实现渲染这部分的逻辑即可
2、Unity里动画事件回调,需要自己实现一套配置文件,因为在快速验算的时候,不能调用Unity动画关键帧回调函数
3、游戏的时间需要自己控制,包括Update, 如果每个物件自己控制Update,没有有效的手段控制逻辑执行顺序
4、游戏的时间,需要自己控制,在不同的战斗中,帧速率是不一样的,对应的时间也是不一样的
5、对于Unity里的协程,由于不能控制执行逻辑顺序,需要自己实现一套
6、游戏里用到了A* 寻路插件,这个寻路插件里实现用到多线程和一些随机数,寻路这块自己也需要实现

以上是关于Unity游戏逻辑服务器实践的主要内容,如果未能解决你的问题,请参考以下文章

小游戏Unity游戏愤怒的足球(小鸟)

2020游戏开发入门-05(游戏逻辑,主要是状态同步和帧同步)

1.10 从0开始学习Unity游戏开发--接收用户输入

Unity 之 手把手教你实现自己Unity2D游戏寻路逻辑 文末源码

Unity游戏中的子弹碰撞体实现逻辑漫谈

[网游客户端业务逻辑] unity下使用lua开发业务逻辑