Tecrübeli takipçilerim, daha önceden SDL2 ile ilgili de bir çok yazı ve örnek kod paylaştığımı hatırlarlar. Uzun süredir aklımda olan ve SDL2 kullanan, çok platform destekli bir görselleştirme kütüphanesi hazırlama fikrini nihayet hayata geçirebildim ve bir süredir üzerinde çalışıyordum. Evet sevgili dostlarım, üzerinde çalıştığım kütüphanem bir noktaya geldi ve uEngine4 olarak ortaya çıktı. Peki bu dört nereden geliyor diye sorabilirsiniz ki haklısınız😊
Aslına bakarsanız, çok eskilerden bu yana, bu tarz motorlar yapmaya yönelik girişimlerim oldu, her ne kadar bir çoğu işimi görse de, bir çoğu da çok olgunlaşamadan sonlandı. Elbette, bu yolculuklarda bir çok güzel tecrübe edindim ve bu tarz motorların işleyişine dair bilgi sahibi oldum. Peki neden tekrar böyle bir kütüphane, nedir amacım?
OpenGL, SFML, SDL2 derken birçok C++ tabanlı görselleştirme kütüphanesini, çoklu platformlar için görsel uygulamalar geliştirmede kullandım. Hatta, benzerlerini de profesyonel hayatta geliştirdim. Şu bir gerçek ki, bu işlere yeni başlayan arkadaşlar için, bu kütüphanelerin sunulan API’lerini anlayıp, zihinlerindeki projeleri hemen hayata geçirmeleri özellikle OpenGL ve SDL kullanılması durumunda biraz vakit alabiliyor (artık gerçi Vulkan var, ona da bir gün değineceğiz inşallah), SFML belki diğerlerinden bir tık önde olabilir.
Bu çalışmanın temel amacı da, uEngine4 ile birlikte bu ilk eşiği kolay bir şekilde atlatıp, Godot ve benzeri üst seviye bir araç da kullanmadan ama çok da alt seviyeye inmeden ve tabi ki C++ kullanarak bu ve benzeri uygulamaları geliştirmenize yardımcı olmak. Bunu da yaparken, birlikte öğrendiğimiz kabiliyetleri de bu kütüphane içerisinde kullanıyor olacağız. Elbette, buradaki salt amaç, sadece kütüphane paylaşmak değil, bu vesile ile 2B grafik, oyun, CBS ve benzeri uygulamaları da bu kütüphaneyi kullanarak geliştirmek, bir takım pratik ve yaklaşımlara göz atmak ve kullanımlarını tecrübe etmek de olacak.
Bir süredir, C++’ın yanında, Rust programlama dili ile de uğraşmaktayım. Belki bu vesile ile, kütüphanemizin, Rust portunu da paylaşıyor olurum.
Bu yazımı daha uzatmadan, kütüphaneye ilişkin genel bilgileri sizler ile paylaşacağım ve daha sonraki yazılarımda detaylara giriyor olacağım. Bu yazıda genel proje dizin yapısını ve önemli bileşenleri sizlerle paylaşıyorum, bu vesile ile kütüphaneyi incelemeniz daha kolay olur umarım. Ayrıca her zaman, repo’yu çekip oynayabilirsiniz 😉
Proje git reposu:
https://github.com/yazilimperver/uEngine4
Proje dizin yapısı:
https://github.com/yazilimperver/uEngine4/blob/main/doc/projectRepository.md