Windows 搭建原神私服

Windows 搭建原神私服

十月 17, 2022
该文章更新于 2023.11.21

说明

目前 Grasscutter 项目最大支持到 4.0 版本


客服端下载

4.0 国服

来源: 官网

4.0 国际服

来源: 官网


搭建环境

  1. Java17或其它版本

    Java17

    来源: 编程宝库


  2. MongoDB

    MongoDB

    来源: 官网


  3. Python3.8+

    Python

    来源: 官网


  4. Mitmproxy

    Mitmproxy

    来源: 官网


配置服务端资源

  1. 下载 Grasscutter 项目,解压到任意位置,解压后得到的文件夹名为 Grasscutter-development

  2. scripts 目录下的 proxy.pyproxy_config.py 文件移动至根目录,删除多余的文件,保留下图五个文件即可

  3. 下载 GC Resources 项目,把里面的 ResourcesTool 文件夹,解压至 Grasscutter-development 目录下,把这两个文件夹的名字改成小写。

  4. 下载 Releases 最新版的 grasscutter.jar,把下载的文件重命名为 grasscutter.jar ,然后放至 Grasscutter-development 目录下


运行服务端

修改配置

编辑 proxy_config.py 文件,把 USE_SSL 的值改为 False

编辑 start_config.cmd 文件,把里面的值改为相对应软件的路径

CMD
1
2
3
4
5
6
@rem jdk
set JAVA_PATH=jdk的安装路径
@rem mitmproxy 代理
set MITMDUMP_PATH=mitmproxy的安装路径
@rem mongodb 数据库
set MONGODB_PATH=mongodb的安装路径

运行服务

  1. 双击打开 start.cmd 文件,运行服务端,随后输入 stop 停止服务端

  2. 服务端的目录结构

  3. 编辑 config.json 文件,把 useEncryptionuseInRouting 的值修改为 false

  4. 再次双击打开 start.cmd 文件,运行服务端

获取证书

浏览器访问 http://mitm.it/,下载相应的证书

安装证书

存储位置选为 本地计算机 > 下一页 > 下一页 > 证书存储选为 受信任的根证书颁发机构





连接服务端

安装补丁

下载 RSAPatch.dll 文件,下载完成后重命名为 version.dll ,然后把该文件放到游戏根目录下

创建账号

BASH
1
2
# <username> 用户名 | <uid> id 
account create <username> <uid>

运行游戏

启动游戏,输入刚刚创建的账号,密码随便输入,然后登录即可

停止服务端

在命令窗口输入 stop 即可


自定义配置

config.json 文件

BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 监听的本地地址,建议保持 0.0.0.0
server.http.bindAddress
server.game.bindAddress

# 服务器的 公网/内网IP,默认为 127.0.0.1 即只允许本机连接
server.http.accessAddress
server.game.accessAddress

# 服务器名称
server.dispatch.defaultName

# 进入游戏的欢迎表情 id(int 数组)
server.game.joinOptions.welcomeEmotes

# 进入游戏的欢迎语
server.game.joinOptions.welcomeMotd

# 进入游戏的欢迎邮件,成员有 title content sender items ,items 成员有物品 id itemId 数量 itemCount 等级 itemLevel
server.game.joinOptions.welcomeMail

# 游戏控制台的资料,成员有 avatarId 头像 (长的角色 id),nameCardId 名片 id,adventureRank 冒险等级, worldLevel 世界等级, nickName 昵称, signature 签名
server.game.joinOptions.serverAccount

# 是否自动创建账号,默认为 false ,如修改为 true ,则允许登陆不存在的账号时自动创建 (不建议)
account.autoCreate

# 自动创建的帐号默认拥有的权限 (文本型数组)
account.defaultPermissions

# 库存上限
server.game.gameOptions.inventoryLimits

# 单人 / 联机的队伍角色数量上限
server.game.gameOptions.avatarLimits

# 是否启用体力系统
server.game.gameOptions.staminaUsage

修改卡池

配置文件为 .\data\Banners.json

BASH
1
2
3
4
5
6
7
8
9
10
11
# 常驻池
gachaType=200,scheduleId=893

# 角色 UP 池
gachaType=301,scheduleId=903

# 武器 UP 池
gachaType=302,scheduleId=903

# 角色 UP 池 2
gachaType=400,scheduleId=913

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

注意 2.7 版本的新卡池是按照实际 up 五星角色显示名称而不是和老版本一样根据卡池 id 显示 (旧卡池不受影响)。

BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# UP 五星,对应 id 在 Handbook 中可以找到,需修改 prefabPath previewPrefabPath titlePath 中的 A0** 为对应的卡池 id
rateUpItems5

# UP 四星,对应 id 在 Handbook 中可以找到,需修改 prefabPath previewPrefabPath titlePath 中的 A0** 为对应的卡池 id
rateUpItems4

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

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

# 卡池开始的 10 位时间戳
beginTime

# 卡池结束的 10 位时间戳
endTime

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

# 为四星的权重数组,每个成员由两个数字构成,后一个数字代表前一个数字抽数下出四星的权重
weights4

# 为五星的权重数组,每个成员由两个数字构成,后一个数字代表前一个数字抽数下出五星的权重
weights5

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

注意开启太多卡池会容易报错,修改完建议使用工具检查语法是否正确,修改完后需要服务端 reload 或者重启才会生效


数据库

MongoDB 数据库默认无需密码也可访问,修改所有数据,故如果服务器搭建在公网,为保证数据安全,请进行以下操作

进入 MongoDB 安装目录下,以管理员模式打开cmd,执行

BASH
1
mongo.exe

切换到 admin 数据库

BASH
1
use admin

创建一个有权限管理任何数据库的用户,其中 uname upwd 请替换为你欲创建的用户名和密码

BASH
1
db.createUser({user:"uname",pwd:"upwd",roles:[{role:"root",db:"admin"}]})

打开 cmd, 输入 mongod.cfg 来编辑数据库配置文件,取消掉 security 的注释并修改为

BASH
1
2
security: 
authorization: enabled

保存后,使用 net stop Mongodbnet start Mongodb 重启数据库即可
注意,还需要修改 config 中的数据库配置 connectionUri , 例如 mongodb://uname:upwd@host:port


常见问题

控制台指令

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

游戏内发送指令均需加上前缀 ! 或 /

查询指令可以,打开服务端的 GM Handbook\GM Handbook - CHS.txt 文件,查询指令及资源id,或者使用 GrasscutterCommandGenerator GrasscutterTools 生成指令

错误问题

2.1. 服务启动报错
请检查端口是否被占用,无法解除占用请尝试修改 config.json 中的端口,和 proxy_config.py 中的端口。

BASH
1
2
3
4
5
# 查看占用端口的进程
netstat -aon|findstr "端口号"

# 杀掉进程
taskkill /t /f /pid 进程pid

2.2. 无法下载证书
没有正确配置代理,存在其他代理软件,打开的是 https ,而不是 http。

2.3. 4206错误
检查代理端 / 服务端所有配置,重启代理端 / 重启服务器。
若无法解决则,关闭代理正常启动游戏,检查更新完后,再次开代理进入游戏。
修改 config.jsonserver.http.accessAddressdispatchcnglobal.yuanshen.com

2.4. 登陆账号提示网络错误 / 网络超时
修改 config.jsonserver.http.accessAddressdispatchcnglobal.yuanshen.com 然后进一遍游戏,如果能进去,就可以将其还原。

2.5. 点击登录转圈然后没反应
如果点击后服务端日志有成功登录的提示,关掉登录窗口即可进入游戏。如无,重启服务端代理。

2.6. 502/4301/ 无法连接服务器
没配置正确,请自行检查

2.7. 登陆后检查更新失败
代理日志中有 mihoyo.com / hoyoverse.com 子域的请求,但显示拒绝连接等错误,可能是服务端网络问题导致无法连接米哈游服务器

2.8. 开启代理后还是登录了官服
有其他代理冲突,服务端没有正确运行。

2.9. 4214错误
密钥错误,原因 没有 patch 客户端 / 客户端 patch 错误 / 客户端与服务端不兼容。

2.10. 4201错误
检查是否正确安装并信任证书

2.11. -9203错误
一般为代理问题

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

2.13. 进门后连接超时
放通 UDP 22102

2.14. 进门白屏
乱改数据库改出问题了,或者服务端系统不兼容 Java

作者: 棕果核
标题: Windows 搭建原神私服
声明: 本文采用 CC BY 4.0 进行声明

-   END   -