Kocaeli Üniversitesi Mühendislik Fakültesi Yazılım Mühendisliği 23-24 Programlama 2 Projesi GitHub sayfası. Referans alınan oyun Angry Sharks.
- Classları aktif olarak kullanmak istediğim için C++'ı tercih ettim.
- Görüntü işlemek için bir çok kütüphane var. Ben ihtiyaçlarım ve amacım doğrultusunda Raylib'i tercih ettim.
- Kullandığım kod editörü de CLion.
- Hem Mac hem Windows'u aynı anda kullandığım için bu projede CMake kullanmayı tercih ettim.
- Kullandığım görsellerin piksel ölçümü ve düzenlenmesi için Adobe Photoshop 24 kullandım.
Kullandığım Araçlar Hakkında Linkler | Link |
---|---|
Compiler | MinGW-64 |
Raylib | Get Started in raylib in 20 minutes! |
Raylib | Sprite Animation in Raylib |
Raylib | ReSize Screen Problem Solution (Kodun temeli bu ben biraz güncelledim.) |
Raylib | Circle and Rotated Rectangle Collision Detection (Döndürülmüş bir dörtkenarın çarpışma tespiti için buradaki formülizasyondan yararlanmaya çalıştım. Ancak pek verimli çalışmadı belki uygulamayı başaran olur diye bırakıyorum.) |
- Öncelikle CMake'i indirmeniz gerekli. Ya da CLion veya VSCode gibi programları ve bunların yoksa CMake eklentilerini kurmalısınız.
- Bu linkten oyunun dosyalarını indirdikten sonra kodu derleyip çalıştırmak için CMake kullanmalısınız.
İlgili Linkler | Link |
---|---|
CLion | Create/open CMake projects |
Visual Studio Code | Import a CMake project into Visual Studio Code |
Bu proje sürecinde çok büyük başarılar elde ettim, sorunsuz geçti desem yalan olur. "Frame by Frame" olarak görsel akıcılık nasıl oluşturulur karakterler ekrana çizdirilirken konum ve durum tespiti nasıl yapılır. Bölüm dizaynı nasıl sağlanır. Pencere yönetimi nasıl olmalı gibi gibi bir çok konuda çokça hata yapıp doğru yolu buldum. Kodum çok iyi yazılmıştır demiyorum ancak elimden gelenin en iyisini yapmaya çalıştırdım. Benzer amaçla çalışan ancak farklı tarzda yazılmış bir çok kod parçası görebilirsiniz. Bunların bir çoğu test amaçlı böyle yazsam daha mı verimli olur diyip sonra memnun kalıp değiştirmediğim veyahut değiştirmeye üşendiğim parçalar. Kod çalışıyor sonuçta :D.
Kategori | Sorun |
---|---|
Hareket | Oyununcunun fare hareketlerini takip etmek kolay olsa da sorun sol ve sağ rotasyonda açısal olarak karaktere şekil aldırmak. Sonuçta şu anda kod işlevsel olsa da sınırları zorlandığında veya serbest kaldığında karakterin kendi etrafında dönmesi ya da fareyle arasında mesafe kalması gibi hatalara yol açmakta. |
Çarpışma | Yukarıda "Kullandığım Araçlar Hakkında Linkler" kısmında belirttiğim "Döndürülmüş bir dörtkenarın çarpışma tespiti..." olarak belirttiğim kısım. Sorunu kalıcı çözemesem de geçiçi olarak karakterin ağız ve burun kısmını kaplayacak bir dairenin diğer etmenlerle olan etkileşimini, balığın orijin noktasını burun kısmına taşıyarak o noktadan rotasyon almış haliyle gösterip çözdüm. Doğru değil ama işlevsel. |
Ses | Sesler bazen düzgün çalışmıyor. Titrer gibi çıkıyor. Muhtemel Raylib paket sorunu. |
Karakter | 3. seviye karakter boyutu çok büyük biliyorum, evet. |
- Farklı 2 düşman tipi daha eklemek istiyordum. Ancak başaramadım. "enemies.png" dosyasında onları görebilirsiniz.
- Balon balığı mekaniğini eklemiştim ancak bahsettiğim çarpışma sorunu nedeniyle düzgün çalışmıyordu. Kaldırdım.
C ve C++ öğrenimimde katkılarından dolayı Kocaeli Üniversitesi Yazılım Mühendisliği Bölümü'den Dr. Öğr. Üyesi İRFAN KÖSESOY hocama teşekkürlerimi arz ederim.