45 puan yazan GN⁺ 2025-07-05 | 3 yorum | WhatsApp'ta paylaş
  • 20 yıllık bir yazılım geliştiricisi olmama rağmen, oyun geliştirme konusunda ilk kez yapay zeka kodlama ajanları kullanarak Phaser.js tabanlı kule savunma oyunu "Tower of Time"'ı tamamladım
  • Amaç, yapay zekanın gerçek oyun geliştirmedeki potansiyelini denemekti; kodun yanı sıra tüm yapay zeka prompt'larını ve çalışma sürecini GitHub'da belgeledim
  • Kodun %95'ten fazlası yapay zeka tarafından yazıldı; Augment Code, Cursor, Claude Sonnet 4 gibi çeşitli yapay zeka araçlarını birlikte kullandım
  • Oyun; zamanı geri sarma (rewind) özelliğini kullanan stratejik yapı, çeşitli kuleler, enerji yönetim sistemi ve dalga dalga gelen düşmanlarla özgün bir oynanış sunuyor
  • Canlı yayın, sanat ve ses varlıklarının kullanımı, geliştirme sürecinde çıkarılan dersler ve pratik ipuçları sayesinde hem oyun hem yapay zeka konusunda yeni başlayanlar için faydalı bir öğrenme kaynağı

Tower of Time genel bakış

  • Bu proje, yapay zeka kodlama araçlarıyla gerçek anlamda oyun geliştirmenin mümkün olup olmadığını test etmek amacıyla yürütüldü
  • Phaser.js adlı JavaScript oyun motorunu ilk kez öğrenerek Beginner's Jam Summer 2025'e katıldım ve 25-30 saat içinde 'Tower of Time'ı tamamladım
  • Geliştirme sürecinin tamamını, tüm prompt'ları, kodu, dokümantasyonu ve oynama bağlantısını GitHub'a kaydettim

Oyun tanıtımı

  • Tower of Time, zaman yolculuğu temalı bir kule savunma oyunu. Oyuncu dalgalar halinde gelen düşmanları durdururken, kritik anlarda zamanı geri sararak stratejisini yeniden kurabiliyor
  • Birden fazla kule türü (temel, keskin nişancı, yavaşlatma, sıçrama hasarı vb.) ile enerji sistemi (kule inşası ve zamanı geri sarmada kullanılır) bir araya geliyor
  • Başlıca özellikler
    • Zamanı geri sarma: Dezavantajlı bir anda önceki duruma dönüp savunma stratejisini yeniden düzenleme imkanı
    • Çeşitli kuleler: Farklı özelliklere sahip kulelerle çeşitli savunma stratejileri kurulabilir
    • Enerji yönetimi: Enerjinin nerede kullanılacağını dikkatle planlamayı gerektiren kaynak yönetimi unsuru
  • Kontroller
    • Klavye/gamepad desteği (hareket: ok tuşları/stick, aksiyon: Space/gamepad düğmesi, geri sarma: Backspace/tetik)

Yapay zeka kodlama deneyi ve geliştirme süreci

  • Tüm kodun yaklaşık %95'i yapay zekayla (Claude Sonnet 4, OpenAI, Augment Code, Cursor vb.) yazıldı
  • Tüm önemli prompt'lar, denemeler-yanılmalar ve nihai çıktılar depoda PROMPTS.md olarak kaydedildi
  • Yapay zeka ile otomatik kod üretiminin avantajları: hızlı prototipleme, tekrarlayan kod işlerinin otomasyonu, dokümantasyon kolaylığı
  • Sınırlar ve dikkat edilmesi gerekenler: yapay zekanın fazla kod üretme eğilimi, belirli uygulama sorunlarında prompt'ları yeniden tasarlama veya geri alma ihtiyacı, hata ayıklama loglarının kullanılmasının önerilmesi

Geliştirmeden çıkarılan dersler

  • Sadece yapay zeka kodlamasıyla bile eğlenceli bir oyunu tamamlamak gayet mümkün
  • Prompt kalitesi, net bağlam sağlama ve hata ayıklama stratejileri çok önemli
  • Kod miktarını gereksiz yere artırmamak için sürekli kontrol gerekiyor

Teknoloji yığını

  • Motor: Phaser 3 (v3.90.0) + Phaser Editor v4
  • Dil: TypeScript
  • Build aracı: Vite
  • Sanat varlıkları: itch.io, bir kısmı elle düzenlendi
  • Ses: freesound.org

Tarayıcıda oynamak için: Tower of Time

3 yorum

 
softer 2025-07-07

İyi bir referans olacağa benziyor.

 
ifmkl 2025-07-06

Ben de yapay zekayı sıkı şekilde kullanarak bir web oyunu yapıyorum.

 
GN⁺ 2025-07-05
Hacker News yorumu
  • Geliştirmede kullanılan promptları tek tek okumak ayrı bir keyif veriyor
    “vibe coding başarı örnekleri” hakkındaki yazılar, sanki yeterince çok ajan, karmaşık kod orkestrasyonu ve LLM tarafından üretilmiş kurallar varsa “zamanda geri sarılan bir tower defense oyunu yap, hem de hatasız ve bugsız” gibi tek satırlık bir promptla oyunun şipşak ortaya çıkacağı yanılsamasını veriyor
    Ama gerçek projede kullanılan promptlar, AI kodlamada en iyi çalışan yaklaşımla birebir örtüşüyor
    Net ve titizlikle düşünülmüş bir fikri yüzlerce küçük probleme bölmek, gerçekten önemli noktalarda da somut mimari yönlendirme vermek etkili oluyor

    • Teknik lider ve ürün sahibi rollerini aynı anda yürüten biri olarak, bu yaklaşımın insanlarla çalışırken de doğru yöntem olduğunu düşünüyorum
      İşimin %70’i, yöneticinin “zaman yolculuklu kule oyunu, bugsız” gibi soyut talebini, ekibin yüksek seviyeli soyutlamayı koruyarak birbirinin işine çakışmadan çalışabileceği, bağlamına güçlü bir mimari vizyon yerleştirilmiş bir dizi prompta dönüştürmekten ibaret

    • Basit bir Just One masa oyunu için HTML oyun yapmayı denedim ama input kutusunun yer değiştirme bugını dört farklı LLM’e tekrar tekrar prompt vererek bile çözdüremedim
      Herkes oyunu tek seferde yaptırdığını anlatırken benim bir textbox hareketini bile düzeltememem garip geliyor

    • “Güvenlik açığı yok, bug yok” promptuna ek olarak “halüsinasyon yok” da şart
      AI başlangıç seviyesinin temel koşulu bu

    • AI kodlamada bende en iyi çalışan yöntem, temel işlevi ya da oynanış iskeletini AI ile tek atışta oluşturup onun üstüne defalarca iteratif biçimde inşa etmek
      Tek atış sonucu hemen etkileyici değilse, iyi bir temel çıkana kadar farklı promptlarla hızlıca düzeltip yeniden deniyorum

    • Buna tamamen katılıyorum
      Nitekim yakın tarihli yazım da bu fikre dayanıyor
      Kodlamadan önce AI’a önce spesifikasyonu yazdırırsanız, insanların sıfırdan spec yazma yükü azalıyor ve gerçekten yazma olasılıkları ciddi biçimde artıyor

  • 20 yılı aşkın süredir yazılım sektöründeyim ve çevremdeki çoğu kişinin AI kodlamaya epey şüpheyle baktığını görüyorum
    Kısa süre önce yaklaşık 34.000 satırlık büyük bir uygulamayı ağırlıklı olarak AI ile geliştirdim; burada verim, verdiğim talimatların kalitesi, etkileşim yapısı ve çıktıya gösterdiğim özenle (rota düzeltmeleri dahil) üstel biçimde arttı
    Sonunda “diğer tüm araçlar gibi bir araç işte” diye düşünmeye başlıyorsunuz
    Ama bu araç, şimdiye kadar gördüğüm tüm “10x araçlarla” kıyaslandığında gerçekten 10 kat daha fazla kaldıraç sağlıyor
    Şüphecilerin çoğunun kaçırdığı nokta, bu araçları tamamen dışsal bir şey gibi ele almamanız gerektiği
    Hedefi belirsiz anlatıp sonra işi ona devretmeye kalkarsanız kötü sonuç alırsınız
    Bir gün AI düşüncelerimizi doğrudan okuyabilir belki ama bugün o gün değil
    Şu an için asıl gücü düşünceleri netleştirmekte, yeni şeyler öğrenmekte ve can sıkıcı işleri hızlandırmakta ortaya çıkıyor
    En yüksek kaldıracı elde etmek için bu aracı düşünme sürecinizin içine iyi yerleştirmeniz gerekiyor

    • Programlama geçmişim uzun ama lise yıllarında Hunt the Wumpus dışında oyun yapmışlığım yoktu; yakın zamanda AI yardımıyla yeni oyunlar yapmaya başladım
      AI burada üç büyük rol oynuyor
      (1) Öğrenme aracı - terimleri bilmesem bile neyi sormak istediğimi iyi anlıyor, başlangıç noktası veriyor ve “bilmediğimi bilmediğim şeyleri” bile öğretiyor; en önemli rol bu
      (2) Tekrarlı ya da sıkıcı işleri yapma - kod yorumları, yapılandırma dosyaları gibi benim de yapabileceğim ama işi yavaşlatan görevleri gayet iyi hallediyor
      (3) Arama - (1)’dekine benzer şekilde, aslında ne istediğimi anlayıp filtreleme ve öneri işini üstleniyor
      AI’a “düşünme” görevini de verebilirsiniz ama buna mecbur değilsiniz
      İnsandan daha zeki değil; sadece daha hızlı ve daha çok şey bilen bir FPU gibi

    • HN ölçeğinde bakınca oldukça şüpheci sayılırım ama pratikte şirkette AI kullanımını sürekli teşvik ediyorum ve bu yorumu yazarken bile Claude’a bir şey yaptırıyorum
      Şüpheciliğimin nedeni, mevcut AI çözümlerinin “pazarlanma biçimi” ile “gerçekte yaptıkları iş” arasındaki uçurum
      Tüm AI çözümleri, özellikle ajanlar, yetkin bir insan yönlendirmesi olmadan sadece işe yaramaz sonuçlar üretir
      Gerçekte neredeyse hiçbir “otonom” tarafları yok
      “vibe coding” terimini ortaya atan kişi bile sektörün sırayı tersinden izlediğini söylüyor
      Bu araçların harika olduğunu ama mutlaka güçlü biçimde kontrol edilmeleri gerektiğini söylememek, fiilen yalan söylemek gibi

    • Son birkaç ayda ben de benzer bir sonuca vardım
      Eskiden AI hakkında eleştirel yorumlar yazardım ama en yeni araçlar gerçekten çok gelişti
      Eskiden haftalar alan işleri artık birkaç saatte çıkarabiliyorum
      Yine de promptları iyi düşünmek, ayrıntılı parçalara bölmek ve IDE ile iyi entegre etmek gerekiyor
      En devrimsel tarafı, tamamen yeni bir kütüphane ya da framework ile çalışırken ortaya çıkıyor
      Eskiden kullanım şeklini aratıp örnek kodu didik didik ederdim; şimdi AI çok daha sezgisel ve çeşitli yollar gösteriyor, bu da beni sık sık şaşırtıyor
      Hâlâ şüpheci olanların yeniden denemesi için uygun bir dönem

    • 10x kaldıraç örneği olarak dilleri düşünebilirsiniz
      Eskiden Lisp gibi dillerin daha kısa sürede daha çok iş yaptırdığı söylenirdi; şimdi ise gerçekten yazmanız gereken kod azalırken çıktı hızlı ve yüksek performanslı dillerde üretilebiliyor
      Ama burada bir “tuzak” var: üretilen kodun kolay doğrulanamayan kısımlarını yeterince incelemek gerekiyor
      Yüksek ifade gücüne sahip diller nasıl plansız insanların karmakarışık codebase’ler üretmesine yol açtıysa, AI araçlarında da benzer bir şey olacak
      Yine de benim asıl zaman kazandığım yer, tamamen yeni kod yazmaktan çok eski kodla yeni kodu bütünleştirmek ya da iyileştirmek
      Debugging tarafında büyük bir sıçrama yaşanıyor
      Artık eskisi gibi sadece print basmak yerine, kodu kopyalayıp yapıştırarak “çıktı neden şöyle değil de böyle oluyor?” diye AI’a sorup hızla nedenleri ve alternatifleri alabiliyorsunuz
      Özellikle SQL, IaC, build script’leri gibi debugger bağlaması zor işlerde bu çok büyük avantaj

    • Bir başka nokta da öğrenme eğrisi ve beceri tavanının sanıldığından çok daha yüksek olması
      Claude Opus’u karmaşık bir otomasyon çerçevesi içinde kullanmakla, tarayıcıda GPT-4o’ya sadece kopyala-yapıştır yapmak arasında sonuç açısından büyük fark var

  • Geliştirme sürecini şeffaf biçimde paylaşması ve promptları da açması çok hoşuma gitti; GitHub’da star verdim

  • Hem kod hem de sonuç çok estetik görünüyor
    Belli ki sadece AI kullanılmamış, ciddi ölçüde doğrudan emek de var
    Ben uzun süre kod yazmaya ara vermiştim; arkadaşlarımın teşvikiyle AI kullanarak basit şeyler yapmayı denedim
    Ortaya çıkardığım şeyler Bubble Wrap patlatma ve susturucu (tuşa basınca ses yok) gibi şeyler oldu
    Bubble Popper
    Silencer

    • Android’de Chrome ile açtım ama baloncuklar düzgün patlamıyor ve sayaç da 0’dan yukarı çıkmıyor
      PR kabul etmeyi düşünüyor musun merak ettim
  • Bence indie oyunlar, kodlama AI’ı için mükemmel bir kullanım senaryosu
    Düşük risk ve eğlence odaklı yapı buna çok uygun
    İlk commit’te çok miktarda kod var ama PROMPTS.md henüz yok
    Örneğin EnergySystem.ts ilk commit’te zaten mevcut, ama daha sonra PROMPTS.md içinde sanki AI bunu en baştan üretmiş gibi görünüyor
    Repo geçmişinde bu kısmı biraz daha ayrıntılı anlatabilir misin diye merak ettim
    İlk commit bağlantısı

    • Bu proje bir game jam işi olduğu için 1 haftalık son tarihe yetişmeye çalışırken ilk 2-3 gün source control kullanmadım; o yüzden o dönemde yaptığım işleri tek büyük commit olarak bırakmış oldum
      Promptları da anında not etmedim; oyun bittikten sonra kullandığım sohbet araçlarının geçmişine dönüp PROMPTS.md dosyasına kopyaladım
      Projenin nasıl oluştuğunu görmek istiyorsan prompt dosyasını baştan sona okumak en iyi yöntem
      Örneğin EnergySystem.ts dosyası, düşman pathfinding’i, spawn sistemi, kule ateşi gibi şeyler tamamlandıktan sonra “enerji alt sistemini uygulamak istiyorum” şeklindeki bir promptla AI tarafından sıfırdan oluşturuldu
  • Augment Code diye bir aracı ilk kez duyuyorum
    Ne yaptığını, neden seçtiğini, rakip araçlardan nasıl ayrıldığını ya da pratikte nasıl bir deneyim sunduğunu merak ediyorum; tavsiye eder misin?

    • Bu soruya ek olarak, OP’nin Cursor içinde Augment Code kullanıp kullanmadığını da merak ediyorum; bu kombinasyon nasıl çalışıyor ve ne gibi avantajlar sağlıyor?
      İkisine de ücretli abonelik mi var?
  • Promptları kaydetmiş olman etkileyici ve motive edici
    Benim deneyimimde “vibe coding” bazen çok hızlı ilerliyor, bazen de inanılmaz yavaşlayabiliyor
    Kısa ve net talimat verme, hızlı code review yapma ve mimariyi kavrama beceriniz varsa gerçekten geliştirme hızını artırabiliyor

  • Ben de bir zamanlar bir tower defense oyunu yapmıştım ve son dönemde AI ile yeni wave üretimi ya da denge ayarı gibi şeyleri denemeyi düşünüyordum
    AI’ın oyunu “hissedebilmesi” için, ekranda görülen oyun durumunu tokenlara dönüştürüp encode eden bir protokol gerekip gerekmediğini merak ediyorum
    Arazi, oyun varlıklarının konumu ve oyuncunun görebileceği diğer özellikler gibi
    Her şeyi bir autoencoder’a vermek çok uygun görünmüyor ama oyun öğelerini liste halinde tokenize etmek umut verici olabilir
    Oyun motoru ekran görüntüsünü sağlayıp tokenları da AI’a doğrudan açarsa, AI gerçek oyun akışını çok daha derin anlayabilir
    Bu tokenları anlamlı biçimde kullanmak için ne kadar eğitim verisi gerekeceğinden emin değilim ama mevcut embedding uzaylarında bile bunun birkaç token içine sığması mümkün olabilir
    Oyun logları ve kullanıcı eğlence değerlendirmelerinden oluşan bir eğitim seti olursa çok ilginç veriler çıkabilir
    Oyuncu tercih kümelerini bulup farklı türlere uygun oyunlar üretmek de mümkün hâle gelebilir

  • Bu workflow’u paylaştığın için teşekkürler
    Ben de LLM kullanım workflow’larına izlenebilirlik ve şeffaflık katmayı düşünüyorum
    Promptları paylaşmak ve geçmiş olarak saklamak, geliştiricinin başta çözmeye çalıştığı asıl problemi, bunun zaman içinde nasıl değiştiğini ve hangi yeni sorunların ortaya çıktığını tek bakışta görebilme avantajı sağlıyor
    Çok güzel proje
    Sorumlu LLM kullanımıyla ilgili yazı

  • 20 yılı aşkın süredir teknoloji alanındayım; son dönemde Gemini-cli ile kurumsal uygulama entegrasyon test aracını oyunlaştırırken çeşitli deneyler yapıyorum
    MCP sunucusuyla birlikte kullanınca, problemi adım adım parçalayıp promptlara açıklık kattığımda en iyi sonuçları aldım
    AI hata yapabiliyor ya da döngüye girebiliyor (özellikle uygulama yönlendirmesi gibi konularda); böyle anlarda aktif bir “pair programming” yaklaşımıyla ilerlemek faydalı oluyor
    Dikkatimi çeken başka bir nokta da kod tekrarını yasaklama gibi ilkeleri eskisine göre çok daha kolay koruyabilmek
    Aksi takdirde AI bir yeri değiştirip ilişkili dosyaları atlayabiliyor
    Bu sadece programlama mantığı için değil, UX ve uygulama davranışı için de geçerli
    AI ile birlikte, eskiden haftalar süren işleri artık saatler içinde keyifle bitirebiliyoruz
    Gemini’ye bir kişilik kazandırabilmek ve GEMINI.md dosyasını farklı cihazlar arasında taşıyıp aynı ayarla kullanabilmek çok büyük avantaj