- Klasik oyun Animal Crossing (GameCube, 2001) içindeki tekrarlayan diyalogları gerçek zamanlı bulut tabanlı LLM konuşmalarına dönüştüren bir proje
- Oyun kodunu değiştirmeden, bellek hack'i ve paylaşımlı bellek (mailbox) yöntemi üzerinden harici Python betiği ile yapay zekayı birbirine bağlıyor
- Oyundaki metinler basit dizeler olarak değil, özel kontrol kodu dili olarak işlendiği için buna çözüm olarak ayrı bir kodlayıcı ve kod çözücü geliştirildi
- Diyalog üretimi kaliteyi korumak için Writer (yaratıcı diyalog yazımı) ve Director (kontrol kodları ve ifadelerin eklenmesi) olarak ayrıldı
- Sonuçta köylüler haberleri, söylentileri ve hatta hicvi yansıtan öngörülemez yapay zeka diyalogları kurarak klasik oyuna yeni bir canlılık kazandırıyor
- Proje kodu GitHub üzerinde açık
Problemin tanımı
- Animal Crossing çekici bir oyun olsa da tekrar eden diyaloglarıyla biliniyor; 23 yıl geçmesine rağmen bu diyaloglar değişmediği için bunu kökten dönüştürmenin bir yolu tasarlandı
- Sorun, GameCube'un 485MHz CPU, 24MB RAM ve ağ desteği olmayan kapalı bir ortam olmasıydı
- Orijinal oyunun kodu değiştirilmeden olduğu gibi korunması gerekiyordu
- Amaç, tekrar eden diyalogları modern bir LLM ile değiştirecek bir köprü kurmaktı
İlk adım: diyalog sistemini hack'lemek
- Topluluğun hazırladığı Animal Crossing dekompilasyonu sayesinde C koduna erişim sağlandı
m_message.c dosyasındaki fonksiyon çağrıları hook'lanarak diyalog metnini değiştirme başarıldı
- Ancak harici yapay zeka verilerini gerçek zamanlı olarak alıp verme yöntemi hâlâ çözülmesi gereken bir sorun olarak kaldı
Bellek mailbox yöntemi
- GameCube RAM içindeki belirli bir alan IPC mailbox olarak kullanıldı
- Python betiği bellek adreslerine doğrudan yazıp okuyarak oyun ile yapay zeka arasında iletişim kuruyor
- Konuşmacı adı (
0x8129A3EA) ve diyalog tamponu (0x81298360) adreslerini bulmak için bir bellek tarayıcı yazıldı
Kontrol kodu dili
- Basit bir dize gönderildiğinde oyun donuyordu
- Bunun nedeni, Animal Crossing'in
<End Conversation>, <Pause>, <Color Line> gibi kontrol kodu tabanlı bir dil kullanmasıydı
- Python ile bir kodlayıcı/kod çözücü yazılarak insan dostu metin ile oyunun anladığı bayt dizileri arasında dönüşüm sağlandı
Ağ alternatifi değerlendirmesi
- GameCube için bir Broadband Adapter bulunsa da Animal Crossing'in bir ağ yığını yok
- BBA kullanmak için ağa ilişkin yığın ve asenkron I/O eklemek gerekeceğinden bu yaklaşım verimsiz görüldü
- Bunun yerine emülatör belleği üzerinden hack'leme daha basit ve daha kararlı bulundu
Yapay zeka hattı
- İlk başta tek bir LLM'in hem yaratıcılık hem de kontrol kodlarından sorumlu olması denendi, ancak kalite sorunları büyüyünce Writer-Director ayrımı stratejisi seçildi
- Writer: karakter kişiliklerine dayalı yaratıcı diyalog üretimi yapıyor (hayran vikisi verileri kullanılıyor)
- Director: diyalogları okuyup uygun kontrol kodları, ifadeler, renkler ve sesleri ekliyor
- Bu iki aşamalı LLM hattı, yapay zekanın yaratıcılığı ile teknik gereksinimleri ayırarak her birinin güçlü yanlarını kullanan bir yapı sunuyor
- Roller ayrıldığı için istikrarlı kalite elde edildi
Sonuçlar ve yayılma
Önemi
- Retro konsol hack'leme, yapay zeka entegrasyonu ve oyun koruma alanlarını birleştiren deneysel bir proje
- 2001 tarihli bir oyuna 2025'in yapay zekasını bağlayarak nesilleri aşan bir etkileşim kuruyor
- Oyun artık tekrar eden konuşmalardan ibaret değil; yaşayan bir sanal dünyaya evriliyor
- Tüm geliştirme süreci/demo videosu: Modern AI in a 24-Year-Old Game
Henüz yorum yok.