当前位置: 首页 > news >正文

用于游戏开发的顶级 PYTHON 框架

一、说明

        我们试图用python开发游戏,一旦产生这个念头,就伴随这样一个问题:当今用于构建游戏的领先 Python 框架有哪些?python下,支持游戏开发平台有哪些优势?我们在这篇博文中告诉你。

二、高级游戏平台简介

用于构建游戏的主要 Python 框架有哪些?如果你对游戏开发感兴趣,这是你在某个时候必然会面临的问题。(您可能还想查看我们关于当今领先游戏开发引擎的博客:Top 10 Game Development Engines in 2023。Python 是世界上最流行的编码语言,它被当今各行各业使用,包括游戏构建。事实上,许多 Python 框架被用作游戏开发的关键工具。这些是软件框架,通过帮助自动执行游戏开发中通常执行的多项任务来支持游戏/游戏应用程序的创建。例如,《战地风云 2》是一款使用 Python 框架制作的流行游戏。

那么,今年哪些是用于游戏开发的领先 Python 框架呢?下面分享的是顶级名称:

2.1 pygame

        Pygame 是一个开源的 Python 库,可帮助用户使用 Python 编程创建功能丰富的游戏和多媒体应用程序。从本质上讲,它是一组专为编写视频游戏而设计的跨平台 Python 模块,包括旨在与 Python 编程语言一起使用的计算机图形和声音库。它具有高度的可移植性,可在所有平台和操作系统上运行,并使用优化的 C 语言和汇编代码来实现核心功能。

        Pygame使用简单DirectMedia Layer(SDL)库,从而促进了实时计算机游戏开发,而无需C编程语言及其衍生语言的低级机制。使用 Pygame 的应用程序可以在 Android 手机和平板电脑上运行,并使用适用于 Android 的 Pygame Subset。Pygame还得到了一个强大的社区的支持,该社区为那些想要使用它的人创建了许多教程。

2.2 Pyglet

        Pyglet 还用于多个操作系统上的 Python 游戏开发和其他视觉丰富的应用程序。这是一个功能强大的开源、跨平台窗口和多媒体库,可以支持用户界面事件处理、窗口和全屏操作、多个显示器、来自库 OpenGL 的图形、操纵杆、加载图像和视频以及音频播放。Pyglet 在 Python 3.5+ 下运行,没有外部依赖关系,也不需要安装。

        它运行在Microsoft Windows,Mac OS X和Linux上,并在BSD许可下发布,基本上提供了一个面向对象的应用程序编程接口,用于构建游戏和其他多媒体应用程序。

2.3 熊猫3D

        Panda3D 是一个免费使用的引擎,用于构建实时 3D 游戏、可视化、模拟和实验。它包括图形、音频、I/O、碰撞检测和其他在制作 3D 游戏时派上用场的功能。它是修订后的 BSD 许可证下的开源软件。

        它用 Python 和 C++ 编写,拥有前一种语言提供的优势,例如快速开发和高级内存管理,即使它包括用于处理和优化源代码的命令行工具。同样有帮助的是,Panda3D 支持几个流行的第三方库,例如 Bullet 物理引擎、OpenAL、Assimp 模型加载器和 FMOD 声音库。

        Panda3D 的用户通常是商业游戏、一些开源项目和几门利用 Panda3D 较短学习曲线的大学课程的开发者。社区可能很小,但非常活跃。

2.4 PyKyra 

        基于软件和文档本地化 (SDL) 和 Kyra 引擎,PyKyra 据说是最快的 Python 游戏开发框架之一。它不仅支持 Kyra 框架的标准功能,还支持 MPEG 视频、直接图像读取、MP3、Ogg Vorbis、Wav、多声道模块文件等声音。

        此外,它还支持侧面对称和自上而下的平移。在这里,用户可以将屏幕划分为子窗口视图,每个视图都有自己的对象转换。这也有助于 Kyra 引擎速度快,并配备了用于渲染更新的专用编码算法。

2.5 基维Kivy

        Kivy 是一个开源和跨平台的 Python 库,可在 Linux、Windows、OS X、Android、iOS 和 Raspberry Pi 上运行。它带有多点触控应用程序;事实上,它有 20 多个可以轻松扩展的小部件。此外,它可以原生使用大多数输入、协议和设备,包括 WM_Touch、WM_Pen、Mtdev、Linux 内核 HID、Mac OS X 触控板和魔术鼠标以及 TUIO。它用于应用程序和软件的快速开发,是一个稳定的框架,带有完整文档化的 API 和编程指南,以帮助用户很好地使用它。

2.6 PyOpenGL的

        PyOpenGL 是图形库 OpenGL 和相关应用程序编程接口 (API) 的跨平台 Python 绑定。该绑定是使用标准 ctypes 库构建的,并在极其自由的 BSD 风格的开源许可证下提供。它可以与许多用于 Python 的外部 GUI 库互操作,例如 PyGame、PyQt、Raw XLib 等。

2.7 Python Ogre/PyOgre

        Python-Ogre / PyOgre 是用于 Ogre 3D 渲染引擎的 C++ 库的 Python 绑定,它具有令人印象深刻的功能集,并已用于创建令人印象深刻的游戏。因此,从本质上讲,PyOgre 包含两个库:Ogre3d 和 CEGUi,一个嵌入式 GUI 系统。PyOgre 是一个跨平台库,可在 Windows 和 Linux 下运行,兼具速度和灵活性。

2.8 Cocos2d的

        Cocos2d 是一个用 Python、C++ 和 Objective C 编写的开源软件框架,用于构建游戏、应用程序和基于 GUI 的跨平台交互式程序。Cocos2d 系列由 Cocos2d-objc、Cocos2d-x、Cocos2d-html5 和 Cocos2d-XNA 组成。

        Cocos2d 社区有一些独立的编辑者,他们在 SpriteSheet 编辑、粒子编辑、字体编辑和 Tilemap 编辑等领域做出了贡献,还有包括 SpriteBuilder 和 CocoStudio 在内的世界编辑器。

2.9 Ren’Py

        Ren是一个用 Python 和 Cython 编写的开源和跨平台引擎(Cython 代码主要用 Python 编写,带有可选的附加 C 启发语法,旨在提供类似 C 的性能)。它建立在 Pygame 之上,是一个用于创建视觉小说的自由软件游戏引擎。借助该引擎,可以将文字、图像和声音结合起来制作视觉和生活模拟游戏。它还支持 Python 脚本语言,因此使开发人员能够处理复杂的游戏逻辑,并在几乎所有计算机系统上运行。

        使用 任 的开发人员可以创建分支故事、保存文件系统、回滚到故事中的先前点以及执行许多场景转换。该引擎还支持全屏电影和动画精灵的影片播放。

三、后记

        其实每种平台有多大人气尚不明确,值得欣赏的是pygame和openGL的组合模式相当不错,推荐原因有两个:1)openGL是英伟达绑定的产品,是十足的游戏产品;2)pygame不仅支持openGL窗口,还有用户交互,这为游戏可操纵性带来方便。

相关文章:

用于游戏开发的顶级 PYTHON 框架

一、说明 我们试图用python开发游戏,一旦产生这个念头,就伴随这样一个问题:当今用于构建游戏的领先 Python 框架有哪些?python下,支持游戏开发平台有哪些优势?我们在这篇博文中告诉你。 二、高级游戏平台简…...

【MongoDB】docker安装mongodb 7.0

下载镜像 docker pull mongo创建本地数据存储文件夹 rootxrx:~/etc# tree mongodb/ mongodb/ └── data使用docker创建容器,并挂载配置文件,并设置密码 docker run -p 5233:27017 -v /root/etc/mongodb/data:/data/db --name mongo -e MONGO_INITDB_ROOT_USERNAMEroot -…...

win10安全中心误删文件怎么办?解析恢复与预防策略

在使用Windows 10的过程中,许多用户依赖于其内置的安全中心来保护电脑免受恶意软件的侵害。然而,有时安全中心的误判可能导致重要文件被错误地删除。当面对这种情况时,了解如何恢复误删的文件并掌握预防措施显得尤为重要。本文将为您详细解析…...

如何锁定MYSQL内存在物理内存里?

MYSQL 8.0 这个参数是 OFF 这个参数是啥意思呢? 按英文单词理解是 锁定在内存意思.突然想起来是因为 周报巡检时主库有使用SWAP内存 而从库却使用更多 使用脚本查看SWAP 进程排序 for i in cd /proc;ls |grep "^[0-9]"|awk $0 >100 ;do awk /Swap:/{aa$2} EN…...

vue菜单栏跳转方案

vue菜单栏跳转方案 <template><div><el-container style"height: 100vh"><el-aside width"200px" style"background-color: #b3c0d1"><el-menuopen"handleOpen"close"handleClose"select"h…...

科技企业如何做到FTP数据安全保护

在数字化浪潮的推动下&#xff0c;科技企业的数据已成为推动创新、提升效率、增强竞争力的核心资源。数据的重要性不言而喻&#xff0c;它不仅包含了客户信息、市场分析、产品设计等关键信息&#xff0c;更是企业宝贵的资产。然而&#xff0c;随着数据量的激增&#xff0c;数据…...

Ubuntu服务器fail2ban的使用

作用&#xff1a;限制ssh远程登录&#xff0c;防止被人爆破服务器&#xff0c;封禁登录ip 使用lastb命令可查看到登录失败的用户及ip&#xff0c;无时无刻的不在爆破服务器 目录 一、安装fail2ban 二&#xff0c;配置fail2ban封禁ip的规则 1&#xff0c;进入目录并创建ssh…...

全量知识系统问题及SmartChat给出的答复 之10 三套工具之5语法解析器之3

Q27. 从前面可以看出&#xff0c;IPP解析器给出两种文法规则&#xff0c;一种是人工的&#xff08;文字处理和文本理解&#xff09;&#xff0c;一种是机器的&#xff08;图形算法和图像处理&#xff09;。前者可以是一套文写文章的注释工具的底层&#xff0c;可以使用颜色来着…...

【leetcode】环形链表✚环形链表II

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 1.环形链表解题拓展&#xff1a; 2.环形链表II 1.环形链表 点击查看题目 解题 思路: bool hasCycle…...

SparkStreaming在实时处理的两个场景示例

简介 Spark Streaming是Apache Spark生态系统中的一个组件&#xff0c;用于实时流式数据处理。它提供了类似于Spark的API&#xff0c;使开发者可以使用相似的编程模型来处理实时数据流。 Spark Streaming的工作原理是将连续的数据流划分成小的批次&#xff0c;并将每个批次作…...

02点亮一个LED

书接上回 上回讲到创建一个示例工程 今天讲如何实现LED的点亮 点亮一个led 所需代码 参考来源网络 延时函数参考&#xff1a; Delay.c #include "stm32f10x.h"/*** brief 微秒级延时* param xus 延时时长&#xff0c;范围&#xff1a;0~233015* retval 无*/ vo…...

【代码分享】

//插入排序 void lnsertionSort(int a[], int n) { int end 0; int tmp 0; int i 0; for (i 0;i < n - 1; i) { end i; tmp a[end 1]; while (end > 0) { if (a[end] > tmp) { a[end 1] a[end]; end–; } else { break; } } a[end 1] tmp; } } //希尔排序…...

windows 使用ffmpeg .a静态库:读取Wav音频并保存PCM

ffmpeg读取Wav音频并保存PCM&#xff08;源代码保存成 c 文件&#xff09;&#xff1a; // test_ffmpeg.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 ////#include <iostream>#include <libavcodec/avcodec.h> #include <libavform…...

Docker部署ZooKeeper

在分布式系统中,ZooKeeper是一个关键的组件,用于协调和管理多个节点之间的状态。本文将详细介绍如何使用Docker安装和部署ZooKeeper,包括非集群部署和集群部署两种情况。 非集群部署 前期准备 在开始之前,请确保你已经安装了Docker,并且拥有sudo权限。 关闭防火墙和SEL…...

在PyCharm中使用Git

安装Git CMD检查Git版本 打开cmd&#xff0c;输入git version&#xff0c;检查当前下载版本 配置git的user信息 在cmd中输入 git config --global user.name "用户名"git config --global user.email "用户邮箱"输入&#xff1a;git config --list&…...

【JavaSE】 P165 ~ P194 抽象方法,抽象类,接口,接口内容,多接口实现和父类继承,多态,向上转型,向下转型

目录 抽象抽象的概念抽象方法和抽象类的格式抽象方法和抽象类的使用抽象方法和抽象类的注意事项● 练习1. 写一个父类图形类&#xff0c;其中有方法&#xff0c;功能计算面积为抽象方法。2. 抽象类继承。判断对错,没错的分析运行结果3. 发红包,群内用户类作为父类&#xff0c;有…...

LeetCode: 数组中的第K个最大元素

问题描述 在未排序的数组中找到第k个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第k个最大的元素&#xff0c;而不是第k个不同的元素。 解题思路 解决这个问题有多种方法&#xff0c;下面是几种常见的解题策略&#xff1a; 排序后选择: 将数组排序&#xff0c…...

亚马逊自养号测评:如何安全搭建环境,有效规避风险

要在亚马逊上进行自养号测评&#xff0c;构建一个真实的国外环境至关重要。这包括模拟国外的服务器、IP地址、浏览器环境&#xff0c;甚至支付方式&#xff0c;以创建一个完整的国际操作环境。这样的环境能让我们自由注册、养号并下单&#xff0c;确保所有操作均符合国际规范。…...

uniApp 调整小程序 单个/全部界面横屏展示效果

我们打开uni项目 小程序端运行 默认是竖着的一个效果 我们打开项目的 pages.json 给需要横屏的界面 的 style 属性 加上 "mp-weixin": {"pageOrientation": "landscape" }界面就横屏了 如果是要所有界面都横屏的话 就直接在pages.json 的 gl…...

【java】18:内部类(2)匿名内部类

&#xff08;1&#xff09;本质是类&#xff08;2&#xff09;内部类&#xff08;3&#xff09;该类没有名字&#xff08;4&#xff09;同时还是一个对象 说明&#xff1a;匿名内部类是定义在外部类的局部位置&#xff0c;比如方法中&#xff0c;并且没有类名 1.匿名内部类的…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...

41道Django高频题整理(附答案背诵版)

解释一下 Django 和 Tornado 的关系&#xff1f; Django和Tornado都是Python的web框架&#xff0c;但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循MVC设计&#xff0c;并强调代码复用。Django有…...