我们想为学校编写一个3D游戏,可以使用Blender制作3D模型,但是我们完全不知道如何在游戏或应用程序中使用它们。
有没有建议的指南或文档,可以帮助我们了解一般的3D游戏编程和可能与Python相关的内容。
我们也考虑用C++来编程,但现在使用Python可能更容易,因为这样我们可以完全专注于3D机制。
有Pygame:一款适用于Python语言的游戏框架。如果您需要了解游戏开发基础(引擎、流程、用户界面、数学等),这个框架及其示例将对您有很大帮助。它不会手把手地指导您进行游戏开发,但如果您需要一个参考和一个不错的框架,那么这是一个不错的开始。
还有PyOpenGL:OpenGL编程的官方Python封装。同样提供了大量领域内的编程示例和关于如何使用3D模型等的代码片段。可以与PyGame一起使用。
但您应该从熟悉一些3D基础开始。看看GameDev.net网站。了解一两件关于矩阵(也许四元数)的事情。有很多初学者教程和参考资料可供您入门。
编辑:我差点忘了:还有Panda3D,它具有广泛的Python脚本编写能力。也许它会提供更高级别的游戏开发。
如果想要编写3D游戏,你可能需要先了解编程和计算机科学的基础知识。从顶层开始学习一种编程语言,然后选择一个良好的图形库,例如Panda、Pygame都是不错的选择,接着还有其他方面需要考虑,例如使用Twisted进行网络编程或者使用物理引擎。但是考虑到游戏设计师往往过于专注于游戏机制而非游戏本身,所以使用现成的游戏引擎(如虚幻引擎)也是个不错的选择。
我会将时间关键的部分实现为3D和其对象处理+渲染在原始的C/C++中,并让一个带有外部模块的嵌入式Python处理游戏逻辑(对象移动、对象属性、脚本等)。
编写简单的3D游戏非常容易。屏幕上任何物体的位置都可以简单地计算出来:
position = (x/z*fov,x/z*fov)
其中x
和z
都是水平轴,fov
是玩家的视野,以[弧度/度/像素/...]表示。
当您旋转时,世界在旋转而不是您。这意味着您始终朝着正z方向观察。 四元数是围绕您旋转世界的最佳方法。
附:使用顶点数组或数组以获得最快的3D图形。