GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi

[RAGE:MP] Sunucu Taraflı Yapay Zeka Sohbeti

Başlatan Krips Je, 18 Ağustos 2025, 17:29:33

« önceki - sonraki »

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Krips Je

Selamlar, Ben Krips.

Bu konuda sizlere, uzun süredir araştırma yaparak üzerinde çalıştığım bir oyun sunucusunda yapay zeka entegrasyonu fikrini, özellikle RAGE:MP üzerinde nasıl uygulayabileceğinizi anlatacağım. Konu, bir oyuncu komutuyla tetiklenen ve openai api ile iletişim kuran bir sistemin server-side mimarisini kapsayacaktır.



Neden Server-side?

Bu entegrasyonu client-side tarafında yapmak yerine sunucu üzerinde inşa etmemizin iki temel nedeni vardır. Openai api anahtarınız, asla ve asla oyuncuların erişebileceği bir yerde, yani istemci tarafı kodunuzda saklanmamalıdır. Sunucu, bu anahtarı güvenli bir şekilde barındırabileceğiniz tek yerdir. Api isteklerini sunucu üzerinden yönetmek, limitleri, olası hataları ve oyuncu bazlı erişim yetkilerini kontrol etmenizi sağlar. Bu, gereksiz ve kötü niyetli API çağrılarının önüne geçer.



Teknik Altyapı ve Akış

Bu sistemin işleyişi basit bir üç adımlı sürece dayanıyor. Bir oyuncu /ai (mesaj) komutunu girer. RAGE:MP sunucusu, bu komutu dinler ve mesajı yakalar. Sunucu, yakaladığı mesajı kullanarak openai apisine bir http isteği gönderir, gelen yanıtı alır ve oyuncunun ekranına yansıtır.



Gerekli Modülleri Kurma

Öncelikle, sunucu tarafında Node.js ile çalışırken dış apilere istek atmak ve openai kütüphanesini kullanmak için gerekli paketleri projenize eklemelisiniz.

openai: Openainin resmi Node.js kütüphanesi.
axios: Güçlü ve popüler bir http istemcisidir.



Server-side Kodu

RAGE:MP paketinizin ana dizinindeki index.js veya ilgili sunucu scriptinize aşağıdaki gibi bir yapı kurabilirsiniz. Bu kod, komutu yakalama, api isteğini gönderme ve yanıtı işleme adımlarını içerir.

PAWN Kodu: Seç
const axios = require('axios');
const { Configuration, OpenAIApi } = require("openai");
const key = "xxxxxxx";

const configuration = new Configuration({
apiKey: key,
});
const openai = new OpenAIApi(configuration);

mp.events.addCommand('ai', async (player, fullText, ...args) =\> {
const userQuery = args.join(' ');

if (!userQuery) {
    return player.outputChatBox("Kullanım: /ai [metn]");
}

player.outputChatBox("ai düşünmeye başladı...");

try {
    const response = await openai.createCompletion({
        model: "text-davinci-003",
        prompt: userQuery,
        max_tokens: 150,
        temperature: 0.7,
    });
    const aicevap = response.data.choices[0].text.trim();

    player.outputChatBox(`ai: ${aicevap}`);

} catch (error) {
    console.error("api hatası:", error.response ? error.response.data : error.message);
    player.outputChatBox("Hata: yapay zeka ile bağlantı kurulamadı.");
}
});

Son olarak, yazdığınız scriptiin RAGE:MP sunucusu tarafından tanınması için conf.json dosyasında packages bölümüne eklemelisiniz.




Bu basit ama güçlü yapı, oyununuzun içine bir yapay zeka entegrasyonu yapmanızı sağlar. Bu konsepti daha da ileriye taşıyabilirsiniz. örneğin, yapay zeka ile karakterler arası diyaloglar oluşturabilir veya sunucu içindeki oyun içi olaylara tepki veren bir ai sistemi kurabilirsiniz.

Umarım bu rehber, projeniz için sağlam bir başlangıç noktası olur. Sorularınız olursa çekinmeden sorabilirsiniz.

İyi çalışmalar.  :oku2:

"Kodunu yaz, gerisini compiler düşünsün." - Meçhul Yazılımcı
    

Furkanulas

Güzel çalışma olmuş, ellerine sağlık. OpenAI tarafını server-side'dan yönetmen çok doğru bir karar, key'in client tarafında durması zaten baştan sıkıntı. Kod da gayet anlaşılır yazılmış.

Benim tavsiyem, oyuncu bazlı rate limit eklemen olur. Yoksa herkes arka arkaya /ai patlatırsa hem API hem de sunucu zorlanır. Bir de cache mekanizması fena olmaz, aynı prompt için sürekli API çağırmaya gerek yok, direkt hafızadan cevabı verebilirsin.

Roleplay tarafında NPC diyaloğu veya event bazlı tepkiler için denersen baya tatlı olur bence.
Son iki yıldır AI ve Robotik İşleme ile ilgili bir kaç projem bulunmakta zorluk çekersen sana yardımcı olabilirim, başarılar dilerim.

Code is like humor. When you have to explain it, it's bad.

Krips Je

Alıntı yapılan: Furkanulas - 18 Ağustos 2025, 17:58:12
Güzel çalışma olmuş, ellerine sağlık. OpenAI tarafını server-side'dan yönetmen çok doğru bir karar, key'in client tarafında durması zaten baştan sıkıntı. Kod da gayet anlaşılır yazılmış.

Benim tavsiyem, oyuncu bazlı rate limit eklemen olur. Yoksa herkes arka arkaya /ai patlatırsa hem API hem de sunucu zorlanır. Bir de cache mekanizması fena olmaz, aynı prompt için sürekli API çağırmaya gerek yok, direkt hafızadan cevabı verebilirsin.

Roleplay tarafında NPC diyaloğu veya event bazlı tepkiler için denersen baya tatlı olur bence.
Son iki yıldır AI ve Robotik İşleme ile ilgili bir kaç projem bulunmakta zorluk çekersen sana yardımcı olabilirim, başarılar dilerim.

Öncelikle teşekkür ederim. Amacım zaten abartılı bir sistem yapmak değil, fakat teklifini unutmayacağım. Ben temeli attım, geri kalan rate limit gibi korumaları ise kullanan kişinin kendi isteğine bağlı olarak ekleyebileceği şeyler. Tekrar teşekkür ederim. :kalp:

"Kodunu yaz, gerisini compiler düşünsün." - Meçhul Yazılımcı