Frame rate 如何创建FPS游戏?

Frame rate 如何创建FPS游戏?,frame-rate,Frame Rate,我想知道如何使用SDL lib创建fps游戏 有没有用例子解释的书 标题“游戏编程大师的诀窍”中的大部分内容都将向您展示如何制作FPS游戏。莱莫特爱他们 编辑:忘记那些标题。我不久前发现了这个网站,当我在玩的时候,你会发现很多示例程序,你可以在下载《地震3》源代码并从中学习。这是大多数开放式问题的答案。你可以写一本书。但让我们满足于指向正确的方向 第一步,对于这样的项目,您需要良好的调试技能。拾取由Steve McConnell完成的代码。通读整件事。投入的时间将比你可以阅读/实验的任何东西都能

我想知道如何使用SDL lib创建fps游戏


有没有用例子解释的书

标题“游戏编程大师的诀窍”中的大部分内容都将向您展示如何制作FPS游戏。莱莫特爱他们


编辑:忘记那些标题。

我不久前发现了这个网站,当我在玩的时候,你会发现很多示例程序,你可以在下载《地震3》源代码并从中学习。

这是大多数开放式问题的答案。你可以写一本书。但让我们满足于指向正确的方向

第一步,对于这样的项目,您需要良好的调试技能。拾取由Steve McConnell完成的代码。通读整件事。投入的时间将比你可以阅读/实验的任何东西都能为自己带来更多的回报

获得一些游戏的源代码。任何游戏。在你看到大而复杂的东西之前,确保你看到了一些简单的东西,当你看到任何游戏代码时,请记住,他们可能已经让一个联合团队投入了比你以往任何时候都多的时间。这里的重点是查看代码结构

获取3D数学的参考资料,不必那么深入,但您需要前后了解点积之类的知识,能够找出如何为世界上的相机创建矩阵等(即使您编写了0%的渲染代码)

(编辑)这里有一本关于3D数学的好书,这不是你在大学里学的那种,它更像是trig和更高级实用概念的交叉:如何为自己创建一个简单物理工具箱,有效的碰撞检测,等等

您需要了解一些有关渲染和管道的知识。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
但这完全取决于你的比赛。我的观点是,你需要求助于“贫民区编码”,你如何将你的游戏数据带入你的世界是非常重要的,你需要考虑一些既能让你快速实现,又能让你快速工作的东西

归根结底,你的目标是什么?如果你想学会以绝对正确的方式编写代码,那么你应该把大部分时间花在迭代一个月前看起来还不错的代码上,但现在你已经意识到你的需求是什么了,这真的需要另一个过程。不要害怕重写,通过重写你学到了很多,但是如果你的目标是功能,你可能需要弄清楚在哪里破解一些东西(比如将游戏数据和坐标嵌入代码文件),只要你知道在哪里破解就可以了,并且小心地将它与您的好代码分开,以便您可以在有机会时返回并正确地编写代码


底线是,你需要决定你在这方面的目标是什么,学习还是功能,并找到两者之间的快乐媒介。

虽然不是SDL特定的,但OpenGL教程是学习如何制作3D的绝佳起点


如果这是你的第一场比赛,你可能会希望目标低于FPS。使用SDL编写一个简单的2D俄罗斯方块游戏将教会你所有你需要知道的关于该库的知识。

虽然这篇很长的文章从长远来看是有价值的,但我觉得它并没有给你在屏幕上显示东西的适当的即时动机。以下是一些事实,以及我的观点

-SDL是一个2D图形库,您不能在2D中编写FPS,因此您必须使用3D库,DirectX或openGL

-SDL具有与openGL“同步”的能力,可以将其用于图形,但对于该主题,在线帮助并不多

我建议你去Lazyfoo.net,这是一个非常棒的SDL游戏编程初学者资源,它向你展示了如何在屏幕上画图,还教你如何将其应用到游戏编程中。完成这些之后,你将能够制作一个俄罗斯方块克隆,或者其他大多数2D类型的游戏

在这之后,你将为3D做好准备(它要复杂得多,需要更好地掌握数学,并且需要一个l