AI Skill Report Card
Unity Game Development
Quick Start12 / 15
CSHARP// Basic Unity multiplayer setup with Netcode for GameObjects using Unity.Netcode; public class PlayerController : NetworkBehaviour { [SerializeField] private float moveSpeed = 5f; void Update() { if (!IsOwner) return; Vector3 moveDir = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); transform.position += moveDir * moveSpeed * Time.deltaTime; } }
Recommendation▾
Add concrete input/output examples showing actual game scenarios (e.g., 'Player presses W key → character moves forward at 5 units/sec')
Workflow12 / 15
Game Development Process:
- Setup project structure (Scripts/, Prefabs/, Materials/, etc.)
- Implement core gameplay mechanics
- Add networking layer if multiplayer
- Create asset loading system for modding
- Implement UI and game states
- Optimize performance and build
Multiplayer Implementation:
- Install Netcode for GameObjects package
- Setup NetworkManager in scene
- Create NetworkBehaviour scripts for synchronized objects
- Implement client-server architecture
- Add matchmaking/lobby system
- Test with multiple clients
Modding System Setup:
- Create asset bundle system for external content
- Implement mod loader using reflection
- Setup API for mod developers
- Create mod validation system
- Add runtime asset importing
Recommendation▾
Include complete project templates or starter code rather than just snippets
Examples13 / 20
Example 1: Custom Asset Loading
CSHARPpublic class ModAssetLoader : MonoBehaviour { public async void LoadCustomAsset(string assetPath) { var bundle = await AssetBundle.LoadFromFileAsync(assetPath); var prefab = bundle.LoadAsset<GameObject>("CustomWeapon"); Instantiate(prefab); } }
Example 2: Multiplayer Synchronization
CSHARPpublic class NetworkPlayer : NetworkBehaviour { private NetworkVariable<Vector3> networkPosition = new(); public override void OnNetworkSpawn() { if (IsServer) networkPosition.Value = transform.position; } [ServerRpc] public void UpdatePositionServerRpc(Vector3 newPos) { networkPosition.Value = newPos; } }
Recommendation▾
Add specific performance benchmarks and optimization targets (e.g., 'Maintain 60 FPS with 100+ networked objects')
Best Practices
- Use object pooling for frequently spawned objects
- Implement proper network ownership and authority
- Create modular asset bundles for efficient loading
- Use ScriptableObjects for game configuration
- Implement proper error handling for mod loading
- Use Unity's Addressable system for asset management
- Follow consistent naming conventions across project
- Separate game logic from presentation layer
Common Pitfalls
- Don't put heavy logic in Update() - use coroutines or events
- Avoid synchronizing every frame in multiplayer - use interpolation
- Don't load all assets at startup - implement lazy loading
- Never trust client input in multiplayer games
- Don't hardcode asset paths - use asset references
- Avoid circular dependencies between mod systems
- Don't forget to dispose of loaded asset bundles
- Never block main thread with synchronous asset loading