本帖最后由 zhh0000zhh 于 2013-12-10 12:58 编辑

卧槽,谁说论坛会30秒保存数据的!!!!!

关于源代码问题
各种开源启动器太多太多
自行查找,本贴不提供任何代码

最最最最最开始!
关于专用启动器的定义,只能启动特定的客户端的启动器,比如MCBBS四周目的启动器。

请懒人包作者不要制作专用启动器!!!
至于原因,懒人包本来就是自己玩的,随时可能更新或者更换游戏内容
如果没法下载游戏或者没法识别其它version的游戏
用户就被绑定了

这是个大坑,内容肯定是慢慢出现的,不过现有个框架不是。。。
不知道什么时候才能补完坑。。。
不过即使坑很多也会留下足够写出启动器的资料。。。
不过就是累点。。。

第一,由于这年头编程语言略多,Basic,C,C++,.net,java等等各种语言的存在(话说还有用汇编写程序的么。。)
这个教程不会有任何代码出现,仅提供思路
第二,开源启动器那么多,说句实话,给你代码你也看不懂
因为你不知道原理,知道原理也看不懂,因为你熟悉的语言和开源的不同
如果你都能看懂,那你就可以点右上的小XX了,因为这个教程不是给你看的..
第三,此教程更多的是对于专用启动器而非通用启动器。
主要原因是通用启动器三大难题专用启动器都无需考虑
启动器嘛,说白了就是个给java传送args的鬼玩意
args指的是附加指令

那么启动器为啥这么不好弄呢?动不动就万儿八千行的代码
主要原因有三

第一,下载功能
下载功能是启动器必不可少的功能,而下载的稳定性尤为复杂
由于mojang的资源下载站点位于国外,且我国网络与国外网络的连接极其不稳定
所以下载的稳定性是个大问题,超时重试,断点续传等等很多问题
那么解决方案有两个
第一、土豪解决方案,比如MClauncher内建自己的下载服务器,服务器位于国内,下载稳定
但缺点是服务器价格昂贵,无法更新最新的MC版本
第二、复杂解决方案,建立复杂的下载代码,保证稳定性,具体方法自行百度,因为语言太多,也没人整理过
说实在的,这是网络编程的基本功
第三、综合第一、第二解决方案,如BMCL启动器
使用.net作者注意,切莫使用webClient,此方法在网路异常及网速极慢时会出现各种错误。
如果一定要用,请做好应对各种网络状况的准备
最常见的两个错误,一个是超时,默认TCP协议超时的时间是7200秒,也就是2个小时。。。
第二是下载到一半如果出现流终止错误,webclient会返回成功,并把下载了一半的数据仍在那里。。。

对于专用启动器作者,这个功能不需要的说。。。

第二,JSON文件分析
从MC1.6开始启动器不在是固定的启动方式了而是引入了JSON文件的分析
关于JSON文件结构
此为第一坑。。。
关于JSON文件读取方法
http://www.json.org/
这里有各种语言的开源JSON处理代码。
关于最新13w47a开始的新的JSON文件的变化
http://www.mcbbs.net/thread-198919-1-1.html
13w49a再次更新
http://www.mcbbs.net/thread-202350-1-1.html
PS:据说.co域名是暂时的。。。链接引用的都是.net的。。

对于专用启动器而言,只需要知道自己服务器客户端的启动args,替换用户名即可
那么如何查看java.exe附带的args呢
使用process explorer(英文)
至于下载地址,自行百度,一片一片的

第三,ZIP解压缩问题
因为要处理plantform,需要解压缩jar文件
或者如果提供Forge安装功能也需要zip解压缩支持
那么简单的方法是啥呢,调用zlib,一个开源的解压缩类库
http://www.zlib.net/
不过貌似是C++的
其他语言的也有,不过自行百度吧。。
注意:.net作者不要使用.net4.5自带的zip类型,因为是个正常人都不装.net4.5的,同时微软也没有为win7准备.net4.5
也就是说你要是非用不可的话就和win7说good bye吧

同样的,专用启动器作者不用考虑此问题

那么剩下的是啥,是一个UI而已。。。
UI的话。。。参见MCLauncherBN的界面。。。我就不提供建议了。。

关于.net作者,我由衷希望你们能加入登陆插件统一化的阵营之中
http://www.mcbbs.net/thread-163528-1-1.html

最后,发表此贴并未意味着MCLauncherBN不再更新或者减缓更新,只不过昨天晚上受人之托罢了。。。
至于帖子中没有涉及的内容暂时都是坑好了。。。