某二次元游戏私服搭建总结

Eutopia's Blog

Posted by Eutopia on October 23, 2023

某二次元游戏私服搭建总结

简述

经过大概几个小时的配置环境并debug,终于把Genshin Impact和星穹铁道的私服配置好了。中间也学到了很多东西,以下对整个过程做一个总结。

需要的环境

Genshin Impact3.4客户端(光是这个就很难找,最后在迅雷上找到了种子),Grasscutter1.4.6最新版,Fiddler最新版,Grasscutter-resources3.4版本,mongod数据库最新版

需要用到的知识

(非必要,但懂的话做起来更顺利,懂的话就能够进行简单的debug): 1.了解网络代理,证书的相关知识与原理; 2.C,JavaScript,shell语言;(能看懂即可) 3.了解数据库的运行机制和内部构造; 4.了解服务器与客户端与数据库的数据交互过程与方法,网络端口通信; 5.会使用命令行,会配置环境变量; 6.能科学上网(主要用来上github,不过有时github不用魔法也能打开~) 上面所提到的知识主要用于在搭建过程中出现了问题时debug,当然网上也有各种教程,不过网上教程不一定就可以解决你搭建过程出现的问题。所以up强烈建议有上面的知识基础的可以去搞,没有的话搭建起来会很痛苦(来自up本人一年前和一年后的学完上面知识后的亲身体验)。

私服运行主要原理

原神由于之前工作人员失误导致了私服的产生,目前私服的运行主要由三部分组成,分别是服务器端,客户端和网络代理端,服务器端是Grasscutter大佬自己手搓出来的,客户端是官方的版本包,网络代理用于阻断客户端与官方服务器的连接,并将连接重定向到本地搭建的Grasscutter,也就是私服。

配置环境主要步骤

1.从github上下载Grasscutter最新版1.4.6版本,还需要gitlab上与之配套的resources和proto,注意版本对应(不对应会导致编译出错等问题,即使成功可能在后面也会有一些问题),resources指Grasscutter搭建所需的资源,proto主要可以修复进入游戏后角色技能不能治疗的bug。 2.根据github内Grasscutter的ReadMe文档将服务器搭建好。并且根据其WiKi搭好Fiddler(用于实现网络代理功能)和mongod数据库。 3.从网上下载Genshin Impact3.4包,注意版本对应,Grasscutter1.4.6对应原神3.4版本。版本不对应可能会导致创建账号后卡在进入界面,一直白屏。

运行主要步骤

1.在github上Grasscutter有教程,不仔细展开,在mongod.exe所在目录terminal,运行命令打开数据库,只要terminal界面运行不中断就表明数据库配置成功。 2.在Grasscutter文件夹打开命令行,输入命令启动服务器。显示服务器以成功运行,没有报错即表示服务器启动成功,注意要先开数据库,再开服务器,否则服务器端会报错。服务器端开启后在命令行输入命令创建账户,命令在github上都有,不再列出。 3.打开Fiddler,添加Grasscutter提供的配置规则,并且修改设置允许https解密,修改默认端口为任意值(只要不是默认8888就可,up也不知道为什么~)。 4.打开原神3.4客户端,注意此处为自己下载的客户端内部的yuanshen.exe。进入登录页面Fiddler会有弹窗点击确认即可,这里是指是否信任对方证书,而此时对方是我们自己搭建的服务器,所以直接信任就可。点击确认后,就可以正常登陆自己在服务器创建的用户了。

崩坏:星穹铁道私服

总体思路与原神差不多,并且要比原神简单很多(因为客户端是测试服的包,所以加密防护做的并没有原神好,不需要打补丁),具体过程只需把客户端改为星穹铁道测试服版本,然后运行数据库,运行服务器(这里你需要去网上找资源,Grasscutter服务器是java搭建的,而星穹铁道是用node搭建的,up因为用过node,所以很快就配置完成了),但由于网上基本没有资源,并且教程也极少,而且其也即将开服等等原因,就不再赘述了。

搭建过程中遇到的问题

星穹铁道: 1.运行服务器端报错显示版本不对; 解决办法:将显示版本不对的包更新。 2.打开客户端后显示全局分发错误。 解决办法:是代理出现问题,更改其规则并且修改设置中开放端口。 3.同2的另一种原因。似乎是使用了校园网,更改后问题解决。

原神: 1.进入后显示4214报错; 原因:原神在2.8版本后就开始增加了客户端对服务器的检测,目的就是打击私服 解决办法:Grasscutter大佬已经打了补丁,不过不同版本补丁也不尽相同,并且目前最新版本3.5版本也暂时没有,3.4版本似乎是使用了公私钥加密来做了密钥协商,不过Grasscutter大佬还是把补丁搓出来了(膜~~~)根据github上教程安装补丁即可 2.打补丁后发现可以登录但进不去,卡在进入界面,一直白屏; 原因:大概率是因为版本不对应,网上有说是因为udp连接端口没打开,代理有问题的基本全是错的(如果你是服务器在自己本地的话)。 解决方法:检查一遍各个资源版本是否对应。 3.更换资源后编译服务器报错; 原因:之前已经编译过的话,服务器内部就已经存储了数据和配置,需要把这些都删掉再编译; 解决办法:删去data,cache文件夹,还是不行就重新下载Grasscutter,重新编译。

另外还需要检查是否关闭了vpn,debug时建议查看数据库,服务器端和fiddler的输出信息来判断。

总结感想

整个私服配置下来还是很繁琐的,并且搭建过程中需要大量的时间debug,up在搭建过程中就遇到了各种各样的问题,并且网上教程解决方案较少,并且大多数都是不对的,如果了解上面所提到的那些知识的话,debug的时间就会大幅缩小,并且你也会在搭建过程中作很好的实践,并学到很多新东西。up也是在多次查询博客教程无果后选择自己去解决,然后发现大学学的课程还真有用~~~。 本篇文章主要用作up本人学习总结用,也希望能给正在搭建私服的人思路,并且up在此也建议没有计算机基础的同学尽量不要碰,否则会变得不幸。