最MC论坛

标题: [资源][全版本][开源]ProjBobcat——下一代C#启动核心,提供完整自由快速的开发体验。 [打印本页]

作者: Eric_Stevens    时间: 2020-2-8 17:44
标题: [资源][全版本][开源]ProjBobcat——下一代C#启动核心,提供完整自由快速的开发体验。

mcbbs帖:https://www.mcbbs.net/thread-953949-1-1.html
我就是开发者之一,我同意我转载。
埃里克没有回归,只是来发个贴而已。
ProjBobcat是一个由老腊肉( @老腊肉726 )主导的日冕工作室开发的高度模块化的MC启动核心


为什么采用ProjBobcat?
-  ProjBobcat采用MIT协议发行。这意味着您可以任意以商业和非商业目的使用和编辑ProjBobcat的源代码,只要您保留我们的版权声明。由此,ProjBobcat的第三方修改的合法性就有了保证。(相比之下一些其他的启动核心,如KMCCC,其采用lgpl协议直接限制了您在编辑其源代码后只能以lgpl二次发行。)
-  ProjBobcat是一个年轻的项目。年轻意味着它还在活跃更新的状态中,每隔一段时间,开发团队都会给其加上新功能并且进行错误修复。
-  ProjBobcat是高度模块化的。这意味着启动过程中几乎所有的方法、数据模型等都是可以在没有workaround的情况下外置接入的,你甚至不需要编辑本项目的代码,就能实现无数种可能。
-  ProjBobcat是面向生产环境的。ProjBobcat是CMFL启动器的自研启动核心,并不是凭空开发和测试的,因此,ProjBobcat对生产环境的兼容性较强,部署能力也较强。
-  ProjBobcat的代码易于研究学习。ProjBobcat的体系结构非常清晰,而且我们正在以中英双语的形式完善整个项目代码的注释体系。
-  ProjBobcat有只橘猫,其他项目没有。

安装
有3种主要方法安装ProjBobcat。
-  直接clone我们的Github项目:https://github.com/Corona-Studio/ProjBobcat。希望您也能反手给咱一颗星。
-  在Visual Studio项目的NuGet程序包管理器中搜索ProjBobcat,选择最新稳定版本安装即可,安装过程中可能会要求您同意MIT协议。
-  直接在Visual Studio的程序包管理控制台输入:Install-Package ProjBobcat

使用ProjBobcat开发的启动器
CMFL启动器 - 超级无敌爆炸好用的优良启动器!




核心特点
1、高度模块化的启动组件
2、高度定制化的API,用户可以直接在我们的基础上开发新的启动模型
3、支持版本隔离、离线,正版验证等特性

反馈BUG或和我们一起开发?
如果您想加入我们并和我们一起将这只“大猫”变得更强壮。欢迎您加入我们的讨论组(见下方)。
如果您有任何改进意见想和我们提出,请在帖子评论区留言或是加入我们的官方讨论组进行讨论~

联系方式

ProjBobcat 简略使用指南

功能列表
功能状态
离线验证模型
正版验证模型
版本隔离
launcher_profiles.json解析
Nuget分发【开发中】
旧版Forge安装模型【开发中】
新版Forge安装模型【开发中】
依赖自动补全【开发中】


使用说明
ProjBobcat提供了3大组件和一个核心总成来支撑起整个核心框架
父级接口父类作用
DefaultGameCoreIGameCoreNG提供默认启动核心所有实现
DefaultLaunchArgumentParserIArgumentParserLaunchArgumentParserBase提供默认启动参数解析
DefaultLauncherProfileParserILauncherProfileParserLauncherProfileParserBase提供默认launcher_profiles.json解析
DefaultVersionLocatorIVersionLocatorVersionLocatorBase定位游戏版本

基本使用
初始化核心
var core = new DefaultGameCore
{
    ClientToken = clientToken,
    RootPath = rootPath, //.minecraft/的路径
    VersionLocator = new DefaultVersionLocator(rootPath, clientToken)
    {
        LauncherProfileParser = new DefaultLauncherProfileParser(rootPath, clientToken)
    }
};


启动游戏前配置
var launchSettings = new LaunchSettings
{
    FallBackGameArguments = new GameArguments // 游戏启动参数缺省值,适用于以该启动设置启动的所有游戏,对于具体的某个游戏,可以设置(见下)具体的启动参数,如果所设置的具体参数出现缺失,将使用这个补全
    {
        GcType = GcType.G1Gc, // GC类型
        JavaExecutable = javaPath, // Java路径
        Resolution = new ResolutionModel // 游戏窗口分辨率
        {
            Height = 600, // 高度
            Width = 800 // 宽度
        },
        MinMemory = 512, // 最小内存
        MaxMemory = 1024 // 最大内存
    },
    Version = versionId, // 需要启动的游戏ID
    VersionInsulation = false, // 版本隔离
    GameResourcePath = Core.RootPath, // 资源根目录
    GamePath = path, // 游戏根目录
    VersionLocator = Core.VersionLocator // 游戏定位器
};

launchSettings.GameArguments = new GameArguments // (可选)具体游戏启动参数
{
    AdvanceArguments = specificGCType, // GC类型
    JavaExecutable = specificJavaPath, // JAVA路径
    Resolution = specificResolution, // 游戏窗口分辨率
    MinMemory = specificMinMemory, // 最小内存
    MaxMemory = specificMaxMemory // 最大内存
};

确定验证模型
launchSettings.Authenticator = new OfflineAuthenticator
{
    Username = "您的游戏名"
    LauncherProfileParser = Core.VersionLocator.LauncherProfileParser // launcher_profiles.json解析组件
},


启动游戏
var result = await Core.LaunchTaskAsync(launchSettings).ConfigureAwait(true); // 返回游戏启动结果,以及异常信息(如果存在)

启动核心事件列表
您可以在启动核心内注册以下事件来实现完整的日志记录

名称方法签名作用
GameExitEventDelegate(object sender, GameExitEventArgs e)游戏退出事件
GameLogEventDelegate(object sender, GameLogEventArgs e)游戏日志输出事件
LaunchLogEventDelegate(object sender, LaunchLogEventArgs e)启动日志输出事件


作者: York    时间: 2020-2-8 17:48
York没有回归,只是来回个贴而已。
(摊手)




欢迎光临 最MC论坛 (http://www.zuimc.com/) Powered by Discuz! X3.2