原神私服搭建教程-Private Server

注意哦:本文档的所有部分都非常重要!千万不要错过任何一个字,要不很可能搭建失败。如果实在有问题没法解决,再询问我。

请注意:每个人或许步骤相同但也许也会遇到各种各样神奇的问题

本教程有WeChat群聊(文章最后),但是请先阅读整个文档再去提问!

视频教程

如无法访问可在网盘 ./视频教程中查看

Windows本地搭建:https://youtu.be/hYTUNwdrDIk
iOS:https://youtu.be/A7XbibXne9U
Android:无(召集素材)
服务器:https://youtu.be/qpnRlPkD42M

此文档中服务端所用到的文件均可在 RainKavik-Drive (国外:MEGA)下载,如遇无法下载等问题,请在“关于我”页面找我。

分享文件说明

./服务端/环境及工具 文件夹下为安装环境所用文件或者工具
./服务端/卡池顺序.xlsx 卡池列表,用于修改卡池时参照 id
./服务端/稳定包 服务端稳定包 (目前版本为 grasscutter v1.1 的打包)
./服务端/测试包 服务端测试包 (目前版本为 grasscutter v1.1.2 dev 的打包)
./辅助工具简单化(指令)操作的工具
./视频教程视频傻瓜式教程
./Plugins可安装插件(参考原神私服插件推荐-Plugins
./米哈游代理转向.exe用于在无法设置系统代理的 Windows 设备上设置代理
./Handbooks_FullLang_Script-x.x.x.zip游戏内各物品与 id 的对照表(全语言)
./AlwaysTrustUserCerts.zip用于信任用户证书的 Magisk 模块
./GenshinWithProxy-vx.x.x.apk 和 ./genshin-impact-patched.apk 免 root 可玩私服的国际服客户端 (待测试)

服务端打包中 full-grasscutter-xxx.zip 为服务端整合包,ota-grasscutter-xxx.zip为升级包

本服务端支持 PC端,iOS中国官服 / 国际服,Android仅支持国际服。(iOS建议使用国际服)

建议收藏此文档以便获取更新

部署服务端

环境要求

Windows x64 (建议 Win10build2002 + 版本,老版本不保证兼容, Linux 自行解决)

此处的下载链接均为官方链接,建议下载使用RainKavik-Drive海外网盘)内文件,速度更快!

MongoDB (如果您的服务器性能低或者没有管理需求,可在安装时取消勾选 Compass ;Win10 以下的系统只兼容 4.2 – 版本)
Python3.8+
Mitmproxy (本教程使用此工具演示,也可使用 Fiddler 等流量代理工具)
私服服务端 在上方 RainKavik-Drive 下载,已经打包好,即点即用
7-zip 用于解压极限压缩的服务端(压缩后约 102MB,压缩前约 947MB)

安装环境

下载网盘内文件 ./服务端/环境内所有文件,默认位置进行安装即可。总共4个文件:

注意:Windows10以下的设备在下载MongoDB的时候只能下载 4.4.20及以下版本!

PS:可选安装包含辅助你更高效处理的工具。

注意:MongoDB安装时建议不勾选 Install MongoDB Compass不勾选(当然你也可以选择安装它,可能需要更久的安装时间)

运行服务器

启动服务端

解压 ./服务端/full-grasscutter-dev-xxx.zip,并进入该文件夹
如果您按照此教程部署,直接双击 run.bat 即可运行服务端;如果安装了其他版本的 java 或者修改了安装位置,请自行修改此bat文件后再启动,启动前请确保 MongoDB 在运行中。

如果启动后控制台无任何报错,且最后输出 Game Server started on port 22102 字样即为启动成功,有报错请参照下文处理

启动代理

双击运行 proxy.bat ,如果您不希望其他主机连接到服务端,删除此脚本中的 --set block_global=false即可;如果希望在其他端口运行代理,右键编辑此文件修改 54321 为你期望的端口即可,如果删除此参数则默认监听 8080 端口,不要使用常见端口避免被攻击,此端口即为=客户端系统代理所用端口。
可直接关闭窗口以停止运行

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

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

连接服务器

如服务端与客户端分开在两台机子,则还需确保服务端端口 UDP22102 TCP443 TCP54321 均开启且未被其他程序占用(在进行连接的时候,请在config.json中更改 accessAddress为服务器/电脑IP)

首次连接

连接代理

Windows10/11:设置-网络和Internet-代理,地址本机搭建填写 127.0.0.1,连接服务器则填写 服务器公网IP

图片[1]-原神私服搭建教程-Private Server-七年博客

iOS/iPad OS:设置-无线局域网-详情(连接Wi-Fi右侧蓝色“i”)-HTTP代理,选择 手动,服务器填写 电脑/服务器IP

图片[2]-原神私服搭建教程-Private Server-七年博客

安卓方法与iOS相似,在此不多重复。

证书下载

挂好代理以后用系统自带浏览器打开 http://mitm.it ,选择你系统的证书进行下载

如果成功挂上代理,应该是如下图所示:

图片[3]-原神私服搭建教程-Private Server-七年博客

如果提示:"If you can see this, traffic is not passing through mitmproxy." 则说明代理没有成功挂上。

注意:如连接服务器代理,中国内地区域服务器会因为备案问题没法访问。需要在服务器先下载证书,再拷贝到其他设备上。

证书安装及信任

Windows:

双击打开相应服务器的证书 -> 安装证书 -> 本地计算机 -> 将所有的证书都放入下列储存-> 浏览 -> 受信任的根证书颁发机构 -> 完成
如要求密码直接留空白即可!

图片[4]-原神私服搭建教程-Private Server-七年博客

Android:

ROOT方法:下载 pem 格式证书,root 并解锁 system 分区后手动复制到 /system/etc/security/cacerts 并重命名为 c8750f0d.0 即可 (如果安装多个私服的证书,依次把文件命名为 c8750f0d.1 c8750f0d.2 … 即可);如果不能解锁系统分区可参照网盘中我的私服专用的模块制作自己私服的 CA 证书模块,或者安装信任用户证书的模块后直接在 Android 系统设置中安装为用户证书即可

免ROOT方法:尝接下载安装用户证书 (分别安装 CA 和 WLAN 证书), 使用网盘版本游戏客户端(./genshin-impact-patched.apk)。注意:首次进入游戏先注册一个国际服账号,把资源下好了,再进行开代理连接服务器。

iOS:

下载证书后传手机(可借助RainKavik-Drive)并下载,点击允许
随后打开设置,顶部安装证书。

图片[5]-原神私服搭建教程-Private Server-七年博客

再打开 设置-通用-关于本机-证书信任设置,将 mitmproxy的开关打开即可

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

创建账号

需要使用文末的 account 指令在控制台创建账号才可以登录,当然你也可以根据下节更改配置从而允许不存在的账号自动注册。创建方法如下:
语法:account create [name] [uid]
例如:account create rainkavik 10000

之后直接如此操作即可进入

  1. 修改前先打开游戏客户端检查并完成更新
  2. Windows:前往 设置-网络-代理-手动设置代理 设置代理,服务器 / 端口 按照自己所要连接私服的服务端配置填写,关闭 请勿将代理服务器用于本地地址 ,清空 请勿对以下条目... 编辑框的内容,填写完确定并开启代理,完成后暂时不要关闭页面
    Android:前往 系统设置-WLAN 设置当前连接 WiFi 的代理,或前往 移动网络-APN 修改 APN 设置,修改前请自行备份避免出错,完成后暂时不要清后台
    iOS:WiFi 类似于 Android,移动网络无法修改 APN
  3. 修改完成后启动 国服官服 / 国际服客户端 ,用户名 + 密码 (密码随便填) 即可登录,登录后进入最后白屏加载界面即可关掉代理,务必尽快关闭代理:长时间代理,你流量全走服务器,你电脑和服务器都累,而且还可能会被服务商 ban 机!

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

Tip:

  • 如果使用的是 国服客户端,启动后有弹窗 (仅 Win) 且登录页面标题为 HOYOVERSE 而不是 miHoYo 即代表成功连接私服;国际服客户端服务器选择界面如只有一个服务器 (默认为 GenshinTJ )(或者没出现服务器选择页面) 而不是 Asia 等四个则成功连接到私服
  • Windows 如果无法使用系统代理,请尝试使用云盘中的 米哈游代理转向 软件 (易语言开发,报毒属正常现象)

自定义配置

config.json

  • server.dispatch.bindAddress server.game.bindAddress 为监听的本地地址,建议保持 0.0.0.0
  • server.dispatch.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 为是否启用体力系统

其他参数请自行研究

修改卡池

如想使用全卡池,可直接将网盘中 ./原神私服/服务端/全UP池文件/Banners.json覆盖掉服务端文件夹中(前面解压的)的 .\data\Banners.json

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

  • gachaType=200,scheduleId=893 的为常驻池
  • gachaType=301,scheduleId=903 的为角色 UP 池 (多 UP: 增加 gachaType 为 302,303,304… 的成员即可)
  • gachaType=400,scheduleId=913 的为武器 UP 池

本站整合包默认为万达双 UP 及其专武 (专武封面为前者,是客户端内置资源,无法修改)

rateUpItems1 为 UP 五星,rateUpItems2 为 UP 四星,对应 id 在 Handbook_CHS.txt 中可以找到

需修改 prefabPath previewPrefabPath titlePath 中的 A0** 为对应的卡池 id(在 卡池顺序.xlsx<span> </span>中)

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

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

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

bannerType 为 STANDARD 表示常驻池,EVENT 表示角色 UP 池,WEAPON 表示武器 UP 池

sortId 可能与卡池展示顺序有关?

常见问题

传送?

任意标点选中鱼钩并点击确认即可传送至目标上空;传送后不会自动关闭地图,手动关闭地图即可看到

如何去金苹果?

右下角点击切换地图选项,选择金苹果群岛,金苹果地图没亮不用管,传就是了。

尘歌壶

目前看起来去不了

角色 id

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

控制台指令

考虑到好些人对于复杂指令不会使用,可在网站GrasscutterTools生成指令,或在网盘中(./辅助工具/GrasscutterTools-vx.x.x)下载

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

注意:

  • 游戏内发送指令均需加上前缀 ! 或 /
  • 请注意, 使用隔开 /的指令或变量代表两者皆可,使用 <> 括起来的变量必需,使用 {} 括起来的变量可省略 (省略后如 UID 则为你自己,数量 / 等级等则为 1)
  • 指令只有使用下方 permission 指令授权后,相应用户才可使用

示例:如要给用户 UID 114514 原石 x1919810,查阅得知用法 give|g [player] <itemId|itemName> [amount] ,原石 id 201 ,则可直接控制台输入 g 114514 201 1919810 / give 114514 201 1919810 ;或者游戏内聊天发送 /g 114514 201 1919810 / !g 114514 201 1919810 ,直接给当前用户的话也可省略 uid

指令同步最新版,网盘提供的端不一定可用

命令用法说明权限节点
helphelp [命令]显示帮助或展示指定命令的帮助
givegive [uid] {物品ID} [数量] [等级]给予指定玩家一定数量及等级的物品
givechargivechar {uid} {角色ID} [等级]给予指定玩家对应角色player.givechar
giveallgiveall [uid] [数量]给予指定玩家全部物品player.giveall
dropdrop {物品ID} [数量]在指定玩家周围掉落指定物品,仅客户端可用server.drop
spawnspawn {实体 ID} [数量] [等级]在你周围生成实体server.spawn
godmodegodmode [uid]保护你不受到任何伤害 (依然会被击退),仅客户端可用player.godmode
healheal治疗队伍中所有角色,仅客户端可用player.heal
talenttalent {天赋 ID} {等级}设置当前角色的天赋等级,天赋 id 为 n/e/q,仅客户端可用player.settalent
changescenechangescene {场景 ID}切换到指定场景,仅客户端可用player.changescene
killallkillall [uid] [场景 ID]杀死指定玩家世界中所在或指定场景的全部生物server.killall
positionposition获取当前坐标,仅客户端可用
teleportteleport {x} {y} {z}传送玩家到指定坐标,仅客户端可用player.teleport
setfetterlevelsetfetterlevel {好感等级}设置当前角色的好感等级,仅客户端可用player.setfetterlevel
resetconstresetconst [all]重置当前角色的命座,重新登录即可生效,仅客户端可用player.resetconstellation
setstatssetstats {属性} {数值}直接修改当前角色的面板,可用的属性有 hp 生命值 def 防御力 atk 攻击 em 元素精通 er 元素充能 crate 暴击率 cdmg 暴击伤害 epyro 火伤 ecryo 冰伤 ehydro 水伤 egeo 岩伤 edend 草伤 eelec 雷伤 ephys 物伤,仅客户端可用player.setstats
setworldlevelsetworldlevel {世界等级}设置世界等级 (重新登陆即可生效),仅客户端可用player.setworldlevel
clearartifactsclearartifacts删除所有未装备及未解锁的圣遗物,包括五星,仅客户端可用player.clearartifacts
clearweaponsclearweapons删除所有未装备及未解锁的武器,包括五星,仅客户端可用player.clearweapons
tpalltpall传送多人世界中所有的玩家到自身地点,仅客户端可用player.tpall
weatherweather {天气 ID} {气候 ID}改变天气,仅客户端可用player.weather
命令用法说明权限节点

关于各种 id 都在 Handbook_CHS.txt , 文本编辑器 (推荐 VS Code 等,Win 自带记事本无法完全搜索内容) 打开后 Ctrl+F 即可搜索

(在我的私服中) 以下指令仅管理员可用,请勿尝试使用

命令用法说明权限节点
accountaccount {create/delete} {用户名} [uid]通过指定用户名和 uid 增删账户,仅服务端可用
broadcastbroadcast {消息内容}给所有玩家发送公告server.broadcast
saysay {uid} {消息}作为服务器发送消息给玩家server.sendmessage
coopcoop {uid}强制某位玩家进入指定玩家的多人世界server.coop
kickkick [uid]从服务器中踢出指定玩家 (WIP)server.kick
listlist列出在线玩家
permissionpermission {add/remove} {用户名} {权限节点} (* 为所有)添加或移除玩家的权限*
reloadreload重载服务器配置server.reload
restartrestart重启服务端
stopstop停止服务器server.stop
命令用法用法权限节点

OTA升级

OTA升级注意事项

旧服务端可能不支持该功能,请前往网盘更新!

如果你是刚刚安装的服务端,请直接无视这一部分。

OTA升级文件下载地址在RainKavik-Drive中,请根据提示下载指定文件以及按照指定步骤操作!

OTA内容均可还原,即使是被覆盖了您也可以通过旧文件覆盖还原回去!

OTA升级 · 更新服务端

只需 stop 服务端,替换 grasscutter.jar 后启动服务端即可,整合包中的服务端核心为 1.0.0 版本,以后的 release/Dev 版本都将在网盘同步上传 jar 包

注意有的版本可能需要同步更新相关资源文件,会打包上传,全部覆盖即可

若跨版本更新您可能需要下载全量包 (full 开头) 或者前往项目地址补齐资源文件

常见故障

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

部署服务器

服务端启动报错

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

443 端口被占用

类似于下图报错说明你的 Java 版本与核心需求不一致 (或核心本身有问题),请自行更换适配 Java 版本或换核心

Java 版本不匹配

服务端下不了证书

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

命令行窗口报错

自行百度 / 翻译解决啊问我干嘛问我也不带图我怎么知道你报什么错

端口被占用

cmd 运行以下指令查看占用端口的进程

netstat -aon|findstr "端口号"

输出行末的数字为进程 pid,使用以下指令杀掉进程

taskkill /t /f /pid 进程pid

如果杀不掉并且显示是 xx 的子进程的话,杀掉 xx 这个 pid 即可

连接服务器

4206 错误

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

重启代理端 / 重启服务器

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

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

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

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

  • 关闭代理正常启动游戏检查更新完后再次开代理进入游戏
  • (搬运,待验证) 修改 config.json 中 DispatchServer.PublicIp 为 dispatchcnglobal.yuanshen.com

另外,据经验此问题可能是 凉心云 的锅,建议跑路去 良心云 吧

如仍无法解决请去烧一炷香把,虔诚点儿

登陆账号提示网络错误 / 网络超时

确认配置无误可尝试修改 config.json 中 DispatchServer.PublicIp 为 dispatchcnglobal.yuanshen.com 然后进一遍游戏,如果能进去,就可以将此配置还原

点击登录转圈然后没反应

如果点击后服务端日志有成功登录的提示,
如无,请检查服务端代理是否正确运行,是否假死 (尝试重启)

移动端:关掉登录窗口即可进入游戏 (手机版特供Bug)
PC端:在控制面板中找到程序和功能,启用或关闭windows功能,手动开启NET Framework 3.5程序等程序加载完成后即可

502 / 4301 / 无法连接服务器

绝对是你没正确配置,自行检查

登陆后检查更新失败

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

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

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

4201

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

-9203

一般为代理问题,已知 iOS 使用小火箭会存在此问题

卡检查更新

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

进门后连接超时

请检查UDP协议,端口22102是否放行!

进门白屏

你乱改数据库改出问题了,或者跟你的服务器系统/环境有关。

问题解答

关于

本私服端基于开源项目 Grasscutter

本文档部分内容补充来自 Grasscutter Wiki(服务端内核) ,虚冇的避风港(环境安装) 及 虚之亚克洛 OTOOBLOG(OTA升级部分)。

主要架构转载自TomyJan’s BLOG,并在此基础上进行了修改。

其他方式的视频教程敬请期待!

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片