最新版本的Roblox的自托管游戏服务器。
LOCAL_RCC是一个与Roblox Studio(目前仅Windows)合作的库,允许Roblox Player连接到Roblox Studio托管服务器。
本指南用于在Microsoft Windows上构建。
确保您有以下先决条件:
winget install Ninja-build.ninja克隆存储库:
git clone https://github.com/rsblox/local_rcc.git
有两种构建方法:
确保安装了CMAKE工具扩展安装的Visual Studio代码。
打开克隆的存储库:
code local_rcc
如果提示选择构建套件,请选择amd64 。
CMAKE工具将自动配置项目;要耐心等待,等待输出以完成配置;这包括从Internet获得依赖关系的。
导航到CMAKE选项卡,并将构建类型设置为RelWithDebInfo 。
在同一CMAKE选项卡中的项目大纲中,构建local_rcc [local_rcc.dll]目标。完成后,库应位于bin/local_rcc.dll 。
打开Visual Studio 2022并导航到File -> Open -> CMake... ,然后导航到先前克隆的存储库中的CMakeLists.txt文件。打开输出并注意获取依赖关系并配置要完成。这可能需要一点。
确保顶部上的配置设置为x64-RelWithDebInfo 。在“解决方案资源管理器”窗口中,单击图标,并带有标题为“解决方案和可用视图之间的切换”。单击CMAKE目标视图。 CMAKE配置成功后,应填充此列表。右键单击local_rcc目标,然后单击“构建local_rcc”。结果构建应位于out/build/x64-RelWithDebInfo/local_rcc.dll 。
有四个步骤可以使团队测试与播放器兼容:设置快速标志,阻止了一个未手持的项目,编译兼容字节码并复制字节码。
覆盖快速标志, DebugLocalRccServerConnection ,在玩家和工作室上都可以在客户端和服务器之间建立连接。它还将迫使客户连接到localhost|53640 。
仅使用此功能,您就可以加入玩家的工作室团队测试 - 但是,它尚不可播放。
玩家加入团队测试服务器后不久,它将在发送ClientQoSItem之后将其踢 - 该clientqositem不受工作室的处理。如果将ClientQoSItem传递给RBX::Network::Replicator::deserializeItem ,则可以通过拒绝对该项目进行验证来解决。
连接到团队测试服务器后,打开播放器中的开发人员控制台显示出一些奇怪的错误,该错误通过将其复制到播放器复制的LocalScript实例的路径显示,并且没有执行它们。这部分是由于工作室如何填充服务器的legalScripts向量的内容。 LegalScript是一个“白名单”脚本,用于复制,包含源和字节码。功能RBX::Network::Server::registerLegalSharedScript用于注册和编译这些脚本。
Studio已经调用此功能,甚至调用LuaVM::compile但是,在Studio上它只是返回一个空的std::string 。可以通过使用LuaVM::compile和编译源LuaVM::BytecodeEncoderClient来解决这一点。
即使正确编译脚本并使用字节码填充了每个LegalScript ,也会在开发人员控制台中出现相同的错误。启动服务器后,会生成NetworkSchema ,其中包含反射数据库中每个类的信息。这包括有关如何发送属性(例如Script.Source的信息,该属性由其NetworkValueFormat确定。默认情况下,Studio选择Script.Source的类型。Source将ProtectedStringSource ,并将脚本的源代码发送给其他工作室客户端以供他们编译。
可以通过强迫服务器使用ProtectedStringBytecode来解决这一问题,这将使它从legalScripts向量矢量中获取intecode,并在序列化属性时将其发送给。 NetworkSchema的生成发生在RBX::Network::NetworkSchema::generateSchemaDefinitionPacket中,而感兴趣的一部分是为Reflection type ProtectedString选择相应的NetworkValueFormat时。