{"id":14960324,"url":"https://github.com/tencent/puerts","last_synced_at":"2026-04-02T20:53:56.129Z","repository":{"id":36958078,"uuid":"287706896","full_name":"Tencent/puerts","owner":"Tencent","description":"PUER(普洱) Typescript. Let's write your game in UE or Unity with TypeScript.","archived":false,"fork":false,"pushed_at":"2025-05-06T08:39:31.000Z","size":317576,"stargazers_count":5420,"open_issues_count":267,"forks_count":738,"subscribers_count":87,"default_branch":"master","last_synced_at":"2025-05-06T08:44:24.838Z","etag":null,"topics":["dotnet","javascript","nodejs","quickjs","typescript","unity","unrealengine","v8"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tencent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-08-15T08:20:44.000Z","updated_at":"2025-05-06T03:59:26.000Z","dependencies_parsed_at":"2023-11-15T03:27:22.017Z","dependency_job_id":"5bb7c212-4a70-4298-bff3-153a80f949a6","html_url":"https://github.com/Tencent/puerts","commit_stats":{"total_commits":3255,"total_committers":124,"mean_commits":26.25,"dds":"0.42949308755760374","last_synced_commit":"2cde5c6c1bde9b024c0390aea98b151702acbb17"},"previous_names":[],"tags_count":152,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tencent%2Fpuerts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tencent%2Fpuerts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tencent%2Fpuerts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tencent%2Fpuerts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tencent","download_url":"https://codeload.github.com/Tencent/puerts/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253969261,"owners_count":21992263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotnet","javascript","nodejs","quickjs","typescript","unity","unrealengine","v8"],"created_at":"2024-09-24T13:22:02.907Z","updated_at":"2026-04-02T20:53:56.115Z","avatar_url":"https://github.com/Tencent.png","language":"C","readme":"![Logo](https://raw.githubusercontent.com/Tencent/puerts/refs/heads/master/doc/pic/puerts_logo.png)\n\n[![license](https://img.shields.io/badge/license-BSD_3_Clause-blue.svg)](https://github.com/Tencent/puerts/blob/master/LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-blue.svg)](https://github.com/Tencent/puerts/pulls)\n![Unity_Test](https://github.com/Tencent/puerts/actions/workflows/unity_unittest.yml/badge.svg?branch=master)\n![Unreal_CI](https://github.com/Tencent/puerts/actions/workflows/unreal_ci.yml/badge.svg?branch=master)\n![Nuget_Build](https://github.com/Tencent/puerts/actions/workflows/build_nuget.yml/badge.svg?branch=master)\n\n## Unreal Releases\n\n[![unreal](https://img.shields.io/badge/unreal-v1.0.9-blue.svg)](https://github.com/Tencent/puerts/releases/tag/Unreal_v1.0.9)\n\n## Unity Releases\n\n[![unity](https://img.shields.io/badge/unity-v3.0.2(latest)-blue.svg)](https://github.com/Tencent/puerts/releases/tag/Unity_v3.0.2)\n[![unity](https://img.shields.io/badge/unity-v2.2.3(lts)-blue.svg)](https://github.com/Tencent/puerts/releases/tag/Unity_v2.2.3)\n\n## Nuget Releases\n\n[![Puerts.V8.Complete](https://img.shields.io/nuget/v/Puerts.V8.Complete.svg?label=Puerts.V8)](https://www.nuget.org/packages/Puerts.V8.Complete)\n[![Puerts.NodeJS.Complete](https://img.shields.io/nuget/v/Puerts.NodeJS.Complete.svg?label=Puerts.NodeJS)](https://www.nuget.org/packages/Puerts.NodeJS.Complete)\n[![Puerts.QuickJS.Complete](https://img.shields.io/nuget/v/Puerts.QuickJS.Complete.svg?label=Puerts.QuickJS)](https://www.nuget.org/packages/Puerts.QuickJS.Complete)\n[![Puerts.Lua.Complete](https://img.shields.io/nuget/v/Puerts.Lua.Complete.svg?label=Puerts.Lua)](https://www.nuget.org/packages/Puerts.Lua.Complete)\n[![Puerts.Python.Complete](https://img.shields.io/nuget/v/Puerts.Python.Complete.svg?label=Puerts.Python)](https://www.nuget.org/packages/Puerts.Python.Complete)\n\n[跳转中文](#what---普洱ts是什么)\n\n## WHAT is PuerTS?\n \n`PuerTS` is a **multi-language scripting solution** for Unity/Unreal/DotNet.\n\n* 🌐 **Multi-Language Support (Unity 3.0 New!)**: JavaScript/TypeScript, **Lua**, and **Python** — use the language your team is most productive in, or even mix them in one project. *(Unreal currently supports JavaScript/TypeScript only.)*\n* 🚀 Provides high-performance script runtimes with seamless C#/C++ interop.\n* 📝 TypeScript declaration generation for type-safe access to host engine APIs.\n\n## WHY should I use PuerTS?\n\n* **Choose your language (Unity)**: PuerTS 3.0 introduces a unified `ScriptEnv` architecture — write game logic in TypeScript, Lua, or Python with a consistent C# bridging API. No more one-size-fits-all.\n* **Massive ecosystem access**: leverage npm, LuaRocks, or PyPI packages alongside professional game engines to accelerate development.\n* **Type safety when you want it**: TypeScript's static type checking significantly improves code robustness, while Lua and Python offer rapid prototyping flexibility.\n* **High efficiency**: full-engine, cross-platform reflection calls — zero boilerplate for C++/C# interop.\n* **High performance**: static wrapper generation for performance-critical paths, across all supported languages.\n* **Talented WebGL Support**: massive advantage in performance and dev efficiency, even faster than pure C# in some cases.\n\n## Quick Start (Unity)\n\nAll three languages share the same `ScriptEnv` API — just swap the `Backend`:\n\n**JavaScript / TypeScript**\n\n```csharp\nusing Puerts;\nusing UnityEngine;\n\nvoid Start() {\n    var env = new ScriptEnv(new BackendV8());\n    env.Eval(@\"\n        const Vector3 = CS.UnityEngine.Vector3;\n        const Debug = CS.UnityEngine.Debug;\n        let pos = new Vector3(1, 2, 3);\n        Debug.Log('Hello from JS! pos = ' + pos);\n    \");\n    env.Dispose();\n}\n```\n\n**Lua**\n\n```csharp\nusing Puerts;\nusing UnityEngine;\n\nvoid Start() {\n    var env = new ScriptEnv(new BackendLua());\n    env.Eval(@\"\n        local CS = require('csharp')\n        local Vector3 = CS.UnityEngine.Vector3\n        local Debug = CS.UnityEngine.Debug\n        local pos = Vector3(1, 2, 3)\n        Debug.Log('Hello from Lua! pos = ' .. pos:ToString())\n    \");\n    env.Dispose();\n}\n```\n\n**Python**\n\n```csharp\nusing Puerts;\nusing UnityEngine;\n\nvoid Start() {\n    var env = new ScriptEnv(new BackendPython());\n    env.Eval(@\"\nexec('''\nimport UnityEngine.Vector3 as Vector3\nimport UnityEngine.Debug as Debug\npos = Vector3(1.0, 2.0, 3.0)\nDebug.Log('Hello from Python! pos = ' + pos.ToString())\n''')\n\");\n    env.Dispose();\n}\n```\n\n\u003e 💡 Three languages, one API surface. Each example creates a `Vector3`, then calls `Debug.Log` — real C# interop in just a few lines.\n\n## Puerts.AI (Unity Only)\n\nBuilt on top of PuerTS, **Puerts.AI** brings AI capabilities directly into Unity — both in the Editor and at game runtime.\n\n### Unity Editor Assistant\n\nPuerts.AI includes a ready-to-use **Unity Editor Assistant** that lets you control the Unity Editor with natural language. For example:\n\n- *\"Build a medieval castle scene using basic meshes\"* — AI creates GameObjects, adjusts Transforms, assigns materials\n- *\"Analyze puerts-related logs\"* — AI filters and summarizes logs intelligently\n- *\"Check for missing scripts in the current scene\"* — AI traverses all GameObjects and reports issues\n\n**Any C# API is callable** — the AI generates scripts that run in the PuerTS environment with full access to `UnityEngine.*` and `UnityEditor.*`.\n\nThe Editor Assistant comes in two versions:\n\n| | Agent Version (Built-in) | MCP Version (External) |\n|:---|:---|:---|\n| **How it works** | Chat directly inside a Unity Editor window | Connect from Cursor, Windsurf, Claude Desktop, or any MCP-compatible AI tool |\n| **Speed** | ⚡ Faster — no network round-trips | Communicates via HTTP/SSE |\n| **Best for** | Scene building, inspections, quick prototyping | Vibe coding workflows — AI edits code while controlling Unity to verify results |\n\n**What makes Puerts MCP different from other Unity MCP solutions?**\n\n- **No separate process** — the MCP server runs directly inside the Unity process, no extra services to launch\n- **Single tool, on-demand builtins** — instead of registering dozens of tools upfront, it exposes only one tool; builtin modules are loaded on demand, saving context tokens while remaining equally powerful\n- **Extensible via builtins \u0026 skills** — add new capabilities by dropping files into the resource directory, no code changes needed\n\n### Puerts.Agent Framework\n\nThe Editor Assistant above is built with **Puerts.Agent** — an open, extensible LLM Agent framework. But it's not just for the editor — **agents can also run in game runtime**, opening up gameplay possibilities:\n\n- 🎮 **Smart NPC Demo** — Each NPC has its own LLM Agent instance and personality-driven system-prompt. NPCs generate truly dynamic dialogue based on player behavior and game state, sense their surroundings via C# APIs, and form personalized interactions through conversation memory. ([SmartNPCDemo](https://github.com/chexiongsheng/SmartNPCDemo))\n- 🧩 **Maze Runner Demo** — An AI that autonomously navigates a 3D maze by taking screenshots to observe the environment, reasoning about viable paths, executing movement commands, and verifying results — all powered by just two builtin modules and a system-prompt.([MazeRunnerDemo](https://github.com/chexiongsheng/MazeRunnerDemo))\n\nBuild your own agent by creating a simple resource directory:\n\n```\nResources/my-agent/\n├── system-prompt.md.txt      # Who the AI is and how it behaves\n├── skills/                   # Domain knowledge documents (loaded on demand)\n└── builtins/                 # Executable helper modules\n```\n\n## HOW can I start to use PuerTS\n[Documentation](https://puerts.github.io/en)\n\n---\n\n## FAQ\n\n* [general faq](doc/faq.md)\n* [unreal faq](doc/unreal/en/faq.md)\n* [unity faq](doc/unity/en/faq.md)\n\n## How to Install\n\n* [unreal](doc/unreal/en/install.md)\n* [unity](doc/unity/en/install.md)\n\n### Changelog\n\n* [unreal](doc/unreal/en/changelog.md)\n* [unity](unity/Assets/core/upm/changelog.md)\n\n### Known issues\n\n* [unreal](doc/unreal/en/bugs.md)\n* [unity](doc/unity/en/bugs.md)\n\n---\n\n## Select Script Backend\n\nPuerTS supports multiple script backends. For **JavaScript/TypeScript**, choose from V8, QuickJS, or Node.js. PuerTS 3.0 also adds **Lua** and **Python** as first-class backends.\n\n### JavaScript Backends\n\n* V8 (default): Generally excellent performance, moderate code size, only includes the implementation of the ECMAScript specification, does not include Node.js API or browser API.\n\n* QuickJS: Performance is not as good as V8, does not support debugging, but has a small code size, suitable for scenarios where code size is critical.\n\n* Node.js: Supports Node.js API (OpenSSL-related APIs are not supported on Unreal Engine's mobile platform), but has a larger code size.\n\n| JS Backend | Node API | Performance | Code Size | Debugging | Notes |\n| --- | --- | --- | --- | --- | --- |\n| V8 | ❌ | `*****` | `***` | ✔️ | |\n| QuickJS | ❌ | `**` | `*` | ❌ | |\n| Node.js | ✔️ | `*****` | `*****` | ✔️ | OpenSSL may be disabled |\n\n### Additional Language Backends (Unity 3.0 New!)\n\n\u003e **Note**: Lua and Python backends are currently available for **Unity only**. Unreal Engine still supports JavaScript/TypeScript exclusively.\n\n| Backend | Language | Performance | Platform Support | Notes |\n| --- | --- | --- | --- | --- |\n| Lua | Lua 5.4 | `*****` | All platforms | Ideal for teams already using Lua |\n| Python | CPython | `***` | Desktop only | Great for AI/ML integration \u0026 tooling |\n\n## Avaliable on these Engine\n\n* unreal engine 4.22 ~ latest\n\n* unity 5 ~ latest\n\n* Any .net project\n\n## Available on these Platform\n\nPuerTS's core code supports all platforms supported by the game engines, but each script backend has its own platform requirements:\n\n|  | Windows | Mac | Linux | Android | iOS | H5/Mini Games |\n| --- | --- | --- | --- | --- | --- | --- |\n| V8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |\n| Nodejs | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |\n| Quickjs | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |\n| Webgl | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |\n| Lua | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |\n| Python | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |\n\nNote 1: Only V8, Nodejs, and Quickjs backends are available for Unreal. Unity supports all backends listed above.\nNote 2: Although the Webgl backend only supports H5/Mini Games, its scripts run in the native JS VM of the web environment, which typically delivers higher performance (e.g., JIT support in iOS Mini Games). It also provides first-class language benefits such as convenient debugging and profiling.\nNote 3: For JavaScript, different platforms can use different JS backends — e.g., V8 for mobile apps and Webgl for H5 — achieving full platform coverage with optimal performance.\n\n## Ask for help\n\n[Github Discussion](https://github.com/Tencent/puerts/discussions)\n\n------\n\n## WHAT - 普洱TS是什么?\nPuerTS 是 Unity/Unreal/Dotnet 下的**多语言脚本编程解决方案**。\n\n* 🌐 **多语言支持（Unity 3.0 新特性！）**：JavaScript/TypeScript、**Lua**、**Python** 三大语言开箱即用——团队擅长什么就用什么，同一个项目里甚至可以混用。*（Unreal 目前仅支持 JavaScript/TypeScript。）*\n* 🚀 提供高性能脚本运行时，与 C#/C++ 无缝互操作。\n* 📝 提供 TypeScript 声明文件生成能力，类型安全地访问宿主引擎 API。\n\n\n## WHY - 为什么我该用普洱TS?\n\n* **自由选择语言（Unity）**：PuerTS 3.0 引入了统一的 `ScriptEnv` 架构——用 TypeScript、Lua 或 Python 编写游戏逻辑，享受一致的 C# 桥接 API，不再被某一种脚本语言绑定。\n* **海量生态随手可用**：npm、LuaRocks、PyPI 的海量包 + 专业游戏引擎的渲染能力，加速开发效率。\n* **按需选择类型安全**：TypeScript 的静态类型检查显著提升代码健壮性；Lua 和 Python 则提供快速原型验证的灵活性。\n* **高效**：全引擎，全平台支持反射调用，无需额外步骤即可与宿主 C++/C# 通信。\n* **高性能**：全引擎，全平台支持生成静态调用桥梁，所有支持的语言都兼顾了高性能场景。\n* **WebGL 平台天生优势**：相比其他脚本方案，PuerTS 在 WebGL 平台性能和效率上都有极大提升，极限情况甚至比纯 C# 更快。\n\n## 快速上手（Unity）\n\n三种语言共享同一套 `ScriptEnv` API，只需切换 `Backend`：\n\n**JavaScript / TypeScript**\n\n```csharp\nusing Puerts;\nusing UnityEngine;\n\nvoid Start() {\n    var env = new ScriptEnv(new BackendV8());\n    env.Eval(@\"\n        const Vector3 = CS.UnityEngine.Vector3;\n        const Debug = CS.UnityEngine.Debug;\n        let pos = new Vector3(1, 2, 3);\n        Debug.Log('Hello from JS! pos = ' + pos);\n    \");\n    env.Dispose();\n}\n```\n\n**Lua**\n\n```csharp\nusing Puerts;\nusing UnityEngine;\n\nvoid Start() {\n    var env = new ScriptEnv(new BackendLua());\n    env.Eval(@\"\n        local CS = require('csharp')\n        local Vector3 = CS.UnityEngine.Vector3\n        local Debug = CS.UnityEngine.Debug\n        local pos = Vector3(1, 2, 3)\n        Debug.Log('Hello from Lua! pos = ' .. pos:ToString())\n    \");\n    env.Dispose();\n}\n```\n\n**Python**\n\n```csharp\nusing Puerts;\nusing UnityEngine;\n\nvoid Start() {\n    var env = new ScriptEnv(new BackendPython());\n    env.Eval(@\"\nexec('''\nimport UnityEngine.Vector3 as Vector3\nimport UnityEngine.Debug as Debug\npos = Vector3(1.0, 2.0, 3.0)\nDebug.Log('Hello from Python! pos = ' + pos.ToString())\n''')\n\");\n    env.Dispose();\n}\n```\n\n\u003e 💡 三种语言，同一套 API。每个示例都创建了一个 `Vector3`，然后调用 `Debug.Log` ——短短几行代码即可实现真正的 C# 互操作。\n\n## Puerts.AI（仅 Unity）\n\n基于 PuerTS 构建的 **Puerts.AI**，将 AI 能力直接带入 Unity——无论是编辑器还是游戏运行时。\n\n### Unity 编辑器助手\n\nPuerts.AI 内置了一个开箱即用的 **Unity 编辑器助手**，让你用自然语言操控 Unity 编辑器。例如：\n\n- *\"用基础 Mesh 搭建一座中世纪城堡场景\"* —— AI 自动创建 GameObject、调整 Transform、设置材质\n- *\"分析下 puerts 相关的日志\"* —— AI 智能过滤并总结日志\n- *\"检查当前场景有没有脚本丢失\"* —— AI 遍历所有 GameObject 并报告问题\n\n**凡是 C# 能调用的，AI 都能做到**——AI 生成的脚本运行在 PuerTS 环境中，可直接访问 `UnityEngine.*` 和 `UnityEditor.*` 的完整 API。\n\n编辑器助手有两个版本：\n\n| | Agent 版（内置） | MCP 版（外接） |\n|:---|:---|:---|\n| **使用方式** | 在 Unity 编辑器窗口内直接对话 | 从 Cursor、Windsurf、Claude Desktop 等支持 MCP 协议的 AI 工具接入 |\n| **速度** | ⚡ 更快——没有网络往返 | 通过 HTTP/SSE 通信 |\n| **适合场景** | 场景搭建、日常检查、快速原型 | Vibe coding 工作流——AI 一边改代码一边操控 Unity 验证效果 |\n\n**Puerts MCP 与市面上其他 Unity MCP 方案有何不同？**\n\n- **无需额外启动进程** —— MCP Server 直接跑在 Unity 进程内，不用另起服务\n- **单工具 + 按需加载 builtin** —— 不像其他方案预注册几十个工具，Puerts MCP 只暴露一个工具，builtin 模块按需加载，更省上下文 token，但功能同样强大\n- **通过 builtin 和 skill 机制拓展** —— 只需往资源目录里放文件就能添加新能力，无需改代码\n\n### Puerts.Agent 框架\n\n上面的编辑器助手就是用 **Puerts.Agent** 开发的——一个开放、可扩展的 LLM Agent 框架。它不仅能用于编辑器，**还能跑在游戏运行时环境中**，为 gameplay 玩法开发打开全新可能：\n\n- 🎮 **智能 NPC Demo** —— 每个 NPC 拥有独立的 LLM Agent 实例和个性化 system-prompt。NPC 能根据玩家行为和游戏状态生成真正动态的对话，通过 C# 接口感知周围环境，并基于对话历史形成个性化的交互体验。（[SmartNPCDemo](https://github.com/chexiongsheng/SmartNPCDemo)）\n- 🧩 **迷宫 AI Demo** —— AI 自主走迷宫的 Demo，展示 Agent 通过截屏观察 + 工具调用来探索 3D 迷宫。AI 截屏观察当前视野、推理可行路径、执行移动指令、再截屏验证结果——完全自主完成，整个实现仅用了两个 builtin 模块和一段 system-prompt。（[MazeRunnerDemo](https://github.com/chexiongsheng/MazeRunnerDemo)）\n\n构建你自己的 Agent，只需创建一个简单的资源目录：\n\n```\nResources/my-agent/\n├── system-prompt.md.txt      # 告诉 AI 它是谁、该怎么做\n├── skills/                   # 领域知识文档（按需加载）\n└── builtins/                 # 可执行的辅助模块\n```\n\n## HOW - 我该怎么开始\n\n* [官方文档](https://puerts.github.io)\n\n---\n\n\n## 常见问题\n\n* [通用 faq](doc/faq.md)\n* [unreal faq](doc/unreal/zhcn/faq.md)\n* [unity faq](doc/unity/zhcn/faq.md)\n\n## 最新版本安装\n\n* [unreal](doc/unreal/zhcn/install.md)\n* [unity](doc/unity/zhcn/install.md)\n\n### 改动日志\n\n* [unreal](doc/unreal/zhcn/changelog.md)\n* [unity](unity/Assets/core/upm/changelog-hans.md)\n\n### 已知问题与解决办法\n\n* [unreal](doc/unreal/zhcn/bugs.md)\n* [unity](doc/unity/zhcn/bugs.md)\n\n---\n\n## 脚本后端选择\n\nPuerTS 支持多种脚本后端。**JavaScript/TypeScript** 可选 V8、QuickJS、Node.js；3.0 新增 **Lua** 和 **Python** 作为一等公民后端。\n\n### JavaScript 后端\n\n* V8（默认）：综合比较优秀，高性能，代码体积适中，仅包含 ECMAScript 规范的实现，不包含 Node.js API、浏览器 API。\n\n* QuickJS：性能不如 V8，不支持调试，但代码体积小，适用于包体大小敏感的场景。\n\n* Node.js：支持 Node.js API（Unreal Engine 移动平台下不支持 OpenSSL 相关 API），代码体积较大。\n\n| JS 后端 | Node API | 性能 | 代码体积 | 调试 | 补充 |\n| --- | --- | --- | --- | --- | --- |\n| V8 | ❌ | `*****` | `***` | ✔️ | |\n| QuickJS | ❌ | `**` | `*` | ❌ | |\n| Node.js | ✔️ | `*****` | `*****` | ✔️ | OpenSSL 可能被禁用 |\n\n### 新增语言后端（Unity 3.0 新特性！）\n\n\u003e **注意**：Lua 和 Python 后端目前**仅在 Unity 版本**中可用，Unreal Engine 仍仅支持 JavaScript/TypeScript。\n\n| 后端 | 语言 | 性能 | 平台支持 | 补充 |\n| --- | --- | --- | --- | --- |\n| Lua | Lua 5.4 | `*****` | 全平台 | 适合已有 Lua 技术栈的团队 |\n| Python | CPython | `***` | 桌面平台 | 适合 AI/ML 集成与工具链开发 |\n\n## 可用引擎\n\n* unreal engine 4.22 ~ latest\n\n* unity 5 ~ latest\n\n* 任意.net环境\n\n## 可用平台\n\nPuerTS的核心代码支持游戏引擎支持的所有平台，但每个脚本后端有其特有的平台要求：\n\n|  | Window | Mac | Linux | Android | IOS | H5/小游戏|\n| --- | --- | --- | --- | --- | --- |--- |\n| V8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |\n| Nodejs  | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |\n| Quickjs  | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |\n| Webgl  | ❌ | ❌ | ❌ | ❌ | ❌  | ✔️ |\n| Lua   | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |\n| Python  | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |\n\n注1： Unreal下只有V8、Nodejs、Quickjs三种后端，Unity支持以上所有脚本后端\n注2： Webgl后端虽然只支持H5/小游戏，但它的脚本是运行在web环境的原生js虚拟机里，通常性能更高（比如在ios小游戏环境里支持jit），也能享受first class语言诸如方便调试，profiler等好处\n注3： 对于js，不同平台可以选不同的js脚本后端，比如app选v8，H5平台选Webgl实现全平台支持且性能最优\n\n## 技术支持\n\n[Github Discussion](https://github.com/Tencent/puerts/discussions)\n\nQQ群：942696334\n\nUE4专属群：689643903\n\n## 开发博客\n[知乎专栏](https://www.zhihu.com/column/c_1355534112468402176)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftencent%2Fpuerts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftencent%2Fpuerts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftencent%2Fpuerts/lists"}