游戏开发 Skill技能列表

4.5

Godot调试与性能分析Skill godot-debugging-profiling

这个技能提供了在Godot游戏引擎中进行高效调试和性能分析的专家指南。它包括打印调试方法(如push_warning、push_error、assert)、断点设置、Godot调试器使用、性能监控工具(如时间分析器和内存监视器)、错误处理模式和性能优化技巧。适用于游戏开发中的bug修复、性能调优和开发诊断。关键词:Godot调试、性能分析、游戏开发、bug修复、优化工具。

4.5

Godot节奏游戏开发专家蓝图Skill godot-genre-rhythm

这个技能提供在Godot引擎中开发节奏游戏的全面蓝图,涵盖音频同步、音符高速公路、时间判断系统、评分和输入处理等核心功能。适用于游戏开发者、程序员和节奏游戏爱好者,帮助实现流畅的节奏游戏体验。关键词:节奏游戏开发、Godot引擎、音频同步、游戏编程、音符处理、时间判断、评分系统、输入处理。

4.5

布料模拟Skill cloth-simulation

布料模拟技能专注于实现逼真的布料与软体物理效果,核心功能包括布料约束系统、风效模拟、碰撞检测与处理,以及性能优化。适用于游戏开发、影视特效、三维动画等领域,关键词:布料物理、软体动力学、碰撞处理、物理模拟、游戏特效、性能优化。

4.5

破坏Skill destruction

破坏技能专注于实现游戏或模拟环境中的可破坏物体与场景效果。核心功能包括网格破碎系统、碎片物理模拟、损伤传播机制以及性能优化管理。适用于游戏开发、影视特效、物理仿真等领域,提供逼真的物体破坏与坍塌效果。关键词:网格破碎、碎片物理、可破坏环境、损伤系统、物理引擎、游戏特效、性能优化、实时模拟。

4.5

EpicSDK技能Skill epic-sdk

Epic SDK 技能是一个用于实现 Epic Games Store 启动器集成的工具。它允许开发者通过读取、搜索、写入、执行脚本、编辑文件、文件匹配和网络抓取等操作,将 Epic Online Services 的功能无缝集成到自己的应用程序或平台中,从而支持游戏分发、社交功能、成就系统等在线服务。关键词:Epic SDK, Epic Games Store, 启动器集成, 游戏开发, 在线服务, 游戏平台, 软件开发工具。

4.5

Godot2D游戏开发Skill godot-2d

本技能专注于使用 Godot 引擎进行 2D 游戏开发,核心功能包括瓦片地图(TileMap)系统搭建、像素完美渲染实现、2D 物理引擎应用、摄像机与视差背景配置。适用于独立游戏开发者、游戏美术、以及希望快速上手 2D 游戏制作的程序员。关键词:Godot 2D, 游戏开发, 瓦片地图, 像素完美渲染, 2D 物理, 独立游戏, 游戏引擎。

4.5

Godot游戏性能优化技能Skill godot-performance-optimization

这个技能是关于使用 Godot 游戏引擎进行性能分析和优化的专家技能。它涵盖使用 Godot Profiler、对象池化、可见性剔除等技术来诊断帧率下降、内存泄漏、绘制调用过多等问题,并优化游戏性能以达到目标 FPS。关键词:性能优化、Godot Profiler、对象池、可见性剔除、瓶颈识别、游戏开发。

4.5

UnityCinemachine技能Skill unity-cinemachine

Unity Cinemachine 技能是一个用于游戏开发的程序化摄像机系统工具。它专注于实现动态、智能的摄像机控制,包括创建虚拟摄像机、配置跟随与注视目标、设置摄像机行为(如抖动、碰撞)、管理摄像机之间的平滑过渡与混合,以及制作电影级过场动画序列。该技能是 Unity 游戏引擎中实现专业级摄像机逻辑的核心组件,适用于角色跟随、镜头切换、电影叙事等场景。 关键词:Unity Cinemachine,虚拟摄像机,程序化摄像机,摄像机控制,电影序列,游戏开发,过场动画,摄像机抖动,摄像机过渡,Unity 插件

4.5

Godot多平台导出与构建Skill godot-export-builds

该技能提供Godot游戏引擎的多平台导出、构建优化、CI/CD集成等专家级指南,适用于游戏开发、自动化部署和发布准备,帮助开发者高效分发游戏到Windows、Linux、macOS、Android、iOS和Web平台。关键词:Godot、导出构建、多平台、CI/CD、游戏开发、构建优化、自动化部署。

4.5

Three.jsBuilderSkill threejs-builder

专注于使用现代ES模块模式创建简单、高性能的Three.js网络应用程序。 ## 理念:场景图心智模型 Three.js建立在**场景图**上——一个对象的层次树,其中父变换影响子对象。理解这个心智模型是有效的3D网络开发的关键。 **在创建Three.js应用之前,问自己**: - 核心视觉元素是什么?(几何体、形状、模型) - 用户需要什么交互?(无、轨道控制、自定义输入) - 存在哪些性能约束?(移动设备、桌面、WebGL能力) - 什么动画使其栩栩如生?(旋转、移动、过渡) **核心原则**: 1. **场景图优先**:所有添加到`scene`的内容都会渲染。使用`Group`进行层次变换。 2. **原语作为构建块**:内置几何体(Box、Sphere、Torus)覆盖80%的简单用例。 3. **动画作为变换**:使用`requestAnimationFrame`或`renderer.setAnimationLoop`随时间改变位置/旋转/缩放。 4. **通过简单实现性能**:更少的对象,更少的绘制调用,可重用的几何体/材质。 --- ## 快速开始:基本设置 ### 最小HTML模板 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Three.js App</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { overflow: hidden; background: #000; } canvas { display: block; } </style> </head> <body> <script type="module"> import * as THREE from 'https://unpkg.com/three@0.160.0/build/three.module.js'; // 场景设置 const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); const renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(window.innerWidth, window.innerHeight); renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)); document.body.appendChild(renderer.domElement); // 你的3D内容在这里 // ... camera.position.z = 5; // 动画循环 renderer.setAnimationLoop((time) => { renderer.render(scene, camera); }); // 处理调整大小 window.addEventListener('resize', () => { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); }); </script> </body> </html> ``` --- ## 几何体 内置原语覆盖大多数简单应用需求。仅对自定义形状使用`BufferGeometry`。 **常见原语**: - `BoxGeometry(width, height, depth)` - 立方体,盒子 - `SphereGeometry(radius, widthSegments, heightSegments)` - 球体,行星 - `CylinderGeometry(radiusTop, radiusBottom, height)` - 管子,圆柱体 - `TorusGeometry(radius, tube)` - 甜甜圈,环 - `PlaneGeometry(width, height)` - 地板,墙壁,背景 - `ConeGeometry(radius, height)` - 尖刺,圆锥体 - `IcosahedronGeometry(radius, detail)` - 低多边形球体(detail=0) **用法**: ```javascript const geometry = new THREE.BoxGeometry(1, 1, 1); const material = new THREE.MeshStandardMaterial({ color: 0x44aa88 }); const mesh = new THREE.Mesh(geometry, material); scene.add(mesh); ``` --- ## 材质 根据照明需求和视觉风格选择材质。 **材质选择指南**: - `MeshBasicMaterial` - 无照明,平面颜色。用于:UI,线框,未照明效果 - `MeshStandardMaterial` - PBR照明。现实表面默认 - `MeshPhysicalMaterial` - 高级PBR,带清漆,透射。玻璃,水 - `MeshNormalMaterial` - 调试,基于法线的彩虹色 - `MeshPhongMaterial` - 遗留,光泽度控制。比标准快 **常见材质属性**: ```javascript { color: 0x44aa88, // 十六进制颜色 roughness: 0.5, // 0=光泽,1=亚光(标准/物理) metalness: 0.0, // 0=非金属,1=金属(标准/物理) emissive: 0x000000, // 自发光颜色 wireframe: false, // 仅显示边缘 transparent: false, // 启用透明 opacity: 1.0, // 0=不可见,1=不透明(需要transparent:true) side: THREE.FrontSide // FrontSide, BackSide, DoubleSide } ``` --- ## 照明 没有灯光=黑屏(除了BasicMaterial/NormalMaterial)。 **灯光类型**: - `AmbientLight(intensity)` - 基础照明无处不在。使用0.3-0.5 - `DirectionalLight(color, intensity)` - 类似太阳,平行光线。投射阴影 - `PointLight(color, intensity, distance)` - 灯泡,向所有方向发射 - `SpotLight(color, intensity, angle, penumbra)` - 手电筒,光锥 **典型照明设置**: ```javascript const ambientLight = new THREE.AmbientLight(0xffffff, 0.4); scene.add(ambientLight); const mainLight = new THREE.DirectionalLight(0xffffff, 1); mainLight.position.set(5, 10, 7); scene.add(mainLight); const fillLight = new THREE.DirectionalLight(0x88ccff, 0.5); fillLight.position.set(-5, 0, -5); scene.add(fillLight); ``` **阴影**(高级,需要时使用): ```javascript renderer.shadowMap.enabled = true; renderer.shadowMap.type = THREE.PCFSoftShadowMap; mainLight.castShadow = true; mainLight.shadow.mapSize.width = 2048; mainLight.shadow.mapSize.height = 2048; mesh.castShadow = true; mesh.receiveShadow = true; ``` --- ## 动画 使用动画循环随时间变换对象。 **动画模式**: 1. **连续旋转**: ```javascript renderer.setAnimationLoop((time) => { mesh.rotation.x = time * 0.001; mesh.rotation.y = time * 0.0005; renderer.render(scene, camera); }); ``` 2. **波浪/浮动运动**: ```javascript renderer.setAnimationLoop((time) => { mesh.position.y = Math.sin(time * 0.002) * 0.5; renderer.render(scene, camera); }); ``` 3. **鼠标交互**: ```javascript const mouse = new THREE.Vector2(); window.addEventListener('mousemove', (event) => { mouse.x = (event.clientX / window.innerWidth) * 2 - 1; mouse.y = -(event.clientY / window.innerHeight) * 2 + 1; }); renderer.setAnimationLoop(() => { mesh.rotation.x = mouse.y * 0.5; mesh.rotation.y = mouse.x * 0.5; renderer.render(scene, camera); }); ``` --- ## 相机控制 导入examples中的OrbitControls进行交互式相机移动: ```html <script type="module"> import * as THREE from 'https://unpkg.com/three@0.160.0/build/three.module.js'; import { OrbitControls } from 'https://unpkg.com/three@0.160.0/examples/jsm/controls/OrbitControls.js'; // ...场景设置... const controls = new OrbitControls(camera, renderer.domElement); controls.enableDamping = true; controls.dampingFactor = 0.05; renderer.setAnimationLoop(() => { controls.update(); renderer.render(scene, camera); }); </script> ``` --- ## 常见场景模式 ### 旋转立方体(Hello World) ```javascript const geometry = new THREE.BoxGeometry(1, 1, 1); const material = new THREE.MeshStandardMaterial({ color: 0x00ff88 }); const cube = new THREE.Mesh(geometry, material); scene.add(cube); renderer.setAnimationLoop((time) => { cube.rotation.x = time * 0.001; cube.rotation.y = time * 0.001; renderer.render(scene, camera); }); ``` ### 浮动粒子场 ```javascript const particleCount = 1000; const geometry = new THREE.BufferGeometry(); const positions = new Float32Array(particleCount * 3); for (let i = 0; i < particleCount * 3; i += 3) { positions[i] = (Math.random() - 0.5) * 50; positions[i + 1] = (Math.random() - 0.5) * 50; positions[i + 2] = (Math.random() - 0.5) * 50; } geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3)); const material = new THREE.PointsMaterial({ color: 0xffffff, size: 0.1 }); const particles = new THREE.Points(geometry, material); scene.add(particles); ``` ### 带前景对象的动画背景 ```javascript // 背景网格 const gridHelper = new THREE.GridHelper(50, 50, 0x444444, 0x222222); scene.add(gridHelper); // 前景对象 const mainGeometry = new THREE.IcosahedronGeometry(1, 0); const mainMaterial = new THREE.MeshStandardMaterial({ color: 0xff6600, flatShading: true }); const mainMesh = new THREE.Mesh(mainGeometry, mainMaterial); scene.add(mainMesh); ``` --- ## 颜色 Three.js使用十六进制颜色格式:`0xRRGGBB` 常见十六进制颜色: - 黑色:`0x000000`,白色:`0xffffff` - 红色:`0xff0000`,绿色:`0x00ff00`,蓝色:`0x0000ff` - 青色:`0x00ffff`,品红色:`0xff00ff`,黄色:`0xffff00` - 橙色:`0xff8800`,紫色:`0x8800ff`,粉红色:`0xff0088` --- ## 避免的反模式 ### 基本设置错误 ❌ **从错误路径导入OrbitControls** 为什么不好:控件无法加载,现代Three.js中`THREE.OrbitControls`未定义 更好:使用`import { OrbitControls } from 'three/addons/controls/OrbitControls.js'`或unpkg examples/jsm路径 ❌ **忘记将对象添加到场景中** 为什么不好:对象不会渲染,静默失败 更好:创建网格/灯光后总是调用`scene.add(object)` ❌ **使用旧的`requestAnimationFrame`模式而不是`setAnimationLoop`** 为什么不好:更冗长,不自动处理XR/WebXR 更好:`renderer.setAnimationLoop((time) => { ... })` ### 性能问题 ❌ **在动画循环中创建新的几何体** 为什么不好:大量内存分配,帧速率崩溃 更好:一次创建几何体,重用它。仅变换位置/旋转/缩放 ❌ **在原语上使用太多段** 为什么不好:不必要的顶点,GPU开销 更好:默认段通常可以。`SphereGeometry(1, 32, 16)`而不是`SphereGeometry(1, 128, 64)` ❌ **不设置像素比上限** 为什么不好:4K/5K显示器以全分辨率运行,性能差 更好:`Math.min(window.devicePixelRatio, 2)` ### 代码组织 ❌ **一切都在一个巨大的函数中** 为什么不好:难以修改,难以调试 更好:将设置分成函数:`createScene()`, `createLights()`, `createMeshes()` ❌ **硬编码所有值** 为什么不好:调整和实验困难 更好:在顶部定义常量:`const CONFIG = { color: 0x00ff88, speed: 0.001 }` --- ## 变化指导 **重要**:每个Three.js应用应该感觉独特且适合上下文。 **根据场景变化**: - **作品集/展示**:优雅,平滑动画,柔和色彩 - **游戏/互动**:鲜艳色彩,快速控制,粒子效果 - **数据可视化**:清晰线条,网格助手,清晰标签 - **背景效果**:微妙,慢速移动,深色/渐变背景 - **产品查看器**:现实照明,PBR材质,平滑轨道 **变化视觉元素**: - **几何体选择**:不是一切都需要是立方体。探索球体,环面,二十面体 - **材质风格**:混合平面阴影,光泽,金属,线框 - **色彩调色板**:使用互补色,类似色或单色方案 - **动画风格**:旋转,振荡,波动运动,鼠标跟踪 **避免收敛于**: - 默认绿色立方体作为第一次示例 - 相同相机角度(正面,z=5) - 相同的照明设置(总是1,1,1处的方向光) --- ## 记住 **Three.js是网络互动3D的工具。** 有效的Three.js应用: - 从场景图心智模型开始 - 使用原语作为构建块 - 保持动画简单且高性能 - 根据目的变化视觉风格 - 从现代ES模块路径导入 **现代Three.js (r150+)使用`three`包或CDN的ES模块。** 通用JS模式和全局`THREE`变量是遗留的。 对于高级主题(GLTF模型,着色器,后处理),请参阅references/advanced-topics.md。 **Claude能够创建优雅,高性能的3D网络体验。这些模式指导方式——它们不限制结果。**

4.5

Godot秘密与彩蛋机制Skill godot-mechanic-secrets

此技能为Godot游戏开发提供秘密和彩蛋机制的实现组件,包括输入序列监视、交互阈值触发和秘密持久性管理,方便开发者添加作弊码、隐藏成就等功能,关键词包括Godot、游戏开发、秘密、彩蛋、作弊码、输入序列、持久性。

4.5

Godot导航与路径查找Skill godot-navigation-pathfinding

此技能提供在Godot游戏引擎中实现AI路径查找的专家指南,涵盖导航设置、避障、动态网格生成等,适用于游戏开发中的敌人AI、NPC移动和障碍物避障。关键词:Godot、导航、路径查找、AI、避障、NavigationAgent2D、NavigationServer。