3 puan yazan GN⁺ 2023-11-01 | 1 yorum | WhatsApp'ta paylaş
  • Javi Lopez, GPT-4 ile kodu oluşturup Midjourney ve DALL·E 3 ile grafikleri üreterek Angry Birds tarzı 2D fizik oyunu Angry Pumpkins’i geliştirdi
  • Ortaya çıkan oyun web’de oynanabiliyor ancak mobilde çalışmıyor; oyun ekranının altındaki açıklamaları izleyerek kendi seviyelerinizi de oluşturabilirsiniz
  • Grafiklerin çoğu yapay zeka ile görüntü üretimiyle hazırlandı; bazı sprite’lar ise Photoshop/Photopea ile arka plan temizleme ve kırpma işlemlerinden geçirilerek oyuna uygun hale getirildi
  • Kod, matter.js ve p5.js temelinde başladı; fırlatma yöntemi, çarpışmalar, parçacıklar, canavar biçimleri ve dolaylı darbe tespiti GPT-4 ile tekrar tekrar düzeltilip genişletildi
  • Tüm kod yaklaşık 600 satır; doğrudan kod yazılmamış olsa da tek bir prompt’la tamamlanmış bir oyun elde etmekten çok, hataları açıklayıp düzeltmeye dayalı yinelemeli bir süreç gerekti

Angry Pumpkins sonucu

  • Angry Pumpkins, Angry Birds’e benzer yapıda bir 2D fizik oyunu; GPT-4, Midjourney ve DALL·E 3 kullanılarak geliştirildi
  • Oynanabilir oyuna Angry Pumpkins üzerinden erişilebilir
    • Şu anda mobilde çalışmıyor
    • Oyun ekranının altındaki açıklamaları okursanız kendi seviyenizi nasıl oluşturup oynayabileceğinizi görebilirsiniz
  • Javi Lopez, yalnızca doğal dille bir şeyler üretmeye yönelik yeni bir çalışma biçiminin mümkün hale geldiğini ve bunu “tarihî bir an” olarak gördüğünü söylüyor

Grafik ve kod üretim akışı

  • Görüntü üretimi ve sprite çalışması

    • DALL·E 3, Halloween atmosferli ana ekranı, “Angry Pumpkins” logosunu ve Play düğmesi bulunan başlık ekranını üretmek için kullanıldı
    • Midjourney, mezarlık arka planı, 2D zemin, balkabağı karakteri, yeşil canavar, ahşap kutu, kemik, taş ve tahta kalas gibi oyun nesnelerini oluşturmak için kullanıldı
    • Nesneler “sprite stylesheets” biçiminde üretildikten sonra Photoshop/Photopea ile kırpıldı ve arka planları temizlendi
    • Küçük ayrıntılar Midjourney’in inpainting özelliğiyle tamamlandı
  • GPT-4 ile yapılan oyun mantığı

    • Tüm kaynak kod sketch.js üzerinde yayımlanmış durumda
    • Oyun kodu yaklaşık 600 satır ve Javi Lopez, doğrudan kendisinin yazdığı bir kod olmadığını belirtiyor
    • Başlangıç prompt’u, matter.js ve p5.js kullanarak fareyle açı ve güç ayarlanıp top fırlatılan, 2D fizikle üst üste dizilmiş kutuların vurulduğu basit bir oyun yapmaya yönelikti
    • Daha sonra Angry Birds tarzı fareyle fırlatma yöntemi, Uncaught ReferenceError: Constraint is not defined hatasının düzeltilmesi, meşale parçacık efekti, dairesel canavar işleme ve dolaylı darbe tespiti gibi konular tekrar tekrar istendi

Tek prompt’tan daha önemli olan yinelemeli düzeltme

  • Esas nokta, tamamlanmış oyunu tek seferde istemek değil; basit bir davranış temelinden başlayıp sürekli genişletme ve düzeltme akışı izlemek
  • Her sorun çıktığında hata net biçimde açıklanarak GPT-4’ün düzeltmesi sağlandı
  • Mevcut GPT-4, tek bir prompt’la bütün bir oyunu üretecek aşamada değil; ancak ileride yalnızca isteklerle AAA seviyesinde video oyunları yapılabileceğine dair bir beklenti de var

1 yorum

 
GN⁺ 2023-11-01
Hacker News görüşleri
  • Angry Birds'te PM olarak çalıştım; bu gerçekten harika bir demo
    Orijinali Box2D ve Lua scripting kullanıyordu, ayrıca düşmanları ve seviyeleri de elbette elle yapmak gerekiyordu
    Mevcut teknoloji durumuyla hit bir oyun yapılmasını beklemiyorum; kişinin kendi becerisinden çok teknolojinin sınırlarına takılması muhtemel
    Yine de hızlı fikir doğrulama, prototipler ve game jam'ler için oyunun kurallarını değiştiren bir araç ve çocukların fikirleriyle oynayabileceği bir Scratch alternatifi olarak da iyi görünüyor

  • Kısa süre önce çok da bilmediğim iki framework ile temel bir REST API ve CRUD frontend oluşturmak zorunda kaldım; benzer bir deneme yapıp tüm kodu GPT-4'e ürettirdim
    Büyük olasılıkla sadece dokümantasyona bakıp kendim yazmaktan daha yavaştı; o framework'lere aşina biri muhtemelen çok daha hızlı olurdu
    Karmaşık kısımlar için çok spesifik ve uzun prompt'lar gerekiyordu, tüm uygulamayı yapmak yaklaşık 5 saat sürdü ve bunun hatırı sayılır bir kısmı yavaş ChatGPT çıktısını beklemekle geçti
    Aşina olduğum framework'ler olsaydı muhtemelen 2 saat içinde biterdi
    Bir şeyi doğru şekilde yapıp yapmadığımı kontrol etmekte kesinlikle faydalıydı; sanki sorular sorabileceğim bir uzman hazır bekliyormuş gibiydi
    Formatı düzgün boilerplate kod üretmekte de iyiydi, ama günlük geliştirmede şu ankinden daha fazla kullanacağımı sanmıyorum
    Çoğu durumda framework'ü iyice öğrenip kendin yazmak daha hızlı

    • Doğru yöntem olup olmadığını kontrol etme amacıyla şaşırtıcı derecede iyiydi
      Sık sık "{foo} platform projesi için iyi bir dizin yapısı nedir?" ya da "{language y} içinde {x} işlemi idiomatik olarak nasıl yapılır?" gibi sorular soruyorum
      Pek çok dilde çok sayıda proje görmüş olmasının avantajı var; bu yüzden bazı sorular için tek başına oldukça iyi cevaplar verebiliyor
    • Benim deneyimim de benzer
      Hâlâ programlamayı anlamanız gerekiyor; sadece kodu doğal İngilizceyle yazdırmış oluyorsunuz
    • Gözden kaçan nokta şu: çoğu insanın günde en yüksek verimle yoğun kod yazabildiği süre sadece birkaç saat
      GPT-4'e 3 saat boyunca gözetim altında kod yazdırsanız bile, o gün sizin hâlâ “harcanmamış” en yüksek kodlama verimliliğine sahip 3 saatiniz kalmış olabilir
    • GPT-4'ü ChatGPT Plus ile mi yoksa API üzerinden mi kullandığını merak ediyorum
      API ise genelde hangi araçla eriştiğini de merak ediyorum
    • Kendin yazmanın ne kadar süreceğini tahmin etmek yerine gerçekten süre tutmak daha iyi
      Sonuç şaşırtıcı olabilir
  • “ChatGPT ile 30 dakikada iOS uygulaması yaptım!” türü yazı selinden daha ilgi çekici olan bu
    Öyle yazılar bazen sadece basit bir Hello World yapmış olabiliyor, bu yüzden çok da anlamlı olmuyor; ama bu en azından ortaya tamamlanmış bir şey koyuyor ve gerçekten oldukça etkileyici
    Yine de bilinmesi gereken ayrıntılar harcanan süre, prompt sayısı, gereken yön düzeltme sayısı ve yapan kişinin ilgili teknolojilere ne kadar hakim olduğudur
    Kişisel olarak ChatGPT’nin çeşitli durumlarda çok yardımcı olduğunu düşündüm, ama kod üretimi bunlardan biri değildi

    • https://twitter.com/javilopen/status/1719363669685916095 bununla ilgili
      İçerik olarak “oyun sadece 600 satır ve ben tek satır bile yazmadım ama [oyun kodlama] en zor kısımdı” deniyor
      Hello World değil ama bunu bir alışveriş listesinden çok daha zor görmek de pek mümkün değil
      Yine de 600 satır ve birkaç kütüphane ile Angry Birds yapılabiliyor olması en etkileyici nokta
    • ChatGPT ile kod üreterek Flask, Python, HTML+JS+CSS ve SQLite tabanlı tam bir site yapmayı denedim ve şaşırtıcıydı
      Çalışan kod yaklaşık 5 bin satır ve hepsi çalışıyor. Trafik yüksek değil ama yine de üretim ortamında
      Sınırlarını bilmek, daha iyi prompt yazmak, halüsinasyon ihtimalini fark etmek ve riskleri sormak çok büyük etkenler
      Özellikle çok iyi bilmediğim teknolojilerde en faydalı oldu. Android geliştiricisiyim ve yaklaşık 15 yıldır doğrudan yapmadığım web sitesi geliştirme işinde kullanıyorum
      En havalı kısmı sistem yönetimi ve sunucu operasyonlarında yardımcı olmasıydı; gunicorn hatalarını ayıklamada da iyi
      Proje büyüyüp bağlamı kaybettiğinde üretilen kodu düzenlemek gerekiyor ama daha büyük projelerde en büyük engel bağlam uzunluğu sınırı ve yakında hafifleyecek gibi görünüyor
      Yakın zamanda yaptığım site, kodun yaklaşık %95’inin ChatGPT tarafından yazıldığı https://cosmictrip.space/ ve GPT-4 ile prompt üretip ardından DALL-E ile uzay görselleri oluşturdum
      Basit bir site ama şu anda yine GPT+DALL-E tabanlı, açık uçlu görsel+metin yapay zeka macera oyunu da yapıyorum
      DALL-E 3 API çıktığında 6 Kasım’dan önce yayınlamayı umuyorum ve bu macera oyununda da kodun %95’inden fazlasını ChatGPT yazıyor
      Kod üretimi o kadar iyi ki, bizzat yaptığım ajanda GPT-4 API kullanıyorum
      Fonksiyon çağırma ile yapılandırılmış alt görevler oluşturuyorum, ajanın bu kodu yazmasını sağlıyorum; ayrıca dosyaları bağlam olarak ekleme ya da kodla sohbet etme özellikleri de ekledim
      Henüz yayımlanacak seviyede değil ama GPT-4’ün kod üretme yeteneği gerçekten müthiş; sadece prompt deneyimi gerekiyor
      İlk yazdığınız prompt’un iyi olma ihtimali düşük, bu yüzden yaptığım ajanın o kısmı iyi çözmesini umuyorum
      Fikir, Jira/kanban tarzı bir pano üzerinde AI coder’ları görevlere atamak; insanın onaylayıp düzenlemesi; AI’nın işi kontrol etmesi ve biletlerin sütunlar arasında otomatik hareket etmesi
    • Çok sayıda açık kaynak Angry Birds klonu var, bu yüzden göründüğü kadar etkileyici değil
      Mevcut onlarca şablonu olmayan yeni bir oyun programlamak daha iyi bir turnusol testi olurdu
    • Bir diğer ilginç soru da “videoda gösterilmeyen diğer bütün durumlarda nasıl çalışıyor?” sorusu
    • Açıkçası buna inanmak biraz zor
      GPT-4 bu tür işlerde iyi olsa da, benim deneyimime göre tekrarlı iyileştirme konusunda iyi değil
      Konuşma uzadıkça önceki bağlamı kaybediyor ve üretilen kod önceki davranıştan sapıyor
      Örneğin “şu hatayı düzelt” demek kolayca başka bir özelliği bozan bir çözüme dönüşebiliyor
      Başlıktaki kodun (1) nihai sonuçta (2) bulunduğu görülüyor; kodun en üstünde yer alması, ChatGPT’ye 600 satırdan fazla bloklar halinde tekrar tekrar üretim yaptırılmış olabileceği anlamına gelebilir
      Bu oldukça şüpheli
      500. satırda tanımlanıp 20. satırda yeni bir Slingshot oluşturulması, özellikle öyle yapması söylenmedikçe çok düşük bir ihtimal
      loadImage('stone2.png'); için de doğru dosya adını ve sprite boyutunu tesadüfen doğru seçti mi? Bunların hepsi prompt’ta verilmiş ve kod buna göre mi yazıldı? Gerçekte kullanılan prompt’lar gösterilmeli
      Çok daha makul senaryo, sınıf nesnelerinin nispeten bağımsız biçimde üretilip sonra insan tarafından büyük bir dosyada birleştirilmesi, ardından tamamının girdiye kopyalanıp “şöyle bir fonksiyon yaz” gibi kod prompt’ları oluşturulması
      İddiaya göre sadece prompt kullanılmış olması imkansız değil ama beğeni ve itibar için “kodlamanın tamamını yaptırdım” kısmının ciddi biçimde abartıldığı hissi veriyor
      Bir miktar kodun elle yazılıp veya birleştirilip girdiye eklenmesinden sonra “bunu da yap” şeklinde prompt verilmiş olması daha olası görünüyor
      Bu yüzden çıktı “%100 üretildi” olabilir ama insanların varsaydığı şekilde olmayabilir
      Bu yaklaşım GPT-4’e mevcut kodu yeniden yazdırır ama kodun tamamına niyeti açıklayan yorumlar özellikle istenmez veya eklenmezse zamanla önceki işlevden uzaklaşır
      Test paketi yoksa bu tür ince sapmalar fark edilmez ve işlevler bozulur
      Yazarın bunu yaptığına dair de bir ifade yok
      Üstelik bu kişinin AI eğitim materyalleri satma gibi bir çıkar ilişkisi (4) var; bu alanda uzman gibi görünmesi kendi yararına ve X’te soru aldığında da ek ayrıntılar, adım adım Git geçmişi ya da gerçekten kullandığı prompt’ları sunmadı
      Ayrıntı eksikliği ve inanması güç sonuçlar düşünüldüğünde, bu örnekte şüpheci olmak makul
      CodeLlama 34B ya da GPT-3.5 gibi modellerle bu tür bir sonuç üretilebilir ama anlatıldığı şekilde olmaz
      GPT-4 ile bile mümkün mü emin değilim. Prompt’lar gerçek olamayacak kadar özensiz görünüyor (5)
      Yine de daha fazla ayrıntıyla buna karşı çıkılmasını isterim; ayrıca GPT-4’ün iyi bir araç olduğu da doğru
      [1] - https://nitter.net/pic/orig/media%2FF9xoI8mXgAAn7v9.jpg
      [2] - https://bestaiprompts.art/angry-pumpkins/sketch.js

[3] - https://nitter.net/javilopen/status/1719363669685916095#m
[4] - https://javilopen.substack.com/
[5] - “Şimdi canavarları dairesel yap ve çok dikkatli ol: ölçeklendirme ve çarpışma alanı konusunda dikdörtgen olanlar için zaten mevcut olan tekniğin aynısını uygula ve bunu da önceki gibi berbat etme.”

  • Oğlumun yükleme spinner'ına sinirliymiş gibi durmadan dokunduğunu görünce, sakin bir pazar öğleden sonrasında ben ve GPT bu oyunu kodladık
    https://spinner.franzai.com/
    Etkileşimli yükleme spinner'ı oyununun ilginç bir UX kalıbı olabileceğini düşünüyorum
    Bir şeyi beklerken bile kullanıcının davranışının etkisi olduğuna dair geri bildirim verebilir

    • Yükleme ekranına ilginç bir yaklaşım; şahsen bu özelliği kullanan oyunların çok daha fazla olacağını sanırdım
      Tabii AAA oyunlardan değil, indie oyunlardan bahsediyorum
      Eskiden bu patentin süresinin dolduğuna dair bir haber gördüğümü net hatırlıyorum ama bakınca o “eskiden”in üzerinden çoktan 8 yıl geçtiğini fark ettim
      https://www.eff.org/deeplinks/2015/12/loading-screen-game-pa...
    • İlginç bir bilgi olarak, yükleme mini oyunları için böyle geliştirmeleri engellemiş bir patent vardı
      Bildiğim kadarıyla Namco'ya aitti ve Ridge Racer'da görülebilir
    • Parmakla dokunma testi:
      https://psycnet.apa.org/record/2014-37068-023
    • Budokai 3(PS2) yükleme ekranında analog çubuğu çılgınca çevirip Saibamen'in büyümesini izlediğim günleri hatırlıyorum
  • Yapay zekanın geliştirmeyi değiştirdiği artık şüphe götürmez
    Sadece geçen hafta iki orta ölçekli servis geliştirebildim; bunlar binlerce satır Python koduydu ve Python, 10 yıldan uzun süredir kullanmadığım bir dildi
    Gerçekten etkileyici olan, çoğunlukla benim yazacağım koddan daha iyi olması
    Güzel bir README.md gerekiyorsa, route'lar, CLI argümanları vb. içeren kaynak kodu verdiğinizde onu oluşturuyor
    İsterseniz testleri de yazıyor. Geliştirici olmak hiç bu kadar kolay olmamıştı
    Kod üretiminde GPT-4, GPT-3.5'i eziyor
    GPT-3.5'e çok ayrıntılı örnekler verirseniz kopyalamayı fena yapmıyor ama GPT-4 bir ölçüde “düşünüyor” gibi hissettiriyor
    Deneyimime göre GPT-4 32k bağlamı oldukça sık başarısız oluyor
    Örneğin 10 bin token'dan fazla, kabaca 30 bin karakterden uzun bir şey üretiyorsanız birkaç kez yeniden denemeniz gerekebilir
    Ayrıca ChatGPT, önemsiz olmayan işler için ideal bir arayüz değil
    API'yi doğrudan kullanmak ya da 32k bağlam kullanabilen Azure OpenAI Chat Playground gibi bir şey kullanmak daha iyi
    Hazır yeri gelmişken, prompt üretimindeki tekrar eden angaryayı otomatikleştiren bir açık kaynak uygulama yaptım: https://github.com/codespin-ai/codespin-cli

  • Son 10 yılda no-code araçlarına muazzam yatırım yapıldı, ama artık ChatGPT kodu o kadar iyi yazıyor ki teknik sezgisi olan ama kod yazmayan biri için muhtemelen daha hızlı, daha esnek ve kullanılabilirlik açısından da benzer bir seviyeye yaklaşıyor olması ilginç
    Kısa süre önce Mendix ile REST servislerini tüketen ve yayımlayan bir demo uygulama yapmak zorundaydım; ayrıntıları çözmem günler sürdü
    Aynı işi ChatGPT ile herhangi bir dilde, örneğin bash ile, yapsaydım muhtemelen dakikalar sürerdi
    Dağıtım ve sürüm yönetimi, PaaS/IaaS ile yüksek teknik beceri gerektirmeden çözülebiliyor; özellikle de kurumsal no-code platformlarının maliyetiyle kıyaslandığında
    Kişisel bir önyargı olabilir ama ciddi işler yapmak için no-code platformları bana hep daha zahmetli geldiği için onlardan hiç hoşlanmadım; benzer nedenlerle ActiveRecord ORM'yi de sevmiyorum
    Yine de no-code yakında epey demode kalacak gibi görünüyor
    Sadece sorup kopyala-yapıştır yapacaksanız, kim sürükle-bırakla uğraşmak ister ki?

    • Kavramsal olarak neredeyse kusursuz bir çözüm gibi görünüyor
      No-code kolay ama katı; kod yazmak ise esnek ama sıkıcı ve hataya açık
      İstediğinizi sözlü olarak anlatıp hızlıca kod alırsınız ve kod temiz olduğu sürece gerektiğinde üzerinde oynayacak esnekliğiniz olur
      Bazı durumlarda, bu örnekte olduğu gibi, ayarlama bile gerekmeyebilir
      Gelecek için heyecanlıyım
    • Gerçekten birkaç dakika mı sürerdi? Bunu bizzat deneyip tahmin değil gerçek geri bildirim verirseniz güzel olur
      Çok uzun süreceğini sanmıyorum
  • Bu, istatistiksel intihal aklama ve oldukça etkileyici
    Şahsen HAL'i durduruyormuş gibi yapıp bugünün büyük kazma satıcılarına piyasada hendek kazmaktan ziyade, bu aklama altına hücumu engellemenin hukuken daha acil bir öncelik olduğunu düşünüyorum

  • GPT-4 ve yapay zeka araçlarını gerçekten iyi kullanarak üretkenliğini 100 kat artırmış serbest çalışanlar ya da uzaktan çalışanlar mutlaka vardır
    Böyle harika bir numaranın sadece vakumda var olduğunu düşünmek zor
    İki yıl sonra nelerin mümkün olacağını düşününce, cin çoktan şişeden çıktı

    • 100 kat ise zaten baştan çok üretken değilmişsiniz gibi duruyor
      ChatGPT ile üretkenliği “100 kat” artırmanın bir yolunu biliyorsanız paylaşmanızı isterim
  • Açıkçası böyle yazılar gördükçe istihdam edilebilirliğim konusunda giderek daha fazla endişeleniyorum
    Yedek planım da yok ve yazılım mühendisliğini öğrenmek için çok fazla zaman harcadım; tablo pek iç açıcı görünmüyor

    • O konuda gerçekten endişelenmiyorum
      Başkalarının da dediği gibi, sıradan insanlar LLM'lerin ihtiyaç duyduğu çalışan yazılımı üretecek kadar ayrıntılı ürün spesifikasyonları yazabildiğinde programcılar zor durumda kalır
      Ama bu kulağa programlamaya oldukça benziyor
      Bence işimiz değişecek. Klavyede kod yazmaya harcadığımız zaman azalacak, ne inşa edeceğimizi düşünmeye ayırdığımız zaman artacak
      Hatta daha değerli hâle gelmemiz bile mümkün. Çünkü çok daha fazla işi başarabilir olacağız
  • Potansiyel bir RPG oyunu için paladinin tepeden görünüşlü animasyon sprite sheet'ini elde etmeyi denedim; başarısızlık süreci burada: https://imgur.com/a/2uJyUT3
    Aslında önce tepeden görünüş varyasyonlarını denedim, en son ise merakımdan yandan görünüşü de ekledim

    • Daha önce Midjourney ile TTRPG token'ları yaptım; en iyi sonuç veren yöntem aerial view yazmaktı
      top down bazen doğru çalışıyordu ama çoğu zaman çok tutarsızdı
      DALL-E 3 için de benzer yönlendirmelerin gerekip gerekmediğini merak ediyorum