iToverDose/Yazılım· 12 MAYIS 2026 · 15:07

GitHub Copilot ile Terminal Roguelike Oyun Yapımı: Kendi Kod Deposunu Zindan Dönüştür

GitHub Copilot CLI ile bir Go eklentisi geliştirmek, sadece kod yazmaktan öteye geçiyor. Keşfedin ki nasıl bir roguelike zindanı, kendi kod deposunuzun dosyalarından otomatik olarak oluşturulabiliyor ve terminalde oynanabiliyor.

GitHub Blog3 dk okuma0 Yorumlar

Kod deposunuza ait dosyaların her biri, GitHub Copilot CLI’nin yardımıyla anında bir zindan haritasına dönüşebiliyor. Terminal tabanlı bu roguelike oyununda, ok tuşlarını kullanarak ilerliyor, hataları temsil eden düşmanlarla mücadele ediyor ve çıkışı bulmaya çalışıyorsunuz. Peki, nasıl oldu da bir geliştirme aracı, oyun geliştirmeye dönüştü?

GitHub’un Copilot CLI’sini kullanarak geliştirdiğim GitHub Dungeons projesinde, kod deposunun her bir dosyası, oyun haritasındaki farklı unsurları temsil ediyor. Örneğin, JavaScript dosyaları koridorlara, Python dosyaları odalara dönüşüyor. Her yeni commit, zindanın yapısını yeniden şekillendiriyor ve bu da oyuna sürekli yenilik katıyor. Projenin arkasında yatan fikir, sadece eğlenceli bir araç yaratmak değil; aynı zamanda geliştiricilerin kod yapısını daha sezgisel bir şekilde anlamalarına yardımcı olmak.

Kod Deposundan Roguelike Zindanına: Süreç Nasıl İşliyor?

GitHub Dungeons’un temelinde, Binary Space Partitioning (BSP) adı verilen bir algoritma yatıyor. Bu teknik, bir alanı ardışık olarak ikiye bölerek odalar ve koridorlar oluşturmayı sağlıyor. Örneğin, bir JavaScript deposunda, her function bir oda olarak, her import ifadesi ise bir koridor olarak haritada yer alıyor. Algoritmanın en büyük avantajı, her çalıştırmada farklı bir harita oluşturarak oyuna sonsuz çeşitlilik kazandırması.

Projenin başlangıcı, basit bir komutla başladı:

/github copilot "Mevcut depoyu terminalde oynanabilir bir roguelike zindanına dönüştür"

Ardından /yolo komutunu kullanarak, tüm kodu anında oyuna çevirdim. Bu komut, aslında Copilot CLI’nin bir kısayolu olup, "bir kez yaşadığına göre, her şeyi riske al" anlamına geliyor. Roguelike oyunlarının temel prensibi olan permadeath (kalıcı ölüm) kavramına da oldukça uygun bir yaklaşım.

Copilot CLI ile Oyun Geliştirmek: Bir Geliştiricinin Deneyimi

GitHub Copilot CLI’nin en güçlü özelliklerinden biri, /delegate komutuyla ortaya çıkıyor. Bu komut, geliştiricinin sadece fikirlerini ifade etmesini ve ardından Copilot’un arka planda çalışarak bir pull request oluşturmasını sağlıyor. Örneğin:

/github copilot delegate "Her seviyeyi giderek daha zor hale getir: 2. seviyede ek düşmanlar, ancak daha fazla sağlık iksiri"

Copilot, bu isteği aldıktan sonra, anında bir pull request oluşturuyor ve ben de değişiklikleri inceleyerek oyuna entegre ediyorum. Bu sayede, hem kod yazma süresinden tasarruf ediyor hem de oyun mekaniklerini daha hızlı test edebiliyorum. Ayrıca, oyuna gizli özellikler eklemek için de bu yöntemi kullanıyorum. Örneğin, oyunculara geçici olarak yenilmezlik kazandıran cheat code’lar bile Copilot tarafından otomatik olarak oluşturuldu.

Projenin bir diğer ilginç yanı da, dungeon scribe adı verilen bir yardımcı ajan. Bu ajan, oyun haritasının nasıl oluşturulduğunu açıklayan dokümantasyonlar ve ASCII sanat çizimleri üretiyor. Bu sayede, hem oyunun arka planındaki algoritmayı anlamak hem de projeye katkıda bulunan diğer geliştiricilere yol göstermek kolaylaşıyor.

Copilot CLI kullanmak, sanki sürekli yanımda duran ve her komutumu yerine getiren bir NPC ordusuna sahip olmak gibi. — Lee Reilly, Proje Geliştiricisi

BSP’nin Roguelike Oyunlardaki Rolü

BSP algoritması, roguelike oyunlarda sıkça kullanılan bir teknik olup, karmaşık haritaların sistematik bir şekilde oluşturulmasını sağlıyor. Temel prensibi, bir alanı ardışık olarak ikiye bölerek odalar oluşturmak ve ardından bu odaları koridorlarla birbirine bağlamak. Bu yöntem, hem yapısal olarak dengeli haritalar oluşturuyor hem de her çalıştırmada farklı bir deneyim sunuyor.

GitHub Dungeons’da BSP’nin nasıl uygulandığını anlamak için, aşağıdaki basit örneğe bakabilirsiniz:

# BSP algoritmasının temel adımları
class BSPNode:
    def __init__(self, x, y, width, height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.left = None
        self.right = None

    def split(self):
        if self.width > self.height and self.width > 20:
            split_at = random.randint(20, self.width - 20)
            self.left = BSPNode(self.x, self.y, split_at, self.height)
            self.right = BSPNode(self.x + split_at, self.y, self.width - split_at, self.height)
        elif self.height > 20:
            split_at = random.randint(20, self.height - 20)
            self.left = BSPNode(self.x, self.y, self.width, split_at)
            self.right = BSPNode(self.x, self.y + split_at, self.width, self.height - split_at)

Bu kod parçası, bir alanı ikiye bölerken aynı zamanda odaların minimum boyutunu da koruyor. Böylece, her seviye hem oynanabilir hem de görsel olarak dengeli oluyor.

Gelecekte Neler Bekliyor?

GitHub Dungeons, sadece bir eğlence projesi olmanın ötesinde, geliştiricilere kod yapısını daha görsel bir şekilde anlamaları için yeni yollar sunuyor. Gelecekte, bu projenin daha da genişleyerek farklı programlama dillerine ait dosyaların farklı oyun unsurlarına dönüştürülmesi ve hatta çok oyunculu özelliklerin eklenmesi planlanıyor. Ayrıca, oyun içindeki performans istatistiklerinin doğrudan kod kalitesiyle ilişkilendirilmesi gibi yenilikler de düşünülüyor.

Bu proje, aslında gösteriyor ki, geliştirme araçları sadece kod yazmak için değil, aynı zamanda eğlenmek ve yenilikçi fikirler üretmek için de kullanılabilir. GitHub Copilot CLI’nin sunduğu bu esneklik sayesinde, geliştiriciler artık sadece kod yazmıyor; aynı zamanda oyun tasarımcıları, hikaye anlatıcıları ve hatta sanatçılar olabiliyorlar.

Yapay zeka özeti

GitHub Copilot CLI kullanarak kendi kod deposunu terminalde oynanabilir bir roguelike zindanına dönüştürmek mümkün. BSP algoritması ve Go diliyle nasıl yapıldığını keşfedin.

Yorumlar

00
YORUM BIRAK
ID #DD33GY

0 / 1200 KARAKTER

İnsan doğrulaması

6 + 3 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.