AI prompts
base on PUER(普洱) Typescript. Let's write your game in UE or Unity with TypeScript. ![Logo](./doc/pic/puerts_logo.png)
[![license](https://img.shields.io/badge/license-BSD_3_Clause-blue.svg)](https://github.com/Tencent/puerts/blob/master/LICENSE)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-blue.svg)](https://github.com/Tencent/puerts/pulls)
[![unreal](https://img.shields.io/badge/unreal-v1.0.7-blue.svg)](https://github.com/Tencent/puerts/releases/tag/Unreal_v1.0.7)
[![unity](https://img.shields.io/badge/unity(stable)-v2.1.1-blue.svg)](doc/unity/zhcn/install.md)
![Unity_Test](https://github.com/Tencent/puerts/workflows/unity%20unittest/badge.svg)
[跳转中文](#what---普洱ts是什么)
## WHAT is PuerTS (PUER Typescript)?
`PuerTS` is a TypeScript programming solution in Unity/Unreal/DotNet.
* provides a JavaScript Runtime.
* allows TypeScript to access the host engine with the help of TypeScript declarations generation.
## WHY should I use PuerTS?
* Facilitates game-building processes by combining JavaScript/Node.js ecosystem and professional game engines
* In contrast to Lua script, TypeScript supports static type checking, which significantly improves code robustness and maintainability.
* High efficiency: supports reflection call throughout the host - no extra steps needed for interop with C++/C#.
* High performance: supports static wrapper generation - handles complex scenes with high-performance demands.
* Talented WebGL Support: massive advantage in performance and dev efficiency compared to Lua, even faster than pure C# in some cases.
## HOW can I start to use PuerTS
[Documentation](https://puerts.github.io/en)
---
## FAQ
* [general faq](doc/faq.md)
* [unreal faq](doc/unreal/en/faq.md)
* [unity faq](doc/unity/en/faq.md)
## How to Install
* [unreal](doc/unreal/en/install.md)
* [unity](doc/unity/en/install.md)
### Changelog
* [unreal](doc/unreal/en/changelog.md)
* [unity](unity/Assets/core/upm/changelog.md)
### Known issues
* [unreal](doc/unreal/en/bugs.md)
* [unity](doc/unity/en/bugs.md)
---
## Select Script Engine
Currently puerts supports three script engines: v8, quickjs, nodejs, choose the one that suits you.
* 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.
* 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.
* Node.js: Supports Node.js API (OpenSSL-related APIs are not supported on Unreal Engine's mobile platform), but has a larger code size.
| Script Engine | Node api | Performance | Code Size | Debugging | Notes |
| --- | --- | --- | --- | --- | --- |
| V8 | ❌ | `*****` | `***` | ✔️ | |
| QuickJS | ❌ | `**` | `*` | ❌ | |
| Node.js | ✔️ | `*****` | `*****` | ✔️ | OpenSSL may be disabled |
## Avaliable on these Engine
* unreal engine 4.22 ~ latest
* unity 5 ~ latest
* Any .net project
## Available on these Platform
* iOS
* Android
* OpenHarmony
* Windows
* Macos
## Ask for help
[Github Discussion](https://github.com/Tencent/puerts/discussions)
------
## WHAT - 普洱TS是什么?
PuerTS是 Unity/Unreal/Dotnet 下的TypeScript编程解决方案
* 提供了一个JavaScript运行时
* 提供TypeScript声明文件生成能力,易于通过TypeScript访问宿主引擎,
## WHY - 为什么我该用普洱TS?
* JavaScript生态有众多的库和工具链,结合专业商业引擎的渲染能力,快速打造游戏
* 相比游戏领域常用的lua脚本,TypeScript的静态类型检查有助于编写更健壮,可维护性更好的程序
* 高效:全引擎,全平台支持反射调用,无需额外步骤即可与宿主C++/C#通信。
* 高性能:全引擎,全平台支持生成静态调用桥梁,兼顾了高性能的场景。
* WebGL平台下的天生优势:相比Lua脚本在WebGL版本的表现,PuerTS在性能和效率上都有极大提升,目前极限情况甚至比C#更快。
## HOW - 我该怎么开始
* [官方文档](https://puerts.github.io)
---
## 常见问题
* [通用 faq](doc/faq.md)
* [unreal faq](doc/unreal/zhcn/faq.md)
* [unity faq](doc/unity/zhcn/faq.md)
## 最新版本安装
* [unreal](doc/unreal/zhcn/install.md)
* [unity](doc/unity/zhcn/install.md)
### 改动日志
* [unreal](doc/unreal/zhcn/changelog.md)
* [unity](unity/Assets/core/upm/changelog-hans.md)
### 已知问题与解决办法
* [unreal](doc/unreal/zhcn/bugs.md)
* [unity](doc/unity/zhcn/bugs.md)
---
## 脚本引擎选择
目前puerts支持三种脚本引擎:v8、quickjs、nodejs,选择合适你的那个。
* v8(默认):综合比较优秀,高性能,代码体积适中,仅包含ecmascript规范的实现,不包含nodejs api、浏览器 api
* quickjs: 性能不如v8,不支持调试,但代码体积小,适用于代码段大小敏感型业务
* nodejs:支持nodejs api(unreal engine的移动平台下不支持openssl相关api),代码体积较大
| 脚本引擎 | Node api | 性能 | 代码体积 | 调试 | 补充 |
| --- | --- | --- | --- | --- | --- |
| V8 | ❌ | `*****` | `***` | ✔️ | |
| QuickJS | ❌ | `**` | `*` | ❌ | |
| Node.js | ✔️ | `*****` | `*****` | ✔️ | OpenSSL 可能被禁用 |
## 可用引擎
* unreal engine 4.22 ~ latest
* unity 5 ~ latest
* 任意.net环境
## 可用平台
* iOS
* Android
* 鸿蒙(OpenHarmony)
* Windows
* Macos
## 技术支持
[Github Discussion](https://github.com/Tencent/puerts/discussions)
QQ群:942696334
UE4专属群:689643903
## 开发博客
[知乎专栏](https://www.zhihu.com/column/c_1355534112468402176)
", Assign "at most 3 tags" to the expected json: {"id":"5011","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"