是否可以使用pyscript在浏览器上运行pygame ?



我使用pygame制作了一个小的空间入侵者游戏,我想知道我是否可以使用pyscript在浏览器上玩它。这可能吗?我必须重写所有内容吗?

不,PyScript目前不支持Pygame。我不确定找出支持的包的最佳方法是什么,但我已经设法拼凑出以下内容:

  1. PyScript使用Pyodide来加载包,所以只有Pyodide支持的包才能在PyScript中加载。这意味着使用Pyodide构建的包或纯Python包可以在PyPI或其他url上获得。
  2. pyoide还不支持Pygame

您可以使用下面的测试脚本来查看一个包是否被支持:

<html>
<head>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<py-env>
- pygame
</py-env>
</head>
<body>
<h1>PyScript import test script</h1>
<py-script>
import pygame
</py-script>
</body>
</html>

这基本上只是一个"试试它,看看会发生什么"如果不支持某个包,将在控制台中抛出错误的脚本。您将看到的错误将是

ValueError:找不到纯Python 3 wheel for 'pygame'。你可以使用micropip.install(..., keep_going=True)获取所有的列表缺少轮子的包装

是的,这是可能的,但还没有实现,因为:

pyscript使用pyodide, pyodide不是为游戏优化的,而是为科学堆栈和笔记本演示优化的。

今天,我建议使用pygbag https://pypi.org/project/pygbag/从https://pygame-web.github.io。它使用与pygame相同的原理,来自Panda3D webgl端口,使用现代浏览器的Web Assembly。

(如果你真的想支持pyscript标签,你可能会找到一个方法)。

无论如何你不能使用pygame的大部分内容,因为pyscript只会渲染python一次,所以你不能做像循环这样的东西,而pygame做像改变帧这样的事情是必要的。

最新更新