Bu da tamamlanınca biraz oynamak için bilgisayar mühendisi arkadaşımı davet ettim, sağolsun test ve debugging’de üstüne tanımam. Ufak şeyleri hallettik, sonra sıra geldi açılara. Dedim ya yukarda 4 yöne çarparak gidiyor diye, tabi x ve y koordinatlarını birer azaltıp arttırarak gittiği için top hep 45 derecelik açıyla hareket ediyor. E bu da kısa sürede sıkacak ve tahmin edilebilir bir oyun demek. E beğenmediğim diğer pong’lar farklı açılarla hareket ettiriyor, hadi bakalım. Arkadaşımın önerisiyle antialiasing ve çizgi çizme için Bresenham algoritmasını kullanalım dedik. Ama bunun hesabını C64’e gerçek zamanlı yaptıracak halimiz yok. ChatGPT’ye bir kod hazırlattık, Python’da yazdı, Visual Studio’da çalıştırıp çizilen farklı açıdaki çizgilerin delta’larını alarak tablo haline getirdik. Sonra da topun çubuklara vurduğu yere bağlı olarak açı belirledim. Üst tarafına vurunca 45, ortada 15, altta 30 derece gibi. Daha rahat oynanabilir hale geldi sayılır. Son olarak da paddle yanı sıra joystick ile de oynama özelliği ekledim, ne de olsa herkes de paddle yok.

Şimdi oyun yazmak sırf kod değil tabii. Bunun giriş ekranı, basit ses efekti yanısıra girişte bir müzik olsa derken mecbur uğraşmaya başladım. Bitmap multicolor ekran için bulduğum bir resmi Timanthes ile Koala formatına çevirdim, daha doğrusu basit bir emojiden ekran yaptım ve bunu bitmap olarak yüklettim. Müziği de basit olsa bile kendim yapmak istedim. Goat Tracker aslında kullanabilen için çok güzel bir program ama uğraşıp öğrenmek lazım. Ben biraz basite kaçtım, C64 üzerinde çalışan SidWizard’la bir şarkı yaptım, bunu da player’ı ile kaydedip sonra IRQ ile her cycle’da çağırıp çaldırabiliyorsunuz. İşte herşeyin en basitini ihtiva eden bir oyun haline geldi. Ama yazarken kafa patlattığım, yazdıktan sonra neden çalışmadığını keşfettiğim bir süreç oldu, akşamları uğraşarak 1 ayda getirebildim bu hale. Bu süreçte kullandığım programları ve yayınları sıralarsam:
- C64 Prg Studio : Assembler yazma, ekran ve sprite tasarımı, ses efekti konusunda güzel bir paket sunuyor.
- VICE: number 1 emülatör
- C64 Debugger: Çok faydalı, anlık durumu görmek, hafızayı incelemek, değişik hızlarda (%10,%20,%50) çalıştırıp detayları görmek için ideal.
- Timanthes: Bitmap grafikleri Koala formatına çevirip yüklemek için kullandım.
- SidWizard : C64’te çalışan bir tracker, müzik yapmak için kullandım.
- “C64 Programmer’s Reference Guide”, “Compute’s Mapping the Commodore 64” ve “Compute’s Programming the Commodore 64 the Definitive Guide”. Bu 3 kitap ihtiyaç duyulabilecek her şeyi verebiliyor. Zaten Türkçe kaynak yok gibi, olanlar da yabancı kaynaklardan yalandan çevirme (bu forumda açıklama yazan kişileri tenzih ederim).
C64 Debugger:

Oyun haliyle 2 kişilik, henüz bilgisayarı nasıl oynatırım fikrim yok. Yani aslında var ama aklımdakini yazarsam oyun fazlasıyla zor olur, o yüzden 2 kişilik olarak bıraktım. Kodlarda olabildiğince açıklama yazmaya çalıştım, ama İngilizce. Maalesef araştırmalarım sırasında yabancı site gezmekten, İngilizce okumaktan ve yabancı forumlarda tartışmaktan Türkçe yazmak anlamsız gelmeye başlıyor, ukalalık olarak görmezseniz sevinirim. Dediğim gibi, bu konudaki Türkçe kaynaklar az, olanları da okuduğum zaman ben anlayamıyorum.
Bir de kısaca bu oyun sonrasına değineyim. C64 Prg Studio gayet güzel ama yeni yazılan oyunların kodlarına bakarken sık sık Kick Assembler’a rastlıyordum, biraz ona bakayım dedim. Gerçekten de o ayrı bir dünyaymış zira kodu Java kullanarak derlediği için high level dil özelliklerini kullanabiliyorsunuz. Oturdum biraz onu çalıştım, yeni kod yazma ortamımı da şöyle geliştirdim:
- Sublime Text: Kod yazma (Visual Studio da denedim ama bana kolay gelmedi)
- Kick Assembler: Kurması ve ayarlaması da gayet kolay
- C64 Debugger: Olmazsa olmaz
- Charpad/Spritepad: Ekran ve sprite tasarımı için güzel bir paket. Pro versiyonunu aldım.
- SidFx: Ses efekti üretmek, dosyasını kaydetmek ve sonra IRQ ile çağırmak için kullandım. Birden çok ses üretebilirsiniz, sonra parametrelerle yaptığınız efektleri istediğiniz kanaldan (ki hepi topu 3 kanal) çaldırabilirsiniz.
Charpad’i ve onunla gelen ekran örneklerini incelerken karakter setini yeniden tanımlayarak yapılmış örnekleri inceledim. Buradan esinlenip önce bir karakter yaratıp ona koşma/zıplama hareketleri yaptırdım. Arkadaşımın yine debugging ve ince ayar desteği ile ufak bir adam oynatma motoru oluştu. Şimdilik birkaç ekran tasarlayarak, içine de biraz Impossible Missionvari robot ekleyerek bir şeyler yapmaya çalışıyorum. Burdan bir oyun çıkar mı, yani çıkar tabi, onca güzel ve profesyonelce yazılmış platform oyunları adına atılmış adımlar içinde küçük bir adım olur, ama bana epey birşey katmış olur. Yayınlanabilir hale gelirse onu da paylaşırım isteyen olursa, onun da hikayesi başka.

Son olarak konuyu kapatmadan şunu söylemek isterim. Bu işe 2-3 sene önce başladığımda gözümde büyüyordu, geçmişte yap(a)madığım kodu şimdi mi öğrenecem derken bu noktalara geldim. Gerçi yazdığım kodun kesinlikle daha iyi yazılma ihtimali var, optimize edilebilir, daha efektif olabilir ama o da ayrı bir başlığın konusu... Niyeti olan, içinde ukde kalan varsa geç kalmadan girişsin. Yukarıda development ortamı için gerekenleri belirttim, indirip kurun, ufaktan başlayın. Biraz hareketlensin ortalık bu konuda da.
Kaynak kodlarıyla ilgilenen için Github, indirmek isteyenler için de itch.io adresleri imzamda görülebilir. Soru olursa da bunlarla ilgili elimden geldiğince cevaplarım. Buraya kadar okuyana zaten ödül vermek lazım bir şekilde

Sağlacakla kalın.