本篇是 StickEngine 架构系列的一部分,整体概述见 http://dreamyouxi.com:7129/blog/1203。
为什么引入 C#
引入 C# 的主要目的是降低开发难度,特别是战斗服部分。与使用 Lua 相比,C# 具备更高的性能,同时支持双端开发(服务端与客户端共用逻辑),优势明显。
引擎主体仍由 C/C++ 实现,这一点与 Unity 的架构很相似。引入 C# 后,服务端支持 C/C++、Lua、C# 三种语言的混合编程。
C# 的应用场景
C# 在 StickEngine 中主要用于游戏逻辑开发,尤其是战斗部分。C# 与 C/C++ 的混合运行机制已在以下篇章中做了基础概述:Http服务器-第十步加入基于Mono平台的C#脚本支持,详见 http://dreamyouxi.com:7129/blog/1277。
本篇重点阐述 C# 在 StickEngine 中的机制、概念与实现。
设计思路
整体设计原则是:C/C++ 负责引擎层和大部分 GamePlay 框架(如网络同步等),C# 负责部分逻辑编写,以降低实现难度并实现双端开发的可能性。API 理念设计上靠向 Unity,使开发人员能够快速上手。在整个架构中,C# 更多地扮演脚本语言的角色。
dll 组织结构
在组织结构上共有两个 dll:
- StickEngine.dll:引擎层,与 C/C++ 版本紧密对应。
- Scripting.dll:游戏逻辑层,GamePlay 开发人员只需编写这个 dll 即可。
引擎层 dll 基本模式
逻辑层 dll 示例
后续
下篇案例讲解 MatchServer 的匹配机制,详见 http://dreamyouxi.com:7129/blog/1299。