关于 game-developer
game-developer 是面向使用 Unity 和 Unreal Engine 的游戏开发团队的技能,涉及玩法、图形、多人联网和引擎架构,并提供适用于 2D、3D 及 VR/AR 项目的流程与指导。
主要功能
- 01Unity 与 Unreal Engine 开发指导
- 02玩法与角色系统原型设计
- 03图形与渲染优化
- 04多人联网模式
- 05VR/AR 与编辑器工具流程
适用场景
- 01制作战斗或角色控制器原型
- 02提升游戏图形性能
- 03规划多人游戏的联网模型
- 04开发 VR/AR 玩法与交互
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill game-developer安装后在 Claude Code 中输入/game-developer确认已加载。
详细介绍
游戏开发者
目的
提供交互式娱乐开发专业知识,专长于 Unity(C#)和 Unreal Engine(C++)。打造 2D/3D 游戏,涵盖游戏玩法编程、图形优化、多人网络和引擎架构,带来沉浸式游戏体验。
适用场景
- 制作游戏机制原型(角色控制器、战斗系统)
- 优化图形性能(着色器、LOD、遮挡剔除)
- 实现多人网络(Netcode for GameObjects、Mirror、Unreal Replication)
- 设计关卡架构和流式加载系统
- 开发 VR/AR 体验(OpenXR、ARKit)
- 创建自定义编辑器工具和管线
2. 决策框架
引擎选择
Which engine fits the project?
│
├─ **Unity**
│ ├─ Mobile/2D/VR? → **Yes** (Best ecosystem, smaller build size)
│ ├─ Team knows C#? → **Yes**
│ └─ Stylized graphics? → **Yes** (URP is flexible)
│
├─ **Unreal Engine 5**
│ ├─ Photorealism? → **Yes** (Nanite + Lumen out of box)
│ ├─ Open World? → **Yes** (World Partition system)
│ └─ Team knows C++? → **Yes** (Or Blueprints visual scripting)
│
└─ **Godot**
├─ Open Source requirement? → **Yes** (MIT License)
├─ Lightweight 2D? → **Yes** (Dedicated 2D engine)
└─ Linux native dev? → **Yes** (Excellent Linux support)
多人游戏架构
| 模型 | 描述 | 最适用场景 |
|---|---|---|
| 客户端托管(P2P) | 一名玩家担任主机。 | 合作游戏、格斗游戏(采用回滚机制)。成本低。 |
| 专用服务端 | 云端权威服务端。 | 竞技射击游戏、大型多人在线游戏。可防止作弊。 |
| 中继服务端 | 中继服务(例如 Unity Relay)。 | 避免 NAT 问题的会话制游戏。 |
图形管线(Unity)
| 管线 | 目标平台 | 优势 |
|---|---|---|
| URP(通用) | 移动设备、VR、Switch、PC | 性能高、可自定义、支持丰富的资源商店。 |
| HDRP(高清) | PC、PS5、Xbox Series X | 照片级真实感、体积光照、计算着色器。 |
| 内置管线 | 旧项目 | 新项目请避免使用。 |
危险信号 → 升级给 graphics-engineer(专业人员)处理:
- 从零编写自定义渲染后端(Vulkan/DirectX/Metal)
- 调试驱动程序级别的 GPU 崩溃
- 实现新颖的 GI(全局光照)算法
工作流 2:Unreal Engine 多人游戏设置
目标: 将变量(Health)从服务端复制到客户端。
步骤:
-
头文件(
Character.h)UPROPERTY(ReplicatedUsing=OnRep_Health) float Health; UFUNCTION() void OnRep_Health(); void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override; -
实现(
Character.cpp)void AMyCharacter::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const { Super::GetLifetimeReplicatedProps(OutLifetimeProps); DOREPLIFETIME(AMyCharacter, Health); } void AMyCharacter::TakeDamage(float DamageAmount) { if (HasAuthority()) { Health -= DamageAmount; // OnRep_Health() called automatically on clients // Must call manually on Server if needed OnRep_Health(); } } -
蓝图集成
- 将 UI 进度条绑定到
Health变量。 - 使用“Play as Client”(NetMode)进行测试。
- 将 UI 进度条绑定到
工作流 4:VFX Graph 和 Shader Graph(视觉特效)
目标: 为魔法咒语创建 GPU 加速粒子系统。
步骤:
-
Shader Graph(外观)
- 创建
Unlit Shader Graph。 - 添加随
Time滚动的Voronoi Noise节点。 - 与
Color属性(HDR)相乘。 - 连接到
Base Color和Alpha。 - 将 Surface Type 设为
Transparent/Additive。
- 创建
-
VFX Graph(运动)
- 创建
Visual Effect Graph资源。 - **Spawn Context:**恒定速率(1000/sec)。
- **Initialize:**设置 Lifetime(0.5s - 1s),设置 Velocity(随机方向)。
- **Update:**添加
Turbulence(噪声场)以模拟风。 - **Output:**将
Quad Output设置为使用上面创建的 Shader Graph。
- 创建
-
优化
- 如果粒子需要触发游戏逻辑(例如伤害),请使用
GPU Events。 - 正确设置
Bounds,避免剔除问题。
- 如果粒子需要触发游戏逻辑(例如伤害),请使用
5. 反模式与注意事项
❌ 反模式 1:在 Update() 中编写繁重逻辑
表现形式:
- 每帧执行
FindObjectOfType、GetComponent或繁重的数学运算。
为何有问题:
- 严重影响 CPU 性能。
- 消耗移动设备的电量。
正确做法:
- 在
Start()或Awake()中缓存引用。 - 对于不必每帧运行的逻辑,使用协程或 InvokeRepeating(例如,每 0.5s 更新一次 AI 寻路)。
❌ 反模式 2:信任客户端
表现形式:
- 客户端向服务端发送“我射中了玩家 X”。
- 服务端立即造成伤害。
为何有问题:
- 作弊者可以发送伪造数据包。
正确做法:
- **权威服务端:**客户端发送“我开火了”。服务端计算命中情况。服务端告知客户端“你命中了”。
- 使用预测/校正来掩盖本地玩家感受到的延迟。
❌ 反模式 3:上帝类
表现形式:
PlayerController.cs有 2000 行代码,负责处理移动、战斗、库存、UI 和音频。
为何有问题:
- 代码混乱不堪。
- 难以调试。
正确做法:
- 组合:
PlayerMovement、PlayerCombat、PlayerInventory。 - 使用组件拆分职责。
7. 质量检查清单
性能:
- **帧率:**目标硬件上稳定达到 60fps。
- **GC 分配:**主游戏循环中每帧分配 0 字节。
- **绘制调用:**适当进行批处理(检查 Frame Debugger)。
- **加载时间:**对场景/资源使用异步加载。
代码架构:
- **低耦合:**系统通过事件/接口通信,而非依赖硬编码。
- **整洁:**没有超过 500 行的“上帝类”。
- **版本控制:**通过 Git LFS 处理大型二进制文件(纹理、音频)。
用户体验/润色:
- **控制:**支持重新映射输入。
- **UI:**在不同宽高比(16:9、21:9、移动设备刘海屏)下均能正确缩放。
- **反馈:**为所有玩家操作提供音频/视觉提示(增强表现力)。
示例
示例 1:2D 平台游戏开发
**场景:**开发一款采用物理驱动玩法的商业 2D 平台游戏。
实现:
- **物理:**定制物理引擎,实现响应灵敏的平台跳跃
- **动画:**使用基于精灵的动画和状态机
- **关卡设计:**使用基于 Tilemap 的关卡,并加入程序化元素
- **音频:**采用自适应音乐的空间音频系统
技术方案:
# Character controller pattern
class PlayerCharacter:
def update(self, dt):
input = self.input_system.get_player_input()
velocity = self.physics.apply_gravity(velocity, dt)
velocity = self.handle_movement(input, velocity)
displacement = self.physics.integrate(velocity, dt)
self.handle_collisions(displacement)
self.animation.update_state(velocity, input)
示例 2:VR 体验开发
**场景:**为 Oculus/Meta Quest 打造沉浸式 VR 体验。
VR 实现:
- **移动方式:**提供传送和流畅移动选项
- **交互:**通过手势识别实现手部追踪
- **优化:**单通道立体渲染
- **舒适度:**为敏感用户提供舒适模式选项
关键注意事项:
- 为确保舒适度,最低帧率为 72Hz
- 在设计中避免引发晕动症
- 使用手部物理模拟实现逼真的交互
- 优化独立头显的电池续航
示例 3:多人吃鸡游戏
**场景:**开发一款支持 100 名玩家的竞技多人游戏。
多人游戏架构:
- **网络:**客户端预测与服务端校正
- **延迟补偿:**插值和外推技术
- **反作弊:**服务端验证与作弊检测
- **匹配:**基于技能的匹配与队列优化
最佳实践
游戏开发
- **优先实现核心循环:**先为核心玩法循环制作原型并加以完善
- **模块化架构:**解耦系统以便维护
- **性能预算:**定义并监控性能目标
- **数据驱动设计:**使用配置文件调整游戏平衡
- **版本控制:**妥善管理大型二进制资源
物理与移动
- 确定性:确保联网游戏中的物理效果一致
- 碰撞检测:优化检测,尽量减少误报
- 角色控制器:将物理效果与角色逻辑分离
- 布娃娃物理:用于死亡动画和交互
- 性能:分析物理更新耗时,并按需优化
图形与渲染
- 批处理:合并绘制调用,提高 GPU 效率
- 细节层次:为模型和纹理实现 LOD
- 着色器:降低着色器复杂度,并使用共享材质
- 光照:平衡画质与性能,并使用烘焙光照
- 后期处理:按需应用,并分析对 GPU 的影响
音频实现
- 空间音频:采用 3D 定位,增强沉浸感
- 自适应音乐:根据游戏进程动态调整配乐
- 性能:流式播放大型音频文件,并复用音效对象
- 压缩:使用合适的音频压缩格式
- 无障碍:提供音频提示,作为视觉反馈的替代方式
测试与质量
- 游戏测试:定期开展游戏测试,收集反馈
- 性能分析:监控帧率、内存和加载时间
- 平台测试:在目标硬件上测试,而不只是开发机器
- 无障碍:从一开始就实现无障碍功能
- 本地化:尽早为国际市场做好规划
评论
支持 Markdown