从零开始制作Minecraft启动器(C++开源)

从零开始制作Minecraft启动器(C++开源)

  新手飙车了~~~,MC启动器源码大放送,随心所欲打造自己的专属MC启动器,这不是易语言,是C++。。。分析原理,关键源码都有详细的注释,代码编好就打包放送,所以说凌乱无比。。。

下载地址:

百度网盘:http://pan.baidu.com/s/1i3UDOXn

CSDN下载:http://download.csdn.net/detail/u010661060/9376136

MClauncher(公版)启动器界面:

代码全部开源,拥有详细的注释:

测试过的平台:windows7 64位、windowsXP,在这两个平台上都能运行。

测试MC启动版本:Minecraft1.7.10纯净版、Minecraft1.7.10 forge版都能启动,讲道理的话,其他版本的游戏也有可能启动。。。

特别说明:

  因为采用的Qt为夸平台软件,编译出来的exe文件运行需要很多的夸平台库,这样的话导致启动器比一般的都要大而且启动器目录非常混乱,为了解决此问题,已将所有的库文件和exe打包成新的exe文件了,直接点击MClauncher.exe运行即可。注意,360会瞎比报毒,直接无视即可。。。

  历经千辛万苦终于撸出了自己的启动器,尽管还有无数的BUG,但至少能用了。。。

  刚开始什么都不知道,在网上大量搜索MC启动器源码、MC启动原理等。搜索到的源码还是挺多的,但是大多是易语言写的,下了好多下来。但是,不懂易语言,愣是没看懂怎么启动的。后想到Google上找点源码,但是有GFW的存在,买不起VPN,好多网页都打不开,而且最为关键的是尼玛看不懂英文啊。后来在某个论坛里看见一条回复,说是要启动MC,分析里面的JSON文件就可以了,看到这句话,制作MC启动器终于有了眉目了。

先着手分析MC启动器启动参数,参考旋律启动器,打开旋律启动器调试开关,就可获得启动器传给游戏的参数。当然,也可以打开cmd,在启动器启动时输入“wmic process where caption="javaw.exe" get caption,commandline /value>D:\canshu.txt”参数,即可获得启动器参数。

在看MC启动器参数之前,先来看看运行jar包参数传递及依赖关系分析。

之前为了弄清MC参数传递,特地做了个小的java程序模拟MC游戏,这样不必在庞大的MC游戏上做这个小参数测试。

小游戏启动脚本:

java -Xmx1024m -Dplayer.name=BlueCat -cp HelloFrame.jar HelloFrame

参数分析:

-Xmx1024m:代表JVM最大堆内存值(不懂,反正照着别人的抄就行。。。)

-Dplayer.name:(用-D<name>=<value>来设定系统属性值)这里利用来传递游戏参数,在java程序里可以用:System.getProperty("player.name")获得其值,这样就可以在测试窗口上显示玩家名称了。

-cp:目录和 zip/jar 文件的类搜索路径,后面的参数为main函数执行所依赖的jar包,以及其所在的jar包,无先后顺序。

最后一个参数:指定main函数所在的类HelloFrame,若该类在包中,前面加上包名,否则只写类名即可。

现在再来看真正的Minecraft启动参数,太长了,分段来看。

第一段:

C:\Program Files\Java\jre7\bin\javaw.exe

(包含全路径的javaw.exe)

第二段:

-Xmx1024m

-Dfml.ignoreInvalidMinecraftCertificates=true

-Dfml.ignorePatchDiscrepancies=true

-Djava.library.path=".minecraft\natives"

(堆内存及相关系统变量设置)

第三段:

-cp “ ...(此处省略一万个jar包)...1.7.10-Forge10.13.2.1230.jar”

(所依赖的jar包)

第四段:

net.minecraft.launchwrapper.Launch

(main所在的类)

第五段:

--username      BlueCat

--version        1.7.10-Forge10.13.2.1230

--gameDir       .minecraft

--assetsDir       .minecraft\assets

--assetIndex      1.7.10

--uuid           ${auth_uuid}

--accessToken     ${auth_access_token}

--userProperties   {}

--userType        legacy

--tweakClass      cpw.mods.fml.common.launcher.FMLTweaker

(游戏参数,在JSON文件中的minecraftArguments)

在模拟小程序中,除了第五段没有模拟外,其他都是类似的。

启动游戏时传递这些参数即可启动游戏了,这些参数都可以从JSON文件中获得,当然有些参数是固定的有的是自己设置,比如游戏名字自己设置吧。

所说的JSON文件在.minecraft\versions\1.7.10\目录下的1.7.10.json

  重要的参数都在这里,所以启动器要做的就是解析这个JSON文件,获得其中的值,转化为启动参数,传递给JVM就可以了。所以,做启动器做的最多的就是字符串处理了,我是个菜鸡,C++和Qt都是半吊子,一知半解,也不知道有什么好的方法。反正很多地方都做得比较蠢,代码也写的相当的凌乱,想起什么就写什么,写到最后连我自己都理不清思路了,所以看源代码可能会比较费解,不过关键的方法都有注释。在阅读源代码时记住一条,所做的一切的目的是将JSON中的一串字符转化为合适的启动参数。所以在看到代码在瞎JB做循环或者突然减个1时,不要懵圈了,~_~。关于启动器的原理就说这么多了,更多的查看源代码,哈哈~~~。

噢,对了,还有些事情。

1、  就是希望大家帮忙测试启动器,BUG发送至我的邮箱[email protected],感激不尽!

可能不会尽快修复BUG,因为有更重要的事情要做,应该最近很长一段时间内不会再碰启动器了。

2、  公版启动器现存的BUG:

(1)在选启动版本时存在窗口滑动BUG,类似下图。

这个BUG,我暂时无能为力,我只是一只菜鸡,在不断的学习中。。。

(2)那个自动设置内存选项是假的,就是固定设置为1024m,我暂时还不知到怎么弄。

(3)java路径自动查找算法还有待强化,这其实也不太算是BUG,目前只是查找系统环境变量中PATH中含有的java路径,在别的电脑上测试时有失败过。

3、  关于制作启动器过程中一点蛋疼的问题

先是在Qt4上撸出了启动器的界面,大多按钮采用假连接,后来到解析JSON文件时才发现Qt4没有JSON相关的类,JSON相关的类从Qt5才开始有。于是跑到官网上下了最新版的Qt5.5.1(minGW版),编译好了程序一运行就导致Qt Creater一直未响应,这真的是很蛋疼。后来换到Qt5.0.2才没有这个问题,可是这版本编译的Release版要在没有装Qt的电脑上运行很麻烦,要多很多的库文件。于是,又下了个Qt5.5.0,还是有一直未响应的问题。所以呢,最后用Qt5.0.2编译调试,然后用Qt5.5.0编译在别的电脑上测试。。。

4、  最后一点,参考旋律启动器时有个natives文件夹,里面放的是些dll文件,不知道有什么用,反正没了就是启不动,旋律缺少的话是下载过来的。在这里的话,我是解压相关jar包中的文件到该目录下的,所以,公版启动器中还内置了一个unzip32.exe程序。

启动器是从零开始撸出来的,很多地方不是很理解,也有的地方做的有些愚,还望有大牛能够指点一二,万分感谢!!!

时间: 2024-08-24 14:19:30

从零开始制作Minecraft启动器(C++开源)的相关文章

WordPress 主题教程:从零开始制作 WordPress 主题

看到一个WordPress蛮好的教程,挺适合初学者.分享一下: 创建 WordPress 主题其实不难,只要你从现在开始认真学习这个教程,从零一步一步开始,你就会成为一个 WordPress 主题制作高手,至少你会修改现有主题. 下面是一个从零开始制作 WordPress 主题的教程,它会一步一步教你如何制作 WordPress 主题. WordPress 主题教程:从零开始制作 WordPress 主题 WordPress 主题教程 #1:介绍 WordPress 主题教程 #2:模板文件和模

从零开始制作H5应用(2)——V2.0版,多页单张图片滑动,透明过渡及交互指示

上一次,我们制作了我们第一个H5场景应用的V1.0版,这次我们趁热打铁,在上一版的基础上对层序进行修改和扩展. 任务 1.页面数量由3张增加至9张: 2.每张页面中放入一张全屏自适应的图片: 3.修复页面过渡中的白场,并在过渡时加入页面的透明效果 4.给予用户"向上滑动"的交互提示: 分析 老规矩,拿到任务需求后,我们还是要先具体分析每一步的实现思路: 1.页面数量由3张增加至9张 这个太简单啦,就是再复制出来6个div,并给他们添加类名就可以啦:) 2.每张页面中放入一张全屏自适应的

Docker 从零开始制作基础镜像[centos]

http://www.oschina.net/news/62897/docker-hub-contains-high-risk-vulnerabilities 这里有个统计,docker官方和个人发布的镜像由于版本等各种原因,漏洞较多,那我们如何自己从头开始做个定制的镜像呢? 对,找官方文档 http://docs.docker.com/articles/baseimages/,这里说明的很清楚了 试验如下:在centos7机器上做centos镜像 直接参考这个脚本 https://raw.gi

从零开始制作H5应用(4)——V4.0,加入文字并给文字加特效

之前,我们分三次完成了我们第一个H5应用的三个迭代版本: V1.0--简单页面滑动切换 V2.0--多页切换,透明过渡及交互指示 V3.0--加入loading,music及自动切换 这已经是一个具有基本表达能力的版本了,但是,远远不够!因为,用户体验永远是第一位的,单纯的图片无法准确调动用户情绪,当然,除非是那些特别牛逼的照片,但那时不可多得的,所以我们必须配以适当的文案来对图片内容进行说明或者升华.并且,如果文字也有一些简单的特效而动起来,它们会更有生命力! 任务 在V3.0版的基础上给每张

教你从零开始制作四轴飞行器

航模非玩具,请遵守法律法规及论坛四句箴言!安全飞行! *阅读不同的教程帖有助于更快地入门 *玩模型需要一颗淡定的心,请做好逐字逐句阅读数百页说明书甚至自学外语的准备,如果不能静下心来阅读.琢磨.研究,那么模型这个爱好不适合你 发帖不易,顶贴容易,且看且珍惜 8.17更新:3楼,什么是进角? 1.  如果你想享受飞行的乐趣,不想被装机,修机折磨,并且又有一定的经济条件的话,那么大疆精灵是你不二的选择.如果你想体验飞行和动手的双重乐趣,或者RMB是个问题,那么自己动手吧! 2.  善用论坛搜索功能事

(入门向)从零开始制作免费的个人博客----Github Pages或SAE

三月初突然想搞个个人网站,前前后后找了不少,最后终于是搞定了,一个挂在SAE,一个挂在github,目前没学后台,下面大致记录一下,顺便希望能帮到跟我一样的小白学会独立建站. 一.搞个域名 万网/godaddy/my.dot.tk这三个网站,搞个域名先. 注意:.cn域名要求国内备案,嫌麻烦的同学建议注册.com国际顶级域名或.tk .ml之类的免费域名. 1.万网 应该不少都是去这买的吧,中文操作适合小白,很容易就能看懂,连接支付宝,备案都很方便,第一次的话建议来这里,了解下流程. 2.god

使用APICloud轻松简单6步搞定App制作开发

现如今,谁不知道App绝对就是OUT,谁不用App简直没法过日子!但是说到App制作,不懂编程,不懂技术的人就一脸懵圈.在门外汉来看,App制作是一件非常困难的事情,然而APICloud却说,轻松6个步骤就可以完成App制作和开发.不信我们就来看一看. 第一步:选择App开发模式 APICloud平台为不同需求的人提供了不同的产品,如果你要从零开始制作App,那么选用Deep Engine产品,用HTML5等标准Web语言去开发和制作App,iOS和Android两个系统是同时生成的. 如果你已

互联网营销新机遇,你需要更专业的APP在线制作平台

移动互联网的快速发展日新月异,如今手机APP是各行业企业的营销利器,但是目前应用市场上的APP同质化严重,有个性和特色的APP太少.那么如何定制开发一款个性化APP应用软件呢,制作一份好的APP策划方案尤其重要.那么一份好的APP策划方案该怎么入手呢?APP在线制作的专业平台APICloud给出自己的答案,为中小企业甚至草根创业者提供了敢想敢做的新方式,促成了互联网营销很多新机遇. 当今面临很多产业转型的经济形态下,传统行业的各大中小企业措手不及,包括个体户,想追上互联网步伐,却无从下手,对AP

5款替代微软Visio的开源免费软件(转)

5款替代微软Visio的开源免费软件 提到流程图和图表设计,自然会想到微软出品的Office Visio,它是一款强大的流程图设计工具.Visio并不在Office标准套装中,需要额外付费购买,这可能会带来某些不便.一方面,并不是所有人都 负担得起,另外,如果是应急之需,临时购买恐怕也来不及了. 今天我们介绍几款免费的Visio替代软件,也许你对某些软件的名字感到陌生,现在我们逐一简要了解一下. 1.DIA Diagram Editor Dia主界面 Dia被我们列在头一名,不仅是因为它功能强大