跳过正文
  1. Posts/

翻到 2017 年的简历,我才想起自己还做过一个游戏

·1384 字·3 分钟
目录

最近翻出了一份 2017 年的简历,LaTeX 排版的。那几年流行用这个。

工作几年之后,简历上的项目会一轮一轮地换。太早的项目被更有分量的项目挤掉,这很正常。所以翻到那一份的时候,上面不少条目我都觉得陌生,像在看别人的简历。

直到看见这一段:

塔防类游戏《像素战争》(类似《部落冲突》) 小组合作;使用 Unity 3D 以及 PlayMaker,主要负责 AI 算法和游戏逻辑的编写。

《像素战争》。看到这几个字,我愣了一下,然后意识到一个有点尴尬的事实:要不是这条简历还在,我大概不会想起自己做过这么一个东西。

于是想趁记忆还没消失干净,把还记得的部分写下来。

这是个什么项目
#

那是 2017 年的大三暑假。学校组织了一次工程实训,我们小组合作,做了一个叫《像素战争》的游戏。

玩法大致类似《部落冲突》:玩家把角色放到地图上之后,就不直接控制它们了,角色会自己行动、找目标、战斗。

能确定的技术栈是 Unity、C# 和 PlayMaker。PlayMaker 是 Unity 上一个可视化的状态机插件,不写代码也能把逻辑连出来。当时应该有一部分逻辑是用它搭的,具体哪些用了它、哪些是自己写的 C#,已经记不清了。

我在小组里负责游戏 AI 和游戏逻辑。这里得解释一下,简历上写的“AI 算法”,和今天大家看到 AI 两个字时第一反应想到的东西,完全是两回事。2017 年说的游戏 AI,指的是游戏里角色行为的逻辑,也就是放下去的角色怎么自己动起来,跟机器学习没有任何关系。现在再看简历上“主要负责 AI 算法”这一行,多少有点喜感。

还记得的部分
#

游戏里应该有好几种角色。印象里近战和远程都有,具体几种、各自叫什么,完全想不起来了。

角色放下去之后怎么行动,大致流程应该是:自己寻找目标,移动,进入攻击范围,攻击,目标死了再找下一个。不过这条流程是我根据玩法推测的,这类游戏的角色逻辑大概都绕不开这些,当时的实现我已经无法确认了。具体怎么写的、有没有做寻路,统统记不清。至于 NavMesh,我没什么印象,这里就不猜了。

还有一个词,到现在都记得非常具体:空气墙。

空气墙在这个项目里至少有两个用途。一是限制玩家放置角色的区域,不是哪里都能放;二是防止这些自动行动的角色跑出地图边界。角色会自己移动,没有边界约束的话,大概会直接走出地图。

“空气墙”这个词能留下来,我自己也有点意外。项目里那么多逻辑都忘了,偏偏一个最朴素的边界设定记得这么清楚。大概是因为它足够具体,而具体的东西比抽象的设计更容易被记住。

最后那几天
#

这个项目还有一件事,我一直记得。

当时我正准备出去实习。实训到了最后阶段,我需要提前离校,第二天就要到海翔广场旁边的酒店报到。

项目最后是做完了的。只是到了最后调试的时候,我已经不在学校,还有一部分游戏逻辑没调通,就和室友远程结对编程,一点一点把剩下的逻辑调完。

报到前一晚,我还在调 Unity 里的游戏逻辑。两件事挨得这么近,当时倒没觉得有什么特别。现在回头看,这算是大学和上班之间一个很具体的分界点:一边是学校的工程实训,一边是马上要开始的实习,中间隔着一个还没调完的游戏。

收尾
#

这个项目没有留下什么。代码不知道还在不在,截图大概率也没有了。如果现在去翻硬盘,估计翻不出什么。

所以只能先写这么多。能确定的部分就写下来,记不清的就空着。至少下次再想起《像素战争》的时候,这篇东西还在。

简历上消失的项目不代表没发生过。只是如果不记下来,它们可能就真的只存在于几年前的一份 LaTeX 文件里了。

相关文章

使用github actions来部署 github pages

·1240 字·3 分钟
目前我的博客是部署在 GitHub Pages 上,源码是一个 repo,渲染出来的静态页面是一个 repo。更新的时候是把后者作为前者的 submodule。 感觉这种方式有些落后了,简直和某司内部的平台有的一比。因此尝试用 GitHub Actions 来自动化这个部署流程。

2020年终总结

·1280 字·3 分钟
本来不知道写什么所以不打算写了,不过后来觉得可以把今年做的一些重大的决定写出来,把当时的分析和想法记录下来。这样若干年后再回看,就能找到:是哪些明智或愚蠢的决定对人生产生了巨大的影响。