我就是开发者之一,我同意我转载。 埃里克没有回归,只是来发个贴而已。 ProjBobcat是一个由老腊肉( @老腊肉726 )主导的日冕工作室开发的高度模块化的MC启动核心
为什么采用ProjBobcat? - ProjBobcat采用MIT协议发行。这意味着您可以任意以商业和非商业目的使用和编辑ProjBobcat的源代码,只要您保留我们的版权声明。由此,ProjBobcat的第三方修改的合法性就有了保证。(相比之下一些其他的启动核心,如KMCCC,其采用lgpl协议直接限制了您在编辑其源代码后只能以lgpl二次发行。) - ProjBobcat是一个年轻的项目。年轻意味着它还在活跃更新的状态中,每隔一段时间,开发团队都会给其加上新功能并且进行错误修复。 - ProjBobcat是高度模块化的。这意味着启动过程中几乎所有的方法、数据模型等都是可以在没有workaround的情况下外置接入的,你甚至不需要编辑本项目的代码,就能实现无数种可能。 - ProjBobcat是面向生产环境的。ProjBobcat是CMFL启动器的自研启动核心,并不是凭空开发和测试的,因此,ProjBobcat对生产环境的兼容性较强,部署能力也较强。 - ProjBobcat的代码易于研究学习。ProjBobcat的体系结构非常清晰,而且我们正在以中英双语的形式完善整个项目代码的注释体系。 - ProjBobcat有只橘猫,其他项目没有。
安装 有3种主要方法安装ProjBobcat。 - 在Visual Studio项目的NuGet程序包管理器中搜索ProjBobcat,选择最新稳定版本安装即可,安装过程中可能会要求您同意MIT协议。 - 直接在Visual Studio的程序包管理控制台输入:Install-Package ProjBobcat
使用ProjBobcat开发的启动器
CMFL启动器 - 超级无敌爆炸好用的优良启动器!
核心特点
1、高度模块化的启动组件
2、高度定制化的API,用户可以直接在我们的基础上开发新的启动模型
3、支持版本隔离、离线,正版验证等特性
反馈BUG或和我们一起开发?
如果您想加入我们并和我们一起将这只“大猫”变得更强壮。欢迎您加入我们的讨论组(见下方)。
如果您有任何改进意见想和我们提出,请在帖子评论区留言或是加入我们的官方讨论组进行讨论~
联系方式- 团队宣传贴:日冕开发组官方宣传贴
- 老腊肉的QQ:1606305728
- ProjBobcat官方讨论组:677872263
- 日冕开发组官方审核群:1040526762
ProjBobcat 简略使用指南
功能列表
功能 | 状态 | 离线验证模型 | √ | 正版验证模型 | √ | 版本隔离 | √ | launcher_profiles.json解析 | √ | Nuget分发 | 【开发中】 | 旧版Forge安装模型 | 【开发中】 | 新版Forge安装模型 | 【开发中】 | 依赖自动补全 | 【开发中】 |
使用说明
ProjBobcat提供了3大组件和一个核心总成来支撑起整个核心框架 类 | 父级接口 | 父类 | 作用 | DefaultGameCore | IGameCore | NG | 提供默认启动核心所有实现 | DefaultLaunchArgumentParser | IArgumentParser | LaunchArgumentParserBase | 提供默认启动参数解析 | DefaultLauncherProfileParser | ILauncherProfileParser | LauncherProfileParserBase | 提供默认launcher_profiles.json解析 | DefaultVersionLocator | IVersionLocator | VersionLocatorBase | 定位游戏版本 |
基本使用
初始化核心
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) | 启动日志输出事件 |
|