前言
本文写于3.0时期,内容具有时效性,但方法通用
注意!! 本教程是给具有一定电脑操作能力的人使用,如果你单纯只是想玩私服,并不会使用电脑等工具来自行安装,那么你可以私聊本人,我会提供已经编译好私服文件的虚拟机和远程协助(有偿,远程协助需要协商时间) 要说明的是,虽然文件内容都是开源,但是官网的说明文档十分贫瘠且没有详尽的报错说明,本人提供有偿服务也只是防止泛滥传播
我们来介绍一下原神私服工具grasscutter的安装和部署,网上的攻略也有不少,但是有的问题并没有解决或者已经停止更新,对于一个时常更新的游戏来说过期的攻略等同于无效。
本文是基于 【本机使用grasscutter作为服务器+本机作为客户端】 的基础上的进一步实现 【局域网内原神私服联机】 但未做联机测试,原理上是可以进行的(客户端和服务端已经分离并且能在局域网互联)
先贴工具连接:
grasscutter
https://github.com/Grasscutters/Grasscutter
使用实例视频 发布于本教程前
服务端部署环境需求(这是官网的要求):
-
系统:Windows 10 或Windows Server2016以上(保险,但理论上只要系统高于Windows7即可)
-
Java环境:JDK17 推荐17,并非17及以上,非17版本本人未做过测试,可以自行尝试
-
python环境:mitmproxy可以通过执行python脚本的方式来代理流量,在grasscutter官网的文件中有提供代理脚本,python版本在3.6-3.9之间即可(推荐3.8或3.9)
-
MongoDB数据库:高于4.0 (推荐5.0版本以上,6.0也可)
-
proxy 代理:mitmproxy即可,后面会贴链接
简述原理:
总共分两个,客户端和服务端。
服务端要做的就是运行开源的grasscutter包的jar核心文件来启动私服,私服使用MongoDB来存储用户数据,mitmproxy来代理流量,将客户端发来的流量等代理到服务器文件上。
客户端要做的就是安装patch插件(原神在2.8版本后更新了一个小脚本,会检测客户端数据请求的url,如果不是米忽悠的域名,那么就会报错4214),使用第三方启动器来在客户端代理流量,将原本请求到原神官方url的请求转发到设定好的(私服)的位置去。
部署服务端
首先完成好前置要求的安装过程
前置需求
我们需要安装如下程序,360驱动(修复潜在的dll文件缺失,可选)360压缩(如有其他可以不装)Firefox(浏览器而已,选装)jdk17(建议使用提供的版本)mitmproxy8.1.1(必装)MongoDB(选msi的,官网下载的zip格式的需要自己手动部署,更麻烦)navicat15(可选,这是MongoDB的数据库查看工具,安装MongoDB数据库本身会自带一个,可以不装)python3.9(必装)sublime(文本编辑器,选装,你可以用系统自带的记事本)
安装所需环境
有视频,不多做赘述
视频连接 :https://www.bilibili.com/video/BV1jd4y1i7Je/ (目前已寄,后续可能补档)
开始下载服务器核心文件
下载好后如下所示,全部保留,然后将 release 位置的发行版文件同样下载,它是jar结尾的文件
将这个文件同样放到刚才下载好并且解压了的文件夹内
genshinRunTime是我自己取的名字,你随意(别使用中文路径)
然后我们可以试运行,在文件夹内打开cmd命令行
cmd
报错
看报错信息
发现是找不到MongoDB和proxy的文件目录,这个问题如果你环境部署的有问题,会时常困扰着你,不好解决(本人也是被这个搞了很久)
解决方法:看源码
启动文件
我们可以看到,一个是私服作者给的一键启动脚本,另一个是它的配置文件,我们使用sublime看一下配置文件(start_config.cmd)的源码
::注释
注释前的文字是他原来的,注释后的是我给出的指定目录
这里set xxxx_PATH= 的意思就是设定所需文件的目录,就是依赖的数据库和代理软件
我们修改成%xxxxx% (这里%xxxx%是环境变量的表示方法,例如%JAVA_HOME%)
去修改环境变量
打开系统,高级系统设置中去修改环境变量
修改环境变量
添加两个变量 MDB_HOME 和 MITMDUMP_HOME 值选择它的安装路径(你自己的)
改成你自己的!
改成你自己的!
使用 【浏览目录(D)…】能直接选择
选择好后我们还需要配置resource文件(服务器的文件核心,决定游戏版本的数据)
Grasscutter资源文件官方项目地址:https://github.com/tamilpp25/Grasscutter_Resources
同理下载好后,放到文件夹内
proto文件存疑,在2.8版本时我看的教程上说这个也要,但是在新版本后GitHub官方给出的文件内已经不存在这个文件夹了
还有代理证书文件 注意一下是否存在(可能会影响) 如果没有请核验你下载的源码和官方给出的文件是否一致
核验MongoDB是否运行
win+R键 打开运行 输入services.msc查看
查看MongoDB
找到MongoDB服务,如果显示为正在运行,那没事了
自此,理论来说你的私服前置需求应该满足,如果还是出现未检测到MongoDB和proxy代理程序,那么请自行排障
这边是官方给出的过程
这边并没有使用一键启动start.bat脚本,但是也行,这样需要自行启动代理程序和MongoDB
正常运行示范
为了解决前面的问题我也研究了很久,为了写教程就用了快照恢复到这里,实际部署的话已经不想再经历那段痛苦了……
附:
这边提供一个MongoDB的脚本 用于在一个自定义位置启动MongoDB来作为数据库存储位置
mongod --dbpath "C:\Users\GServer\Desktop\genshinRuntime\mongoDB"
当时研究了下,修改了一键启动脚本里MongoDB的启动位置
自建MongoDB文件夹,在里面呼起cmd,输入脚本
这个的原理应该是启用本地文件夹作为MongoDB的数据库文件存放位置,同时在cmd内启动器来MongoDB
以上仅为个人尝试,以前本人安装私服时(大概2.8版本的时候)并没有如上流程,自行尝试
放行防火墙(可选):
如果你和我一样,是部署在局域网上的服务器,那么这一步你必须得走,否则哪怕和客户端在同一子网,仍无法访问
以下是官网给出的方法:
Make sure to setup your operating system firewall settings 1.Windows: Make Sure To Allow Their Port On Windows Firewall Settings (80,443,8888, And 22102)
Linux: Make Sure To Write sudo ufw allow 22102 , sudo ufw allow 443 , sudo ufw allow 80 , And sudo ufw allow 8888 .
具体使用
放行端口即可
配置config.json(可选):
找到config.json
这是服务器的配置目录,如果你是客户端和服务端分离,那么这一步也尤为重要
修改ip
注意这里是改成自己服务器的ip地址
这样修改后就能允许子网内的其他ip访问,如果你是仅自己机器上(服务器和客户端同时运行在本机),那么不需要过多地更改即可
如果运行start.bat能成功显示出内容(服务器已成功运行balabala~),那么你就可以走到下一步,使用原神客户端来进行访问了
部署客户端
如果能走到这一步,那么你要解决的问题就很少了
-
下载原神国际服(建议使用国际服,国服的游戏文件不改动,你还可以正常访问国服的正版服)
-
使用提供的破解文件patch游戏文件
-
使用第三方启动器 grassclipper https://github.com/Grasscutters/GrassClipper
原神国际服下载完成后先不要使用第三方启动器来链接私服,先链接正版服务器更新游戏文件,可以不注册登录,能正常显示就行
使用 破解文件 替换客户端原有的dll文件
网上找的,就不引流了
你可以到genkit百科里自行寻找 https://mihoyo-is-in.icu/
我这边也都提供了,可以私信我 (私人云盘寄了,原因可见前言)
替换这个即可,我以前做2.8版本私服的时候那时候需要替换两个文件夹,这个做的更精简了
当然,错误的补丁可能会导致游戏启动崩溃,无法正常启动等,这个就是需要你去到网上寻找资源了
最后是第三方启动器,这里我提供两个,一个是grassclipper,另一个则是官方网址上给出的Cultivation(照理来说这个应该能行,但是作者本人电脑使用报错了,启动不了)
Cultivation地址 https://github.com/Grasscutters/Cultivation
官方解释
如果使用cultivation的话应该是可以不修改客户端文件了,但是本人使用的时候遇到点问题,就弃用了(你可以试试,我推荐使用这个)
grassclipper的使用建议如下
创建一个快捷方式
下载完grassclipper文件后,在exe那个程序上右键,新建快捷方式,后修改快捷方式最后目标一栏,添加 –mode=chrome 这样就能使用chrome方式启动软件(不知道为什么要这样,但是这样最稳定),如果你并没有安装chrome浏览器,可以试试不加(应该也没问题,具体看官方给出的文档)
部署好的启动样子
你的一打开肯定是英文版,自行修改成中文
要注意的两点
注意!需要安装一下代理程序,点击install即可下载(全自动,下载的代理就是之前服务端也用到的mitmproxy)
全部完成后基本可以正常运行了,如果还遇到问题,请看下面的问题一览(本文有些漏讲了的也写在里面了,推荐看一下)
常见问题
HTTPS并不能连接成功:
这是因为代理证书未安装,
前往服务端的 设置-网络-代理-手动设置代理 ,设置为 127.0.0.1:54321 后,使用浏览器访问 http://mitm.it 并选择相应证书下载,此证书需要下发给客户端所在机器安装,注意服务器 IP 更换后需要重新下载安装证书
如果服务端和游戏都跑在本机,不用手动安装证书,代理会自动安装
注意:这一步服务端开启代理只是为了便于下载证书 (当然你也可以直接去这里复制 %USERPROFILE%.mitmproxy\mitmproxy-ca-cert.cer ),下载完后请关闭服务端的系统代理,否则无法正常连接服务端
这是作者本人查到的,但是有更简便的方法,直接在服务器端打开浏览器,访问http://mitm.it
选择你系统的版本就行
我们是Windows,所以直接选择Windows那个绿色的按钮就行
下载好的证书
复制到桌面(如果你服务端和客户端未分离,那么直接双击就行),安装证书即可(一路确定)
注意选择(本地计算机)
完了一路下一步就行
服务端报错:
自行鉴别,如果是Java报错,那么可能性有很多,但不排除本身你下载的release文件他自己代码写错了(本人就遇到过,后来自己改了下代码打包成jar文件)
端口占用:
一般显示为 address already in use : bind 这个问题需要自己去把占用的端口找出来,然后禁用,这边给个百度的结果好了 https://www.php.cn/faq/467525.html 【端口被占用怎么解决】
连接服务器错误:
报错4206:
代理未正确配置,检查好代理是否正常运行,查看查看代理窗口的报错内容(需要一定能力)
开启代理后运行游戏,检查服务端和代理的日志,如果代理中
没有 mihoyo.com / hoyoverse.com 子域的请求或者没刷新任何日志,则为客户端代理配置错误
有 mihoyo.com / hoyoverse.com 子域的请求,但报 TLS handshake failed,则为客户端未安装对应服务端的证书,或服务端不能连接到相应域名
有 mihoyo.com / hoyoverse.com 子域的请求,但报拒绝连接等错误,可能是服务端网络问题导致无法连接米哈游服务器
报错4214:
服务器版本和客户端版本不一致(比如你服务器是3.0的你客户端却更新到了3.1) 客户端并未安装补丁,错误的域名指向导致程序自行报错(米忽悠在2.8版本修改了客户端的规则,防私服用的)
报错4201:
证书错误,一般是服务端那个keystore.p12文件出错了,但也不应该啊(本人没遇到过)
一切都成功后进门白屏,不显示:MongoDB的锅,你确定好是否开启了该服务,或者Java的锅,你确定好版本(也许你重来一遍又遇到了别的问题,那就是别的问题引起的)
报错502,4301,无法连接服务器:
你的问题,重新来过试试,检查好服务端
写在最后:
本文其实写的并不是很好,很多问题和过程都省略了,因为配置和环境这东西千人千面,你很难把握好,况且本人的技术并非多么高超,无法把全部过程和问题写清楚,讲明白。只是把自己安装的过程中踩过的坑,遇到过的问题简单说一下,网上相关的帖子也有不少,说的也都比我好,我会贴在下面,可以自己去看。开源分享者也分享过自己的一键整合包,如果感兴趣可以自己去试试,我还是比较依赖GitHub上所分享的,哪怕并不那么完美。
如果你仅仅是想玩私服的内容,那么你可以去找找更好的懒人包或者什么的,或者联系我我会发你我自己做好的服务器文件打包(有偿)。但是我搞私服的目的更多的不是什么想去玩私服,只是在享受折腾的这个过程罢了,哪怕很痛苦,哪怕没有结果(之前陆续搞了两个多月也没成,国庆期间有空了才解决问题)。
相关链接分享:
Grasscutter官方项目地址:https://github.com/Grasscutters/Grasscutter
Grasscutter资源文件官方项目地址:https://github.com/tamilpp25/Grasscutter_Resources
Grasscutter官方说明文档地址:https://mihoyo-is-in.icu/
茶靡博客:https://blog.tomys.top/2022-04/genshintj/ (不少内容参考了该作者写的,包括安装的时候也是看着他的来做,当然也参考了别人的,每个人每种方法,不能说绝对是最好的,只能自己看合不合适)
虚冇的避风港:https://memorz.top/archives/112 (当时看着教程做的,但自己搞还是有些差别)
如果能看到这里,那么感谢你的支持,如果我写的内容和我分享的能帮到你,那么请你给我的视频点赞三连支持下好不好捏
视频介绍:https://www.bilibili.com/video/BV1Me411T7rR (目前已寄,后续可能补档)
后续应该还会再做,但是没有像国庆这种大假了……
另外分享下本人博客:https://blog.yanqi7.top 同时欢迎关注我的微信公众号:魇亓de札记,内容同步更新
个人微信公众号:魇亓de札记 (新鲜内容一手掌握)
来源地址:https://blog.csdn.net/weixin_56170314/article/details/127694624