本篇是 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