新的 Web 平台
@AristurtleDev 的说明: 此问题用于跟踪官方 MonoGame.Web 平台的工作。 主要目标是让一个 MonoGame 游戏在浏览器中运行。这意味着开发人员将使用他们已经熟悉的相同的现有 MonoGame/XNA API。任何与浏览器有关的内容都将留在平台层中,而不是成为您需要围绕游戏设计的内容。 这不是为了取代 KNI 和 @nkast 在该平台上所做的工作。KNI 所做的远远不止是为浏览器提供运行 MonoGame/XNA 项目的路径。然而,KNI 使用 Blazor 作为 Web 主机的引导程序,这与我们希望在此处采取的方法不同,这将在下面解释。 我们正在做什么 要在 Web 平台上开始工作之前,我们首先需要实现一个新的 本地 OpenGL 渲染器,该渲染器被引用为“DesktopGL4”平台。完成此工作为 Web 提供了更好的基础,而不是试图在现有的托管“DesktopGL”平台和渲染器上进行构建。我想要避免的一个问题是最终会产生一个单独的“Web 版本”的 MonoGame,该版本具有自己的应用程序模型。因为开发人员应该期望编写一个 MonoGame 游戏,而不是采用一个在 MonoGame 中嵌入的浏览器特定框架,我们需要使浏览器主机尽可能小。 这就是为什么 Web 平台工作遵循共享本地渲染器/运行时方向,而不是围绕浏览器 UI 框架进行设计。此外,这意味着第一个版本的目标是 WebGL2。我们评估了 WebGL2 和 WebGPU,最终决定 WebGL2 是目前最实用的目标。它具有更好的浏览器支持,并且还自然地映射到已经完成的本地 OpenGL 渲染器工作。我们第一个 Web 平台的优先事项是兼容性,并使现有的 MonoGame 游戏在浏览器中正确运行,而不是选择最新的图形 API,仅仅因为它更新。WebGPU 是我们以后可以考虑的内容,随着浏览器支持的增加,以及本地工作的成熟,但它故意不在第一个实现的范围内。 此外,目前正在进行的验证工作使用 net8.0 和 browser-WASM。这不应该被理解为最终的浏览器平台被锁定在 .NET 8 中。我们将继续评估 .NET WebAssembly 的改进,随着平台的成熟。 什么是“为 Web 构建”的样子? 目前,我认为我们还没有足够远,可以说它将是简单地更换一个 NuGet 包并点击构建。这就是我们所追求的体验,但仍然需要在最终项目结构、模板、包装和如何托管一切方面做出决策。 理想情况下,针对 Web 的目标应该只是感觉与仅针对其他平台一样。
内容来源: MonoGame/MonoGame