Python编写的3D游戏,从零开始

16

我们想为学校编写一个3D游戏,可以使用Blender制作3D模型,但是我们完全不知道如何在游戏或应用程序中使用它们。

有没有建议的指南或文档,可以帮助我们了解一般的3D游戏编程和可能与Python相关的内容。

我们也考虑用C++来编程,但现在使用Python可能更容易,因为这样我们可以完全专注于3D机制。


1
虽然我不太熟悉Python,但如果你想用C++来研究这个问题,我认为OGRE 3D是相当常见的。 - silent
8个回答

19

Panda3D 是一个不错且功能强大的游戏引擎,允许使用 Python 进行脚本编写。这看起来是一个很好的入门选择。

如果您想寻找更低级别的内容,可以考虑 PyOpenGLpygame


3
我很喜欢使用Panda3D,并强烈推荐将其与Python一起使用。对于3D方面,我不会考虑pygame。 - Russell Borogove

17

Pygame一款适用于Python语言的游戏框架。如果您需要了解游戏开发基础(引擎、流程、用户界面、数学等),这个框架及其示例将对您有很大帮助。它不会手把手地指导您进行游戏开发,但如果您需要一个参考和一个不错的框架,那么这是一个不错的开始。

还有PyOpenGLOpenGL编程的官方Python封装。同样提供了大量领域内的编程示例和关于如何使用3D模型等的代码片段。可以与PyGame一起使用。

但您应该从熟悉一些3D基础开始。看看GameDev.net网站。了解一两件关于矩阵(也许四元数)的事情。有很多初学者教程和参考资料可供您入门。

编辑:我差点忘了:还有Panda3D,它具有广泛的Python脚本编写能力。也许它会提供更高级别的游戏开发。


1
我更喜欢使用OpenGL而不是预先构建的游戏引擎,因为我想在这个项目中尽可能多地学习,并且自己构建所有内容似乎是实现它的方法。我也会查看教程,谢谢。 - Not Available

5

你可以通过Python在Blender中开发游戏。有很多教程,我会让你自己搜索你喜欢的风格。

更多信息在这里


4

2

如果想要编写3D游戏,你可能需要先了解编程和计算机科学的基础知识。从顶层开始学习一种编程语言,然后选择一个良好的图形库,例如Panda、Pygame都是不错的选择,接着还有其他方面需要考虑,例如使用Twisted进行网络编程或者使用物理引擎。但是考虑到游戏设计师往往过于专注于游戏机制而非游戏本身,所以使用现成的游戏引擎(如虚幻引擎)也是个不错的选择。


2
请注意,3D游戏包括以下内容:
  • 动画的三维模型
  • 三维环境(包括NPC和物体)
  • 环境和模型交互的模拟(游戏逻辑和机制)
  • 用户界面(开始、保存和游戏设置)
游戏逻辑和机制通常是最大、最复杂的部分,您应该首先集中精力理解它。
在此之后,建模三维对象和环境应该更加容易。

0

我会将时间关键的部分实现为3D和其对象处理+渲染在原始的C/C++中,并让一个带有外部模块的嵌入式Python处理游戏逻辑(对象移动、对象属性、脚本等)。


4
作为初学者你会采取这种方法吗? :) 对于我来说,这似乎对原帖作者来说有些过于雄心勃勃了。 - Stuart Golodetz
我打算使用Python来理解3D游戏编程的概念和工作原理,一旦我掌握了这些,将其移植到C++上应该是相当容易的(这已经是我计划中的事情)。 - Not Available
@sgolo:他最初本来就打算用C++来做。 - Robert
我并不反对其中的C++方面,我只是建议在第一个3D游戏项目中嵌入脚本语言可能有点过头了。我做过一些类似的事情,我的担忧是,如果你开始添加各种花哨的功能,那么你完成游戏的可能性就会降低... - Stuart Golodetz

0

编写简单的3D游戏非常容易。屏幕上任何物体的位置都可以简单地计算出来:

position = (x/z*fov,x/z*fov)

其中xz都是水平轴,fov是玩家的视野,以[弧度/度/像素/...]表示。

当您旋转时,世界在旋转而不是您。这意味着您始终朝着正z方向观察。 四元数是围绕您旋转世界的最佳方法。

附:使用顶点数组或数组以获得最快的3D图形。


1
如果他刚开始进入游戏行业,他肯定不知道什么是FOV。请使用精确的变量名。 - MadJlzz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接