2009 年 12 月 29 日(最后更新:2012 年 1 月 6 日)
游戏编程的艺术
评分:3.5/5(228 票)
注意:本文不教授游戏编程技术。
开端
什么是“游戏编程”?嗯,游戏通常是一种形式的输入,由人提供,以产生输出,从而实现某种目标,给人一种成就感。另一方面,编程是为 CPU 编写指令以使其循环执行的活动。将这些术语放在一起,您就会得到:编写指令以接收人的输入、提供输出并允许人实现某种目标的活动。
问题
我要讨论的问题是关于那些过于热情、希望投身游戏编程的人。游戏编程绝非易事。它需要时间和精力。仅仅带着热情而进入是不够的。
假设
我认为这个问题是由欲望引起的无知造成的。这就像每年圣诞节都想要一匹小马,但实际上,没有真正的动力和渴望,这是不现实的。你之所以一直想要,是因为你不知道一匹小马的价格。
解决方案
解决方案是告知您,并因此稍微吓吓您。我无意成为一个扫兴的人或伤心的人。那不是我的意图。编程是一件非常“现实”的事情。它没有多少奇迹或虚构。我记得一个关于一匹马的腿被治愈并能神奇地再次比赛的故事。总的来说,编程中没有这样的故事,尤其是游戏编程。所以,我需要对您诚实。
事实
虽然简单的游戏只需要基本的数学知识,但您仍然需要掌握一些三角学和碰撞数学。如果您想要比基本质量更高的东西,您还必须了解您将要使用的 API 的一些底层效果。
3D 图形需要一定的物理学和高级碰撞数学才能实现基本功能。光照、矩阵运算以及其他各种事物的知识对于更进阶的内容是必需的,而这仅仅是冰山一角。换句话说,您至少需要大学水平的物理学(这实际上并不复杂……)、一些微积分和大量的三角学。您需要理解 3D API 的底层性质,尤其是在 OpenGL(我推荐)中。例如,什么是裁剪区域,向量的第四维是什么意思,等等。
您还必须理解声音的概念。如何缓冲和缓存声音,如何流式传输更大的声音,以及如何在 3D 空间中处理声音。您可能会使用一个库来完成大部分高级混音工作(因为这很重复),并且声音在概念上并不难理解。然而,寻找高质量的音效和音乐是一项非常艰巨的任务。
在此之后,制作游戏的本质确实很简单。您必须在给定输入的情况下为用户提供输出。这意味着您必须能够正确地处理输入。幸运的是,这并不难,但您仍然会看到不能正确处理输入的や游戏。您仍然需要考虑您将接收到的输入的类型。用户将使用操纵杆、键盘和鼠标,还是游戏手柄?如果用户使用的是能够提供力反馈的控制器,我应该启用力反馈吗?
您必须能够处理线程。线程是提高效率的绝佳方式,但它们可能会变得复杂。它们很难追踪 bug。
在那之后,如果一切都不是那么完美,您就必须能够找到问题。这些问题可能需要几分钟到几天,有时甚至是几周才能找到。编程就是耐心。
现在,让我们看一个假设的例子。您想创造下一款热门游戏。您于 2008 年 1 月 1 日开始。考虑到大多数大型游戏公司需要几年时间才能开发出一款公众通常认为平庸的游戏,在相同的时间内,作为一个无偿人员或团队,并且没有最好的工具,您认为自己会做得怎么样?
结论
面对现实吧。您不会创造下一款热门游戏。但是,您仍然可以计划并开始制作一款尺寸适中的游戏。但您必须知道,制作游戏所需的时间和精力是巨大的。开始一个游戏项目,只是因为它没有耐心而放弃,是浪费时间。