Lry722 的个人博客
1404 字
7 分钟
关于建立个人博客的一些事
2024-01-03

本来是没有写东西的习惯的,所以一直没有博客。

所以,建立这个博客的原因就说来话长了。。。

最早的时候,是想做一款结合了自己爽点的游戏。灵感主要来源于 Minecraft、 CDDA、戴森球计划、泰拉瑞亚,因此大概会是一款结合生存+探索+自动化的沙盒游戏。

在经过一番探索后, Unity 和 UE 都学了一点,但最终是选择了 Godot,主要原因大概是喜欢开源和轻量级的特点。

为了不重复造轮子,因为是要做沙盒,我选择先找找有没有别人写好的 Voxel 插件,于是找到了 Zylann 的 Godot Voxel 项目,是以 module 的形式开发的。之后花了一段时间学习如何使用 Godot Voxel,也在 B 站上做了个教学视频,还有不少的播放量(快破万了)。

但是,在对 Godot Voxel 深入了解,以及和作者交流后,我发现这个 module 过于注重通用性了。作者想要构建的是一个通用的体素地形引擎,而不是单独用于某个项目。因此,很多地方都向通用性做出了妥协,导致了性能浪费或使用麻烦。比如,作者只考虑了无限世界,也就是 Minecraft 那种实时生成的生成方式,而没有考虑类似泰拉瑞亚的预先生成完整地图的方式。而在高度上,作者也追求实现无限的世界高度,哪怕这其实对游戏性未必有实际意义。

而如果我要做的是一个预生成世界、高度有限的游戏,其实完全没必要接受这些妥协。再加上其他一些功能缺失导致的不满,最终我打算基于自己的需求写一个体素引擎。当然, Godot Voxel 的代码依然有很大的参考价值。教学视频就理所当然的咕咕咕了。

为了实现这个目标,首先要做的当然就是研究 Godot Voxel 的代码。作为一个用 cpp 写的大型 module,阅读这个项目能学到的东西有很多:

  • Godot 引擎中各个类的作用,
  • Godot module 的写法,尤其是各个宏的作用
  • 现代 cpp 的技巧
  • cpp 多线程(区块装卸是多线程处理的)
  • 体素引擎的相关技术
  • 如何组织较大的项目的代码

然而阅读这个源码的经历属实是有点折磨,最大的问题就是作者使用了大量自定义的宏和工具类,而这些东西基本都没有文档。。。

读了一小部分后,我感觉以我现在的读代码能力,不适合直接读这么难啃的东西,所以就去找了找有啥适合我现在读的开源项目。因为未来工作打算搞后端,所以最后决定了研究 redis。

我想着要读源码,首先至少要会用吧,所以打算先学 redis 怎么用。然而 redis 不支持 windows 系统,虽然可以用 docker 装,但因为之前使用虚拟机的难受经历,并不是很想用虚拟机。

本机上虽然因为之前要用 FATE 做联邦学习装了双系统,有 Linux,但是切换起来毕竟很麻烦。而且 redis 其实只是服务需要跑在 Linux 上,服务跑起来后完全可以在 windows 上用图形化管理工具连接到服务进行操作,并不像 FATE 各种命令都要在 linux 上操作。

这时我想起了一个朋友 绝对值_x 之前告诉我可以白嫖服务器,于是就去看了看阿里云的学生福利,成功白嫖到 7 个月质量不错的服务器,当天就把 redis 给装好了。然后我就想着,这服务器放在那也是浪费,能不能干点别的,于是我又想到了 绝对值_x 有个博客。

其实我本来也不是完全没有写博客的想法。毕竟大多东西很久不用是会忘的,本来花了很长时间解决了一个问题,结果下次遇到还得再来一遍,感觉就挺蠢的。原本我的想法是把写过的代码都保留下来归类好,遇到问题就翻一翻,基本都能找到解决方案。但是关于搭建环境的问题,基本没有留下记录,还有一些疑难杂症也很难通过直接看代码找到当时是怎么解决的,于是就下定决心干脆也搞个博客。

不过我原本以为我那朋友的博客是搭在自己的服务器上的,结果经过一番搜索,发现好像大部分个人博客都可以免费托管在 github pages 上。。。这和我一开始打算把服务器利用起来的目标不太一致,但既然都打算做了,干脆还是做到底,最终选择了使用 Hexo 来搭建。

在 theme 的选择上,我是很喜欢那种放张大图做背景的博客,但是其他页面不想要太多图,毕竟我也没精力给每个文章都配图。大概看了看后选择了 vivia,挺喜欢这个极简风格的。

总之,这个博客的来由大概原因就是上面这些,以后主要估计也是发一些编程学习和踩坑记录,可能也会发一些爱好相关。

关于建立个人博客的一些事
https://lry722.github.io/posts/关于建立个人博客的一些事/
作者
Lry722
发布于
2024-01-03
许可协议
CC BY-NC-SA 4.0