这对于大多数开放式问题来说是胜利。你真的可以写一本书。但让我们确定指向正确的方向......
第一步,对于这样的项目,您需要良好的调试技能。阅读 Steve McConnell 的《Code Complete》。阅读全文。投入的时间比你可以阅读/实验的任何其他东西都更值得。
获得一些游戏的源代码。任何游戏。确保在看到大而复杂的东西之前先看到简单的东西,并记住,当您查看任何游戏代码时,他们可能有一个联合团队投入了比您更多的时间。重点是看代码结构。
获得 3D 数学的参考,不必那么深入,但您需要了解点积之类的东西,能够弄清楚如何在世界中为您的相机创建矩阵等。(即使你写了 0% 的渲染代码)
(edit)这是一本关于 3D 数学的好书3D 游戏编程和计算机图形学数学,第二版(游戏开发系列) https://rads.stackoverflow.com/amzn/click/com/1584502770这不是你在大学里学到的那种,它更像是三角函数和更高级的实用概念之间的交叉:如何为自己创建一个简单的物理、高效的碰撞检测等工具箱。
您需要了解一些有关渲染和管道的知识。 SDL 可以为您提供帮助,但请确保您了解其功能的概念。
阅读有关实用系统设计的内容。您的各种系统必须互锁。好好想想吧。你的系统在 C 或 C++ 中可能只是一个很好的系统,重要的是你的数据/控制如何流动的想法,而不是你模拟设计模式的完美程度(尽管这些也非常有用)
人工智能的基础知识,不是“真正的”人工智能,而是功能性人工智能;有一个很大的不同。状态机非常适合入门,对于简单的 FPS 来说已经足够了。
了解一些有关估算和规划的知识。您将没有时间去做您想要做的所有事情来正确地制作 FPS。您必须进行分类并学习如何分类;它们是两件不同的事情,后者更困难。经验是粗俗最好的老师。 (尽管传奇人物麦康奈尔也有这方面的书)
拥有一个将游戏玩法插入关卡的系统。如果您只是一名程序员,那么您最好的选择是为现有的编辑程序(例如 3DS Max)编写插件。对于程序员来说,我强烈推荐 Max,而不是 Maya。 Maya 脚本很好,但它更适合聪明的非程序员。我发现 3DS Max 的思考更多地类似于程序员如何创建和编辑你的世界。
您可以花费数年时间来制作工具来让您正确完成此操作,因此您希望以可以快速准确地编辑的方式做事
如果您制作自己的编辑器,请将其合并到您的游戏世界中。
如果您的世界不是真正的 3D 并且您想快速制作大量关卡,您可以将关卡数据保存为类似这样的内容,这将为您节省大量时间
其中 X 是墙,其他字母是游戏对象,简单的解析器可以将其转换为游戏对象和世界坐标
xxxxxxxxxxxxxxxxxxxxxxxx
xx..........P..........x
xxxxxxx...........I....x
xR....xxx...........E..x
xx.................0xxxx
xxxxxxxxxxxxxxxxxxxxxxxx
但这一切都取决于你的游戏。我的观点是,你需要诉诸“贫民区编码”,如何将游戏数据带入你的世界非常重要,你需要考虑一些既可以快速实施又可以快速使用的东西。
归根结底是你的目标是什么?如果要学习以绝对正确的方式编写代码,则需要花费大部分时间迭代一个月前看起来不错的代码,但现在您意识到自己的要求是什么,它真的可以使用另一遍。不要害怕重写,通过这样做你可以学到很多东西,但是如果你的目标是功能,你可能需要弄清楚在哪里破解一些东西(比如将游戏数据和坐标嵌入到代码文件中)IS只要您知道自己在哪里进行了黑客攻击,并且小心地将其与您的良好代码分开,那么您就可以进行黑客攻击,以便您有机会时可以回去正确编写代码。
最重要的是,您需要决定您的目标是什么,学习还是功能,并找到两者之间的折衷方案。