Net Kurallara, Hafızaya ve Oyuncu Seçimine Sahip Bir Yapay Zekâ Bot Oyunu Nasıl Tasarlanır?
Oynanabilir bir yapay zekâ bot oyunu tasarlamak için küçük ve tekrarlanabilir bir döngü tanımlayın, oyun durumunu sohbetin dışında saklayın ve her oyuncu eylemine net bir sonuç verin. İstekleri botun yorumlamasını ve olayları betimlemesini sağlayın; maliyetleri, ilerlemeyi ve sonları ise açık kuralların belirlemesine izin verin. Bu rehber, yapay zekâlı bir karakter veya anlatıcı içeren metin tabanlı bir oyun geliştiren oyun yapımcıları içindir. Buradaki görev, oyuncuların seçeneklerini anladığı, kararlarının önemini gördüğü ve geçerli bir sona ulaştığı kısa ve test edilebilir tek bir oturum oluşturmaktır. Aşağıdaki teslimat oyunu örnek bir tasarımdır; test edilmiş bir ürün veya raporlanmış bir vaka çalışması değildir.
Yapay zekâ olmadan da oynayabileceğiniz bir çekirdek döngüyle başlayın
Döngüyü tek bir cümlede yazın: Durumu göster → bir eylemi kabul et → kuralları kontrol et → durumu güncelle → sonucu ve sıradaki seçenekleri göster. Her tur bu döngüyü tamamlamalı veya neden ilerleyemediğini açıklamalıdır.
Bir kişilik istemi (personality prompt) yazmadan önce hedefi, mevcut eylemleri, eylem maliyetlerini ve bitiş koşullarını tanımlayın. Oyunu dizin kartlarıyla veya bir elektronik tabloyla yürütebilmelisiniz. Bu, üretilen diyaloglar çeşitlilik katmadan önce mekanikleri incelemeyi mümkün kılar.
*Festival Parcel* (Festival Paketi) adında küçük bir oyunu ele alalım. Oyuncunun bir paketi teslim etmek için beş zaman birimi vardır. Doğrudan bir rotayı veya bahçe rotasını seçebilir ve isteğe bağlı olarak yola çıkmadan önce dekoratif bir kurdele alabilir. Bir bot, rotaları açıklayan ve teslimat hakkında yorum yapan festival kuryesini oynar.
Önerilen kurallar kasıtlı olarak yalındır:
Bu kuralları ilk seçimden önce gösterin. Teslimat eylemlerinin oturumu sonlandırdığını, bu nedenle oyuncuların kurdeleyi önceden alması gerektiğini açıklayın. Son zaman birimini harcayan bir teslimat yine de başarılı olur çünkü başarı kontrolü ilk sırada gelir.
Bu prototip eksiksiz bir başlangıca, karar alanına ve sona sahiptir. Ek karakterler veya mekânlar, bu döngüye faydalı kararlar ekleyerek yerlerini hak etmelidir.
Sonuçlar için açık durumu (explicit state) tek yetkili kılın
Durumu (state), neyin doğru olduğuna dair oyunun resmi kaydı olarak kabul edin. Sohbet metni bu kaydı açıklayabilir ancak onu sessizce değiştirmemelidir.
Robert Nystrom'un *Game Programming Patterns* kitabındaki State (Durum) bölümü (https://gameprogrammingpatterns.com/state.html), sonlu durum makinelerini durumlar, girdiler ve izin verilen geçişler üzerinden açıklar. Ayrıca gevşek bir şekilde birleştirilmiş Boole bayraklarının nasıl geçersiz kombinasyonlar üretebileceğini gösterir. Bu ilkeyi oyununuzun yaşam döngüsüne uygulayın: tanımlanmış geçişlere sahip, active (aktif), delivered (teslim edildi) veya missed (kaçırıldı) gibi tek bir oturum durumu kullanın.
Teslimat prototipi için küçük bir durum belirtimi yeterlidir:
Bahçe kartpostalını, onunla çelişebilecek ikinci bir değer olarak saklamak yerine seçilen rotadan türetin. Benzer şekilde, o an mevcut olan eylemleri durumdan ve kurallardan hesaplayın.
Sabit bir işlem sırası kullanın: isteği yorumlayın, eylemini ve parametrelerini doğrulayın, sonucu hesaplayın, durum değişikliğini işleyin (commit), ardından bunu anlatın. Anlatıcıya işlenmiş sonucu ve izin verilen sıradaki eylemleri verin. Anlatıcı ikinci bir hesaplama uydurmamalıdır.
Örneğin, kurdele alındıktan sonra kesin sonuç şudur: dört zaman birimi kalmıştır, kurdele alınmıştır ve her iki rota da karşılanabilir durumdadır. Bot, kurdelenin rengini mekanik bir etkisi olmadığı sürece betimleyebilir. Ancak habersiz bir zaman maliyeti ekleyemez veya ikinci bir kurdele veremez.
Bu koşulların prototipini mevcut bir anlatı aracıyla oluşturabilirsiniz. Inkle'ın resmi etkileşimli kurgu öğreticisi (https://www.inklestudios.com/ink/web-tutorial/), koşullu seçimleri, daha önce ziyaret edilen içeriğin takibini, değişkenleri ve açık sonları açıklar. Bu özellikler, yapay zekâ anlatımı eklemeden önce kurgulanan oyunu test etmek için faydalı bir temel sunar.
Oyunculara anlayabilecekleri ve etkileyebilecekleri seçimler sunun
Bu tasarım için oyuncu iradesini (agency), oyuncunun anlamlı bir farkı öngörüp öngöremediğine ve ardından bunu sonuçta gözlemleyip gözlemleyemediğine göre değerlendirin. Aynı sonuca çıkan farklı ifadelerle yazılmış birkaç buton bunu test etmek için pek bir işe yaramaz.
*Festival Parcel* oyununda rota kararı farklı oyuncu tercihlerini destekler:
Bunlar belirtilen kurallardan çıkarılan örnek hesaplamalardır. Basit bir karar desteği sağlarlar: daha erken bitirmek için doğrudan teslimatı seçin, süsleme için kurdeleyi alın veya kartpostal için bahçe rotasını tercih edin. Kalan zaman burada bir son ayrıntısıdır; gizlice puan kazandırmaz.
Oyun daha sonra belirli bir sonucu ödüllendirecekse, bu puanlamayı karardan önce açıklayın. Aksi takdirde oyuncular hedeflediğiniz ödünleşimleri (tradeoff) değerlendiremezler.
Görünür eylemlerin yanı sıra serbest metin girişini de destekleyin. "Manzaralı yoldan gidelim", bahçe teslimatı ile eşleşebilir. "Özel bir şey olsun" ise belirsizdir: kurdeleyi almak, bahçe rotasını seçmek veya her ikisi anlamına gelebilir. Zaman harcamadan kısa bir açıklama isteyin.
İlk prototip için mesaj başına bir oynanış eylemi kabul edin. Oyuncu bir eylem dizisi talep ederse adımlarını sunun ve ilk eylemi seçmesini isteyin. Bu, sonraki adımlarının kullanılamaz olduğu anlaşılan bir planın kısmen yürütülmesini önler.
Desteklenmeyen isteklerin bilgilendirici olmasını sağlayın. Oyuncu uçmak isterse, mevcut rotaların doğrudan ve bahçe olduğunu maliyetleriyle birlikte açıklayın. Serbest metin ifade özgürlüğünü genişletebilirken, eylem sistemi öngörülebilir bir yetenek kümesini korur.
Botun neyi hatırladığını ve neyi bilebileceğini tanımlayın
Hafızayı her biri farklı bir amaca sahip üç katmana ayırın.
Kesin oturum durumu (authoritative session state); kaynakları, ilerlemeyi, seçilen rotaları ve sonları saklar. Kaydetme ve yeniden yükleme işlemlerinde kalıcılığını korur ve yalnızca doğrulanmış eylemlerle değişir.
Oturum olay günlüğü, işlenen eylemleri ve bunların sonuçlarını kaydeder. Bir girdi, 2 numaralı eylemin kurdeleyi aldığını ve zamanı beşten dörde düşürdüğünü belirtebilir. Bu, hata ayıklamayı ve doğru özetleri destekler. Tekrarlanan bir isteğin aynı olayı iki kez uygulayamaması için eylem tanımlayıcılarını saklayın.
Anlatı bağlamı, tonu ve sürekliliği korumak için kullanılan son diyalogları ve kısa bir özeti içerir. Gerçek oyun durumu silinmeden kısaltılabilir.
Anthropic'in etkili bağlam mühendisliği rehberi (https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents), hem konuşma geçmişini özetlemeyi hem de bağlam penceresinin dışında kalıcı notlar tutmayı ele alır. Ayrıca agresif özetlemenin önemli ayrıntıları kaybettirebileceği konusunda uyarır. Buradaki tasarım çıkarımı, kesin mekanik olguları yapılandırılmış depolamada tutmak ve özetleri konuşma sürekliliği için kullanmaktır.
Depolama sınırlarının yanı sıra bilgi sınırlarını da belirleyin. Bir karakter yalnızca bilmesine izin verilen olguları almalıdır. Sonraki bir sürüm gizli bir rota içeriyorsa, keşif koşulu karşılanana kadar bunu o karakterin bağlamının dışında tutun. Oyun motorunun erişebildiği durumun tamamının anlatıcıya sunulması gerekmez.
Bu küçük oyun için ilerlemeyi kaydedilen oturum içinde tutun ve yeni bir tura başlarken temizleyin. Tek bir rota seçiminden kalıcı oyuncu tercihleri çıkarmaktan kaçının. Daha kısa açıklamalar gibi kaydedilen bir tercih eklerseniz, bunu açık ve düzenlenebilir yapın.
Hafızayı somut bir diziyle test edin: kurdeleyi alın, kaydedin, yeniden yükleyin, durum sorun ve bahçe teslimatını seçin. Kurdele alınmış olarak kalmalı, teslimattan önce dört zaman birimi kalmalı ve son zaman sıfır olmalıdır.
Oyun başarısızlığı ve sistem arızası için ayrı yanıtlar tasarlayın
Kaçırılan bir hedef oyunun bir parçasıdır. Başarısız bir üretim isteği ise bir uygulama sorunudur. Bunlara farklı sonuçlar verin.
Oyun başarısızlığında, turun sona ermesine neden olan kuralı belirtin. Üç kez bekledikten sonra yalnızca iki zaman birimi kalır, bu nedenle hiçbir teslimat rotası karşılanamaz. Oyuncuyu kazanılamaz aktif bir oturumda bırakmak yerine, net bir açıklama ve yeniden başlatma seçeneğiyle oyunu hemen sonlandırın.
Uygulama arızaları için ayrıntılı anlatım eklemeden önce kurtarma davranışını tanımlayın:
Okunamayan bir kayıt dosyasını sessizce yeni bir oyunla değiştirmeyin. Bu durum kaybedilen ilerlemeyi gizler ve bir sonraki yanıtı yanıltıcı hale getirir.
Her eylem için sade bir sonuç mesajı oluşturun: ne oldu, ne değişti ve sırada ne var. Botun etkileyici anlatımı bu sonuca eşlik edebilir. Bir zaman aşımı veya çelişkili yanıt durumunda, sade mesaj yine de oyuncunun devam etmesini sağlar.
Sonları doğru bir özetle tamamlayın. Kurdeleden yalnızca alındıysa, kartpostaldan ise yalnızca bahçe rotası seçildiyse bahsedin. Üretilen metin, oyuncunun oturum boyunca seçerek oluşturduğu ayrımları korumalıdır.
Önce kuralları, ardından botun yorumlamasını test edin
Öncelikle oyunu sabit metinlerle test edin. Her eylemi, sonu ve sınır koşulunu ele alın. Ardından botu ekleyin ve bu testleri farklı ifadeler kullanarak tekrarlayın. Bu sayede bozuk bir kural ile yanlış anlaşılan bir istek birbirinden ayırt edilir.
Temsili oyuncuları yönlendirme yapmadan bir teslimatı tamamlamaya davet edin. Seçim yapmadan önce ne beklediklerini ve sonrasında neyin değiştiğine inandıklarını açıklamalarını isteyin. Nielsen Norman Group'un sesli düşünme kullanılabilirlik testi rehberi (https://www.nngroup.com/articles/thinking-aloud-the-1-usability-tool/), katılımcıların konuşmasına izin verirken temsili katılımcılar ve görevler kullanılmasını önerir; ayrıca kolaylaştırıcı yönlendirmelerinin davranışı etkileyebileceği konusunda uyarır.
Eylem günlüğünün yanı sıra gözlemi de kullanın. Denenen eylemleri, açıklama isteklerini, beklenmeyen sonuçları ve anlatım ile işlenen durum arasındaki her türlü uyuşmazlığı kaydedin. Oyuncuların seçenekleri anlayıp anlamadıklarını, aralarından seçim yapmaktan keyif alıp almadıklarından ayrı olarak sorun.
Kısa oyun testi kontrol listesi. Dünyayı genişletmeden önce kurallardaki ve durum yönetimindeki hataları düzeltin. Oyuncular seçimleri anlıyor ancak ilginç bulmuyorsa ödünleşimleri değiştirin. Kararlardan keyif alıyor ancak maliyetleri tahmin edemiyorlarsa sunumu geliştirin. Mevcut seçimleri farklı ifadeler, kaydedilmiş oturumlar ve hata yolları genelinde anlaşılır kalmaya devam ettiğinde prototipi genişletin.
