monogame

Unity’den Monogame’e Yolculuk

Yeni bir oyun fikrini prototiplerken fark ettim; Unity’yi sadece Play-Stop ve prefab oluşturmak için kullanıyorum. Geri kalan tüm işleri kod yazarak hallediyorum. Öncelikle belirtmek isterim, Unity’i seviyorum. Kullanmaktan keyif alıyorum ve devam edeceğim. Bu yazıyı Unity’i kötülemek ya da alternatifleri ile sidik yarıştırmak için yazmıyorum. Sürecimin nasıl geliştiğini paylaşmak istedim.

Elbette geliştirdiğim oyunun prototipten çıkıp, gerçek bir oyuna dönüşmesi söz konusu olursa, Unity’nin diğer nimetlerinden bolca yararlanacağım. UI ve özellikle animasyon ihtiyacım oluştukça Unity hayatı kolaylaştıracak. Ancak hazırladığım prototipin ihtiyaçlarını düşününce, bu kolaylığın zorunluluk olmadığına karar verdim. Tüm bunları open source araçlarla çözmek mümkün. Tüm bunlara Unity’de yaşadığım sorunlar dahil olunca, alternatiflere “tekrar” bakma ihtiyacı hissettim.

Kısaca Unity’de yaşadığım, aklımda kalan sorunları paylaşmak istiyorum. Tekrar belirteyim, Unity’i kötülemek gibi bir niyetim yok. Kullanıyorum ve kullanmaya devam edeceğim.

iOS build ebadı ve yeni splash screen

Unity’nin özellikle iOS için çıkarttığı build ebadının büyük oluşu ve yeni sürüm ile gelen beyaz üstü “Personal Edition” yazısı beni oldukça rahatsız etti.

Build ebadı anlaşılır bir durum; 32bit ve 64bit kod’lar ayrı ayrı tutuluyor. Bu durum build ebadını ikiye katlıyor. Ancak henüz prototip ve sadece uyduruk birkaç(küçük ebatlı, toplam 5.8mb) görsel kullanırken 100mb bir bundle görmek rahatsız edici. Unity’nin devasa Monobehaviour’ı ve arkasındaki karanlık bulutun içersinde nelerin pakete dahil edildiği bir gizem. Bir sürü gereksiz ve oyununuzun ihtiyacı olmayan kütüphanenin dahil edildiği kesin. IL2CPP ve Mono build arasında çok büyük fark var(neredeyse iki katı). IL2CPP’de performansın daha iyi olduğu düşünülürse kocaman bir pakete mahkumsunuz.

Unity’nin logosunun görünmesine elbette karşı değilim. Eski “Build with Unity” güzel bir tercihti. Oyun sever bu tür logo görmeye alışık. Unity’e para ödemiyorum, “Buid with Unity” yazısının yer almasından keyif duyarım.  Ama yeni splash screen açıkca “hobi işi”, “amatör işi” diye bağırması için düşünülmüş. Beyaz, üstüne siyah. Net okunur. Alt mesaj ise; nitelikli görünmek istiyorsan Unity’i satın alırsın. Ticari bakış açısı ile haklılar. Tartışmaya gerek yok. Ama malesef benim bütçem buna uygun değil. Fikriniz, oyununuz kötü olsa bile, bir ürünü pazarlarken o ürünü talep edecek kişilere ilk göstereceğiniz şeyin “Pirsonıl Edişın”  olmasını istemezsiniz. Tanıtım, reklam kurallarına aykırıdır.

 

splashscreenpersonallandscape

 

2D Araçlar ve Unity

Ben ağırlıklı olarak 2D oyunların üretimi ile ilgilenmeyi seviyorum. Unity, 2D geliştirme konusunda gerçekten çok geriden ve yavaş ilerliyor. Örnek olarak yıllardır 2D tilemap, Atlas yaratma ve 9-slice sprite’ları entegre etmemeleri/etmek istememeleri verilebilir. Belki bu işlevleri yapan, asset store’da satılan pek çok uygulamadan para kazandıkları için, belki VR’ın çıkış yaptığı bir dünyada öncelik 2D olmadığı için, belki sanıldığının aksine yeterince 2D oyun geliştirilmediği için. Bilemeyiz… Ancak 5.5 sürümünde bile roadmap’de görünmüyorlar. Hala deneysel araçlar olarak listelenmişler ve durumları belirsiz.

Unity’nin kullandığı ve malesef bağımlı hale geldiği Mono 3.5 ve Monodevelop’dan bahsetmiyorum bile. Mono 4.6, C#6 çıktı. Hatta Monodevelop oldu sana Xamarin Studio. Aklı olan IDE olarak Visual Studio Code, Sublime+Omnisharp ya da Xamarin Studio kullanıyordur. Bu IDE’lerin hepsi Debug için yöntem sunuyor. Yani Monodevelop artık bir çöp.

Bug mı dedin, dur bakayım!

Unity’de ki bug’lardan ve +0.0.1 sürüm güncellemesi için 6GB indirmekten ve her indirdiğimde bir şeylerin bozulmuş olduğunu görmekten sıkıldım. Şimdi kullandığım 5.4.0 sürümünde “Game” penceresi bug’lı (Macos). Belirsiz bir süre sonra Game penceresi içeriğiniz kayboluyor ve ancak yanında başka pencere varsa ona gidip geri gelerek düzelmesini sağlayabiliyorsunuz.

 

unity_crazy

 

Detayını burada görebilirsiniz. Anladığım kadarıyla bu durum sadece MacOs’a özel. Yani durum kötü. Mac’ler kapalı donanıma sahip, pc gibi donanım çeşitliliği olmayan cihazlar. Üstüne üstlük neredeyse tüm yazılımlar ve kütüphaneler standart. Böyle bir ekosistemde yazılımınızın(Unity) en kritik ve göz önündeki unsuru sorun yaratıyorsa gerçekten oturup düşünmek gerekir.

Yeni oyun geliştiriciler ve kontrolü yeniden eline almak isteyenler

Unity, Unreal gibi high-level oyun motorlarının özellikle yeni geliştiriciyi körleştirdiğini düşünüyorum. Büyük oyun motorları kontrolü oyun geliştiriciye devretmemeye kararlılar. Bu durum zaten deneyimli olan geliştiriciler için bir sorun değil, tam tersi nimet. Ancak yeni başlayanlar için büyük bir eksiklik. Pek çok Unity oyun geliştiricisinin Asset Store‘da satılan eklentilerini kullandığı, Nez framework’ünün de geliştiricisi Prime31‘in bu konuda bence çok doğru bir yazısı var. Okumanızı tavsiye ederim. Yazıdan alıntılayarak ve kendi görüşlerimi ekleyerek toparlamak istiyorum.

Kişisel fikrim, önüne gelenin bu oyun motorlarını indirip, basit tutorial okuyup, hazır malzemeler ile oyun yapmalarının o kişilere hiçbir şey katmadığı yönünde. Yanlış anlaşılmasın, buna karşı değilim. Herkes yapsın, harika. Ama bu uzmanlığa giden yol değil. Hobi bile sayılmaz. Benim kişisel deneyimlerimden çıkardığım; her zaman “alaylı” olmanın, usta-çırak ilişkisinin aslında ne kadar değerli olduğu yönünde. Kısaca; emeklemeden ayağa kalmanın deneyim eksikliği.

Bu durum, yeni oyun geliştiricilerin keyifli bir tatmin ile arkadaşlarına gösterip “oyun yaptım lean” demelerinden öteye gidemiyor. Kötü mü? Hayır. Ancak neyi neden yaptıklarını bilmiyorlar/öğrenmiyorlar. Sadece öyle olduğu, öyle yapmaları söylendiği için yapıyorlar. Yine kişisel fikrim; bu konuya sadece “oyun geliştirici” adı altında developerlar dahil değil. Ses tasarımcıları, oyun geliştirme/tasarlama eğitmenleri, görsel tasarımcılar ve oyun tasarımcıları(hikaye, fikir vb) da dahil. Bu insanların işlerini iyi yapabilmeleri için teknik pek çok konuya hakim olmaları zorunlu. Unity’de sadece sürükleyip bırakarak ne öğrenebilir veya öğretebilirler! Ülkemizde görsel ya da hikayesel oyun tasarımcısı yok denecek kadar az. Böyle giderse çok çok yavaş bir hızla artacak. Şimdilik bol miktarda çöp üretmeye devam ediyoruz.

Benzer bir durum basılı medyadan dijital medyaya geçerken yaşanmıştı. Bu sürece bir reklam ajansında çalışırken tanık olduğum için gözlemleme imkanım oldu. 2000’li yılların başında, basılı medya/malzeme ile uğraşan insanların yaptıkları işlerin(genellikle web siteleri) çoğu A4 kağıdı doldurmaya çalışmaktı. Adamlara browser’ın sabit ebatlı olmadığını, genişleyebildiğini, tasarımın esnek olması gerektiğini ya da neden renk geçişleri kullanmaması, özel font kullanmaması gerektiği gibi konular anlatabilmek, anlatmayı becersen bile gerçekten anlamasını beklemek imkansızdı. Onlar kağıda dokunmuşlar, gramajını tartmışlar, mürekkebi koklamışlar, rengini görmüşler ve bunun için kendilerini geliştirmişlerdi. CMYK dünyasından RGB’ye geçiş bu yüzden sancılı oldu. Ne zaman yeni nesil hem en azından html+css+js yazmaya başlayıp hem de tasarım üretmeye başladı, o zaman işler yoluna girdi.

Tabi ülkemizde hala bu sorun mevcut: koca koca tasarımcılar, üreteceği/tasarlayacağı malzemenin hamurunu “bilmesemde” olur düşüncesindeler. Durum bu olunca, görsel tasarım dünyamız gelişemiyor ve kendine ait bir yer/kültür edinemiyor. Maalesef, yabancı tasarımcıların dijital dünyanın yeni hamurunu öğrenerek geliştirdikleri araçları kullanarak iş yapmaya ve nitelikliymiş gibi görünmeye devam ediyorlar. Bir türlü kontrolü ellerine alamadıkları için çok az alanda başarılı olabiliyorlar, yenilik getiremiyor ve kendileri dışında kimseye katkı sağlayamıyorlar.

Sonuç

Öyle ciddi bir sonuç yok 🙂  Kişisel olarak, “du ben şu diğer oyun motorlarına bi bakayım” ile sonuçlandı. Zaman zaman alternatiflere bakmak, kurcalamak bir şey kaybettirmez. Yeni şeyler öğrenmek güzel.

 

nez-logo-black

 

Tüm bunlar bir araya gelince ister istemez arayışa başladım. Arayışımın şimdilik durağı Monogame ve Nez ikilisi oldu. Neden bunları seçtiğimi, ne gibi mevcut sorunları olduğunu ayrı bir yazıda anlatmaya çalışacağım. Hatta vakit bulabilirsem Nez ile ilgili tutorial videosu hazırlamak istiyorum, belki birilerine ufak bir faydası olur…

Selim Anaç

Selim Anaç

More than 20 years of working experience at digital products as games/advergames, mobile & desktop apps and online software production. Multi-discipline software developer, team leader. A video game addict.