Python开发3D游戏技术探索_python 3d-程序员宅基地

技术标签: 强化学习  3D游戏  Panda3D  Python  

​ 前端时间导师安排开发一个3D的强化学习环境,其实也就等于开发一个特定场景的游戏。经过一段时间的调研与实践,在这里分享下自己的经验,希望能对你有所帮助。

​ 其实最开始的时候,导师问,能做成3D的么,要是不行的话,2D的也行。TM,当时就是嘴贱,否则也不至于后面几个月愁的头发直掉。

资源分配图

​ 废话不多说,下面开始正文部分。

1.Python能否开发游戏

​ 目前Python语言还是非常流行的,加上做机器学习,基本上也没有别的开发语言的选择,所以在语言的选型上是没有纠结的空间的。

​ 那Python能开发游戏么,答案是肯定的,并且python在开发游戏上,也有不少优秀的游戏的游戏引擎可以使用。首先就是PyGame,老牌的游戏引擎,开发文档齐全,网上教程多,许多python游戏开发书籍都是以PyGame为主体的。还有就是cocos-2d,一款非常好用的游戏引擎,博主以前使用过JS版本的开发过一个游戏,使用其提供的IDE,非常方便,没想到也提供了Python版本。当然还有其他比较流行的引擎,就不在一一赘述了。

​ 我也找到了一个大佬使用python开发的游戏,大家可以参考下,github地址.

​ 哎,上面两款好用的引擎都是开发2D游戏的,心塞,只能继续探索。

资源分配图

2.Python3D游戏引擎

​ 经过调研,主要把目光发在了以下三款引擎上,OpenGL、Pyglet、Panda3D。

2.1 OpenGL

​ OpenGL(Open Graphics Library),意为“开放式图形库”,是一个编写2D和3D应用程序的跨平台API。OpenGL 不是一个独立的平台,因此,它需要借助于一种编程语言才能被使用。C / C++ / Python / Java 都可以很好支持 OpengGL。Python版本的OpenGl模块名为PyOpenGL

​ 听着是不是很厉害,也确实很厉害。但是太难了,学习成本过于高了。。在看了几篇介绍文档后,我就放弃了。

​ 参考资料如下,有兴趣的可以看下。

万字长文详解如何用Python玩转OpenGL

2.2 PyGlet

Pyglet 是一个易于使用但功能强大的库,用于在 Windows、Mac OS 和 Linux 上开发视觉丰富的 GUI 应用程序,如游戏、多媒体等。这个库完全是用 Python 创建的,它支持许多功能,如窗口、用户界面事件处理、操纵杆、OpenGL 图形、加载图像和视频以及播放声音和音乐。

​ 在刚一接触PyGlet,就感觉很棒,很易用,当时也跟着文档做了一个小行星游戏,页面如下:

资源分配图

​ 并且将这个小游戏和Gym进行了整合。

​ 还尝试了加载3D模型,展示如下,当时一度觉得就是他了,可以是后面还是遇到了一些很难解决的问题。

资源分配图
  1. 跨平台效果不好:我在我自己的电脑、Mac上执行,效果还可以,没有什么不一样的,当我到实验室的电脑上执行相同的代码时,出现了很大的偏差,显示效果很差。
  2. 一些配套项目停止维护:比如其官方文档上推荐的3D图形渲染引擎RatCave,已经停止了维护了,也没有找到很好地替代的渲染引擎。在开发过程中,Pyglet加载找到的obj模型文件,报错问题始终无法解决(可能是我技术问题),只能加载其提供的一些模型。。。
  3. 文档过少:在开发过程中,遇到问题,很难找到解决方案,百度搜索的结果基本全是Pyglet入门介绍。简直要崩溃到大哭。

​ 参考文档:PyGlet官方文档

2.3 Panda3D

​ 当时被Pyglet折磨了一段时间后,便动了换路线的想法。网上看了Panda3D的入门介绍(类似于编程学习中的HelleWorld),哦,这有点意思哦。跟着教程,十几分钟做了简单的场景,截图如下:

资源分配图

​ 感觉很不错,模型的加载、渲染、动画的执行都很便捷,便进行了更深入的了解,开发了一个小Demo,当时心里就大呼:是他是他就是他。。。

​ 在使用Panda3D的过程中,也遇到了相关内容过少的问题。Panda3D虽然技术很强,可以实现很多功能,但是其被设计给有丰富相关经验的人使用的,对于刚入门的小白不是很友好,加上国内的用户实在是少,所以相关的解决方案基本上也是很难找到。还好其开发文档比较全(全英文),根据文档,可以解决入门时的阵痛。

​ 想去BiliBili上找找视频教程,只找了一个博主从Yutubu上下载下来上传的视频,好难啊,英语听力是在是不过关,最后也只能放弃。

​ 不过Panda3D还是很强大的,至少可以解决我所有的需求,虽然过程很痛苦。

​ 参考文档:Panda3D官方文档

2.4 Unity 3D

​ 没想到吧,还有第四个选择。这个是我在检索信息的时候看到的,Unity 3D开放对Python的支持,并且官方提供了一组用于强化学习的3D环境,Github地址

资源分配图

​ 经验主义害死人呀,做3D游戏,第一印象想到的就是Unity,但是其官方开发语言是C#,就一直没想到使用他,后悔呀。但是我使用Panda3D已经开发过半,项目时间也很紧张,也就没有时间在选择换技术了。Unity3D for python我还没有尝试,也不知道效果如何,不过背靠Unity这个大树,相信其功能、易用性上应该没什么问题,后面使用过会在进行分享。

3.总结

​ 本文到这就结束了,每个游戏引擎都有自己的优势,我们也是根据不同的使用需求选择合适的技术。后面会分享Panda3D的使用经验,有需要的可以持续关注,有什么疑问,也可以在评论区留言。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34666857/article/details/125963313

智能推荐

稀疏编码的数学基础与理论分析-程序员宅基地

文章浏览阅读290次,点赞8次,收藏10次。1.背景介绍稀疏编码是一种用于处理稀疏数据的编码技术,其主要应用于信息传输、存储和处理等领域。稀疏数据是指数据中大部分元素为零或近似于零的数据,例如文本、图像、音频、视频等。稀疏编码的核心思想是将稀疏数据表示为非零元素和它们对应的位置信息,从而减少存储空间和计算复杂度。稀疏编码的研究起源于1990年代,随着大数据时代的到来,稀疏编码技术的应用范围和影响力不断扩大。目前,稀疏编码已经成为计算...

EasyGBS国标流媒体服务器GB28181国标方案安装使用文档-程序员宅基地

文章浏览阅读217次。EasyGBS - GB28181 国标方案安装使用文档下载安装包下载,正式使用需商业授权, 功能一致在线演示在线API架构图EasySIPCMSSIP 中心信令服务, 单节点, 自带一个 Redis Server, 随 EasySIPCMS 自启动, 不需要手动运行EasySIPSMSSIP 流媒体服务, 根..._easygbs-windows-2.6.0-23042316使用文档

【Web】记录巅峰极客2023 BabyURL题目复现——Jackson原生链_原生jackson 反序列化链子-程序员宅基地

文章浏览阅读1.2k次,点赞27次,收藏7次。2023巅峰极客 BabyURL之前AliyunCTF Bypassit I这题考查了这样一条链子:其实就是Jackson的原生反序列化利用今天复现的这题也是大同小异,一起来整一下。_原生jackson 反序列化链子

一文搞懂SpringCloud,详解干货,做好笔记_spring cloud-程序员宅基地

文章浏览阅读734次,点赞9次,收藏7次。微服务架构简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独立运行的项目。这么多小服务,如何管理他们?(服务治理 注册中心[服务注册 发现 剔除])这么多小服务,他们之间如何通讯?这么多小服务,客户端怎么访问他们?(网关)这么多小服务,一旦出现问题了,应该如何自处理?(容错)这么多小服务,一旦出现问题了,应该如何排错?(链路追踪)对于上面的问题,是任何一个微服务设计者都不能绕过去的,因此大部分的微服务产品都针对每一个问题提供了相应的组件来解决它们。_spring cloud

Js实现图片点击切换与轮播-程序员宅基地

文章浏览阅读5.9k次,点赞6次,收藏20次。Js实现图片点击切换与轮播图片点击切换<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/ja..._点击图片进行轮播图切换

tensorflow-gpu版本安装教程(过程详细)_tensorflow gpu版本安装-程序员宅基地

文章浏览阅读10w+次,点赞245次,收藏1.5k次。在开始安装前,如果你的电脑装过tensorflow,请先把他们卸载干净,包括依赖的包(tensorflow-estimator、tensorboard、tensorflow、keras-applications、keras-preprocessing),不然后续安装了tensorflow-gpu可能会出现找不到cuda的问题。cuda、cudnn。..._tensorflow gpu版本安装

随便推点

物联网时代 权限滥用漏洞的攻击及防御-程序员宅基地

文章浏览阅读243次。0x00 简介权限滥用漏洞一般归类于逻辑问题,是指服务端功能开放过多或权限限制不严格,导致攻击者可以通过直接或间接调用的方式达到攻击效果。随着物联网时代的到来,这种漏洞已经屡见不鲜,各种漏洞组合利用也是千奇百怪、五花八门,这里总结漏洞是为了更好地应对和预防,如有不妥之处还请业内人士多多指教。0x01 背景2014年4月,在比特币飞涨的时代某网站曾经..._使用物联网漏洞的使用者

Visual Odometry and Depth Calculation--Epipolar Geometry--Direct Method--PnP_normalized plane coordinates-程序员宅基地

文章浏览阅读786次。A. Epipolar geometry and triangulationThe epipolar geometry mainly adopts the feature point method, such as SIFT, SURF and ORB, etc. to obtain the feature points corresponding to two frames of images. As shown in Figure 1, let the first image be ​ and th_normalized plane coordinates

开放信息抽取(OIE)系统(三)-- 第二代开放信息抽取系统(人工规则, rule-based, 先抽取关系)_语义角色增强的关系抽取-程序员宅基地

文章浏览阅读708次,点赞2次,收藏3次。开放信息抽取(OIE)系统(三)-- 第二代开放信息抽取系统(人工规则, rule-based, 先关系再实体)一.第二代开放信息抽取系统背景​ 第一代开放信息抽取系统(Open Information Extraction, OIE, learning-based, 自学习, 先抽取实体)通常抽取大量冗余信息,为了消除这些冗余信息,诞生了第二代开放信息抽取系统。二.第二代开放信息抽取系统历史第二代开放信息抽取系统着眼于解决第一代系统的三大问题: 大量非信息性提取(即省略关键信息的提取)、_语义角色增强的关系抽取

10个顶尖响应式HTML5网页_html欢迎页面-程序员宅基地

文章浏览阅读1.1w次,点赞6次,收藏51次。快速完成网页设计,10个顶尖响应式HTML5网页模板助你一臂之力为了寻找一个优质的网页模板,网页设计师和开发者往往可能会花上大半天的时间。不过幸运的是,现在的网页设计师和开发人员已经开始共享HTML5,Bootstrap和CSS3中的免费网页模板资源。鉴于网站模板的灵活性和强大的功能,现在广大设计师和开发者对html5网站的实际需求日益增长。为了造福大众,Mockplus的小伙伴整理了2018年最..._html欢迎页面

计算机二级 考试科目,2018全国计算机等级考试调整,一、二级都增加了考试科目...-程序员宅基地

文章浏览阅读282次。原标题:2018全国计算机等级考试调整,一、二级都增加了考试科目全国计算机等级考试将于9月15-17日举行。在备考的最后冲刺阶段,小编为大家整理了今年新公布的全国计算机等级考试调整方案,希望对备考的小伙伴有所帮助,快随小编往下看吧!从2018年3月开始,全国计算机等级考试实施2018版考试大纲,并按新体系开考各个考试级别。具体调整内容如下:一、考试级别及科目1.一级新增“网络安全素质教育”科目(代..._计算机二级增报科目什么意思

conan简单使用_apt install conan-程序员宅基地

文章浏览阅读240次。conan简单使用。_apt install conan