Eklentilere genel bakış
Bu sayfa, Open Play’de eklenti (plugin) kavramını açıklar: oyuna özgü komutları, sorguları ve gerçek zamanlı modülleri çekirdeğe oyun adı eklemeden sunan paketler. Çekirdek modüllerin (karakter, ekonomi, mağaza…) ötesinde bir oyunun mantığına nasıl bağlandığınızı ve neyin bugün desteklenmediğini burada görürsünüz.
Eklenti nedir
Bir eklenti, Open Play sunucusunun içinde çalışan ve şu üç yüzeyi tanımlayan bir pakettir:
| Yüzey | Ne verir | Nasıl çağrılır |
|---|---|---|
| Komut (command) | Durumu değiştiren, kalıcı ve tekrar-güvenli işlem (ör. ödül al, teslimatı tamamla) | HTTP POST ya da realtime Command çerçevesi: eklentileri çağırma |
| Sorgu (query) | Salt-okunur okuma (ör. aktif teslimat, katalog) | HTTP GET ya da POST |
| Realtime modülü | Anlık girdi ve durum yayını (hareket, oda, sahne) | /v1/realtime/ws: realtime protokolü |
Her eklenti bir şema belgesi (artifact) yayınlar: hangi komut, sorgu ve modülün hangi girdi ve çıktı şemasıyla var olduğunu, hangi kimlikle çağrılabildiğini ve yeniden deneme kuralını tarif eder. SDK’ların tipli bağlamaları bu belgeden üretilir: bağlamalar.
Komutlar tek bir veritabanı işleminde (transaction) kesinleşir: komutun etkisi, sonucu, olayı ve tekrar kaydı birlikte yazılır ya da hiç yazılmaz. Gerçek zamanlı geçici durum ise yalnız hız için tutulur ve ödeme, XP, eşya ya da ödül gibi kalıcı sonuçların otoritesi değildir.
Bugünkü durum: yalnız güvenilir, derlenmiş eklentiler
Uyarı
Üçüncü taraf eklenti yükleme henüz yok. Eklentiler, Open Play sunucusunun kendisine derlenmiş (Rust) kodlardır ve güvenilir kod sayılır. Bir oyun geliştiricisi olarak kendi eklentinizi paneldan ya da API’den yükleyemezsiniz; yalıtılmış (sandbox) çalıştırma, kaynak ölçümü ve imzalı dağıtım gelecekteki bir tasarımdır ve bugün çalışmaz.
Kendi oyun mantığınızı bugün şu yollarla bağlarsınız:
- Kurallar (panelde Kurallar ekranı): karakter olaylarına bağlı otomasyonlar. Bkz. oyun kuralları.
- Webhook’lar: Open Play olaylarını kendi sunucunuza bildirir. Bkz. webhook rehberi.
- Kendi sunucunuz + sunucu anahtarı: kendi mantığınızı kendi sunucunuzda çalıştırıp çekirdek REST uçlarını çağırın. Bkz. uç nokta referansı.
Depoda gelen eklentiler:
| Eklenti | Sürüm | Ne için | Yüzey |
|---|---|---|---|
package-ride | 1.44.0 | Teslimat oyunu: sürüş, görevler, yarış bahisleri, sahne | 36 komut, 33 sorgu, 3 realtime modülü |
arena | 1.0.0 | Minimal örnek: tek hareket modülü | 0 komut, 0 sorgu, 1 realtime modülü |
Bunlar sunucuyla birlikte gelir; sizin ortamınızda hangilerinin etkin olduğunu panelde Eklentiler ekranından görürsünüz (Eklentiler).
Ortam başına durum
Bir eklenti, her ortam (environment) için ayrı ayrı bir durumda bulunur:
| Durum | Komutlar | Sorgular |
|---|---|---|
Etkin (Enabled) | kabul edilir | kabul edilir |
Salt okunur (ReadOnly) | reddedilir | kabul edilir |
Boşaltılıyor (Draining) | yeni komut reddedilir, süren işler biter | kabul edilir |
Kapalı (Disabled) | reddedilir | reddedilir |
Reddedilen çağrı 403 ve forbidden alır (hatalar). Aynı sonuç, ortama verilen eklenti sürümü sunucudaki sürümle uyuşmadığında da görülür: sunucu yeni bir eklenti sürümüyle güncellendiyse ortamın eklenti yetkisi (grant) de o sürüme geçirilmelidir. Beklenmedik 403 forbidden alıyorsanız önce panelde eklentinin durumuna ve sürümüne bakın.
Ek olarak ürün modülü plugins kapalıysa tüm /v1/plugins/... ve realtime uçları 404 ve module_disabled döner (Oyun ayarları: modüller).
Kimlikle erişim
Her işlemin şema belgesinde bir access değeri vardır:
access | Kim çağırır |
|---|---|
player | Oyuncu oturumu (çerez ya da Bearer oturum jetonu) |
server | Yalnız sunucu anahtarı; oyuncu istemcisinde görünmez |
public | Kimlik gerektirmeyen, yalnız GET sorgusu (yalnız x-crx-env gerekir) |
Belirtilmemiş ya da bilinmeyen değer güvenli tarafa (player) düşer. İstemciye gömülen (client) API anahtarıyla eklenti çağrılamaz: 401 alır. Ayrıntı: eklentileri çağırma.
Sıradaki adım
- Komutu ve sorguyu çağırmak için eklentileri çağırma.
- Tipli istemci üretmek ve şema sürümünü sabitlemek için bağlamalar.
- Kendi sunucunuza yeni bir eklenti yazmak için eklenti yazmak.