Blog'a Dön
Game Development
5 Ocak 2025

Unity ile AI Destekli Oyun Geliştirme

Unity engine kullanarak AI destekli NPC'ler ve akıllı oyun mekaniği nasıl geliştirileceğini adım adım öğrenin.

Erencan Acıoğlu
Full Stack Developer
15 min
750
6
#Unity#C##AI#Game Development#NPC
0% okundu
# Unity ile AI Destekli Oyun Geliştirme

Unity'de AI entegrasyonu oyun deneyimini bambaşka bir seviyeye taşıyor. Bu yazıda, Unity'de AI destekli NPC'ler ve akıllı oyun mekaniği nasıl geliştirileceğini öğreneceksiniz.

## Unity AI Araçları

### 1. Unity ML-Agents
- Machine learning tabanlı AI
- Reinforcement learning desteği
- Python entegrasyonu

### 2. Unity NavMesh
- Pathfinding algoritmaları
- Dynamic obstacle avoidance
- Multi-agent navigation

### 3. Behavior Trees
- Visual scripting
- Complex AI behaviors
- State management

## AI Destekli NPC Geliştirme

### 1. Temel AI Controller
csharp
using UnityEngine;
using UnityEngine.AI;

public class AIController : MonoBehaviour
{
private NavMeshAgent agent;
private Transform player;
private Animator animator;

[Header("AI Settings")]
public float detectionRange = 10f;
public float attackRange = 2f;
public float patrolSpeed = 2f;
public float chaseSpeed = 5f;

private AIState currentState;

public enum AIState
{
Patrol,
Chase,
Attack,
Idle
}

void Start()
{
agent = GetComponent();
animator = GetComponent();
player = GameObject.FindWithTag("Player").transform;

currentState = AIState.Patrol;
}

void Update()
{
switch (currentState)
{
case AIState.Patrol:
PatrolBehavior();
break;
case AIState.Chase:
ChaseBehavior();
break;
case AIState.Attack:
AttackBehavior();
break;
}
}

void PatrolBehavior()
{
// Patrol logic
if (Vector3.Distance(transform.position, player.position) < detectionRange)
{
currentState = AIState.Chase;
}
}

void ChaseBehavior()
{
agent.SetDestination(player.position);
agent.speed = chaseSpeed;

if (Vector3.Distance(transform.position, player.position) < attackRange)
{
currentState = AIState.Attack;
}
}

void AttackBehavior()
{
// Attack logic
if (Vector3.Distance(transform.position, player.position) > attackRange)
{
currentState = AIState.Chase;
}
}
}


### 2. Machine Learning Entegrasyonu
csharp
using Unity.MLAgents;
using Unity.MLAgents.Sensors;
using Unity.MLAgents.Actuators;

public class MLAgent : Agent
{
[Header("ML Settings")]
public float moveSpeed = 5f;
public float rotationSpeed = 100f;

private Rigidbody rb;
private Transform target;

public override void Initialize()
{
rb = GetComponent();
target = GameObject.FindWithTag("Target").transform;
}

public override void OnEpisodeBegin()
{
// Reset agent position
transform.localPosition = new Vector3(0, 0.5f, 0);
rb.velocity = Vector3.zero;
}

public override void CollectObservations(VectorSensor sensor)
{
// Add observations
sensor.AddObservation(transform.localPosition);
sensor.AddObservation(target.localPosition);
sensor.AddObservation(rb.velocity);
}

public override void OnActionReceived(ActionBuffers actions)
{
// Process actions
float moveX = actions.ContinuousActions[0];
float moveZ = actions.ContinuousActions[1];

Vector3 movement = new Vector3(moveX, 0, moveZ) * moveSpeed;
rb.AddForce(movement);

// Reward system
float distanceToTarget = Vector3.Distance(transform.localPosition, target.localPosition);
if (distanceToTarget < 1.5f)
{
SetReward(1.0f);
EndEpisode();
}
else
{
SetReward(-0.01f);
}
}
}


## Gelişmiş AI Teknikleri

### 1. Behavior Trees ile Kompleks AI
- Visual scripting
- State transitions
- Conditional behaviors

### 2. Neural Networks
- Custom AI models
- Training data collection
- Model optimization

### 3. Multi-Agent Systems
- Swarm intelligence
- Collaborative behaviors
- Emergent gameplay

## Performance Optimizasyonu

### 1. AI Culling
- Distance-based activation
- LOD systems
- Batch processing

### 2. Memory Management
- Object pooling
- Garbage collection optimization
- Efficient data structures

## Sonuç

Unity'de AI geliştirme, oyun deneyimini zenginleştiren güçlü bir araçtır. Bu teknikleri kullanarak akıllı ve etkileşimli NPC'ler oluşturabilirsiniz.

Bu yazıyı beğendiniz mi?

Daha fazla teknoloji ve geliştirme yazısı için blog'umu takip edin.