{"repo":"egametang/ET","free":true,"listed":false,"github":"https://github.com/egametang/ET","clone":"git clone https://github.com/egametang/ET.git","description":"Unity3D Client And C# Server Framework","language":"C#","stars":9886,"topics":["actor","c-sharp","dotnet","game","game-engine","meta","metaverse","mmo","mmorpg","server","unity","unity3d","web3"],"license":null,"category":"game_dev_framework","readme_excerpt":"# English: please use AI to translate to english\n\n\nET10\nThe AI Native Framework\n\nET10 is a next-generation game development framework designed for the AI coding era.\n\nUnlike traditional game frameworks that only focus on runtime performance, ET10 is built to make AI-assisted game development practical for large-scale online games.\n\nET10 combines:\n\nDistributed MMO architecture\nFiber-based actor runtime\nCloud-native server infrastructure\nHot reload workflows\nAutomated gameplay testing\nAI harness skills\nUnity runtime bridge\nAnalyzer-enforced architecture\n\nso AI can safely develop, test, and maintain complex online game projects without breaking project structure.\n\nBuilt for AI-Assisted Development\n\nMost AI coding tools can generate code.\n\nET10 ensures the generated code can:\n\ncompile successfully\npass gameplay tests\nobey architecture rules\nsurvive hot reload\nscale across distributed servers\nintegrate safely with existing systems\n\nbefore being accepted into production.\n\nET10 includes a powerful analyzer ecosystem to enforce large-scale project architecture, including:\n\nasync safety rules\nentity lifecycle protection\npackage dependency constraints\nactor usage validation\nruntime safety checks\n\nThis allows AI to work within strict architectural boundaries instead of generating uncontrolled code.\n\nDesigned for Large-Scale Online Games\n\nET10 provides a modern MMO runtime with:\n\ndistributed actor model\ndynamic room scaling\nservice discovery\ncloud-native deployment\nlocation services\nhotfix workflows\nruntime observability\nmulti-process server architecture\n\nThe framework is designed for long-running, scalable online games rather than small standalone projects.\n\nAI Harness + Automated Verification\n\nET10 goes beyond code generation.\n\nIt provides a complete AI development workflow including:\n\nautomated compilation\ngameplay verification\nmulti-bot testing\nUnity Editor integration\nruntime log analysis\ntest harness execution\nautomated validation pipelines\n\nAI is not only able to write code, but also verify whether the game actually works.\n\nUnity Runtime Integration\n\nET10 includes a Unity runtime bridge that allows AI to interact directly with the engine runtime.\n\nExamples include:\n\ncreating GameObjects\nmodifying components\ncontrolling Play Mode\nrefreshing assets\nreading logs\nrunning gameplay tests\ninspecting runtime entities\n\nThis enables a true AI-driven game development workflow instead of simple file-based code generation.\n\nWhy ET10?\n\nTraditional frameworks are designed for human developers.\n\nET10 is designed for a future where:\n\nAI writes code\nanalyzers enforce architecture\nautomated systems verify gameplay\ncloud infrastructure scales dynamically\ndevelopers focus on game design instead of repetitive engineering tasks\nET10\nAI writes code. ET10 makes it production-ready.\n\nFor running instructions, please refer to [Book/1.1Running Guide.md](Book/1.1Running%20Guide.md).\n\n# ET10.0(昭君) \n1. 开源版本使用ET License，只可以用于学习，不可二次修改开源，商业使用需要购买许可，价格4999，具体请看LICENSE文件  \n   | 包名 | 详细内容 |  \n   |------|------|\n   | cn.etetet.harness | ai各种skills跟分析器，包括et-code, et-async, et-excel, et-luban, et-build, et-test, et-tdd等skills，还有包分析器, await分析器等等分析器, 主要用于严格限制ai行为 |  \n   | cn.etetet.unitybridge | 该包是Unity Skills, 实现了各种Unity操作，并且极其方便扩展，提出需求让ai实现即可。目前注册的68个指令全部包括：状态与生命周期 Ping、HostState、Compile、Refresh、RegenProject、EnterPlay、ExitPlay、Reload、EditorGetStateRequest、EditorPauseRequest、EditorUndoRequest、EditorRedoRequest；资源 AssetSearchRequest、AssetFindRequest、AssetGetPathRequest、AssetLoadRequest、AssetImportRequest、AssetRefreshRequest、AssetReadTextRequest；场景 SceneGetHierarchyRequest、SceneGetActiveRequest、SceneLoadRequest、SceneSaveRequest、SceneNewRequest；选择集 SelectionGetRequest、SelectionSetRequest、SelectionAddRequest、SelectionRemoveRequest、SelectionClearRequest；GameObject GameObjectCreateRequest、GameObjectDestroyRequest、GameObjectDuplicateRequest、GameObjectFindRequest、GameObjectGetInfoRequest、GameObjectRenameRequest、GameObjectSetActiveRequest；Transform TransformGetRequest、TransformSetPositionRequest、TransformSetRotationRequest、TransformSetScaleRequest、TransformSetParentRequest、TransformLookAtRequest、TransformResetRequest、TransformSetSiblingIndexRequest；Inspector InspectorGetComponentsRequest、InspectorGetPropertiesRequest、InspectorGetPropertyRequest、InspectorFindPropertyRequest、InspectorSetPropertyRequest、InspectorSetPropertiesRequest、InspectorAddComponentRequest、InspectorRemoveComponentRequest；Prefab PrefabInstantiateRequest、PrefabSaveRequest、PrefabUnpackRequest、PrefabGetInfoRequest、PrefabGetHierarchyRequest、PrefabApplyRequest；GameView GameViewGetResolutionRequest、GameViewListResolutionsRequest、GameViewSetResolutionRequest；其它 ConsoleGetLogsRequest、EditorLogRequest、ScreenshotCaptureRequest、UnityTestRunRequest、MenuItemExecuteRequest、BatchExecuteRequest、TestEcho |  \n   | cn.etetet.test | 测试框架，可以模拟整个游戏环境，实现整条客户端跟服务器交互。比如组队功能，可以写一个test，里面创建5个客户端机器人，然后让机器人发送消息实现组队，从而可以测试整个客户端跟服务端的组队逻辑。有了test框架，ai的工作检查变得极其轻松，只需要让ai写test，然后 review自己的test，确保test执行通过即可。不仅成实现逻辑层Test，UI Test也完全可以实现|  \n   | cn.etetet.behaviortree | 行为树包，提供BTNode、Sequence、Selector、Not、Condition、Action等行为树节点定义与运行时支持，并带有Unity编辑器可视化编辑、节点参数配置、运行路径调试和配置代码导出能力，适合实现怪物AI、任务流程、技能释放、复杂条件判断等可配置决策逻辑。 |  \n   | cn.etetet.servicediscovery | 服务发现包，提供服务注册、注销、查询、订阅、心跳、租约和变更通知能力，进程级ServiceDiscoveryAgent会把请求转发到当前服务发现主节点，并支持主节点切换、故障恢复和多客户端并发访问，适合多进程多服务器架构下动态发现服务 |  \n   | cn.etetet.conditionexpr | ConditionExpr包，可以把Excel/Luban中填写的条件表达式编译成行为树运行，支持数值比较、&&、\\|\\|、!、括号、错误码绑定、多owner key和专用条件节点，适合副本进入条件、奖励领取条件、任务接取条件、功能开启条件等策划可配置条件判断 |  \n   | cn.etetet.spell | Spell包，提供技能与Buff系统，包含Spell/Buff配置模型、运行时施法逻辑、客户端表现组件和相关Unity编辑器工具，并复用行为树配置导出链路，适合实现技能释放、Buff结算、技能表现和复杂战斗流程配置。Unity菜单 ET->Spell->Spell Editor提供集成化的编辑器。甚至直接让ai自己配置即可 |  \n   | cn.etetet.aspire | Aspire包，整合ET框架与.NET Aspire，会根据StartConfig为每个ET进程和副本创建Aspire服务，自动传递SceneName、StartConfig、内外网端口等启动参数，并接入OTLP/OpenTelemetry，适合分布式应用编排、运行观测和监控 |  \n\n2. game develop ai harness支持，ET10遥遥领先! 绝大部分框架要么客户端要么服务端，要想实现完善的vibe coding test框架是非常不舒服的，只有ET10这种前后端一起，才能极其方便开发双端test，直接打通前后端逻辑，联调都不用，test直接完成双端逻辑开发，完成联调工作。逻辑开发的工作量只剩下UI了。  \n3. 使用请参考 [Book/1.1Running Guide.md](Book/1.1Running%20Guide.md)\n\n\n# __讨论QQ群 : 474643097__ （已满） 新手请加新手群:688514974 \n\n---\n# 商业项目（已出现多个一个人开发的MMO上线，足以证明ET的强大）：    \n1. [千古风流](https://www.qiangu.com/) 大型mmo，团队100人2年开发完成  \n2. [神选誓约](https://www.taptap.cn/app/248095)  \n3. [危境](https://www.taptap.cn/app/271100) 一个技术一个策划开发的mmo，抖音可以搜索危境看直播  \n4. 魔力回忆 许木大厨一个人开发的魔力宝贝  \n5. [新生](https://store.steampowered.com/app/1704940/_/) steam上，一个人开发的科幻mmo  \n6. [怒斩屠龙之乾坤剑指](http://wan.rxqu.com/mobile/downfile/index/gid/9.html) 传奇项目  \n7. [魔法点点2](https://www.taptap.com/app/227804) 一个人开发  \n8. [养不大](https://www.taptap.com/app/71064)  \n9. 天天躲猫猫2（ios2019春节下载排行19）  \n10. [牛虎棋牌](https://gitee.com/ECPS_admin/PlanB)  \n11. [五星麻将](https://github.com/wufanjoin/fivestar)  \n12. [代号肉鸽：无限](https://www.taptap.cn/app/247225) 一个人开发  \n13. [卡车人生](https://www.kxdw.com/android/130033.html)  \n14. [掌门太闲](https://www.taptap.cn/app/361952) 一个人开发  \n15. [万世镜](https://www.taptap.cn/app/235872)  \n16. [Culture & Chest](https://play.google.com/store/apps/details?id=com.Inutan.CultureChest)  \n17. [史莱姆大乱斗](https://www.taptap.cn/app/228923)  \n18. [魔灵幻想](https://www.taptap.cn/app/337878)  一个技术\n19. [Tank Clash: Blitz!](https://apps.apple.com/us/app/tank-clash-blitz/id6477913248)\n20. [黑山之巅](https://store.steampowered.com/app/2015760/_/?l=schinese)\n21. [赴江湖](https://www.taptap.cn/app/712191) 一款武侠类MMO\n---\n\n# ET9最新Package，在这里搜索插件[ET Packages](https://github.com/orgs/ET-Packages/packages)，安装请看运行指南 \n1. cn.etetet.mongodb  数据库补丁工具增强db包，用于团队或者线上对数据库数据打补丁，售价100元  \n2. [cn.etetet.yiuinumeric](https://lib9kmxvq7k.feishu.cn/wiki/GHDOwsmy0iQQMok3gU7cgxbpn7x) 增强版数值系统，需要搭配下面的luban插件使用，售价100元\n3. [cn.etetet.yiuiluban](https://lib9kmxvq7k.feishu.cn/wiki/W1ylwC9xDip1YQk4eijcxgO9nh0) 无缝替换cn.etetet.excel成luban配置，售价100元\n   0. 限免 购买luban包即赠送以下所有\n   1. [cn.etetet.yiuicondition](https://lib9kmxvq7k.feishu.cn/wiki/Kc0awA9EXiRJylkreL9cfLJFnsg)  条件系统\n   2. [cn.etetet.yiuigameobjectpool](https://lib9kmxvq7k.feishu.cn/wiki/UyigweBFXipNJnkCIY6coHzFnSc)  游戏对象缓存池\n   3. [cn.etetet.yiuiaudio](https://lib9kmxvq7k.feishu.cn/wiki/ECbzwVPmDiQNY9ktJHecCuGsnig)  音乐音效\n   4. [cn.etetet.yiuivideo](https://lib9kmxvq7k.feishu.cn/wiki/Wt7twM5nciZl5rkKf7ScpGGAn4c)  视频播放\n   5. [cn.etetet.yiuidamagetips](https://lib9kmxvq7k.feishu.cn/wiki/Yt8PwrobfiYijDkuZTWcsGyJnFh)  伤害提示\n4. cn.etetet.webgl  客户端支持打包webgl，前后端websocket连接，注意微信小游戏需要自己接入，由于已经支持了webgl，小游戏接入并不复杂，不接入小游戏主要是因为有人会使用团结有人用unity，没法统一版本，售价999元(购买过et8 webgl的可以免费升级)\n5. FGUI系列插件，icepower开发，免费\n6. [YIUI系列插件](https://lib9kmxvq7k.feishu.cn/wiki/XJxLwzTlViqD5TkSAw1c32Rqnd1) ET-UGUI框架 (yiyi开发，免费)\n\n\n\n# ET9.0 发布！(西施)  \n1. ET9改成了Package模式，任何功能可以制作成ET Package放到ET Package中心，用户能极其简单的集成到自己项目中。制作package请看上面的制作指南    \n2. ETTask实现了传递上下文功能，可以去掉烦人的CancellationToken传递 感谢 花语梦蝶 提出的的新思路  \n3. Entity简化，去掉了ChildrenDB跟ComponentDB，自定义序列化SortedDictionary，可以指定某个Child或者Componet跟不跟随Parent序列化  \n4. Kcp改成非托管内存分配，GC更少，感谢 Molth 提交的代码  \n5. LICENSE更改了，为了保证让的大家修改的代码所有人都能方便的使用，ET9使用了新的LICENSE，具体请看LICENSE文件  \n6. YIUI Package 感谢亦亦开发\n7. FGUI Package 感谢IcePower开发\n\n# [ET Packages](https://github.com/orgs/ET-Packages/packages)  \n\n# [ET Packages制作指南](./Book/8.1ET%20Package制作指南.md)  \n\n# [ET论坛](https://et-framework.cn)  \n\n# [ET视频教程](https://community.uwa4d.com/search?keyword=ET&scope=1)   \n\n# [运行指南](./Book/1.1运行指南.md)  \n\n# [分析器说明](https://www.yuque.com/u28961999/yms0nt/)\n\n\n# 熊猫的三门课程,需要请加QQ 80081771：  \n1. [网络游戏架构设计](https://www.bilibili.com/video/BV1h84y1G7aH/?spm_id_from=333.999.0.0&vd_source=e55f8234b8f8039504cbf131082c93dd)  基于ET7.2，共27集，讲解ET7.2的框架设计细节  \n2. [帧同步设计](https://www.bilibili.com/video/BV1tX4y1C7pM/?share_source=copy_web&vd_source=001b901865c99550d1b2a8cd663695d4)  基于ET8，共12集，讲解预测回滚帧同步设计  \n3. [多线程架构设计](https://www.bilibili.com/video/BV1Ah4y1f7QT/?spm_id_from=333.999.0.0&vd_source=e55f8234b8f8039504cbf131082c93dd)  基于ET8，共11集，讲解ET8的多线程设计  \n4. WebGL小游戏框架，基于ET8，完善的网络，配置，热更等等，跟ET8使用一样  \n\n\n# ET8.1 发布!  \n\n8.1跟8区别不大，代码结构完全没有变化，主要是编译方式的修改，可以在Unity中按F6进行编译，也可以在IDE中进行编译，运行中reload可以先按F6编译，再按F7进行热重载   \n\n# ","default_branch":"master","files":15869,"tree":[".claude/settings.local.json",".gitattributes",".gitignore",".kilo/package-lock.json",".mcp.json",".vscode/extensions.json",".vscode/launch.json",".vscode/settings.json",".vscode/tasks.json","AGENTS.md","Assets/.gitignore","Assets/DefaultVolumeProfile.asset","Assets/DefaultVolumeProfile.asset.meta","Assets/GameRes.meta","Assets/GameRes/YIUI.meta","Assets/GameRes/YIUI/YIUISettings.meta","Assets/GameRes/YIUI/YIUISettings/YIUIAtlasData.asset","Assets/GameRes/YIUI/YIUISettings/YIUIAtlasData.asset.meta","Assets/GameRes/YIUI/YIUISettings/YIUIConstAsset.txt","Assets/GameRes/YIUI/YIUISettings/YIUIConstAsset.txt.meta","Assets/Plugins.meta","Assets/Plugins/Demigiant.meta","Assets/Plugins/Demigiant/DOTween.meta","Assets/Plugins/Demigiant/DOTween/DOTween.XML","Assets/Plugins/Demigiant/DOTween/DOTween.XML.meta","Assets/Plugins/Demigiant/DOTween/DOTween.dll","Assets/Plugins/Demigiant/DOTween/DOTween.dll.mdb","Assets/Plugins/Demigiant/DOTween/DOTween.dll.mdb.meta","Assets/Plugins/Demigiant/DOTween/DOTween.dll.meta","Assets/Plugins/Demigiant/DOTween/Editor.meta","Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML","Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta","Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll","Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb","Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll.mdb.meta","Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta","Assets/Plugins/Demigiant/DOTween/Editor/Imgs.meta","Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png","Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png.meta","Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png","Assets/Plugins/Demigiant/DOTween/Editor/Imgs/DOTweenMiniIcon.png.meta","Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png","Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png.meta","Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png","Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta","Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg","Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg.meta","Assets/Plugins/Demigiant/DOTween/Modules.meta","Assets/Plugins/Demigiant/DOTween/Modules/DOTween.Modules.asmdef","Assets/Plugins/Demigiant/DOTween/Modules/DOTween.Modules.asmdef.meta","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs","Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta","Assets/Plugins/Demigiant/DOTween/readme.txt","Assets/Plugins/Demigiant/DOTween/readme.txt.meta","Assets/Plugins/Sirenix.meta","Assets/Plugins/Sirenix/Assemblies.meta","Assets/Plugins/Sirenix/Assemblies/AOT.meta","Assets/Plugins/Sirenix/Assemblies/AOT/Sirenix.Serialization.AOTGenerated.dll","Assets/Plugins/Sirenix/Assemblies/AOT/Sirenix.Serialization.AOTGenerated.dll.meta","Assets/Plugins/Sirenix/Assemblies/AOT/link.xml","Assets/Plugins/Sirenix/Assemblies/AOT/link.xml.meta","Assets/Plugins/Sirenix/Assemblies/NoEditor.meta","Assets/Plugins/Sirenix/Assemblies/NoEditor/Sirenix.Serialization.dll","Assets/Plugins/Sirenix/Assemblies/NoEditor/Sirenix.Serialization.dll.meta","Assets/Plugins/Sirenix/Assemblies/NoEditor/Sirenix.Serialization.pdb","Assets/Plugins/Sirenix/Assemblies/NoEditor/Sirenix.Serialization.pdb.meta","Assets/Plugins/Sirenix/Assemblies/NoEditor/Sirenix.Utilities.dll","Assets/Plugins/Sirenix/Assemblies/NoEditor/Sirenix.Utilities.dll.meta","Assets/Plugins/Sirenix/Assemblies/NoEditor/Sirenix.Utilities.pdb","Assets/Plugins/Sirenix/Assemblies/NoEditor/Sirenix.Utilities.pdb.meta","Assets/Plugins/Sirenix/Assemblies/NoEmitAndNoEditor.meta","Assets/Plugins/Sirenix/Assemblies/NoEmitAndNoEditor/Sirenix.Serialization.dll","Assets/Plugins/Sirenix/Assemblies/NoEmitAndNoEditor/Sirenix.Serialization.dll.meta","Assets/Plugins/Sirenix/Assemblies/NoEmitAndNoEditor/Sirenix.Serialization.pdb","Assets/Plugins/Sirenix/Assemblies/NoEmitAndNoEditor/Sirenix.Serialization.pdb.meta","Assets/Plugins/Sirenix/Assemblies/NoEmitAndNoEditor/Sirenix.Utilities.dll","Assets/Plugins/Sirenix/Assemblies/NoEmitAndNoEditor/Sirenix.Utilities.dll.meta","Assets/Plugins/Sirenix/Assemblies/NoEmitAndNoEditor/Sirenix.Utilities.pdb","Assets/Plugins/Sirenix/Assemblies/NoEmitAndNoEditor/Sirenix.Utilities.pdb.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Attributes.dll","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Attributes.dll.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Attributes.pdb","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Attributes.pdb.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Attributes.xml","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Attributes.xml.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Editor.dll","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Editor.dll.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Editor.pdb","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Editor.pdb.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Editor.xml","Assets/Plugins/Sirenix/Assemblies/Sirenix.OdinInspector.Editor.xml.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Reflection.Editor.dll","Assets/Plugins/Sirenix/Assemblies/Sirenix.Reflection.Editor.dll.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Reflection.Editor.pdb","Assets/Plugins/Sirenix/Assemblies/Sirenix.Reflection.Editor.pdb.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.Config.dll","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.Config.dll.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.Config.pdb","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.Config.pdb.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.Config.xml","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.Config.xml.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.dll","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.dll.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.pdb","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.pdb.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.xml","Assets/Plugins/Sirenix/Assemblies/Sirenix.Serialization.xml.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.Editor.dll","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.Editor.dll.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.Editor.pdb","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.Editor.pdb.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.Editor.xml","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.Editor.xml.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.dll","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.dll.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.pdb","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.pdb.meta","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.xml","Assets/Plugins/Sirenix/Assemblies/Sirenix.Utilities.xml.meta","Assets/Plugins/Sirenix/Assemblies/link.xml","Assets/Plugins/Sirenix/Assemblies/link.xml.meta","Assets/Plugins/Sirenix/Demos.meta","Assets/Plugins/Sirenix/Demos/Custom Attribute Processors.unitypackage","Assets/Plugins/Sirenix/Demos/Custom Attribute Processors.unitypackage.meta","Assets/Plugins/Sirenix/Demos/Custom Drawers.unitypackage","Assets/Plugins/Sirenix/Demos/Custom Drawers.unitypackage.meta","Assets/Plugins/Sirenix/Demos/Editor Windows.unitypackage","Assets/Plugins/Sirenix/Demos/Editor Windows.unitypackage.meta","Assets/Plugins/Sirenix/Demos/Sample - RPG Editor.unitypackage","Assets/Plugins/Sirenix/Demos/Sample - RPG Editor.unitypackage.meta","Assets/Plugins/Sirenix/Odin Inspector.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/Bootstrap License.txt","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/Bootstrap License.txt.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/ColorPaletteManager.asset","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/ColorPaletteManager.asset.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/ConfigData.bytes","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/ConfigData.bytes.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/Hidden.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/Hidden/ExtractSpriteShader.shader","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/Hidden/ExtractSpriteShader.shader.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/Hidden/GUIUtilShader.shader","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/Hidden/GUIUtilShader.shader.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/Hidden/LazyEditorIconShader.shader","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/Hidden/LazyEditorIconShader.shader.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/Hidden/SdfIconShader.shader","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/Hidden/SdfIconShader.shader.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/OdinPathLookup.asset","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/OdinPathLookup.asset.meta","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/SdfIconAtlas.png","Assets/Plugins/Sirenix/Odin Inspector/Assets/Editor/SdfIconAtlas.png.meta","Assets/Plugins/Sirenix/Odin Inspector/Config.meta","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor.meta","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/AOTGenerationConfig.asset","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/AOTGenerationConfig.asset.meta","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/GeneralDrawerConfig.asset","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/GeneralDrawerConfig.asset.meta","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/ImportSettingsConfig.asset","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/ImportSettingsConfig.asset.meta","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/InspectorConfig.asset","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/InspectorConfig.asset.meta","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/OdinModuleConfig.asset","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/OdinModuleConfig.asset.meta","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/TypeRegistryUserConfig.asset","Assets/Plugins/Sirenix/Odin Inspector/Config/Editor/TypeRegistryUserConfig.asset.meta","Assets/Plugins/Sirenix/Odin Inspector/Config/Resources.meta","Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix.meta","Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix/GlobalSerializationConfig.asset","Assets/Plugins/Sirenix/Odin Inspector/Config/Resources/Sirenix/GlobalSerializationConfig.asset.meta","Assets/Plugins/Sirenix/Odin Inspector/Modules.meta","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Addressables.data","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Addressables.data.meta","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Entities.data","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Entities.data.meta","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Localization.data","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Localization.data.meta","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Mathematics.data","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Mathematics.data.meta","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Mathematics.meta","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Mathematics/MathematicsDrawers.cs","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Mathematics/MathematicsDrawers.cs.meta","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Mathematics/Sirenix.OdinInspector.Modules.UnityMathematics.asmdef","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Mathematics/Sirenix.OdinInspector.Modules.UnityMathematics.asmdef.meta","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Mathematics/manifest.txt","Assets/Plugins/Sirenix/Odin Inspector/Modules/Unity.Mathematics/manifest.txt.meta","Assets/Plugins/Sirenix/Readme.txt","Assets/Plugins/Sirenix/Readme.txt.meta","Assets/Plugins/TextMesh Pro.meta","Assets/Plugins/TextMesh Pro/Fonts.meta","Assets/Plugins/TextMesh Pro/Fonts/LiberationSans - OFL.txt","Assets/Plugins/TextMesh Pro/Fonts/LiberationSans - OFL.txt.meta","Assets/Plugins/TextMesh Pro/Fonts/LiberationSans.ttf","Assets/Plugins/TextMesh Pro/Fonts/LiberationSans.ttf.meta","Assets/Plugins/TextMesh Pro/Resources.meta","Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials.meta","Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat","Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat.meta","Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset","Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta","Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat","Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat.meta","Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset","Assets/Plugins/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta","Assets/Plugins/TextMesh Pro/Resources/LineBreaking Following Characters.txt","Assets/Plugins/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta","Assets/Plugins/TextMesh Pro/Resources/LineBreaking Leading Characters.txt","Assets/Plugins/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta","Assets/Plugins/TextMesh Pro/Resources/Sprite Assets.meta","Assets/Plugins/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset","Assets/Plugins/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta","Assets/Plugins/TextMesh Pro/Resources/Style Sheets.meta","Assets/Plugins/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset","Assets/Plugins/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta","Assets/Plugins/TextMesh Pro/Resources/TMP Settings.asset","Assets/Plugins/TextMesh Pro/Resources/TMP Settings.asset.meta","Assets/Plugins/TextMesh Pro/Shaders.meta","Assets/Plugins/TextMesh Pro/Shaders/SDFFunctions.hlsl","Assets/Plugins/TextMesh Pro/Shaders/SDFFunctions.hlsl.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_Bitmap.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF Overlay.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF SSD.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-HDRP LIT.shadergraph","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-HDRP LIT.shadergraph.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-HDRP UNLIT.shadergraph","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-HDRP UNLIT.shadergraph.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Mobile-2-Pass.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Mobile-2-Pass.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Surface.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-URP Lit.shadergraph","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-URP Lit.shadergraph.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-URP Unlit.shadergraph","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF-URP Unlit.shadergraph.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_SDF.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMP_Sprite.shader","Assets/Plugins/TextMesh Pro/Shaders/TMP_Sprite.shader.meta","Assets/Plugins/TextMesh Pro/Shaders/TMPro.cginc","Assets/Plugins/TextMesh Pro/Shaders/TMPro.cginc.meta","Assets/Plugins/TextMesh Pro/Shaders/TMPro_Mobile.cginc","Assets/Plugins/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta","Assets/Plugins/TextMesh Pro/Shaders/TMPro_Properties.cginc","Assets/Plugins/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta","Assets/Plugins/TextMesh Pro/Shaders/TMPro_Surface.cginc","Assets/Plugins/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta","Assets/Plugins/TextMesh Pro/Sprites.meta","Assets/Plugins/TextMesh Pro/Sprites/EmojiOne Attribution.txt","Assets/Plugins/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta","Assets/Plugins/TextMesh Pro/Sprites/EmojiOne.json","Assets/Plugins/TextMesh Pro/Sprites/EmojiOne.json.meta","Assets/Plugins/TextMesh Pro/Sprites/EmojiOne.png","Assets/Plugins/TextMesh Pro/Sprites/EmojiOne.png.meta","Assets/ProjectSettings.meta","Assets/ProjectSettings/UIEffectProjectSettings.asset","Assets/ProjectSettings/UIEffectProjectSettings.asset.meta","Assets/ProjectSettings/UIParticleProjectSettings.asset","Assets/ProjectSettings/UIParticleProjectSettings.asset.meta","Assets/SharedAssets.meta","Assets/SharedAssets/TextMeshPro.meta","Assets/SharedAssets/TextMeshPro/Shaders.meta","Assets/SharedAssets/TextMeshPro/Shaders/TMP_SDF.shader","Assets/SharedAssets/TextMeshPro/Shaders/TMP_SDF.shader.meta","Assets/SharedAssets/TextMeshPro/Shaders/TMPro.cginc","Assets/SharedAssets/TextMeshPro/Shaders/TMPro.cginc.meta","Assets/SharedAssets/TextMeshPro/Shaders/TMPro_Properties.cginc","Assets/SharedAssets/TextMeshPro/Shaders/TMPro_Properties.cginc.meta","Assets/link.xml","Assets/link.xml.meta","Book/1.1Running Guide.md","Book/1.1运行指南.md","Book/1.2Why use .net core.md","Book/1.2为什么使用.net core.md","Book/2.1CSharp Coroutine.md","Book/2.1CSharp的协程.md","Book/2.2Better Coroutine.md","Book/2.2更好的协程.md","Book/2.3Single-threaded asynchronous.md","Book/2.3单线程异步.md","Book/3.2The powerful MongoBson library.md","Book/3.2强大的MongoBson库.md","Book/3.3Everything is Entity.md","Book/3.3一切皆实体.md","Book/3.4EventSystem.md","Book/3.4事件机制EventSystem.md","Book/4.1Component-based design.md","Book/4.1组件式设计.md","Book/5.4Actor Model.md","Book/5.4Actor模型.md","Book/5.5Actor Location-EN.md","Book/5.5Actor Location-ZH.md","Book/5.6Numerical component design.md","Book/5.6数值组件设计.md","Book/6.1AI Framwork.md","Book/6.1AI框架.md","Book/6.2AI框架-行为机.md","Book/7.1代码规范.md","Book/8.1ET Package制作指南.md","Book/8.2ET Package目录.md","Book/8.3ET9项目怎么进行包更新.md","Book/donate.png","CLAUDE.md","ChangeLog.md","Directory.Build.props","ET.sln.DotSettings","LICENSE","Packages/cn.etetet.achievement/Ignore.ET.Achievement.asmdef","Packages/cn.etetet.achievement/Ignore.ET.Achievement.asmdef.meta","Packages/cn.etetet.achievement/Luban.meta","Packages/cn.etetet.achievement/Luban/Config.meta","Packages/cn.etetet.achievement/Luban/Config/Base.meta","Packages/cn.etetet.achievement/Luban/Config/Base/__beans__.xlsx","Packages/cn.etetet.achievement/Luban/Config/Base/__beans__.xlsx.meta","Packages/cn.etetet.achievement/Luban/Config/Base/__enums__.xlsx","Packages/cn.etetet.achievement/Luban/Config/Base/__enums__.xlsx.meta","Packages/cn.etetet.achievement/Luban/Config/Base/__tables__.xlsx","Packages/cn.etetet.achievement/Luban/Config/Base/__tables__.xlsx.meta","Packages/cn.etetet.achievement/Luban/Config/Datas.meta","Packages/cn.etetet.achievement/Luban/Config/Datas/Achievement.xlsx","Packages/cn.etetet.achievement/Luban/Config/Datas/Achievement.xlsx.meta","Packages/cn.etetet.achievement/Luban/Config/Datas/AchievementCategory.xlsx","Packages/cn.etetet.achievement/Luban/Config/Datas/AchievementCategory.xlsx.meta","Packages/cn.etetet.achievement/Proto.meta","Packages/cn.etetet.achievement/Proto/Achievement_C_10600.proto","Packages/cn.etetet.achievement/Proto/Achievement_C_10600.proto.meta","Packages/cn.etetet.achievement/Scripts.meta","Packages/cn.etetet.achievement/Scripts/Hotfix.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Client.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Client/ClientAchievementHelper.cs","Packages/cn.etetet.achievement/Scripts/Hotfix/Client/ClientAchievementHelper.cs.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Server.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/AchievementComponentSystem.cs","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/AchievementComponentSystem.cs.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/AchievementEventHandlers.cs","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/AchievementEventHandlers.cs.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/AchievementHelper.cs","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/AchievementHelper.cs.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/AchievementProgressSystem.cs","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/AchievementProgressSystem.cs.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/AchievementSystem.cs","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/AchievementSystem.cs.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/C2M_ClaimAchievement_Handler.cs","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/C2M_ClaimAchievement_Handler.cs.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/C2M_GetAchievementCategories_Handler.cs","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/C2M_GetAchievementCategories_Handler.cs.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/C2M_GetAchievementDetail_Handler.cs","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/C2M_GetAchievementDetail_Handler.cs.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/C2M_GetAchievementStats_Handler.cs","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/C2M_GetAchievementStats_Handler.cs.meta","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/C2M_GetAchievements_Handler.cs","Packages/cn.etetet.achievement/Scripts/Hotfix/Server/C2M_GetAchievements_Handler.cs.meta","Packages/cn.etetet.achievement/Scripts/Model.meta","Packages/cn.etetet.achievement/Scripts/Model/Client.meta","Packages/cn.etetet.achievement/Scripts/Model/Client/ClientAchievementCategory.cs","Packages/cn.etetet.achievement/Scripts/Model/Client/ClientAchievementCategory.cs.meta","Packages/cn.etetet.achievement/Scripts/Model/Client/ClientAchievementComponent.cs","Packages/cn.etetet.achievement/Scripts/Model/Client/ClientAchievementComponent.cs.meta","Packages/cn.etetet.achievement/Scripts/Model/Client/ClientAchievementData.cs","Packages/cn.etetet.achievement/Scripts/Model/Client/ClientAchievementData.cs.meta","Packages/cn.etetet.achievement/Scripts/Model/Client/ClientAchievementReward.cs","Packages/cn.etetet.achievement/Scripts/Model/Client/ClientAchievementReward.cs.meta","Packages/cn.etetet.achievement/Scripts/Model/Client/ClientAchievementStats.cs","Packages/cn.etetet.achievement/Scripts/Model/Client/ClientAchievementStats.cs.meta","Packages/cn.etetet.achievement/Scripts/Model/Server.meta","Packages/cn.etetet.achievement/Scripts/Model/Server/Achievement.cs","Packages/cn.etetet.achievement/Scripts/Model/Server/Achievement.cs.meta","Packages/cn.etetet.achievement/Scripts/Model/Server/AchievementAttribute.cs","Packages/cn.etetet.achievement/Scripts/Model/Server/AchievementAttribute.cs.meta","Packages/cn.etetet.achievement/Scripts/Model/Server/AchievementComponent.cs"],"storefront":"/r/egametang","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/egametang/ET/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}