记osu!配置过程
我已经很久没有玩osu!了。
我曾经玩过osu!,我仍回忆那些与群友联机的快乐时光。从BKT的自定义osu!开始,再到官服Stable,再到Lazer。我关注osu!,我也喜欢看osu!的比赛,但我不是很喜欢玩osu!,因为我太菜了,和大佬们玩不到一起。直到最近,Lazer更新的越来越频繁,最终也引入了允许多人以不同模式玩一张图的设计。这让我这种菜鸡也能和大佬们联机一起玩同一张图了。于是我打算重新打开我硬盘上尘封已久的osu!。但在开始玩之前,我需要做一些必要的配置。
安装位置
众所周知,Stable版本的osu!改变安装位置是可能的,只是ppy没有把它明面写在安装程序上,不过这不重要了,我需要关注的是Lazer版本。我从Lazer的很早期的版本就开始关注它,那时候它更像一个玩具工程,只是有基本的游玩功能。而现在ppy将它认定为下一代osu!,同时社区对Lazer的关注和改进也越来越多,这也使得我应该将重心放在Lazer版本上。但Lazer版本有一个致命的缺陷,它不能更改安装位置,至少现在不可以。这对于我捉襟见肘的C盘空间十分不友好。因此想办法更改Lazer的安装位置就是我要做的第一件事情。
我之前曾经更改过一次安装位置,将osu! Lazer的数据转移并存储到了我的机械硬盘上。但机械硬盘速度太慢了,而且我的机械硬盘已经服役6年之久了,可能即将寿终正寝了,恰好我1年前刚刚更换了我的SSD硬盘,有了更大的空间来存储数据,因此我决定将原先存储在机械硬盘上的osu! Lazer数据再次转移到我的SSD新分区中。
删除旧链接
为了转移数据不会出现任何错误,首先我要删除我先前创建的各种软链接。如果你是全新安装的话,请跳过这一段,从下一段看起就好。首先执行下列指令:
RMDIR %APPDATA%\osu
RMDIR %LOCALAPPDATA%\osulazer
这些语句将删除旧的软链接。
转移数据
接下来就要转移数据了。如果你是全新安装osu!的话,请使用官方的安装程序一路安装下去,在能成功启动osu!后关闭所有osu!进程。请不要在osu!里做什么设置工作,尤其是不要执行什么从Stable版本进行迁移的操作,那样会导致后续的迁移过程变得复杂。
然后接下来我们要新建一系列文件夹。在你希望存储osu!数据的地方首先新建一个文件夹,名称随意,但最好别有中文。尽管osu!是由C#编写的,理论上不会有编码问题,但谁知道哪里会不会出点什么错误呢?我这里是在J:\
下新建了一个名为osu!lazer
的文件夹。然后进入这个新建的文件夹,在里面新建两个文件夹,分别名为Local
和Roaming
。前者将存储osu!程序,后者将存储osu!数据。其实这两个文件夹的名字也是随意的,只要你记得住,分得清楚即可。到此我们的文件夹就准备完成了。
文件夹的创建是必须的吗?
这里有必要澄清一下为什么要创建这些文件夹。只有最外层的那个文件夹(名为osu!lazer
的文件夹)是必须创建的。它的存在是为了防止osu!在更新时创建的一些内容泄漏到上级目录,导致找不到目录等一系列可能的错误。
而名为Local
和Roaming
的两个文件夹,只是为了将osu!的程序和数据分开,防止他俩互相干扰,因为它们的目录名太相似了,难免会搞出来一些奇怪的问题。我也没读过osu!源码,只能这么做,以尽量避免潜在的错误。
然后就可以开始迁移数据。首先我们将%APPDATA%\osu
文件夹 剪切(即移动) 到J:\osu!lazer\Roaming
中。然后将%LOCALAPPDATA%\osulazer
文件夹 剪切(即移动) 到J:\osu!lazer\Local
中。这两步操作后,你应该得到J:\osu!lazer\Roaming\osu
和J:\osu!lazer\Local\osulazer
这两个文件夹。请确保目录正确,尤其是 不要 把剪切目录搞成了剪切目录里的文件!
我这里由于是已经迁移过一次了,所以是比较简单地将之前迁移的文件移动过去就完成了。
创建链接
接下来最后一步,创建链接。由于我们先前已经将osu!从其原有位置上移出,我们需要创建一个软链接在原位置,以欺骗osu!,让它觉得自己仍然被安装在默认位置。执行下方的命令创建软链接,其中的路径可能需要修改,因为你的目录名称可能和我的不同:
MKLINK /J %APPDATA%\osu J:\osu!lazer\Roaming\osu
MKLINK /J %LOCALAPPDATA%\osulazer J:\osu!lazer\Local\osulazer
我这里采用的是结模式(Junction)创建的,我也不太清楚各个模式之间的区别,反正这么创建能跑起来。
这一步做完之后,更改安装位置的操作旧结束了,理论上就可以正常开始玩了。
网络连接
这部分内容是很久之前想出来的,仅适用于osu! Stable版本,但考虑到做一份备忘,还是写在这里。众所周知,ppy的网在国内不太好,经常连不上。许多玩osu! Stable的人需要使用一些额外的软件来代理osu!的请求,这么做有点杀鸡用牛刀了,其实不需要要安装任何额外软件,就可以代理osu! Stable版本的网络请求。
解决方案是在osu!.exe
目录下新建一个名为osu!.exe.config
的文件,并在其中写入如下内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.net>
<defaultProxy>
<proxy
usesystemdefault="false"
proxyaddress="http://114.514.191.810:666"
bypassonlocal="true"
/>
</defaultProxy>
</system.net>
</configuration>
其中http://114.514.191.810:666
是代理地址,换成你自己的就行了,唯一需要注意的是代理模式应该选HTTP就行了。言尽于此。该配置文件利用.Net Framework内部机制,会完全代理osu! Stable的网络请求。具体配置文件中各个字段的信息,可以上Microsoft官网文档中查询。
理论上这个方法适用于所有.Net Framework编写的程序。但很遗憾,osu! Lazer使用的是.Net Core,因此该配置文件对其没有作用,只能使用其它软件来做代理。