Mevcudat Yönetimi Dediğin…

Geçtiğimiz aylarda, öncekilere göre çok daha büyük bir animasyon projesi gerçekleştirdik. O projeden mevcudat yönetimiyle ilgili öğrendiklerim…


Ajans olarak daha önce bir miktar animasyon projesine imza attık. Fakat pek azı altmış gün gibi bir sürede, toplam yirmi dakikalık bir grup animasyon üretmek gibi bir hacme sahipti. Proje bu büyüklüğe ulaşınca, üretim süreci de ilginç bir şekilde değişiyor ve daha küçük projelerdeki iş akış yöntemleri etkisiz kalmaya başlıyormuş, her şey üzerimize yıkılmaya başlarken, bunu öğrendim.

Animasyon dediğimizin pek çok farklı oynayan parçası var. Özellikle küçük takımlarla çalıştığınız zaman, her bir takım üyesinin çok farklı görevlerle jonglörlük yapmaya çalışması gibi bir zorunluluk oluşuyor. Her ne kadar kolaylıkla gözden kaçsa da mevcudat yönetimi, elinizden kaydırmanız durumunda tüm projenizin tuzla buz olmasını sağlayabilecek bir unsur.


Mevcudatla Neyi Kast Ediyorum?

Mevcudat, yahut İngilizce’siyle “asset”, genel olarak finans sektöründe menkul ve gayri-menkul değerleri ifade etmek için kullanılan bir kelime. Ayrıca, istihbarat çevrelerinde kişi, ilişki, cihaz ve benzeri, bir görevi ifa etmeye yarayacak yardımcı ve destekleyici varlıkların bütününe karşılık kullanılan bir terim.

Ben daha ziyade, projenin yardımcı dosyaları için kullanıyorum. Örneğin basılı materyal tasarımlarında, metin, fotoğraf, resim, font gibi dosyaları mevcudat kabul ediyorum. İşin içine animasyon girdiği zaman, bu tanım, otomatikman genişliyor: seslendirmeler, ses efektleri, müzikler, karakter çizimleri, riglenmiş karakterler, kaplamalar, dekor çizimleri, hazırlanmış sahneler ve benzeri dosyaların tamamı, mevcudat tanımının içine giriyor.

Burada belki şu sorular aklınıza takılıyor olabilir: Senaryo, storyboard, konsept çizimleri gibi unsurlar niçin mevcudat içinde değil?

Bunun temel bir sebebi var: Nihai işte, yani herkesin seyredeceği o son animasyonda ne senaryo, ne storyboard, ne konsept çizimleri, son tüketici tarafından doğrudan tecrübe edilmiyor. Ben, böyle bir çizgiyle ayırmayı tercih ediyorum: nihai tüketici tarafından aracısız olarak tecrübe edilen her şey, mevcudatlara dahil, geri kalan her şey hariç.

Mevcudat Yönetimi Nedir?

Mevcudatın ne olduğunu dilim döndüğünce açıklamaya çalıştım. İzin verirseniz, mevcudat yönetiminin ne olduğunu açıklayarak devam edeyim:

Mevcudat yönetimi, Wikipedia’dan uyarladığım yakışıklı bir tanımla) tüm mevcudatların, etkin bir şekilde, oluşturulması, konuşlandırılması, bakımının sağlanması, yükseltilmesi ve gerekli durumlarda ortadan kaldırılması faaliyetlerinin tümü.

Yani, animasyon temelinde düşünecek olursak, örneğin, o güzel sahnenin dekorlarının çizilmesi, çizimlerin sahne haline getirilmesi, bu sırada çizimlerdeki değişikliklerin takip edilerek sahne kompozisyonlarının en güncel halde tutulması, eklerin yapılması ve bazen nihai animasyona dahil edilmeyecek çizimlerin proje ağacından çıkarılması gibi düşünülebilir.


Klasör ve İsimlendirme Sistemi

Şüphesiz, mevcudat yönetiminde en önemli hususlardan biri klasörleme, yani klasör ağaç yapısının düzgünce kurgulanması. Bu yapı öyle bir oluşturulmalı ki hem merkezi olmalı, hem herkes aradığı her şeyi kısa sürede bulabilmeli, hem mevcudatlar birden fazla yerde bulunmamalı.

Ben bu meseleleri odağa alarak şu şekilde bir klasörleme sistemi oluşturdum:

Yukarıda görebileceğiniz sistemin şu tarz artıları mevcut:

• Mevcudatları kullanım yeri ve şekline göre kategoriliyor,
• Mümkün olan en az sayıda klasöre sahip,
• Proje içine aktarılacak dosyaları doğrudan ilgili klasörün kök dizininde bulmanızı sağlıyor,
• Bu sırada proje içine aktarılmayacak dosyaları, bir alt klasörde gözden gizliyor,
• Sistematik ve tekbiçimli bir dosya isimlendirme geleneğine sahip,

Fakat dikkat ettiniz mi? Burada versiyonlamayla ilgili hiçbir şey yok. Bu durumda her seferinde en güncel dosyayı, bir öncekinin üzerine yazıyorsak, bir hata, bir eksiklik, bir problem oluştuğu zaman, eski versiyonlara nasıl ulaşabiliyoruz?

Bu sorunun, benim öngörebildiğim, birbirinden ayrışmaktan ziyade beraber de çalışabilecek iki çözümü var:

1. Mevcudat geliştirme alanımızla, animasyon alanımızı ayrı tutacağız,
2. Merkezi yahut merkezi olmayan bir versiyon kontrol sistemi kullanacağız.

Mevcudat geliştirme alanı ile nihai animasyon alanını ayrı tutmak kendince çekici niteliklere sahip. Ve esasen çok makul bir şey olmakla beraber büyük projelerde, mevcudat geliştirme alanından nihai alanımıza el ile taşıma yapmamız çok da mümkün değil. Zira iş hızla çok karmaşık bir hale geliyor. Bu süreci otomatize etmek için bağımlılık yönetim aracı kullanma imkanınız var ki mümkünse bu tarz bir altyapı kurmak işinize yarayacaktır.

Fakat, bir versiyon kontrol sistemi kurarak işimizi inanılmaz kolaylaştırabiliriz. Peki bu nasıl olacak?


Versiyon kontrol sistemleri, yazılım geliştiricilerinin uzunca süredir kullandıkları bir konsept. Versiyon kontrolü dediğimiz şey, kısaca, dosyalarda gerçekleştirilen değişikliklerin takibi ve yönetimi işi. Versiyon kontrol sistemi de basitçe bu işi gerçekleştiren sistemlerdir.

Bu tarz sistemlerin kullanımı, animasyon mevcudatlarınızın ve tabii proje dosyalarınızın her zaman en güncel hallerinde korunmasını, gerektiği zaman versiyonlar arasında karşılaştırma yapmayı, değişiklikleri geri almayı sağlar. Özellikle Git gibi dağıtılmış versiyon kontrol sistemleri, çok kişilik ekiplerde, tüm üyelerin kendi dosya versiyonlarına ve çalışma dallarına sahip olabilmesine ve bu versiyonların merkezi bir noktada birleştirilebilmesine izin veriyor.

Bu tarz bir sistemi kullanmanız, çok kişinin çalıştığı ve (şelale sistemi gibi) ardışık yönetilmeyen projelerde işlerinizi çok kolaylaştıracaktır. Zira farklı birimler, farklı görevler üzerinde eşgüdümlü olarak çalışırken, özellikle tahsis edilmiş bir proje yöneticisi veya mevcudat yöneticisi yoksa, mevcudatların yönetimi ciddi sorunlar çıkarmaya başlıyor.

Versiyon kontrol sistemleri, normal şartlarda, daha ziyade kodlama için geliştirilmiş bir araç olmasına rağmen tasarımcılar için alternatifler mevcut. Fakat bu alternatiflerin hiçbiri, kullanım kolaylığı dışında bir geliştirme sağlamıyor. Dolayısıyla ücretli ve başkasının kontrolünde bir “tasarımcı” versiyon kontrol sistemi yerine, ücretsiz ve kendi kontrolümüz altında yazılımcı sistemleri çok daha makul olmaya başlıyor. Özellikle kendi tesisinizde yer alan sunuculara açık kaynak kodlu versiyon takip sistemi kurarak, hem yükleme indirme sürelerinizi kısaltabilir, hem de veri güvenliğinizi garanti altına alabilirsiniz.

Peki bu tarz bir sistem oturtmak için neler gerek?


Araç Gereç Seti

Doğrudan “şu gerek” demek zor. Zira her ekibin iş akışı, proje yönetimi ve sistemi farklı. Hepimiz bilgimiz, görgümüz, fikrimiz, ihtiyaçlarımız ve isteklerimiz çerçevesinde kendi sistemlerimizi geliştiriyoruz. Ben, bilgim dahilindeki araçları sizinle paylaşayım, siz ihtiyaçlarınız doğrultusunda bu araçlardan kendinize bir gereç zinciri oluşturun. Başlayalım:

Sunucu

Tesis sınırlarınız içinde bulunan yakışıklı bir sunucu. İyi özellikli bir şey kurgularsanız, hem versiyon kontrolünüz için, hem dosya sunucusu olarak, hem de render çiftliği, proje yönetim, müşteri ilişkileri ve içerik yönetim gibi sistemlerinizi bir kalemde çözebilirsiniz. Bir kaç TB’lik harici sabit disk takılmış bir RaspberryPi ile 32 GB hafızalı, çok sayıda sabit disk içeren bir canavar arasında geniş bir skalanız var. Dediğim gibi, tamamen ihtiyaçlarınız ve isteklerinizle alakalı.

Hizmet Olarak Versiyon Kontrol Sistemi

Hizmet olarak yazılım şeklinde bir versiyon kontrol sistemi kullanabilirsiniz. Bu tarz bir şey kullanacak olursanız, sunucu kurmanız, barındırmanız gerekmez. Fakat bu tarz hizmetler, doğal olarak, genelde ücretlidir. Sunucunuz tesisinizde bulunmadığı için ve Türkiye’deki internet hızları da malumunuz olduğu üzere pek tavsiye etmem. Fakat illa kullanacağız diyorsanız, GitHub veya BitBucket tavsiye ediyorum. GitHub, isminden de anlaşılabileceği üzere, yalnızca Git ile çalışıyor, BitBucket ise hem Git hem de Mercurial destekliyor.

Sunucunuzdaki Versiyon Kontrol Sistemi

Tesisinizdeki sunucunuza kurabileceğiniz versiyon kontrol sistemleri, yerel ağ hızından ve bilgi güvenliğinden sonuna kadar faydalanabilmenizi sağlar. Bu tarz bir yöntem izlemek istiyorsanız, bir kaç alternatifiniz var. Örneğin GitHub’ın tüm gücünü sunucularınıza getiren GitHub Enterprise kullanabilirsiniz. Yüksek ücretli bir şey bizi bozar diyorsanız, ilk on kullanıcı için yalnızca 10 dolarlık ücreti olan Atlassian’ın Stash'ını deneyebilirsiniz. Açık kaynak kodu sizin için olmazsa olmazlardansa GitLab veya GitBucket kullanabilirsiniz.

İstemci

Bir şekilde bir versiyon kontrol sisteminiz var diyelim. Şimdi bu versiyon kontrol sistemiyle sizin bilgisayarınız arasında çift yönlü iletişim kuracak bir araca ihtiyacınız var. İşte istemciler burada devreye giriyor. Ciddi ağabeyler, doğal olarak bu işi tamamen terminalden `git -c diff.mnemonicprefix=false -c core.quotepath=false push -v — tags origin master:master` gibi çoğumuza anlamsız gelen bir takım kodlarla çözebiliyor olsa da grafik arayüze ihtiyaç duyanlar da var. Bu alanda alternatifiniz az değil. Ben, kullanım kolaylığı dolayısıyla GitHub for Windows veya işletim sisteminize göre GitHub for Mac tavsiye ediyorum. Fakat daha güçlü, buna rağmen kullanımı kolay bir alternatif arıyorsanız, Atlassian’ın SourceTree'sinden şaşmamanız gerek diye düşünüyorum.


Üvey Evladı Sahiplenme Zamanı

Animasyonların unutulmuş üvey evladı konumundaki mevcudat yönetimini size tanıtmak, nasıl sahiplenebileceğinizi göstermek için bir girizgah yapmaya çalıştım. Umarım benim bu projeden aldığım dersler, sizin de bir işinize yarar.

Anlaşılmayan, eksik kalmış olduğunu düşündüğünüz, aklınıza takılan bir şeyler olursa, sormaktan çekinmeyin. Ve lütfen unutmayın: Siz bu yazıdan bir şeyler öğrendiyseniz, başkaları da öğrenebilir. Paylaşmanızı rica ederim. Sevimli kedi videoları izlemek yerine bu yazıyı okumak için zaman ayırdığınız için teşekkürler.

Like what you read? Give Gökçe Ozan Toptaş a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.