C# DarkRift 游戏服务端框架教程 02 服务器基础知识

简要概述

在我们深入了解DarkRift的艺术之前,我们应该先探索DarkRift的运作方式。

DarkRift使用插件来实现所有的服务器端逻辑。您可以像开发标准的.NET库一样编写插件,然后将生成的DLL文件放入DarkRift的“插件”目录中。DarkRift提供了大量API来管理客户端和发送消息等操作,并提供事件来通知您的插件客户端何时连接、发送消息等等。

 与服务器代码相关的一切都在DarkRift.Server命名空间中,与客户端相关的一切都在DarkRift.Client中,而两者都使用的内容则在DarkRift中。

设置插件

在Visual Studio中创建一个新的C#类库项目,命名为“AgarPlugin”,并添加对DarkRift.Server.dll和DarkRift.dll的引用。

警告

如果您使用的是DarkRift的免费版本,则需要创建一个.NET Framework插件,只有Pro版本的.NET Core构建支持.NET Core/Standard插件。

将默认类重命名为AgarPlayerManager,并相应地重命名文件。在文件的顶部添加using指令(using DarkRift; 和 using DarkRift.Server;),以便我们可以访问DarkRift.Server和DarkRift命名空间。

DarkRift中的所有插件都必须继承自DarkRift.Server.Plugin,以便DarkRift可以正确地发现和实例化它们,并且可以轻松地读取有关插件的详细信息。这也是您进入DarkRift API的入口,以便在正确的服务器实例上进行更改。

请让AgarPlayerManager从Plugin继承,您会注意到Visual Studio会抛出一个错误,说没有构造函数,请添加它。然后您会注意到它说它没有实现一些抽象属性,请再次添加它们。如果您跟着做,您应该有一个像这样的类:

public class AgarPlayerManager : Plugin
{
    public AgarPlayerManager(PluginLoadData pluginLoadData) : base(pluginLoadData)
    {

    }

    public override bool ThreadSafe
    {
        get
        {
            throw new NotImplementedException();
        }
    }

    public override Version Version
    {
        get
        {
            throw new NotImplementedException();
        }
    }
}

自动生成的属性应该是相当易于理解的。在实现它们时,请记住以下几点

Version 应该遵循语义化版本控制(除非您真的不喜欢最佳实践)。它用于触发插件的升级(我们稍后会介绍),因此您应该现在给它一个默认值。
ThreadSafe 指示您的程序是否可以处理多线程事件以提高性能。由于我不会涉及任何多线程,所以将其设置为false。如果您了解多线程,那么在最后启用多线程可能是一个不错的练习!

经过一些格式化,我们应该有以下代码:

public class AgarPlayerManager : Plugin
{
    public override bool ThreadSafe => false;

    public override Version Version => new Version(1, 0, 0);

    public AgarPlayerManager(PluginLoadData pluginLoadData) : base(pluginLoadData)
    {

    }
}

如果您想要尝试,您可以构建该库并将DLL放在DarkRift的插件文件夹中,当您启动DarkRift时,您应该会看到您的插件被加载进来!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值