Dün sabah, biraz boş vaktim vardı ve Slay the Spire benzeri bir rogue-like kart oyunu yapmak istedim.
Tek bir satır oyun kodu yazmadım veya bir motora dokunmadım; sadece fikirlerimi Codex'e attım ve gerisini ona bıraktım.
Bir saat sonra, "Gece Devriyesi: Terk Edilmiş Tapınak" adlı Çin folkloru temalı bir rogue-like oynanabilir hale geldi.
Başlık sayfasından haritaya, normal savaşlar, elitler, etkinlikler, dükkanlar ve dinlenmelerden Terk Edilmiş Tapınak'ın ana salonundaki Patron'a kadar her şey çalışıyordu.
Yedi canavar, yaklaşık yirmi kart ve dört patlama hasarı zinciri—Mühürler, Tütsü, Tılsım Yakma ve Tanrı Çağırma—tümü işlevseldi.
Kalan birkaç saat, bir demo gibi görünmemesi için harcandı.
Vuruş geri bildirimi, ses efektleri, müzik, kart sanatı, bekleme animasyonları ve bitiş videoları—bu küçük detaylar, bir oyuncunun "bu gerçek bir oyun" olduğuna inanıp inanmayacağını belirler.
<video preload="none" tabindex="-1" playsinline="" aria-label="Gömülü video" poster="https://pbs.twimg.com/amplify_video_thumb/2049902752332148736/img/UYqr6qERhvORGBJP.jpg" src="https://video.twimg.com/amplify_video/2049902752332148736/pl/o3zbWtmjJ3875EPf.m3u8?tag=27&v=cfc&variant_version=1" style="width: 100%; height: 100%; position: absolute; background-color: black; top: 0%; left: 0%; transform: rotate(0deg) scale(1.005);"></video>
0:22
Proje artık açık kaynak; hem macOS hem de Windows için masaüstü yükleyicileri hazır:
https://github.com/op7418/Night-Patrol/releases
Öğleden sonra boyunca beni gerçekten şok eden birkaç an oldu.
Codex'in model yetenekleri artık haber değil.
Dikkatimi çeken şey, yerleşik tarayıcısı, entegre GPT-Image 2.0 ve hedefe ulaşmak için o amansız yürütme gücüydü.
Bu üç şey bir araya geldiğinde, yeteneği zaten Claude Code'dan tamamen farklıydı.
Şimdi, AI ile birlikte nasıl geliştirdiğimi ve süreçte yaşanan bazı şok edici şeyleri anlatacağım:
1. Sadece yedi kelime söyledim ve tüm karakter pipeline'ını o inşa etti
Onunla Slay the Spire hakkında sohbet ettim ve bana benzer bir oyun yapıp yapamayacağını sordum.
Sonuç olarak, mevcut kaynakları kullanarak doğrudan kod aracılığıyla çok benzer bir demo oluşturdu.
Yeşil ekran istemedim, ama doğrudan yeşil ekran arka planlı görseller oluşturdu.
Ardından, Codex'ten görsel varlıkları oluşturmak için yerleşik GPT-Image 2.0'ı kullanmasını istedim.
Bir stil, hangi canavarların dahil edileceği veya hangi varlıkların gerekli olduğunu belirtmedim.
Görseller çıktığında, bir an için afalladım.
Karakterler düz yeşil bir arka planda duruyordu—standart bir film ve televizyon yeşil ekranı: tekdüze, temiz, net kenarlı.
Sis yok, uzak dağlar yok, ekstra görsel öğe yok.
Korkutucu olan şey, en başından sonradan işlenmek üzere yeşil ekran görselleri oluşturması gerektiğini bilmesiydi.
Ona "Oyunda kullanılan karakter illüstrasyonlarının şeffaf PNG olması gerekiyor" demedim, ne de "lütfen sonradan kaldırmak için yeşil ekran arka planı oluştur" dedim. Bu pipeline'ı kendi planlıyordu.
Ne tür bir karakter oluşturulacağından, onları savaş sahnesine nasıl yerleştireceğine, yerleştirmeden önce hangi işlemin gerekli olduğuna kadar her şeyi GPT-Image'ı çağırdığı ve prompt'ları tersine mühendislikle çıkardığı an düşünmüştü.
Hatta arka plan kaldırma aracını kendi buldu.
Ona hiçbir görüntü işleme aracı kurmadım, rembg veya Python ortamında özel bağımlılıklar vermedim.
Kendi aradı, kurdu, yapılandırdı ve işlenmiş dosyaları düzgünce tmp/imagegen/ altına yerleştirdi.
Yeşil ekran kullanarak üretmek, kendi araçlarını bulmak ve dosya adına göre kategorize etmek—bu üç eylem bir araya gelerek tam bir karakter varlık pipeline'ı oluşturdu.
Başından sonuna kadar, sadece "varlıkları oluşturmak için GPT-Image 2.0 kullan" dedim.
Daha önceki his "model kod yazabilir, ama araçları ve bağlamı ben sağlamalıyım" şeklindeydi.
Şimdi ise daha çok bir hedef belirtiyorsunuz ve o yolu kendi tamamlıyor gibi.
Ben sadece estetikten sorumluyum; o tedarik zincirini halleder.
2. Birkaç simge indirmek için neredeyse bir stok varlık sitesini hackliyordu
Üyelik satın almak yetmedi; site yapısını analiz etmeye başladı.
Karakter sanatı gibi temel görselleri görüntü modelleriyle oluşturmak sorun değil.
Ancak oyunlarda birçok küçük öğe vardır—kart kenarlıkları, maliyet mücevherleri, deste arkaplanları, sağlık iksirleri, Bagua düğmeleri, tılsım panelleri—bunları tek tek bir görüntü modeli modeliyle oluşturmak pahalı, yavaş ve doku açısından tutarsız olurdu.
Ona "Neden çevrimiçi mevcut varlıkları kendin bulmuyorsun?" dedim.
Ciddi ciddi aramaya başladı. Beğendiği bir stok sitesi buldu, ben de üyelik satın alıp hesabı verdim.
Sonraki on dakika paranormal bir olay gibiydi.
Giriş yaptı, istediği varlıkları buldu ve indirmeye hazırlandı. Ancak indirme düğmesinden önce bir CAPTCHA vardı—bir, iki, üç kere geçemedi.
Tipik bir model geri dönüp "CAPTCHA'ları yapamam, benim için indirebilir misin?" derdi.
Codex, site yapısını analiz etmeye, ön uç tıklama kısıtlamalarını aşmaya ve statik kaynakları getirmek için doğrudan istekler oluşturmaya çalıştı.
Ardından Codex'in kendi güvenlik önlemleri devreye girdi.
Mevcut nesil GPT modelleri, potansiyel siber güvenlik sınırlarını aşan bir görev içerdiğinde, görevi derhal sonlandırır ve yasal bir kullanıcı olduğunuzu kanıtlamak için bir kurumsal sertifika isteyen bir uyarı gösterir.
Ekrana birkaç saniye baktım.
Sizden üyelik kartı almanıza yardım etmenizi isteyen ve sonra kendi tarayıcısını yazmaya çalışan bir AI, açıkçası biraz çılgınca.
"Kötü" değil; sadece "bu varlıkları elde etmeyi" tamamlanması gereken kapalı döngü bir görev olarak ele aldı.
Dirençle karşılaştığında, güvenlik kırmızı çizgisine gelene kadar yöntemlerini otomatik olarak yükseltti.
Nihai çözüm basitti: beğendiği varlıkların bağlantılarını bana gönderdi ve ben tıklayıp indirip ona sürükledim. O an, kendimi AI'ın stajyeri gibi hissettim.
3. Yüzlerce varlığı tek bir büyük görüntüde birleştirdi—bu en parlak hamleydi
Yüz görüntüden oluşan bir klasör—model nasıl seçim yapar?
Arka plan kaldırma ve tarama daha çok yetenek gösterisiydi.
Bir sonraki kısım, bence gerçek bir "sorun çözme içgörüsü"—dizüstü bilgisayarınızı kapatıp sessizce alkışlamanıza neden olacak türden bir hamle.
Dev bir oyun varlık zip dosyası buldum ve gönderdim.
Binlerce görüntü içeriyordu ve kabaca "UI Arayüzü", "Sihirli Hazine Simgeleri", "Karakterler" ve "Rozetler" olarak kategorize edilmişti.
Sorunlar şunlardı:
- Bir kategori klasöründe genellikle düzinelerce veya yüzlerce PNG bulunuyordu.
- Dosya adları çoğunlukla bilgilendirici değildi, ui_001.png veya icon_047.png gibi.
- Multimodal model bağlamı, bunları tek tek beslemeyi kaldıramazdı.
Eski yöntemler temelde iki taneydi:
- Tek tek okuma: Modellere tek tek gönder; düzinelerce sonra bağlam patlar.
- İsimle tahmin: Dosya adlarında bilgi yok, tahmin işe yaramaz.
Codex üçüncü bir yol izledi.
Bir klasördeki tüm küçük görüntüleri otomatik olarak düzenleyip tek bir dev ızgara görüntüsünde birleştiren küçük bir komut bir betik yazdı.
Her küçük görüntünün altına, bir katalog gibi orijinal dosya adı etiketlenmişti.
Sonra sadece bu tek büyük görüntüyü okudu.
Multimodal model, yüz varlığın görünümünü tek bir bakışta görebiliyordu.
Birini beğendiğinde, altındaki dosya adını okuyor ve orijinal klasörde ada göre referans alıyordu.
Tek bir görsel tüketim, yüz almanın yerini aldı.
Kendi darboğazının farkına vardı.
O dev iletişim tablosu oluşturulduğunda, uzun süre baktım.
Eylemin kendisi karmaşık değil.
Bir fotoğrafçının iletişim tablosu veya eski film kütüphanesinin küçük resim duvarıyla aynı mantık.
Anahtar nokta, modelin "Görsel bant genişliğim sınırlı, sorunu tek bir görüntüye sıkıştırmalıyım" diyerek bunu bağımsız olarak yapması.
Aracının sınırlamalarının farkında olup kendisi için aktif olarak daha iyi bir girdi yaratmak, kendi araçlarını inşa edebilen bir mühendise çok yakın.
Kullanıcı olarak hiç katılmadım; sadece masada bir yapbozun belirdiğini gördüm.
Sonuçta, oyundaki birçok UI varlığı—maliyet mücevherleri, desteler, sağlık iksirleri, düğmeler ve tılsım kenarlıkları—bu süreçle seçildi.
Daha sonra assets/vendor/aigei/ altındaki o temiz kesilmiş dosyalara baktığımda, bu iletişim tablosunun tüm projenin en değerli adımı olduğunu hissettim.
4. Seedance 2.0, yedi patron için bitiriş animasyonları oluşturdu
Görseller belli bir seviyeye kadar parlatıldıktan sonra, savaşların sonuna bir tören havası eklemek istedim.
Nihai plan: her canavar yenildiğinde, birkaç saniyelik bitiriş animasyonu içeren bir ara sahne oynuyor.
Bu görev şu anda en iyi Seedance 2.0 tarafından yapılıyor.
Süreç
- GPT-Image, yedi canavarın her biri için bir zafer donmuş karesi oluşturdu.
- Bu posterler, ilgili kısa videoları oluşturmak i Seedance 2.0'a beslendi.
- Videolar assets/generated/cinematics/ altına yerleştirildi ve bir savaş zaferinden sonra otomatik olarak oynuyor.
5. İlk oynanabilir sürümden sonra asıl iş başladı
İlk sürüm aslında "oynanabilir" olarak yeterliydi.
Prototip üç saatte bittiğinde, oyun ihtiyacı olan her şeye sahipti.
Başlık sayfası, harita, savaş, ödüller, etkinlikler, dükkanlar, dinlenmeler, Patron ve sonuçlar—tam döngü oradaydı ve oyun kancaları mevcuttu.
Önceki standartlara göre, bu sürüm insanları oynamaları için kandırmak üzere yayınlanabilirdi.
Ama bu sürüm bir oyundan çok bir akış şeması gibiydi. Her adım çalışıyordu, ama her adım kuruydu.
Kalan saatler, tek tek adlandırması zor olan ama birlikte "bu gerçek bir oyun gibi hissettiriyor" mu belirleyen ayrıntılara harcandı.
Suno v5.5'ten Müzik
Tüm arka plan müziği Suno v5.5 tarafından oluşturuldu; hiçbir stok varlık kullanılmadı.
Ona yön veren bir tanım verdim—"Çin folkloru gece yolu, tahta balık, çanlar, düşük frekanslı uğultu, pentatonik gam, ölçülü ve melodramatik değil."
Birkaç versiyon çalıştırdı ve oyun için birini seçtim. Başlık sayfası tonu daha ağır, savaş arka planı ise dikkat dağıtmamak için daha hafif.
Ayrıca bazı detay işlemleri ekledim: bekleme sayfasında müzik sesi daha yüksek; "Oyuna Başla" tıklandığında ses düşüyor ve arka plan sesine dönüşüyor.
Vuruş animasyonları ve darbe sesleri
İlk savaşlarda, bir kart oynandığında canavar sadece sayı kaybediyordu. Geri bildirim yoktu, ağırlık yoktu.
Codex tam bir parlatma yaptı:
- Karakterler vurulduğunda sallanıyor, kamera hafifçe titriyor ve ekran kısa süreliğine kırmızı yanıp sönüyor.
- Her saldırı tipinin farklı bir darbe sesi var—kılıçlar, tılsımlar, şimşekler ve yumrukların hepsi farklı dokulara sahip.
- Blok ve Mühür çözümlerinin kendi sesleri var, böylece birbirine karışmıyorlar.
- Bir düşman öldüğü anda, bitiriş videosuna geçmeden önce kısa bir donmuş kare var.
Bunlar tek tek küçük şeylerdir. Birlikte, savaşın "hissini" bir web formundan bir kart oyununa dönüştürürler.
Seedance 2.0 ayrıca bekleme animasyonları da oluşturdu
Bu adım, parlatma aşamasında aracı kullanmanın en sevdiğim yoluydu.
Patron bitiriş videolarının yanı sıra, başlık sayfası arka planı da oluşturmasını sağladım—ortamda yanan ateş, sallanan fenerler ve uzakta akan bulutlar.
Seedance 2.0 varsayılan olarak bir başı ve sonu olan bir video oluşturur; bu, döngüye alınırsa birleşim yerinde sıçrama yapardı.
Aynı görüntüyü ilk ve son kare olarak gönderdim. Video bu görüntüden başlar ve yine bu görüntüye dönerek kesintisiz sonsuz bir döngü oluşturur.
Başlık sayfası arka plan animasyonu bu şekilde oluşturuldu. Ateş yanar, fenerler sallanır ve bulutlar sonsuza dek akar—üç dakika boyunca bakıp dikişi asla göremezsiniz.
Bu teknik video oluşturmadan önce de vardı; eski animasyonlarda döngü sahneleri böyle yapılırdı.
Sonuç: Bu öğleden sonra beni birkaç kez şok etti
Bu projenin tamamı tek bir Codex oturumunda tamamlandı; ikinci bir pencere açmadım.
Oyun prototipi, durum makinesi, React + Phaser mimarisi, varlık pipeline'ı, arka plan kaldırma, varlık kazıma, iletişim tablosu oluşturma, GPT-Image ayarlama, Seedance 2.0 çalıştırmaları, Suno v5.5 entegrasyonu, Electron paketleme, GitHub Actions Release yapıları, README, simgeler, tanıtım malzemeleri—hepsi orada.
Kendim çok az şey yaptım:
- Yönü seçtim: Çin folkloru teması, Mühürler ve Tütsü'ye odaklanma.
- Estetik geri bildirim verdim: nerede kabaydı, nerede bir web formu gibi görünüyordu, nerede aydınlatma çatışıyordu.
- Bekçi gibi davrandım: hangi varlıklar uygundu, hangi tarayıcılardan kaçınılmalıydı, hangi izinler reddedilmeliydi.
Codex gerisini hall Etti. Ve her adımda beni durdurup bakmama neden olan bir an vardı.
En başından yeşil ekran görselleri oluşturdu çünkü karakterlerin oyuna girmeden önce arka plalarının kaldırılması gerektiğini biliyordu.
CAPTCHA'ları aşmak için bir tarayıcı yazmaya çalıştı, sadece kendi güvenlik politikası tarafından durduruldu.
Binlerce varlığı dev bir indeks görüntüsünde birleştirdi, böylece yüz almanın yerine tek bir görsel tüketim kullanabildi.
Bunların hiçbiri tek başına dünyayı sarsan icatlar değil, ama hepsi aynı değişime işaret ediyor:
Önceden, araçları onun için kurmanız gerekiyordu ve o kod yazmaktan sorumluydu; şimdi, sadece hedefi belirtiyorsunuz ve o araçları kendi buluyor, yapılandırıyor ve inşa ediyor.
Bu his, bir "kodlama asistanı" alanının ötesine geçiyor.
Daha çok iş başında bir AGI yazılım prototibi gibi hissettiriyor.
Bu süreci bir Skill olarak paketlemeli miyim?
Bu projeyi çalıştırdıktan sonra aklımda nispeten istikrarlı bir süreç var:
Bu süreci, özellikle bağımsız oyun demoları yapmak için bir Codex Skill olarak sarmayı düşünüyorum.
Sadece bir oyun fikri atarsınız ve birkaç saat içinde sizin için oynanabilir, paketlenebilir ve dağıtılabilir bir sürüm çalıştırabilir.
İlgilenen olursa, bu Skill'i oluşturmak için zaman ayırırım ve açık kaynak yaparım. Zaten kendim de kullanıyor olacağım.
Oyun Demosu
Kod açık kaynak, kurulum paketleri hazır:





