3 puan yazan frogred8 11 시간 전 | 1 yorum | WhatsApp'ta paylaş

Kullanıcı geri bildirim maddelerini toplayıp ertesi gün dağıtıma çıkan bir konseptle bir web oyunu yapmayı denedim.
Yapay zeka araçlarına alışmak için yaptığım bir projeydi; GitHub da açık, rahatça göz atabilirsiniz.
game: https://spiralwave.frogred8.dev
github: https://github.com/frogred8/SpiralWave

  • Proje özeti ve planlama
    • Motivasyon ve amaç: Gelişmiş yapay zeka araçlarını (Gemini vb.) kullanarak vibe coding deneyi yapmak ve daha önce kullanmadığım teknolojilerle bir web oyunu geliştirmeyi denemek.
    • Geliştirme yönü: Kullanıcı görüşlerinin her gün otomatik olarak yansıtıldığı, 'süre sınırlı kaynak toplama' türünde mini bir web oyunu olarak karar verildi.
  • İlk prototipin oluşturulması
    • Temel konsept: Rekabetin veya kaybın olmadığı, kaynak toplama ve skill tree kurma oyunu.
    • Yapay zeka kullanımı: Kâğıt üzerindeki eskizi prompt'a dönüştürerek TypeScript, Vite ve Phaser tabanlı temel oyun yapısını 30 dakikada kurdu.
  • Karmaşık mantığın uygulanmasındaki sınırlar ve doğrudan çözüm
    • Skill tree geliştirme: Temel önkoşul skill mantığı yapay zekayla uygulanmış olsa da, ara düğüm iptal edildiğinde alt düğümlerin zincirleme iptal olduğu karmaşık mantık yapay zeka tarafından çözülemediği için doğrudan kendim uyguladım.
    • Test kodunun atlanması: Sık tasarım değişiklikleri ve hızlı geliştirme temposu nedeniyle test kodunu bilinçli olarak yazmadan ilerledim.
  • Büyük ölçekli refactoring ve yapay zeka debug sürecinin özellikleri
    • UI ayırma çalışması: Tek dosyanın aşırı büyümesi nedeniyle UI kodunu ayırdım ancak tutarlılık ve yapısal memnuniyet düşüktü; büyük işlerde prompt'u güçlendirip yeniden çalışma yönteminin etkili olduğunu gördüm.
    • Yürütme sırası hatası: Refactoring sonrası ortaya çıkan runtime hatasında (durum güncellemesi ile UI gösterim sırasının tersine dönmesi) yapay zeka sadece gereksiz guard kodları ekledi; sonunda insan geliştirici olarak akışı anlayıp iki satır kodu değiştirerek sorunu basitçe çözdüm.
    • Yapay zekanın hatalarının görece insansı olması tuhaf bir his verdi.
  • Git otomatik commit ve kılavuz uygulanması
    • Prompt kılavuzunun oluşturulması: Tekrarlayan talimatların zahmetini azaltmak için teknik yığını ve çalışma biçimini düzenleyen bir yönerge dosyası (GEMINI.md) eklendi.
    • Otomasyon iş akışı: Kod işi tamamlandıktan sonra ajan çalışma süresi, talimat prompt'u ve iş özeti içeren commit mesajlarının otomatik oluşturulacak şekilde ayarlanmasıyla basit inceleme yükü azaltıldı.
  • Otomatik güncelleme mimarisinin tasarımı ve optimizasyonu
    • Dağıtım yönteminin değiştirilmesi: Başta düşünülen 2 saatte bir gerçek zamanlı otomatik dağıtım, yüksek runtime bug oranı (yaklaşık %25) nedeniyle build kararlılığını düşürdüğü için bırakıldı; bunun yerine ayrı bir günlük test build'i oluşturup dağıtma kararı alındı.
    • Cron iş akışı: node:cron kullanılarak 'geri bildirim toplama → arıtma → kod üretimi → build ve release oluşturma → dağıtım' akışına sahip monolitik yapıda bir otomasyon süreci kuruldu.
    • Sürüm notlarının güncellenmesi: Docker instance'ları arasında sunucu liste dosyası ortak volume üzerinden paylaşıldı ve yükü kontrol etmek için 5 dakikalık süre sonlu cache uygulandı; ayrıca kullanıcıların çok dilli talepleri İngilizceye arıtılıp yeniden çevrilerek sürüm notlarında gösterilecek şekilde uygulandı.
  • Geliştirme sırasında çıkarılan özellikler
    • Leaderboard görüş önerme (Like) özelliği (tanımlayıcı eksikliği ve API çağrı maliyeti yükü).
    • Gelişmiş skill veri yönetim aracı (hayal gücü sınırları ve JSON'u doğrudan düzenlemenin daha verimli olması).
    • Servislere göre ayrılmış Docker dağıtık ortamı kurulumu (işletim ve yönetim karmaşıklığını en aza indirmek için tek imajda birleştirildi).
    • Kullanıcı görüşü yansıtıldığında e-posta bildirim özelliği (üyelik olmadan toplanan e-postaların geçerliliği ve kötüye kullanım riski).
    • Yan reklam ekleme (platform onay sürecinin yorgunluğu ve düşük birim gelir karşısında yetersiz etki).
  • Yapay zeka tabanlı geliştirme üzerine notlar
    • Verimlilik ve test arasındaki trade-off: Geliştirme uygulama hızı yaklaşık 10 kat artsa da doğrulama (QA) için gereken zaman ve yorgunluk da orantılı biçimde büyüyen bir sınıra ulaştı.
    • Kod kalitesinin özellikleri: Fonksiyon düzeyindeki tamamlanma oranı yüksek olsa da okunabilirlik düşüktü, bu da genel akışı kavramayı zorlaştırdı; ayrıca yerel hard coding'in avantajlı olduğu durumlarda bile gereksiz derecede şişkin genelleme kalıpları ekleme eğilimi görüldü.

1 yorum

 
recast7838 7 시간 전

Eğlenceliymiş.