如果你可以成为海盗为什么要加入海军? --题记

原神私服交流TG群:点击进入

注意,本文档不说废话,请仔细阅读,错过任何一部分都有可能导致搭建失败,请知悉!

中国大陆用户如有联机需求可点击下方链接:

如果你有联机游玩的需求,可以点我注册阿里云服务器,免费试用,2核心4G内存的配置足够数十人同时在线!

如为中国境外用户有联机需求,建议谷歌搜索亚马逊云服务,按需选择!

如果您没有基础的 IT 知识,不懂什么是GitHub或利用搜索引擎的能力甚至不懂提问的艺术,请现在放弃搭建的想法并关闭此文档!

(由于本人服务器资源较少,并未搭建个人网盘,暂不提供所有资源直接下载。如您想要已经打包好的服务器端,请移步TomyJans的文章:点击进入。如果想挑战下自己的能力从零开始请往下看)

GrassCutter项目地址:点击进入

所需资源地址(请在下面两个中选择一个下载)

resources文件夹(建议配合支持2.7版本的grasscutter使用)点击进入

resources文件夹(建议配合支持2.6版本的grasscutter使用)点击进入

其余配置文件均在Grasscutter项目官方仓库,目录结构如下

QQ图片20220604142455-1024x123.png

data:可在Grasscutter仓库里找到,可直接从那里下载

keys:同上

languages:应该是自动生成

log:主要存放日志,自动生成

plugin:其他插件,可以留空

resources:资源文件夹,见上方资源地址。

下载完相应资源后您还需要在grasscutter项目的release页下载相应的jar包(目前发布的稳定版支持2.6)

资源准备完毕后准备进入搭建环节,请先准备好相应的运行环境!

部署服务端

环境要求

Windows x64 (建议 Windows Server 2016+ 最低 Windows Server 2012 R2,普通Windows则推荐Windows 10)过老版本不保证兼容性;Linux 自行解决:如果你真的有自信用 Linux 搭建我相信你用不着看这篇文档)
Java17 (其他版本)
MongoDB (建议安装时取消勾选 Compass,可使用Navicat for MongoDB等工具来管理数据库;Win10 以下的系统只兼容 4.2 - 版本)
Python3.8+
Mitmproxy (本教程使用此工具演示,也可使用 V2ray,Fiddler 等流量代理工具)

确认端口443未被占用(如您的服务器有其他用途比如搭建网站,可在配置文件中修改,后面会提到)

确认UDP端口22102未被占用,同时选择一个您看的顺眼而没有被占用的端口(教程使用端口55555)。

如您选择在云端而非本地搭建,请确认您云端服务器的防火墙设置是否允许以上端口通信。

注:将以上环境部署好之后再进入下一个环节,避免启动失败或者遇到奇奇怪怪的问题!

运行服务器

运行服务端

将你下载好的所有文件归类到一个文件夹,确认所有环境已搭建并且正常运行

新建一个文本文档,填写如下内容:(此部分为通用版本)

@echo off
set JAVA_EXE="C:\Program Files\Java\jdk-17\bin\java.exe"
%JAVA_EXE% -jar grasscutter.jar

(默认你安装的是java17并且安装在默认目录,如果不是,请你找到java的安装目录并将第二行JAVA_EXE变量的内容替换为正确的路径)

如果已经设置了JAVA环境变量,可以尝试以下代码:

@echo off
java -jar grasscutter.jar

(注意文件名的对应关系)

保存为run.bat,即可直接运行服务端,运行前请确认MongoDB的运行状态。

启动后控制台无任何报错(即输出的日志全为 info 没有 warn 及以上),且最后输出 Game Server started on port 22102 或者类似的中文提示字样即为启动成功,有报错请参照本文档最后一章处理。

服务端不可直接关闭,需输入指令 stop 后再退出;若不小心关闭,在 任务管理器 中找到 Java 相关进程杀掉即可

运行代理

点此下载代理配置文件 (请确认您已经安装mitmproxy!)

解压后会得到三个文件:proxy.bat,proxy.py,proxy-config.py,双击运行proxy.bat(默认端口为55555,如果想使用别的端口,请在proxy.bat中修改,删除端口则默认监听8080)如果您不希望其他主机连接到服务端,删除此脚本中的 --set block_global=false 即可,注意避免使用常用的端口,以免被攻击,此端口为客户端系统代理使用,代理可以直接点击右上角关闭,无残留进程。

出现 Proxy server listening at http://*:55555 即为启动成功

注意,如果您的服务器性能过低,此代理程序可能会假死,请手动重启

前往服务端的 设置-网络-代理-手动设置代理 ,设置为 127.0.0.1:55555后,使用浏览器访问 http://mitm.it 并选择相应证书下载,此证书需要下发给客户端所在机器安装,注意服务器 IP 更换后需要重新下载安装证书。

如果服务端和游戏都跑在本机,不用手动下载安装证书,代理会自动安装

注意:这一步服务端开启代理只是为了便于下载证书 (当然你也可以直接去这里复制 %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer ),下载完后请关闭服务端的系统代理,否则无法正常连接服务端

注:此类代理在中国境内很容易被ISP屏蔽,所以如果是中国境内的服务器,推荐在客户端运行代理,如在客户端运行,需要在proxy-config.py中将REMOTE_HOST地址填写为你服务器的地址(如在本地运行服务器则为127.0.0.1)。

创建账号

启动完成后在服务端控制台键入 account create (这里填写你想要的用户名) (这里填写你想要的UID)

example: account create wdsky 10000001

自定义配置

config.json 会在服务器第一次运行时自动生成,以下是一些常用的配置:

  • server.http.bindAddress server.game.bindAddress 为监听的本地地址,建议保持 0.0.0.0
  • server.http.accessAddress server.game.accessAddress 为服务器的IP地址 (取决于你在公网 / 内网联机),默认为 127.0.0.1 即只允许本机连接
    server.dispatch.defaultName 为你的服务器名称
  • server.game.joinOptions.welcomeEmotes 为进入游戏的欢迎表情 id(int 数组)
  • server.game.joinOptions.welcomeMotd 为进入游戏的欢迎语
    server.game.joinOptions.welcomeMail 为进入游戏的欢迎邮件,成员有 title content sender items ,items 成员有物品 id itemId 数量 itemCount 等级 itemLevel
    server.game.joinOptions.serverAccount 为游戏控制台的资料,成员有 avatarId 头像 (长的角色 id),nameCardId 名片 id,adventureRank 冒险等级, worldLevel 世界等级, nickName 昵称, signature 签名
  • account.autoCreate 为是否自动创建账号,默认为 false ,如修改为 true ,则允许登陆不存在的账号时自动创建 (不建议);account.defaultPermissions 为自动创建的帐号默认拥有的权限 (文本型数组)
    server.game.gameOptions.inventoryLimits 为库存上限
    server.game.gameOptions.avatarLimits 为单人 / 联机的队伍角色数量上限
    server.game.gameOptions.staminaUsage 为是否启用体力系统

修改卡池

(建议使用现成的Banners.json或者自己寻找对应卡池json,如果需要自己配置卡池,请往下看)

卡池配置文件为 .\data\Banners.json ,其中

  • gachaType=200为常驻池
  • gachaType=301为角色 UP 池
    gachaType=302为武器 UP 池
  • gachaType=400为角色 UP 池 2

多卡池:增加 gachaType 为以上四个值且 scheduleId 不重复即可,注意客户端只识别以上四个 gachaType 值,添加的其他卡池不会显示类型.

rateUpItems5 为 UP 五星,rateUpItems4 为 UP 四星,对应 id 在 Handbook 中可以找到

需修改 prefabPath previewPrefabPath titlePath 中的 A0** 为对应的卡池 id

costItem 为抽卡耗费的货币名称,223 为纠缠之缘,224 为相遇之缘(修改可能会引发 bug)

sortId 为卡池排序,越大越靠前

beginTime endTime 为卡池开始 / 结束的 10 位时间戳

softPity 最少几次出 hardPity 最多几次出 eventChance 歪的概率 % ,如果没有这三个成员自己加上即可

weights4 weights5 为四星 / 五星的权重

bannerType 为 STANDARD 表示常驻池,EVENT 表示角色 UP 池,WEAPON 表示武器 UP 池 (这个参数貌似只是看的)

如果设置了多个卡池建议检查下有没有语法错误。

更新服务端

只需 stop 服务端,替换 grasscutter.jar 后启动服务端即可,不过您替换后可能需要重新生成或者更新部分资源文件,若出现报错提示请前往github官方项目仓库检查文件结构。

连接服务器

首次连接需要安装证书

Windows 下载 并双击打开相应服务器的证书 -> 安装证书 -> 本地计算机 -> 放入下列…-> 浏览 -> 受信任的根证书颁发机构 -> 完成
Android 下载 pem 格式证书,root 并解锁 system 分区后手动复制到 /system/etc/security/cacerts 并重命名为 c8750f0d.0 即可 (如果安装多个私服的证书,依次把文件命名为 c8750f0d.1 c8750f0d.2 … 即可);
无 root 的安卓建议放弃。(等哪天我有玩安卓私服的想法再探索)

其他操作系统不提供安装证书教程

确认证书安装完毕后进行如下操作

  1. 修改前先打开游戏客户端检查并完成更新
  2. Windows:前往 设置-网络-代理-手动设置代理 设置代理,服务器 / 端口 按照自己所要连接私服的服务端配置填写,关闭 请勿将代理服务器用于本地地址 ,填写完确定并开启代理,完成后暂时不要关闭页面
    Android:前往 系统设置-WLAN 设置当前连接 WiFi 的代理,或前往 移动网络-APN 修改 APN 设置,修改前请自行备份避免出错,完成后暂时不要清后台
    iOS:WiFi 类似于 Android,移动网络无法修改 APN
  3. 修改完成后启动 国服官服 / 国际服客户端 ,用户名 + 密码 (密码随便填) 即可登录,登录后进入最后白屏加载界面即可关掉代理

每次登录都需要如此操作!开启代理再运行游戏便进入私服,不开启代理运行游戏就是官服

注意:

  • 如果使用的是 国服客户端,启动后有弹窗 (仅 Win) 且登录页面标题为 HOYOVERSE 而不是 miHoYo 即代表成功连接私服;国际服客户端服务器选择界面如只有一个服务器(或者没出现服务器选择页面) 而不是 Asia 等四个则成功连接到私服

常见问题

传送?

任意标点,类型选择钓鱼点,并点击确认即可传送至目标上空;传送后不会自动关闭地图,手动关闭地图即可看到;可以通过修改标点名称以传送到不同高度,缺省值 300

副本?

目前仅有部分副本可用。但是刷出来的东西也不对,部分进不去。

回血?大招无敌帧?

在做了在做了(新建文件夹)注意由于大招没无敌帧,普通模式容易暴毙,建议开godmode)

深渊?

深渊目前完成了大部分,9层存在不刷怪bug,修复与否尚未知晓。

注意一个服务器一次只允许一位玩家进入深渊,其他人进去会踏入虚空

如何去金苹果?

点开地图,再点开右下角进入地图选择,金苹果群岛,金苹果地图没亮不用管,传就是了

尘歌壶

目前看起来去不了

角色 id

每个角色都有两个 id,长 id 100000xx 只用在 givec 命令中,短 id 10xx 用在其他各处;另外大部分角色各种 id 都是对应的,比如其命星 id 为 11xx ,卡池标题和封面为 A0xx

控制台指令

游戏登陆后默认有一个名为 Server 的好友,此为游戏控制台,可向其发送指令;当然,你也可以在服务端控制台窗口中输入指令;注意部分指令仅可在其中一种途径使用

建议使用 GrasscutterCommandGenerator (仅 Win) 或网页工具 GrasscutterTools 等生成指令(中文)

(英文用户请移步Github Wiki:点击这里

常见故障

注意:如果您严格按照本教程部署连接,那么不应当出现任何错误,错误均为您没有正确配置导致,故此处仅稍微列出部分常见故障,不出意外的话以下这段又臭又长的文字基本帮不到你

部署服务器

服务端启动报错

如下图报错表示 443 端口被占用,请检查 (很多情况是 VMWare Web 服务器等 占用);如确实无法解除占用请尝试修改 config.json 中的端口,同时修改 proxy_config.py 中的端口

服务端下不了证书

没有正确配置代理;存在其他代理软件;打开的是 https 而不是 http

命令行窗口报错

自行百度 / 翻译解决,无图言屌

连接服务器

4206 错误

此类错误绝大多数情况为代理未正确配置,可尝试

仔细检查代理端 / 服务端所有配置

重启代理端 / 重启服务器

开启代理后运行游戏,检查服务端和代理的日志,如果代理中

  • 没有 mihoyo.com / hoyoverse.com 子域的请求或者没刷新任何日志,则为客户端代理配置错误
  • 有 mihoyo.com / hoyoverse.com 子域的请求,但报 TLS handshake failed,则为客户端未安装对应服务端的证书,或服务端不能连接到相应域名
  • 有 mihoyo.com / hoyoverse.com 子域的请求,但报拒绝连接等错误,可能是服务端网络问题导致无法连接米哈游服务器

如果代理没有报错,则应为服务端问题,检查服务端配置或者更新服务端

如仍无法解决,可尝试以下操作:

  • 关闭代理正常启动游戏检查更新完后再次开代理进入游戏
  • 修改 config.json 中 server.http.accessAddress 为 dispatchcnglobal.yuanshen.com

以上操作均失效,建议看看运势,烧点香,给服务器磕几个头。

502 / 4301 / 无法连接服务器

检查下你服务器网关的配置,实在不行换一个服务器重新配置一下看看

登陆后检查更新失败

如果代理日志中有 mihoyo.com / hoyoverse.com 子域的请求,但报拒绝连接等错误,可能是服务端网络问题导致无法连接米哈游服务器

开启代理后还是登录了官服

有其他代理冲突;服务端没有正确运行

4201

检查是否正确安装并信任证书

卡检查更新

尝试正常进游戏一次后再连代理进;检查服务端网络问题,如确实没问题请尝试重启代理端 / 更换代理端口 / 重启服务器

进门后连接超时

UDP 22102,反复确认此端口的连通性

进门白屏

如果不是你作死,祈祷下你数据库没出问题,如果没啥数据建议删库跑路(#滑稽)

关于

版权声明

本私服端基于开源项目 Grasscutter ,请不要乱提 issue
本文档部分内容基于 Grasscutter Wiki ,TomyJan‘s blog虚之亚克洛 OTOOBLOG 及 虚冇的避风港

任何使用行为请遵守相关法律法规及版权方授权协议