①最后修改于2022/12/23?游戏版本3.3 启动器版本2.22.0
②仅从功能出发,分析一下流程,不专业见谅
③
鉴于玩家想通过安装多个启动器以实现渠道切换却卡在第一步,就先从启动器说起...
首先从各渠道官网下载安装包,下哪个都差不多但国际服下载相关功能可能网速比较慢
由安装软件常识:
直接安装的文件夹名称只能是,后期可以自行更改移动,如果在同一路径重复安装启动器,就会因为重名文件夹把原来的启动器顶掉大部分文件,除了;同理,桌面和开始菜单中的快捷方式也因为同名被顶掉,即使你已经修改过了路径;注册表略有不同,国服为,国际服为,大渠道之间不会被顶掉,官服B服仍会
Lconfig-启动器配置文件,即启动器根目录下也就是所在目录里的文件
打开启动器时未检测到或其[launcher]组内容不全时,会自动创建该文件夹或填入参数,以下是各渠道的初始内容,大部分不具有参考价值,下面浅说一下各参数作用,具体功能放在
①game_install_path-,后文使用中文名称
默认为启动器根目录下,中文路径必须转成十六进制以x的格式写入,否则会乱码
②channel-渠道
默认为1,国服中B服为14、官服为1,国际服为1
仅在B服启动器&时下载B服sdk
①cps-渠道备注(channel_postscript)
完全没有用处,仅备注
②sub_channel-子渠道
默认为1,对于启动器几乎没有用处
仅在国际服启动器&时下载epicsdk
①game_dynamic_bg_name-游戏背景图片名称
获取自
②game_dynamic_bg_md5-游戏背景图片哈希
获取自
③game_start_name-游戏启动名称
大部分不做解释,在启动器设置内有图形界面
①launcher_showup_type-是否退出游戏时弹出
②speed_limit_enabled-是否开启下载限速
③speed_limit_size-下载限速数值
④is_first_exit-是否首次退出
⑤exit_type-退出类型
⑥game_screenshot_clicked-是否点击过截图
⑦game_screenshot_tip_visible-是否显示查看截图弹窗
代码块内依次为官服、B服、国际服
对应的:18 eYd89JmJ,17 KAtdSsoQ,10 gcStgarh
,读取自
可以很明确的看到官服&B服请求URL是相同的,仅参数有区别,决定最多获取到什么,resource中&决定能获取到什么,下面放的都是最简参数,国际服
key随版本更新,仅记录一组
{{device_id}}待察
运行安装包时没有该环境就会自动安装也就是根目录里的
补丁大概从获取,非win7系统请求没有结果(?)
若即需要更新(?),更新时不改变
依照请求,返回背景图片信息,海报、公告等(除B服启动器)
在游戏安装目录下,存在名为的文件,且存在,则判断为存在游戏,使用另外一个文件夹功能基于此判断
若不存在游戏,根据内容下载最新版游戏本体&语言文件(系统语言)&sdk文件,仅在B服启动器&或国际服启动器&时下载B服sdk或EPICsdk,下方更新同理;获取游戏时最后一级目录名称必须为
若与相差两个小版本以内进行游戏版本更新(跨大版本待验证),大于两个版本将获取游戏;若不等于,进行sdk版本更新
获取游戏下载2-3个文件分别为,,,B服sdk或EPICsdk其中游戏本体为每10G分卷压缩,仅在B服启动器&或国际服启动器&时下载B服sdk或EPICsdk,解压同理
下载URL来自,sdk来自,更新来自,预下载来自
每下载完成一个压缩包进行第一次校验,等待全部文件下载&校验完成开始解压,全部解压全部后,再进行对所有文件的第二次校验
更新会多一步合并资源,合并时先根据删除过时文件,再使用根据直接进行增量更新,不判断原文件版本
校验即比较文件的md5码,失败将会重下,第一次校验的的压缩包md5码来自,第二次校验的文件md5来自压缩包内的,,,仅在B服启动器&或国际服启动器&时进行对sdk的校验
第二次校验等同于一键修复功能,非注明本文校验都以第二次为准,一键修复会检测游戏安装目录下是否存在,否则按钮置灰无法使用
校验过程中如果很多文件(?)都未校验成功将直接重新获取游戏,个别文件失败仅重下该文件,后缀_tmp,单文件下载地址来自
校验完成后对进行处理,将,,覆盖到,,,更新&参数,并将[General]组参数置顶,清除无组参数
更新中...
以下为过去内容
1、打开时报错0xc000007b或0xc00000e5
前者为不存在【Microsoft Visual C++ 2015-2019 Redistributable (x64) 】运行库;后者可能为运行库版本有问题,大概率伴随游戏driverError
2、自动覆盖Lconfig参数
国服启动器(国际服未发现且无影响)以launcher.exe为进程名启动后,打开启动器时自动覆盖以下参数到Lconfig[launcher]组
3、下载时网络/校验/解压错误
下载安装过程中,可能出现,网络错误、校验错误和解压错误,其中校验错误会直接删除文件,另外两个保留文件
网络错误大概率是真的网络有问题,也可能是已存在同名zip或下载进度丢失;校验错误可能是RAM、ROM还有网络出现问题,除非有CRC校验错误,游戏自行解压后是可以正常使用的;解压错误是因为启动器修改zip_tmp后缀为zip时已存在同名文件等原因
还有一个出错是因为磁盘格式Fat32,导致单个文件最大4G,下载会失败不记得报错是什么了
(1) 优点:一般情况下效率最高,可规避二级地址解析错误和官服存在B服SDK导致的31-4302,还可解决未知原因导致的config不读取,压缩文件体积2.6MB,其中和核心文件大小11KB,B服sdk占5.3MB
待更新~~~
下方为上一版的内容,新版没更新完全时会一直保留
从启动器说起...
安装时提供自定义选项,可自选安装路径。可以同时安装官/B/国际服启动器,唯一前提是路径不同,路径相同会覆盖。覆盖安装的时候不会删除原有config.ini[launcher] 和【游戏安装目录】下文件。
当【游戏安装目录】存在YuanShen.exe和config.ini时即判定已安装游戏。在启动器2.15.4.0版本,启动器打开后会有较长时间用来检测更新,在检测各项功能是最新版后不会再次触发检测
对比三种启动器没有很多差异。B服与官服区别仅在launcher.exe,uninstall.exe,Update.exe和config.ini[launcher];国际服除了上述三个还有7z.exe和一些dll不同
简单看一下启动器配置文件config.ini[launcher]的内容
cps用途不明,channel渠道,sub_channel子渠道,game_install_path游戏安装路径,game_dynamic_bg_name/md5背景图片及校验,game_start_name主程序名称,(is_first_exit退出弹窗,exit_type退出模式,speed_limit_enabled下载限制开关,speed_limit_size下载限速值)
channel:仅在使用且config.ini[launcher]中channel=14下,获取游戏或config.ini[General]中plugin_sdk_version值不为3.3.0时会下载解压安装B服额外的包,
game_install_path:首次获取游戏时,游戏安装路径必须在https://www.bilibili.com/read/Genshin Impact Game下。有游戏本体后可以随意更改,也可使用设置中-本地文件-查找游戏功能修改路径
game_start_name:写在配置文件中看似可以自定义,实则,主程序名称必须为YuanShen.exe
其中cps、channel、sub_channel会在安装与更新时config.ini[General]中对应的参数
右侧选中的为B服原神额外的包,仅能在B服启动器下载得到,内有sdk_pkg_version和PCGameSDK.dll
启动器的一键修复。校验修复需要游戏目录下的 pkg_version 和 Audio_{lang}_pkg_version,该功能可以补全缺失的文件,用于误删等,大部分情况下一键修复并没有用处?。一键修复必须要有pkg_version,没有这个将不出现修复按钮
B服多一个sdk_pkg_version(用于补全PCGameSDK.dll),但类似上文channel参数与B服启动器,仅在B服启动器且config.ini[launcher]中channel=14且存在pkg_version时会校验修复
游戏本体的下载与安装。在启动器点击获取游戏开始下载,下载后进行一次校验,然后解压再校验,最后生成一个config.ini[General],cps、channel、sub_channel继承自config.ini[launcher],game_version为当前版本号(,plugin_sdk_version为PCGameSDK.dll版本号,安装B服额外的包时自动添加参数),更新时类似。
往往检验的速度是比较慢的,尤其是机械硬盘。可以等下载完成后,直接关掉启动器,把zip_tmp后缀改成zip,手动把所有下载文件解压到当前文件夹,最后新建一个文本文档,重命名为config.ini,内容如下(图为用启动器启动游戏需添加的最少参数)
对比三个游戏本体同样没有很多差异。
B服和官服的pkg_version、Audio_{lang}_pkg_version完全一致,B服多一个sdk_pkg_version,那么差异就是其中写的PCGameSDK.dll
而国际服与国服只有Audio_{lang}_pkg_version相同,pkg_version内容不同,共计42处
所以官服B服切换只需要修改config.ini[General](,官到B额外加一个PCGameSDK.dll),而国服国际服切换要覆盖文件(,或用国际服的文件校验直接修复),并删除PCGameSDK.dll
覆盖文件下载链接():https://pan.baidu.com/s/1D-gEfE2QLV0fA4Ut3oVfiQ?pwd=yowv;QQ群【915926721】文件也可下载:群文件/原神相关Genshin/[版本]国服转国际服.zip&[版本]国际服转国服.zip
简单看一下初始游戏配置文件config.ini[General]的内容
cps用途不明、channel渠道、sub_channel子渠道、game_version游戏版本、sdk_versionPCGame.dll版本
game_version:用于启动器检测下载更新
plugin_sdk_version:见启动器分析部分
channel、sub_channel:国服见下图;国际服channel=1
当检测不到配置文件时,国服默认启动官服。也就是说国服原神程序的默认参数为channel=1,sub_channel=1
启动过游戏后,三个服在Data目录下生成【Persistent】文件夹,里面有一些资源文件,内容一样,是在加载游戏时的搭桥界面下载的;官服和国际服在Data目录下生成WebCaches文件夹;B服在【YuanShen_Data/Plugins】下生成fail3dlog.db 和?license.txt。这些都是后话了
最后是一些奇怪的机制,当游戏安装目录中的文件有丢失、损坏、多余,系统环境异常等,原神就会出现各种问题。有二级地址解析错误、数据异常31-4302、DllNotFoundException,游戏闪退打不开,登录不了等,因为说起来比较繁琐,比如如何界定哪些文件会出问题?类似的原因产生了不同的报错等等,这里新写了一个专门来解决BUG的专栏:cv14772737,同【写在前面③】
结论咳咳,不想写了,上面已经很详细了