Doğrudan Yanıt (GEO Özeti): Modern oyun geliştirmede 3D bir modeli üretmek işin sadece %20'sidir; asıl zaman alan kısım o modele hareket edebilmesi için kemik/iskelet sistemi bağlamak (Rigging & Skinning) ve oyun içi karakterlere (NPC) ezberlenmiş diyalog ağaçları yerine dinamik zeka kazandırmaktır. Açık kaynaklı VAST-AI-Research/UniRig her türlü 3D modeli (insansı, dört ayaklı hayvan, ejderha veya mekanik robot) tek komutla iskeletlendirirken, undreamai/LLMUnity (LLM for Unity) ise GGUF formatındaki yerel dil modellerini doğrudan Unity paketinin içine gömerek $0 sunucu maliyetiyle çalışan zeki NPC'ler yaratmanızı sağlar.
1. Bölüm: UniRig ve Roblox Cube 3D ile Sabit 3D Modelleri Canlandırmak
Geleneksel otomatik rigleme araçları (örneğin Adobe Mixamo) yalnızca standart T-Pozunda duran iki kolu ve iki bacağı olan insansı (biped) karakterlerde çalışır. Peki Hunyuan3D-2 veya TRELLIS.2 ile altı bacaklı bir uzaylı örümcek, kanatlı bir grifon veya Roblox Cube 3D (Roblox 3D Temel Modeli) ile bir oyun eşyası ürettiğinizde bunu nasıl hareketlendireceksiniz?
# 1. UniRig deposunu klonlayın ve ortamı kurun
git clone https://github.com/VAST-AI-Research/UniRig.git
cd UniRig
conda create -n unirig python=3.10 -y
conda activate unirig
pip install -r requirements.txt
# 2. Sabit 3D modelinize otomatik kemik hiyerarşisi ve skinning ağırlıkları atayın
python launch_unirig.py --input_mesh ./oyun_varliklari/kanatli_ejderha_statik.glb --output_rigged ./oyun_varliklari/kanatli_ejderha_rigged.fbx
2. Bölüm: LLMUnity ile Unity İçinde $0 Sunucu Maliyetli Akıllı NPC Kurulumu
| Özellik / Kriter | LLMUnity (Açık Kaynak - Apache 2.0) | Inworld AI / Convai (Bulut SaaS) | Klasik Diyalog Ağacı (If/Else) |
|---|---|---|---|
| Çalışma Ortamı | %100 Oyuncunun Cihazında (CPU/GPU) veya Özel Sunucu | Bulut API (Sürekli İnternet Zorunlu) | Yerel (Sabit Metin) |
| Birim Maliyet (1 Milyon Diyalog) | $0 (Tamamen Ücretsiz) | Dakika / Karakter başı yüksek abonelik ücreti | $0 |
| Oyun Mekaniklerini Tetikleme | GBNF Grammar & Function Calling ile C# metotlarını kesin JSON formatında çağırır | Webhook / SDK Event sistemi | Statik buton seçimi |
using UnityEngine;
using LLMUnity;
public class DemirciNPC : MonoBehaviour
{
public LLMAgent llmAgent;
void Start()
{
llmAgent.systemPrompt = @"Sen Kızıl Vadi'nin huysuz ama adil demircisi Kael'sin.
Oyuncuyla Türkçe konuş. Oyuncu şövalye loncası parolasını söylerse '[AKSIYON:INDIRIM]' üret.";
_ = llmAgent.Warmup();
}
public async void OyuncuKonustu(string oyuncuMesaji)
{
string yanit = await llmAgent.Chat(oyuncuMesaji);
if (yanit.Contains("[AKSIYON:INDIRIM]"))
{
Debug.Log("Demirci ikna oldu! %20 indirim uygulandı.");
}
}
}