为什么Python不适合写游戏?

知乎上有热门个问题:Python 能写游戏吗?有没有什么开源项目?

Python可以开发游戏,但不是好的选择

Python作为脚本语言,一般很少用来开发游戏,但也有不少大型游戏有Python的身影,比如:

  • 坦克世界大战(作为用户端脚本)
  • 文明IV(作为地图编辑器脚本)
  • 战场2(作为游戏玩法脚本)
  • 模拟市民(作为mod脚本)
  • 新战前夜(作为服务器和客户端语言)
  • 迪士尼-卡通城(提供 Panda3D 引擎图形)

虽然这些游戏支持python,但python扮演的角色大多作为脚本和插件,并非游戏开发的主语言。

目前市场上多数游戏都是基于C++、Java等语言进行开发,主要它们都是静态语言,比较稳定且速度快,能够满足游戏高性能的需求。

比如《绝地求生》、《巫师3》、《黑暗之魂》等都是用C++开发的,《碟中谍III》、《Minecraft》、《FIFA 11》等都是用Java开发的。

Python因为注重编码效率而非计算性能,在速度和稳定性上无法与其他语言媲美,几乎很少有商业游戏是纯Python开发的。

但Python可以通过脚本和第三方引擎为大型游戏提供组件,比如上述提到的几款游戏。

而且Python可以快速创建游戏原型,帮助开发者进行试验和debug,作为辅助工具还是不错的。

可以尝试一些Python开源小游戏

Github上有一些基于Python开发的开源小游戏,有兴趣可以试试看。比如说基于Python Pygame库开发植物大战僵尸。

原项目:marblexu/PythonPlantsVsZombies

该游戏仓库主要包含三部分:游戏代码、游戏素材、数据库

游戏代码就是Pygame库提供框架,然后python搭建游戏规则,全部代码将近3000行。

游戏素材主要包括僵尸、植物、背景等图片,图片会导入进游戏界面,然后写动态事件过程来实现游戏画面。

数据库是用json来存储游戏过程数据,这里包括了位置、时间、关卡等。

我专门录了个视频讲解下如何去下载,并在本地电脑执行。

还有很多小游戏可以用Python实现,我觉得是非常有趣的过程,初学者可以玩玩。

比如这个github仓库提供了很多免费小游戏的代码和demo:

grantjenks/free-python-games

Python游戏开发的主要框架

Python有很多游戏开发框架,比如说

PyGame:PyGame在优秀的SDL库之上添加了更多功能。允许使用python语言创建功能齐全的游戏和多媒体程序。具有高度的可移植性,几乎可以在所有平台和操作系统上运行

PySoy:Python 3的高级3D游戏引擎,紧密结合了渲染,物理,动画和网络

Pyglet:用于opengl的跨平台窗口和Python的多媒体库,可在mods / bfheores / python文件夹中找到

Python-Ogre: 用于OGRE 3D引擎的完整python包装器,以及用于GUI,物理,特效,声音等的15个其他图形和游戏相关库

Panda3d:专门用于python的全功能开源3d引擎,但用c ++编写。功能:性能,多平台支持,场景图,导出/导入,3D音频,碰撞检测,物理,浏览器插件,动画等

Blender3D:GNU GPL许可下的开源游戏引擎器,动画师和3D渲染器。使用Python作为脚本语言

利用Python开发游戏来学习语法是比较好的选择

对于Python初学者来说,虽然不为了做游戏,但通过写游戏来学习语法是很好的方法,唯有多动手才能掌握编程的真谛。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/575559.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之九 简单闪烁效果 一、简单介绍 二、简单闪烁效果实现原理 三、简单闪烁效果案例实现简单步骤 四、注意事项 一、简单…

OpenPLC_Editor 在Ubuntu 虚拟机安装记录

1. OpenPLC_Editor在虚拟机上费劲的装了一遍,有些东西已经忘了,主要还是python3 的缺失库版本对应问题,OpenPLC_Editor使用python3编译的,虚拟机的Ubuntu 18.4 有2.7和3.6两个版本,所以需要注意。 2. OpenPLC_Editor …

day72Html

常用标签: 分类: 块级标签:独立成行 行级标签:不独立成行,同一行可放多个行级标 注意网页显示时,忽略空白字符,(回车符,空格,tab制表符) 一)块级标签&#xf…

Excel:使用VLOOKUP函数,抓取指定数据,后一个列

Excel:使用VLOOKUP函数,抓取指定数据,后一个列 我们有这样一个数据源 要是实现这个页面的赋值 就是对应关系映射 使用 VLOOKUP(A2,Sheet2!$A$2:$B$9,2,FALSE)第一个参数是需要匹配的单元格。 第二个参数是数据源,我这里数据源用的是shee…

图论之路径条数专题

一直忙着金工实习蓝桥杯,好久没有看图论了,今天就小试几题享受下被虐的快感。 1.最短路拓扑 首先来几个结论: 1.最短路图没有环(可以用反证法证明) 2.dis[u]edge[u,v]dis[v],那么u,v端点的边一定在最短路…

Python+Django+Yolov5路面墙体桥梁裂缝特征检测识别html网页前后端

程序示例精选 PythonDjangoYolov5路面墙体桥梁裂缝特征检测识别html网页前后端 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《PythonDjangoYolov5路面墙体桥梁裂缝特征检测识别html网页前…

UE小:基于UE5的两种Billboard material(始终朝向相机材质)

本文档展示了两种不同的效果,分别是物体完全朝向相机和物体仅Z轴朝向相机。通过下面的演示和相关代码,您可以更加直观地理解这两种效果的差异和应用场景。 1. 完全朝向相机效果 此效果下,物体将完全面向相机,不论相机在哪个角度…

浏览器工作原理与实践--块级作用域:var缺陷以及为什么要引入let和const

在前面《07 | 变量提升:JavaScript代码是按顺序执行的吗?》这篇文章中,我们已经讲解了JavaScript中变量提升的相关内容,正是由于JavaScript存在变量提升这种特性,从而导致了很多与直觉不符的代码,这也是Jav…

<QT基础(5)>事件监听

事件监听 事件监听(Event Handling)是在程序中监视和响应发生的事件的一种机制。在Qt中,事件监听是一种常见的用于处理用户输入、系统事件以及其他类型事件的方法。通过事件监听,您可以在发生特定事件时捕获事件并执行相应的操作…

状态模式实战运用

目录 前言 UML plantuml 类图 实战代码 Form State Client 前言 通常一个完整的业务流程中,会经历多个阶段,每个阶段即一个业务状态,不同状态下对应这不同的业务处理逻辑。 无脑堆砌 if else 做判断然后选择对应的业务处理其实也能…

Hive-技术补充-ANTLR的真实语法世界

一、上下文 上一篇博客<Hive-技术补充-ANTLR语法编写>&#xff0c;我们了解了如何使用ANTLR语法来表达词法结构和语法结构&#xff0c;下面我们循循渐进的处理身边用过的一些文件或语言&#xff1a; CSV、JSON、DOT、Cymbol、R 二、解析CSV文件 有这样一份csv文件 …

Hadoop面试重点

文章目录 1. Hadoop 常用端口号2.Hadoop特点3.Hadoop1.x、2.x、3.x区别 1. Hadoop 常用端口号 hadoop2.xhadoop3.x访问HDFS 端口500709870访问 MR 执行情况端口80888088历史服务器1988819888客户端访问集群端口90008020 2.Hadoop特点 高可靠&#xff1a;Hadoop底层维护多个数…