Godot Yılan Klonu 1 – Dizin Yapısı ve Git Sayfası

Arkadaşlar merhaba, bir süredir C++, QT derken oyun projelerimizden pek bahsetmiyorduk ama artık bunu bitirmenin zamanı geldi. Daha önce konsol yılan oyunu ile başlayıp daha sonra çoklu oyuncu için soket kütüphanesini oluşturduktan sonra pek bu konuya eğilmemiştik. Bu yazı ile inşallah artık bunu değiştireceğiz.

Bu yazı ile birlikte Godot oyun motorunu kullanarak, bir yılan klonu geliştirip, buna, çoklu oyuncu kabiliyetleri katmaya çalışacağız. Şimdi kafanızda emin iki (en az) soru belirdi. Birincisi Godot nedir? Ne işe yarar? Burada buna çok girmeyeceğim ama hatırlatma mahiyetinde aşağıdaki yazıya bir göz atmanızı rica ediyor olacağım. Godot ile ilgili belki ileride bir iki yazım daha olabilir.

Begüm’ün Sayılarla Macerası

Öncelikle bu yazılarımın formatını, diğer yazılarımdan biraz daha farklı, günlükvari yapmayı planlıyorum. Bu bağlamda çok uzun olmayan ama neler yaptığımızı anlatan kısa yazılar olmasına özen göstereceğim. Bu tarz ilerlemeye ilişkin yazıların, bu tarz oyun motorlarını kullanmayı planlayan veya yeni başlayan dostlar için faydalı olacağına inanıyorum. Bu yazılarda, Godota ilişkin ya da oyun geliştirmeye ilişkin bahse değer konuları sizlere aktaracağım.

Gelelim bu yazımızın içeriğine. Bu yazımızda, Godot ile projeye başlarken, nasıl bir dizin yapısı oluşturacağımıza ve GitHub üzerinden oluşturduğumuz sayfaya göz atacağız.

Öncelikli olarak, çok küçük olmayan herhangi bir yazılım projesi için dizin yapısının çok önemli olduğunu artık fark etmişsinizdir. Hele ki, proje büyümeye başladığında, kodların, dosyaların arasında kaybolmak istemiyorsanız, dizin yapısının da sizlere büyük faydası olacaktır. Aslında ben bunu bir anlamda, sınıf, fonksiyon ya da değişken isimlendirmeye benzetirim. Nasıl doğru bir şekilde isimlendirilmiş sınıf, fonksiyon ve değişken size sayfa sayfa dokümanda daha fazla bilgi verirse aynısı dizin isimlendirmeleri için de geçerlidir. Benzer durum Godot için de geçerli. Godot projeleri de, çok hızlı bir şekilde büyüyüp kontrolden çıkabilir, bu sebeple, doğru bir dizin yapısı çok önemli.

Burada anlatacaklarım, açıkçası kırk yıllık bir godot geliştiricisinin tecrübeleri değil ama şu zamana kadar edindiklerim ışığında bir araya getirdiklerimi temsil etmeke. Zaten bu oyun tamamlanmasına doğru muhtemelen bir takım değişiklikler de gösterecektir.

Şimdi bu dizin yapısı ile ilgili en öne çıkan düşüncelerim şu şekilde:

  • Her şeyde olduğu gibi, bence en önemli konu basitlik. İsimlendirmelerden, hiyerarşiye kadar, basit, akılda kalır bir yapı olması çok önemli,
  • Bu dizin yapısı projenin genel mimarisini de bir noktada yansıtmalı,
  • Özellikle betikleri ve kullanacağınız içerikleri birbirlerinden ayrı yerlerde tutmanız iyi olacaktır,
  • Dizinlerinizi özellikle oluşturacağınız sahneleri baz alarak oluşturmanız ileride faydanıza olacaktırr.

Yukarıda bahsettiğim kalemler ışığında, aşağıdaki gibi bir dizin yapısı oluşturdum. Bu yapıyı Godot ile geliştireceğiniz oyunlar için bir baz olarak alabilirsiniz. Hatta daha da iyileştirip bizimle paylaşabilirsiniz. Şimdi bunlara ve kullanımlarına hızlıca bakalım:

  • .import: Bu dizin, Godot projesi içerisindeki dosyalara ilişkin godotun tuttuğu verileri içerir. Bu adreste daha detaylı bilgileri görebilirsiniz.
  •  android: Projenin android platformuna özgü dosyalarını koyacağımız dizin.
    • binary: Oluşturduğumuz APK’ları koyacağımız dizin,
    • keys: Oluşturduğumu APK anahtarlarını koyacağımız dizin,
  • windows: Projenin windows platformuna özgü dosyaları koyacağımız dizin.
  • assets: Projeye ilişkin varlıkları bu dizin altında toplayacağız.
    • fonts: Projede kullanacağımız fontları tutacağımız dizin,
    • images: Projede kullanacağımız her türlü resim ve dokuları tutacağımız dizin,
    • sounds: Projede kullanacağımız her türlü ses dosyasını tutacağımız dizin,
  • docs: Projeye ilişkin yardımcı dosyaları bunun altında tutacağız. Ben burada genel olarak tasarım, gereksinim, beyin haritaları ve çizim benzeri dosyaları tutmayı tercih ediyorum.
  • rawAssets: Projede kullandığımız varlıkların orjinal hallerini tutmak için kullandığım dizin. Burada genelde resim dosyaları için vektörel formattaki resimleri koyarım.
  • scenes: En önemli dizin bence bu. Ben godota ilişkin sahneleri ve bu sahnelerin birbirleri içerisinde kullanım durumlarına göre konuşlandırılmasını bu dizin yapısına göre gerçekleştirmeyi öneriyorum. Sahnelerde kullanacağımız betikleri ise burada tutmamayı tercih ediyorum.
  • scripts: Bir diğer önemli dizin de bu dizin. Betikleri, sahne dosyaları yanında tutmamayı tercih ediyorum. Buradaki dizin yapısı da sahnelere benzese de bazır farklılıklar içerebilir. Örneğin ortak kullanılan betikleri ayrı bir dizinde saklamak gibi.

Dediğim gibi bu dizin yapısı benim şimdilik takip ettiğim bir yapı. İleride belki sahne dosyaları ile betik dosyalarını yan yana koyabiliriz ama ben şimdilik bu şekilde ilerleyeceğim. Son bir not, Godot normalde bütün dosya ve dizinleri etiketliyor. Burada özellikle etiketlenmesini istemediğiniz dosyaları bir dizine koyup (mesela yukarıdaki “rawAssets”) içerisine, .gdignore, dosyası oluşturursanız. Godot bu dizini işlemez ve bu sayede içeri alma süresini düşürebilirsiniz.

Yukarıdaki dizinin ete kemiğe bürünmüş haline aşağıdaki sayfadan ulaşabilirsiniz. Bu sayfadaki dizinlerin içerisindeki boş dosyalar da, dizinlerin git tarafından yönetilebilmesi için (bildiğiniz gibi git üzerinbden boş dizinlerin sürüm takibini yapamıyorsunuz)

https://github.com/yazilimperver/BegumSnakeRider 

Son bir not daha. Yukarıdaki sayfada, git hub üzerindeb, hem türkçe hem ingilizce nasıl beni oku yapılabileceğini de görebilirsiniz. Evet ilk yazımızın sonuna geldik bir sonraki yazı da görüşmek üzere.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.