做了个节奏光剑实时状态挂件
作者:V君 发布于:2020-10-28 22:38 Wednesday 分类:折腾手记
效果:在游戏画面前叠加一层,用于显示分数、歌曲、性能信息和图表
安装:使用 ModAssistant 安装 HTTPStatus 和 YUR 后将 dll 丢进 Plugins 目录然后运行exe
若找插件管理器找不到 YUR,去官方 discord 找
HTTPStatus 插件可以去 GitHub 找 release 若是没有 release 就自己编译吧!
配置:无需任何配置
扯扯:
看到一些视频有些叠加在前面的挂件,后来了解到原来是通过HTTP方式向外部提供来实现的。现有的实现大部分都是基于网页,然后用OBS之类的录屏软件做叠加处理。
我一直用 GeFore Experience 来录屏,懒得改用 OBS。那就自己撸一个吧,反正半透明的窗体也不难搞,于是这玩意儿就出来了。早期只有 HTTPStatus 的数据,后来想到可以把 YUR 的心率和燃烧率整合进来,又做了个插件去读YUR的数据(插件的插件……)。再后来,想知道为啥帧数很低,就把 OpenHardwareMonitor 集成进来读取 CPU 和 GPU 负载了(发现是 CPU 拖了后腿…),它自带有 sys 文件会释放到 exe 旁边,如果杀毒软件拦截,你就要做出选择是相信 OpenHardwareMonitor 还是相信你的杀毒软件了,我不背锅。
最后就是解释为啥这么迟才发表文章了。还不是因为游戏更新,而且YUR插件也没出来,就一直拖着一直到昨天去 YUR 的 discord 问了才知道,原来插件已经出来,但是还没有通过 BeatMods 的审核…(我想说我做的音量插件也一直处于 Pending 状态,别人家晚来的插件都通过了。。
标签: 软件开发 插件 C# Winform Unity VR游戏
做了个节奏光剑SFX音量调整插件
作者:V君 发布于:2020-10-23 13:21 Friday 分类:折腾手记
TL;DR [ 源代码 ]
效果:将击中方块和 Miss 的效果音调整至最大
安装:将 dll 丢进 Plugins 目录
配置:无需任何配置
扯扯:
原味的游戏效果音太小了,打起来没感觉,尽管 Auros 桑的 Enhancements 插件有调整各种音量的功能,但好像又还没为游戏更新做好准备,那我就先自己撸个写死的吧。
做了个节奏光剑的歌词插件
作者:V君 发布于:2020-8-2 8:56 Sunday 分类:折腾手记
效果:在游戏过程中同步显示带翻译、注音的歌词
安装:使用 ModAssistant 安装 IPA 和必要的库,然后将 BeatLyrics.dll 丢进 Plugins 目录
配置:一共需要设置两个环境变量,先设置环境变量再启动 Steam
BeatSaberDir - 指向 BeatSaber 安装目录,让工具能扫描地图文件
BeatLyricsDir - 指向歌词目录,工具将会把放歌词文件存到这里,插件将会来这里读取
使用:需要先用工具为地图添加歌词才能在游戏中显示
扯扯:
做这个玩意儿之前肯定会先看看有没有别人做好的东西,比如 BeatSinger 不过它的样式以及歌词关联方式并不符合我的习惯,于是就参照多个插件的源代码来整一个自己的版本,还搞了个管理界面来调整歌词时间轴。
【内存盘已可用】[稳!真香!]基于WinSpd驱动用C#实现虚拟磁盘
作者:V君 发布于:2020-6-14 11:14 Sunday 分类:折腾手记
老样子先 [ 源代码 ] and 目前实现已功能的用法 TL;DR 再展开扯扯。
在开始之前不要忘记安装 WinSpd 驱动,默认安装路径为 Program Files (x86)\WinSpd 附带有引用程序集和示例代码。安装包里面的驱动文件已经过数字签名,无需打开测试模式。
:: 创建磁盘镜像
svd create raw 50GB C:\Path\To\Your\Image.img
:: 创建虚拟磁盘并挂载镜像
svd mount image C:\Path\To\Your\Image.img
:: 创建虚拟磁盘并分配内存(内存盘)
svd mount ramdisk 10GB
:: 创建虚拟磁盘并分配内存(内存盘)建立NTFS分区并创建Temp文件夹
svd mount TempNtfsRamDisk 10GB
:: 创建虚拟磁盘并分配内存(内存盘)建立NTFS分区并创建Temp文件夹 然后分配盘符 Z:
svd mount ZTempNtfsRamDisk 10GB
:: 安装为windows服务
svd install SvdRamdisk10G mount ZTempNtfsRamDisk 10GB
别看 Main 的 Usage 写了那么多参数组合,其实目前也就实现了上面几条……
好了开扯吧! (o ‵-′)ノ”(ノ﹏<。)
两三年前我妄图免驱在 Windows 上实现 FUSE 结果被 WebDAV 坑了一把,接着又被 SMB 接口的实现劝退… 最近折腾起无盘,倒腾 iSCSI 发现这东西除了能实现无盘启动之外,并不香,性能也不高,连接到本地的 Ram Disk 也只有 200MB 每秒。
总的来说 Windows 上自带的这类功能设计的极为保守,iSCSI 和 SMB 在遇到一丁点儿差错的时候都首选了重试并等待的保守策略,造成的直观体验就是界面冻结。在 Windows 的免驱 FUSE、虚拟磁盘的尝试走到尽头。“我V君就算是饿死,从这里跳下去,也不使用三方驱动”自从看到 WinFsp 项目主页上介绍的 WinSpd 之后,“真香!”
通过查看示例,发现 WinSpd 的使用方法十分简单,和 TalAloni 的 iSCSI 接口相似(其实都是在 SCSI 层转换成简单接口),还支持 TRIM(UNMAP) 指令,再稍加些外围代码把实现好的接口喂给驱动,运行起来就能听到插入U盘的提示音,然后就能在设备管理器和磁盘管理器中看到新增的虚拟盘了。
把之前做好的 RamDisk 实现移植过来之后就赶紧跑了跑性能测试看看,结果发现完爆 iSCSI 方式,速度可达 1.5GB 每秒,虽然没有 SuperSpeed RamDisk 快,但也够用了。起初认为可能是托管代码效率的影响,勉强尝试用C语言实现接口,发现性能也没差太远。那只能甩锅给内核与应用程序之间来回交互导致的性能损失了吧,印象中 SuperSpeed RamDisk 的内存占用会体现在 System 进程,那就能想象到 RamDisk 的逻辑全都在驱动中实现了。
接下来扯一下稳定性,之前我不首选使用第三方驱动来实现虚拟磁盘的原因是怕蓝屏。在保存好所有需要的东西后,开始做做死看看 WinSpd 的稳定性。尝试在实现的接口里面抛出异常、意外结束进程这些操作之后,发现稳定得一笔,一次蓝屏都没出现!接口中抛出异常给系统的反应是IO错误,进程意外结束则体现为拔掉U盘。这不就是我梦寐以求的粗暴策略吗?去你的重试等待!
最后就是「展望未来」环节了。如果把接口的实现做成 C/S 架构,就能在一定程度上把 iSCSI 代替掉了。目前我用 iSCSI 不仅用作启动,还用来跑远程存储、差分快照、RamDisk。若再加一些简单的压缩,或许还能突破 1Gbps 局域网传输速度呢,反正现在的 CPU 跑的这么快嘛!这就是自己造轮子的好处,可以随意改变姿势~
这个月的干货(?)在Windows上手动装配MySQL,绿色运行和注册成Windows服务
作者:V君 发布于:2020-5-21 18:04 Thursday 分类:应用软件
前言:在网上 MySQL 的安装、配置教程遍地都是,但似乎没有把多种姿势的放一块儿的,那就把自己整理的文档发表出来吧!(也方便以后自己翻查←这才是主要目的
这次依然从 TL; DR开始
- 下载 MySQL 的 zip 包
- 解压、试运行检查依赖
- 撰写配置文件、初始化数据库目录、绿色运行
- 将 MySQL 实例注册成 Windows 服务
- 配置 root 远程访问权限
列完 TL;DR 之后就是展开每一步了
- 下载 MySQL 的 zip 包
MySQL 的 zip 包官方下载地址为:https://dev.mysql.com/downloads/mysql/。 本文在撰写时版本为 8.0.20
- 解压、试运行检查依赖
本例解压到的目录为 Z:\My_\Home ,解压之后首先尝试双击 bin 目录中的 mysql.exe 看看有没有弹出缺少DLL的提示。若缺少依赖可能会弹出 VCRUNTIMExxx.dll,这就需要去找对应的 redist 安装才能解决。
- 撰写配置文件、初始化数据库目录、绿色运行
现在可以以多种姿势来使用 MySQL 了,分别是单实例、多实例;绿色、服务,横竖各切一刀分成4种。单实例顾名思义就是把数据放进 MySQL 主目录,使其能够方便移动。多实例就有点像微软 SqlServer,用不同的参数指定数据目录,启动多个进程来实现。绿色就是可以放进U盘,双击就能启动。服务则是注册成 Windows 服务,能够让其随着系统开机而启动。
让我们从单实例绿色开始吧。在 Home 旁边新建一个文件夹,本例 GreenSingleton 完整路径为 Z:\My_\GreenSingleton。然后把刚才解压到 Home 的东西复制过去。打开命令提示符导航到这里,执行
bin\mysqld.exe --initialize-insecure --default_authentication_plugin=mysql_native_password
然后 data 目录就出来了,用户名 root 密码为空。接下来是启动服务端,就地执行
bin\mysqld.exe --port=3307 --bind-address=127.0.0.1
其中和绑定地址是可选的,它们都有默认值。执行起来之后不会有任何输出,服务端已经在运行了,我们可以用管理工具连接到上面去开始使用。最后就是停止服务端了,打开一个新的命令提示符,执行
bin\mysqladmin.exe -u root shutdown
就能安全地停止服务端。如果有密码则需要加上 -p 参数来输入密码,如果服务端指定了端口可以用 --port=3307 参数指定,如果服务端不在本机可以用 --host==127.0.0.1 来远程连接。可以把这两个命令存到 bat 文件来方便执行,但要注意执行目录。
接下来是绿色多实例。让我们回到 Z:\My_ ,现在已经和单例绿色没关系了,把它放置到一边 XD。创建第一个实例目录,本例第一个实例目录为 Inst-1 完整路径 Z:\My_\Inst-1 ,在里面创建 my.ini 用 Notepad++ 之类的文本编辑器打开,系统自带的记事本会追加 BOM 头,会使服务端无法启动。本例第一个实例的配置文件:
[mysqld]
bind-address=0.0.0.0
# 设置3306端口
port=3306
#skip-name-resolve
# 设置mysql数据库的数据的存放目录
datadir=Z:\My_\Inst-1\Data
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
接下来是初始化数据目录,回到命令提示符,执行
bin\mysqld.exe --defaults-file=Z:\My_\Inst-1\my.ini --initialize-insecure
然后启动服务端,在命令提示符执行
bin\mysqld.exe --defaults-file=Z:\My_\Inst-1\my.ini
停止服务和单实例一样,若要创建第二个实例,只需要复制一份配置文件,修改配置中的路径和命令行参数的路径就可以了。
- 将 MySQL 实例注册成 Windows 服务
执行以下命令就能在服务管理器中刷出,可以设置开机启动了。
bin\mysqld.exe --install MySqlInst-1 --defaults-file=Z:\My_\Inst-1\my.ini
要移除服务则执行以下命令。
sc delete MySqlInst-1
- 配置 root 远程访问权限
使用管理工具或者命令行客户端执行以下 SQL 语句
CREATE USER 'root'@'%' IDENTIFIED BY 'foobar';
GRANT ALL ON *.* TO 'root'@'%';
若需环境中没有管理工具,则可以使用 MySQL 自带的命令行客户端,以下常见的用法。
bin\mysql --port=3306 --user=root
bin\mysql --port=3307 --user=root -p
bin\mysql --port=3308 --user=root -p --host=127.0.0.1
blogger
Google Web Translator
热门日志
随机日志
最新日志
最新评论
- V君
@Quartz:(出现)... - Quartz
怎么不见人了呢... - V君
@Soar:DHCP 协议相... - V君
@Soar:当然是非... - Soar
@V君:谢谢 有空... - Soar
搞一个 1230v3+B85... - V君
@Soar:另外,也可... - V君
@Soar:iscsi服务端... - Soar
难怪这么卡,尤其... - Soar
clone了源码,提示...
分类
存档
- 2024年5月(1)
- 2023年7月(1)
- 2023年5月(1)
- 2022年11月(1)
- 2022年10月(1)
- 2022年9月(1)
- 2022年8月(1)
- 2022年7月(1)
- 2022年6月(1)
- 2022年5月(2)
- 2022年4月(1)
- 2022年3月(1)
- 2022年2月(1)
- 2022年1月(1)
- 2021年12月(1)
- 2021年11月(1)
- 2021年10月(1)
- 2021年9月(1)
- 2021年8月(1)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(1)
- 2021年4月(1)
- 2021年3月(1)
- 2021年2月(1)
- 2021年1月(1)
- 2020年12月(1)
- 2020年11月(1)
- 2020年10月(2)
- 2020年9月(1)
- 2020年8月(1)
- 2020年7月(1)
- 2020年6月(1)
- 2020年5月(1)
- 2020年4月(2)
- 2020年3月(3)
- 2020年2月(1)
- 2020年1月(1)
- 2019年12月(1)
- 2019年11月(1)
- 2019年10月(1)
- 2019年9月(1)
- 2019年8月(2)
- 2019年7月(1)
- 2019年6月(1)
- 2019年5月(1)
- 2019年4月(1)
- 2019年3月(1)
- 2019年2月(1)
- 2019年1月(2)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(3)
- 2018年9月(4)
- 2018年8月(6)
- 2018年7月(4)
- 2018年6月(1)
- 2018年5月(2)
- 2018年4月(2)
- 2018年3月(3)
- 2018年2月(1)
- 2018年1月(1)
- 2017年12月(1)
- 2017年10月(2)
- 2017年9月(1)
- 2017年8月(2)
- 2017年7月(1)
- 2017年6月(5)
- 2017年5月(2)
- 2017年4月(2)
- 2017年3月(3)
- 2017年2月(2)
- 2017年1月(2)
- 2016年12月(3)
- 2016年11月(2)
- 2016年10月(3)
- 2016年9月(4)
- 2016年8月(2)
- 2016年7月(4)
- 2016年6月(3)
- 2016年5月(1)
- 2016年4月(4)
- 2016年3月(3)
- 2016年2月(1)
- 2016年1月(5)
- 2015年12月(4)
- 2015年11月(5)
- 2015年10月(1)
- 2015年9月(6)
- 2015年8月(4)
- 2015年7月(1)
- 2015年6月(6)
- 2015年5月(3)
- 2015年4月(3)
- 2015年3月(2)
- 2015年2月(1)
- 2015年1月(3)
- 2014年12月(1)
- 2014年11月(1)
- 2014年10月(1)
- 2014年9月(3)
- 2014年8月(1)
- 2014年7月(1)
- 2014年6月(1)
- 2014年5月(3)
- 2014年4月(1)
- 2014年3月(1)
- 2014年2月(2)
- 2014年1月(1)
- 2013年12月(2)
- 2013年11月(2)
- 2013年10月(1)
- 2013年9月(3)
- 2013年8月(14)
- 2013年7月(7)
- 2013年4月(1)
- 2013年3月(4)
- 2013年2月(6)
- 2013年1月(6)
- 2012年12月(8)
- 2012年11月(6)