mcpField
G
game-developer

game-developer

github.com/404kidwiz开发223 次安装
代码仓库

关于 game-developer

game-developer 是面向使用 Unity 和 Unreal Engine 的游戏开发团队的技能,涉及玩法、图形、多人联网和引擎架构,并提供适用于 2D、3D 及 VR/AR 项目的流程与指导。

主要功能

  1. 01Unity 与 Unreal Engine 开发指导
  2. 02玩法与角色系统原型设计
  3. 03图形与渲染优化
  4. 04多人联网模式
  5. 05VR/AR 与编辑器工具流程

适用场景

  1. 01制作战斗或角色控制器原型
  2. 02提升游戏图形性能
  3. 03规划多人游戏的联网模型
  4. 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)从服务端复制到客户端。

步骤:

  1. 头文件(Character.h)

    UPROPERTY(ReplicatedUsing=OnRep_Health)
    float Health;
    
    UFUNCTION()
    void OnRep_Health();
    
    void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
    
  2. 实现(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(); 
        }
    }
    
  3. 蓝图集成

    • 将 UI 进度条绑定到 Health 变量。
    • 使用“Play as Client”(NetMode)进行测试。


工作流 4:VFX Graph 和 Shader Graph(视觉特效)

目标: 为魔法咒语创建 GPU 加速粒子系统。

步骤:

  1. Shader Graph(外观)

    • 创建 Unlit Shader Graph。
    • 添加随 Time 滚动的 Voronoi Noise 节点。
    • 与 Color 属性(HDR)相乘。
    • 连接到 Base Color 和 Alpha。
    • 将 Surface Type 设为 Transparent / Additive。
  2. VFX Graph(运动)

    • 创建 Visual Effect Graph 资源。
    • **Spawn Context:**恒定速率(1000/sec)。
    • **Initialize:**设置 Lifetime(0.5s - 1s),设置 Velocity(随机方向)。
    • **Update:**添加 Turbulence(噪声场)以模拟风。
    • **Output:**将 Quad Output 设置为使用上面创建的 Shader Graph。
  3. 优化

    • 如果粒子需要触发游戏逻辑(例如伤害),请使用 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 平台游戏。

实现:

  1. **物理:**定制物理引擎,实现响应灵敏的平台跳跃
  2. **动画:**使用基于精灵的动画和状态机
  3. **关卡设计:**使用基于 Tilemap 的关卡,并加入程序化元素
  4. **音频:**采用自适应音乐的空间音频系统

技术方案:

# 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 实现:

  1. **移动方式:**提供传送和流畅移动选项
  2. **交互:**通过手势识别实现手部追踪
  3. **优化:**单通道立体渲染
  4. **舒适度:**为敏感用户提供舒适模式选项

关键注意事项:

  • 为确保舒适度,最低帧率为 72Hz
  • 在设计中避免引发晕动症
  • 使用手部物理模拟实现逼真的交互
  • 优化独立头显的电池续航
示例 3:多人吃鸡游戏

**场景:**开发一款支持 100 名玩家的竞技多人游戏。

多人游戏架构:

  1. **网络:**客户端预测与服务端校正
  2. **延迟补偿:**插值和外推技术
  3. **反作弊:**服务端验证与作弊检测
  4. **匹配:**基于技能的匹配与队列优化

最佳实践

游戏开发
  • **优先实现核心循环:**先为核心玩法循环制作原型并加以完善
  • **模块化架构:**解耦系统以便维护
  • **性能预算:**定义并监控性能目标
  • **数据驱动设计:**使用配置文件调整游戏平衡
  • **版本控制:**妥善管理大型二进制资源
物理与移动
  • 确定性:确保联网游戏中的物理效果一致
  • 碰撞检测:优化检测,尽量减少误报
  • 角色控制器:将物理效果与角色逻辑分离
  • 布娃娃物理:用于死亡动画和交互
  • 性能:分析物理更新耗时,并按需优化
图形与渲染
  • 批处理:合并绘制调用,提高 GPU 效率
  • 细节层次:为模型和纹理实现 LOD
  • 着色器:降低着色器复杂度,并使用共享材质
  • 光照:平衡画质与性能,并使用烘焙光照
  • 后期处理:按需应用,并分析对 GPU 的影响
音频实现
  • 空间音频:采用 3D 定位,增强沉浸感
  • 自适应音乐:根据游戏进程动态调整配乐
  • 性能:流式播放大型音频文件,并复用音效对象
  • 压缩:使用合适的音频压缩格式
  • 无障碍:提供音频提示,作为视觉反馈的替代方式
测试与质量
  • 游戏测试:定期开展游戏测试,收集反馈
  • 性能分析:监控帧率、内存和加载时间
  • 平台测试:在目标硬件上测试,而不只是开发机器
  • 无障碍:从一开始就实现无障碍功能
  • 本地化:尽早为国际市场做好规划

评论

支持 Markdown