启动器能干什么


image.png
image.png
Minecraft启动器是用来,通俗地说,下载游戏、启动游戏。
可能还支持其他的功能,比如一键下载模组、安装模组加载器如Forge等,多人联机功能……
哪个男孩子不想拥有一款属于自己的启动器呢?虽然现在的启动器已经很多很多,但是不妨碍我们通过学习制作启动器,来锻炼自己的编程能力、查找资料能力等各种奇怪的能力(?
👀👀
我们不妨去查看一下MCBBS上关于启动器的部分内容:

所以还是不知道启动器的具体定义是什么呢…… 那就不管啦!先开始叭!

那么,制作一款Minecraft启动器,到底需要我们学会哪些内容……?

制作启动器需要什么


请参阅下面的网页,来自Minecraft Wiki在Bilibili设置的镜像。

基本原理

因为Minecraft制作时采用了“启动器+游戏文件”的模式:

  • 将游戏文件单独存储,而通过启动器调用JVM(Java Virtual Machine,Java虚拟机)执行游戏主文件并传入一些游戏参数来启动Minecraft。
  • 游戏依赖库文件以及游戏资源文件由启动器补全。
  • 玩家登录认证由启动器完成。

这使得我们能通过编写第三方启动器来接管游戏文件管理和登录认证。

准备

要编写一个启动器,你需要:

  • 一门编程语言其开发环境。
  • Java运行时环境(Java Runtime Environment,JRE),可于Java官网下载。

并拥有支持下列功能的库:

  • 解析JSON文档(得到启动参数的关键)。
  • 解压文件(解压natives文件,也可使用链接外部程序替代)。
  • 网络库(正版验证、皮肤管理等)。

总结一下,就是Minecraft启动器需要做、要能够做的事情有:

  • 输出启动脚本,并使用脚本运行Java虚拟机
  • 更改启动脚本中的部分以达成个性化目的(更改JVM内存范围、玩家名等)
  • 解析JSON格式的文本,从中读取指定的内容
  • 连接网络,从Minecraft网站上下载指定游戏版本或补全指定版本的文件
  • 解压缩指定目录的文件至另一指定目录

这就是启动器需要内置的最基本的功能了,当然——通过调用外部的程序来执行这些也不失为一个好办法。

我们的范例


我们用作教程的启动器,命名为Fan Craft Launcher(FCL),使用Python编写。Python是可以完全满足上面列出的所有要求的,并且Python代码也完全可以被打包成exe可执行文件。Python解释器可以在Windows、Linux、macOS上工作,所以无论您手持何种设备,基本都无需担心我们教程在这方面的局限性。
image.png
但是,我们的教程更偏向于理论性。如上文所述,创作一个自己的启动器所需要的那些东西,对于任何编程语言基本都是相同的。我也相信各位客官不仅仅是为了学习Python才访问到这里,大家都是想要了解制作Minecraft启动器的思路和步骤嘛!
所以说呢,接下来的部分将主要介绍Minecraft启动器的制作思路,辅以我们根据思路而编写的Python代码。开始吧!


本知识库,仅涉及有关Minecraft的理论内容,与Mojang、Microsoft、Python等官方无任何关系
FCL的所有代码均为原创,并将在Gitee上全部开源。
FCL项目仅仅为Minecraft启动器提供一种理论可行的解决方案,并论证使用Python编写Minecraft启动器的可行性。FCL项目所提供的方案理论上适用于一切编程语言用于编写Minecraft启动器
FCL项目中的部分内容,对于没有编程语言基础的读者来说会有一些生涩;对于完全没有相关基础的读者,FCL的代码部分可以直接跳过。
FCL通过Python编写的启动器源码,并不保证其为满足同样功能的最简洁源码,也不保证其为满足同样功能的最性能源码,仅仅作为实现Minecraft启动器功能的一个Python项目参考。FCL项目完成底层推进后,在Gitee上的任何开发者都可以对FCL项目进行建议或贡献,项目将遵循GPL协议开源。