前言

本文写于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 Writesudo ufw allow 22102,sudo ufw allow 443,sudo ufw allow 80, Andsudo ufw allow 8888.

具体使用

放行端口即可

配置config.json(可选):

找到config.json

这是服务器的配置目录,如果你是客户端和服务端分离,那么这一步也尤为重要

修改ip

注意这里是改成自己服务器的ip地址

这样修改后就能允许子网内的其他ip访问,如果你是仅自己机器上(服务器和客户端同时运行在本机),那么不需要过多地更改即可

如果运行start.bat能成功显示出内容(服务器已成功运行balabala~),那么你就可以走到下一步,使用原神客户端来进行访问了

部署客户端

如果能走到这一步,那么你要解决的问题就很少了

  1. 下载原神国际服(建议使用国际服,国服的游戏文件不改动,你还可以正常访问国服的正版服)

  2. 使用提供的破解文件patch游戏文件

  3. 使用第三方启动器 grassclipperhttps://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文件)

端口占用:

一般显示为addressalreadyinuse : 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札记(新鲜内容一手掌握)