50 puan yazan GN⁺ 2025-09-11 | Henüz yorum yok. | WhatsApp'ta paylaş
  • 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.

Henüz yorum yok.