blog cover

Yapay Zeka ile Oyun Grafikleri Yapmak

17 Ekim 2022
Stable DiffusionAI

Neden "Blood of Demons" grafikleri remaster edildi?


Öncelikle eski grafikleri beğenmiyordum. O grafikleri kullanma sebebim daha iyilerini yapacak zamanımın olaması ve yeteneğimin de sınırlı olması (digital artist değilim). Zamanım olsa daha iyilerini yapabilirdim ama onların da ne kadar iyi olacakları tartışılır. Teknolojik gelişmeleri yakından takip eden biri olarak direktiflere göre resim yapabilen yapay zeka ilgimi çekti. Ayrıca yapay zeka kullanarak oyun grafiği üretme fikrinin pratikteki karşılığını da merak ediyordum. Bu oyunun da bunun için iyi bir denek olduğuna karar verdim.



Neden Stable Diffusion ?


"Stable Diffusion"u keşfedene kadar diğer yapay zekaların ihtiyaçlarımı tam karşılamayacağını düşünüyordum. Çünkü diğer yapay zekalar sadece "text to image" çalışırken Stable Diffusion "image to image"da çalışabiliyor. Yani sadece yazılı talimatla değil aynı zamanda referans resim girdisini kullanarak ta resim üretebiliyor. Bu da frame bazlı animasyon üretirken görüntülerin devamlılığını koruyabilmek için çok önemli bir kriter.


Karakterleri Remaster Etme İşlemi


İşe eski sürüme ait grafik dosyalarını kopyalayarak başladım. Amacım karakter framelerini içeren bu dosyaların içindeki her "frame"i yeni içizilen frame ile bire bir değiştirmekti. Bu şekilde mevcut "spritesheet"lere sağdık kalmayı hedefledim.

Öncelikle referans "frame"i doğrudan yada üzerinde bazı basit değişiklikler yaparak (Örneğin ana karakteri farklı yorumladım) yapay zekaya sundum. Daha sonrasında çıkan sonuç üzerinde çeşitli değişiklikler yaparak (beğenmediğim kısımları silip, iyi kısımları tutarak) tekrar yapay zekaya gönderdim. Bu süreç istediğim sonucu alana kadar devam etti.

Diğer "frame"leri genellikle elimdeki referans (yapay zeka yardımı ile oluşturduğum) kullanarak oluşturdum. Nadiren yapay zeka ile yeniden image oluşturdum. Bunun sebeplerinden biri önceki "frame" ile tutarlılığın korunmasındaki zorluk. İkninci sebebi ise arka planı temizlenmesi için harcanacak zaman.


Spritesheet Oluşturma İşlemi


Yine burada da önceki kaynak dosyalarının kopyalarını kullandım. Kaynak dosyadaki görselleri bire bir yenileri ile değiştirip eski spritesheet dosyası ile aynı boyutlarda yeni bir dosya oluşturup eski dosyanın üzerinde yazdım.


Store Görselleri ve Uygulama İkonu Oluşturma İşlemi


Bu aşamada da daha öncekiler benzer işlemler uyguladım. Ancak bu aşamada görselleri "Image to image" yerine "Text to image" ile oluşturarak sonrasında yine "Photoshop" ile manipüle ederk "image to image" özelliğini kullanarak oluşturdum.

Yukarıda anlattığım bu aşamaları aşağıdaki videodan daha detaylı bir şekilde izleyebilirsiniz.



Sonuç


Sonuç olarak mevcut oyunun grafiklerini görece daha iyileriyle değiştirmiş oldum. Bundan daha önemlisi "Stable Diffusion"un oyun graikleri oluşturmakla potansiyelini bir miktar keşfetmiş oldum. Benim gibi tek başına oyun geliştirmeye çalışan kimselerin çok işine yarayacak bir oyuncak bence.

Ama şunu da söylemeliyim ki. Frame tabanlı işler için çok verimli değil gibi görünüyor. Bir birinden çok farklı "frame"ler arasındaki tutarlılığı korumak çok kolay değil gibi görünüyor. Demek istediğim kendi etrafında 360 derecen dönen bir karakterin animasyonunu oluşturmaya çalıştığımızı varsayalım. Bu durumda ilk "frame"den sonraki frame; diyelim ki karakter 45 derece dönmüş olsun. İki frame arasında karakterin görüntüsü epey bir değişecektir ve aynı karakterin 45 dercelik açıyla 90 derecelik açıyla nasıl görüneceğini tutarlı bir şekilde çizdirmek pek mümkün olmuyor. Kendi adıma söylüyorum bunu, en azından şimdilik (ilerde farklı yöntemler bulunabilir). Daha "Stable Diffusion" ile denemek istediğim çok şey var. Bu nedenle henüz kesin yargıya varmak için erken. Ancak şunu da eklemeliyim ki "bone based" animasyonlarda çok daha başarılı olacaktır.

Oyunun yeni halinin "game play"ini aşağıdaki videodan izleyebilirsiniz.