游戏开发代码错误案例 《我在13年游戏开发中写出的一些错误代码》 在一个独处的星期五晚上,因急需一些灵感,你决定重温一些你过去「征服」的程序。旧硬盘缓缓地旋转着,你浏览着过去那些光荣岁月里编写的代码。 噢,不!这根本不是你所期望的。代码真的有这么糟糕吗?为什么没有人告诉你?当时为什么会喜欢这样写?有必要在一个功能中写这么多的goto吗?很快,你就关闭了这个项目。有那么一瞬间,你甚至考虑删除它,然后清空硬盘。 以下是我对自己过去的编程经历中的一些经验教训、代码片段和警告的整理。为了暴露错误,我没有对原有的命名进行修改。 这一年我十三岁。这个项目取名《红月》,这是一个雄心勃勃的第三人称飞行射击游戏。在该项目中,几乎没有代码不是逐字逐句地从《DevelopingGamesinJava》中复制出来的,这样写出来的代码毫无疑问糟糕透了。让我们来看一个例子。 我想给玩家设计多武器切换功能。具体方案是将武器模型旋转到玩家模型的内部,用它变换出下一个武器,然后再将它旋转回来。 我定义了很多变量。即使定义了这么多的变量,仍感觉像是缺少点什么似的。噢,对了,我们还需要一个变量来跟踪当前装备的武器。当然,这个变量被定义在另一个文件中。另一个有趣的问题是,我从来没有真正创建过一个以上的武器模型。每个武器使用相同的模型。所有的武器模型代码只是累赘。 而2005年的时候,我学习了C++和DirectX。我决定写一个可复用的引擎,以便人们可以从我过去14年来学到的丰富知识和经验中获益。 如果你认为这次也将只是令人尴尬或难为情的,请先保留你的观点。 当时,我已经学习了面向对象编程,它被认为是写好代码的标志。这导致我写出了非常错误的代码。 这个类还存在更严重的问题。Mesh的概念是一个令人困惑的抽象,在现实世界没有参照物。尽管是我写出来的,但我也对它感到困惑。这是一个容纳顶点、索引和其他数据的容器吗?这是一个用于从磁盘加载和卸载数据的资源管理器吗?这是一个将数据发送到GPU的渲染器吗?它代表了所有这些东西。 不得不说,大家看完之后可能觉得我不配做一个游戏开发者,但我想说,代码错误是很常见的事,但是心态错了可就真的错了。 本文来源:https://www.wddqw.com/doc/6e968b7bf4ec4afe04a1b0717fd5360cba1a8ddb.html