2022(完)

2022年终于过完了,细细数来,有用时间真的比往年都短。

我翻了翻Blog, 几乎没有什么转折性的收获。

因为服务器一直找不到突破方向,打算在客户端方向努努力。

年初的打算是,先打磨出一个可用的,基于Lua的客户端框架,以便能更深刻理解客户端的全部开发流程(虽然我改过客户端框架,写过还算可用的热更新框架,也写了一些Shader。 但是对于从0实现一个客户端框架,我确实没有经验)。

框架由具体需求驱动。因为我不是专业搞客户端的,所以边抄一个游戏,边实现框架是目前来讲最好的方式。

刚好这时我在网上找到了类似《王者荣耀》的全套资源,那就先抄个王者荣耀试试吧。

UI方面,我接入了FairyGUI

在接入时,我灵光一现,设计了一套多国语言机制。即使一年后今天,我重新审视这套机制,也并不能发现任何缺点。

这套机制几乎可以实现在任何语言和任何表结构下。

王者荣耀,地图中会有很多小兵参与战斗。

因此在做完登录流程之后,小兵的AI就是下一步要做的事。

游戏AI,行为树几乎是必不可少的标配。它对策划同学太友好了,实现起来复杂度又不高。

在看完《Behavior Trees in Robotics and AI》书中描述的行为树后。

我观察到一个现象,行为树表达出的逻辑,其实是状态机的一个子集。

在经过不复杂的“编译”过程后。我们可以做到在运行时以状态机的开销,来达成行为树描述的逻辑。

这样可以大大提升行为树的运行效率(对于策划而言,使用上还是行为树,只是在运行前才会将整棵树编译成一张跳转表)。

在研究行为树的过程中,发现了一本叫《Artificial Intelligence for Games, Second Edition》的书。

这本书中提到了一种叫做Flocking的算法,以前就对此类算法很有兴趣,就趁机研究了一下

后面两个月,其实就只干了一件事,抢菜。

复工之后,由于公开课《现代游戏引擎:从入门到实践》的出现,我暂停了实现客户端框架的计划。

相比实现一个客户端框架,从0实现一个客户端引擎,更能引起我的兴趣。

虽然此时的我,还没有写过一行Vulkan代码,没有看过如UE之类的开源引擎代码。

但依然想试着,根据课程内容和Unity的使用经验,来实现一个玩具引擎

在能基本渲染出一个场景后,我就迫不及待想要使用键盘来控制相机的移动。

在实现相关逻辑时,我重新思考了如何使用Lua,高效地编写3D数学相关代码

由于之前基于Vulkan抽象出来的RHI不够好(使用起来很别扭),再加上了解到了Bindless这一黑魔法。

打算将引擎直接重构成基于Bindless的RHI抽象。

比较惨的是,刚抽象完,公司就倒闭了,被迫中止客户端相关知识的学习。

根据市场需要,从零开始学习Go语言。

Go语言的优劣,我不想评判。但是他有很多不错的闪光点。

比如:这个这个还有这个

然后这个年就过完了。

再简单总结一下。

2022年技术上一共就干了三件事,结果还都没有一个完成的。

  1. 客户端框架,只做完UI相关部分
  2. 客户端引擎,只做到基于Bindless RHI的抽象,shader接口,资源格式等都还没有设计
  3. Go语言,只熟悉了,工作用最常用的底层机制,对调度及编译优化等相关的知识并不深入

2023年学习的时间不可能像以前那么多了,那么就少安排任务吧:

  1. 继续熟悉Go语言
  2. 熟悉K8S, etcd, kafka,ELK等这些在Go圈常用的基础设施
  3. 放弃之前基于静态容量的分布式架构设计,基于K8S来重新设计一套可以动态伸缩的服务器架构
  4. 研究ECS在服务端的应用

发表评论

ninety six − = eighty seven