不知道从什么时候开始的,我对时间似乎没什么实感,居然这都2023年了。

翻之前的文件,感觉前不久写的代码,日期是2020年。

2022年远去,在这一年里,我都做了什么呢?

做的事

程序相关的,做完的、没做完的,只要是暂时不打算做的项目都打包存起来了,翻了一下,程序上做过这些东西:

  • 原神自动演奏MIDI
  • 异想天开的项目(未完成,稍后细说)
  • 实时声音处理(未完成,稍后细说)
  • 音高提取(去年c++写挂了,今年用javascript写成了,但其实我至今还没用过)
  • M3U8下载器(我把问题想简单了,这个工具下文件很可能出问题)
  • IPV6的DDNS
  • 运行在机顶盒上的QQ机器人,基于go-cqhttp。
  • 压榨AI的请求工具
  • 简单的加密工具(稍后细说)

学的东西嘛···
3D建模自从学了个入门就再没什么进步了。
总体来看,和美术相关的都没什么进步,除了学了一点点Live2D。

  • 日语,今年学校日语的课程讲的东西很多,看没有字幕的番嘛···还是不可能~~(后边学零散语法赶上疫情,我什么时候补这部分的课啊)~~
  • C# 学的时候感觉啥都懂,学完发现学了个寂寞,学了之后用不上,过不了多久应该就忘了吧
  • Go 这个刚学的时候和C#的处境一样,现在应该算是我最拿手的语言了(C++这货,别提)。
  • 嵌入式 托机顶盒的福,虽然没经验,但比我造打印机那会儿明白太多了。曾记否Arduino上面malloc
  • Linux 还是来自机顶盒。体会到一切皆文件是个啥了。
  • 没想到到了高三我还在摸鱼

程序方面,现在的我感觉,没有必要学这么多没用的东西,需要什么学什么也完全不耽误事。有ChatGPT,最佳实践直接问就好了。

世界

今年感觉是不一样的一年,我从来没有感叹过技术什么的进步,但是今年我似乎看到人工智能领域的突飞猛进,文心大模型、NovelAI、ChatGPT···

最终国家放开疫情管控,疫情可能就到今年为止也说不定,疫情是19年的事情,在我空荡荡的记忆中,疫情像是从今年才开始的。可惜呢,学校消极治理,我们全体新冠。

异想天开的项目

这一切源于:我想用程序写一个世界

当然,我肯定没法用程序写一个世界,所以这里要有一些取舍。砍掉高度轴,变成2D的,减少计算量和代码量,然后将世界的对象分成两种,一种不会动的叫建筑,一种会动的叫生物。

保证效率,用c++,我的算法虽然学的不怎么样,但是根据规模判断哪种代码能写、哪种不能写还是可以的。

建筑都是矩形,生物都是点,世界有边界,但是非常大,查找和碰撞计算用四叉树优化。

矩形、向量、线段··· 这些基础的东西并没有找到合适的轮子,这些都是拿草稿纸自己用数学推的。

异世界世界观,有魔法,有魔物。

打算最终C++写完,留出接口,在外面包一层游戏引擎。

但是,最终问题出在AI上面,里面的生物需要AI,既然最初的目标是世界,那么这些AI需要聪明。

目标导向的行为规划(Goal-Oriented Action Planning,GOAP)

写状态机?写行为树?魔物倒是可以这样应付应付,NPC嘛···

最终只能是GOAP了吧。

这是什么东西呢?

做每一件事情都有前提、做完会有 价值(代价),当AI需要完成一个目标时,肯定有不同的方法可以达成这个目标,GOAP搜索一个价值最高的路线,AI一件一件地完成这些事情,得到最优解。

怎么写呢?

说简单很简单,有向图求最短路径嘛。

图也好画,根据事情的前提画图。但是由于世界千变万化,不能在每一次求最短路线的时候把图画出来,这样太慢,而且存在很多循环操作、和物品扯上关系的事情可能是无限长的链。走一步画一步,这样做是最好的。

理论很成功,实际上,效率。

对于一般的游戏来说,一共就那几个操作,遍历也用不了多少时间,但是这里,多达成百上千的物品,每个物品的每个合成配方都是一个图上节点。

先不说很多NPC,我觉得一个NPC就得很长时间。

枝剪优化,物品的合成配方错综复杂,一定会有循环,这种循环一定没有意义(如果越循环东西越多,那我就得改物品合成表),动态生成的图,这种循环怎么找呢?就算解决这个问题,依然杯水车薪。


考虑到东西很多,通过Excel写数据,特殊的物品、建筑以挂脚本的方式实现。

但没想到,最终,卡在了写AI上面。

实时声音处理

学了一点点神经网络的我想训练一个处理声音的AI。

最初的目的是,写一个AI变声器。

同时我希望它可以高度自定义、可扩展。

界面用Web写,声音处理用C++写,nodejs调C++ dll。

为了高度自定义,声音的处理是一个一个的节点,通过连接节点达到自定义的效果,像是3D软件里面渲染的节点连线。(现在我知道,一些声卡就是这样的)

界面写了一半,我想到,要不要先做个Demo?

先去翻了一下前人走过的路,我发现,我的想法不对。

我想把两段内容相同的语音完全对齐,一段是我的,一段是目标的,然后AI学习把我的变成目标的。

首先,完全对齐这里就行不通。

前人做的项目用了很多我没见过的技术,最终效果也不理想。

所以这个项目到此为止。

等到有谁训练了真正能变声的AI再说吧。到那时候肯定有人写了比我好得多的应用程序吧。

简单的加密工具

有了服务器(机顶盒),在上面运行Alist然后RaiDrive挂载本地十分舒服,我想把我磁盘里面用不到但是很重要的东西清理到网盘上,我有一些不符合规定的文件。

这些文件放上去难免会被删,所以,我需要一些手段免杀。

常规方法,压缩,但是解压太麻烦了,加密工具加解密同样太麻烦(主要是慢)。

怎么办呢?

违规文件也就一些图片视频什么的,只要随便改改里面的内容让它打不开不就免杀了嘛。(阿里似乎会在上传的时候用AI检测文件内容)

于是用Go写了一个加解密工具,加密方法十分简单,可以说,加解密花费的时间相当于把文件复制一遍的时间。

每个文件使用不同的加密密码,密码直接存在加密之后的文件里面。

成功免杀。

结果有一些我认为不违规的图片被删了。不就是少点布料的二次元图片嘛

看了一下,我用AI画的,所有正经的图片都没事,所有不正经的图片全都被删了。


看看日历,我的高三都过去一半了啊!

一周多之后考听力,六个月之后考高考。

不要再摸鱼了

我能想到的,最大的成功就是无愧于自己的心。