Sunday, January 4, 2015

GGJ tavsiyeleri

Oyun yapımcısı arkadaş ortamımızda geçen gün Uğurcan Orçun bir öneri ortaya koydu, "GGJ veteranları olarak jam tavsiyeleri verelim" diye, biz de bu fikri beğendik.

Arkadaşlarımın verdiği tavsiye genel olarak "Jam'i yarışma gibi görmeyin, eğlencenize bakın" şeklinde. Ben hep kazanma hırsına sahip bir insan olarak, başarılı jam oyunu yapmakla ilgili tavsiyeler vereceğim (Şu ana kadar ben GGJ ödülü aldım mı? Hayır. Ama bazı önemli kısımları çok iyi biliyorum). Benim odaklanacağım şey jüriyi, oyuncuları etkilemek. Oynanan, sevilen bir oyun yapmak.

Mad World'ü 2014 GGJ'sinde bu vereceğim tavsiyeler doğrultusunda geliştirdik.

İlk gün fikirler ve eğitim içindir.
GGJ cuma akşamı başlar. Cuma gününüz muhtemelen oyun fikri aramakla geçecek. Cuma günü oyununuz için tek satır kod yazamamış olmak sizi endişelendirmesin, bu gayet doğal bir süreç. İlk gününüzü beyin fırtınası yaparak geçirin. Eğer yeni bir dil veya oyun motoru kullanacaksanız, onun için kendinizi eğitmeniz de ilk gün olacak. Gece oyun fikrinin temellerini bulduktan sonra yatıp uyuyun. Enerjinizi, oyunun fikrinin olgun seviyeye geldiği aşamaya (yani sonraki günlere) saklayın.

Basit fikirden gidin.
48 saat bir oyun yapmak için kısa bir süre. Kompleks bir oyun yapmaktan (mesela open world bir strateji oyunundan) kaçının. Klasik bir oyun janrının temel kurallarını alıp değişiklik yapmakta utanılacak bir şey yok (hatta belki de temaya uydurabildiğiniz ve süsleyebildiğiniz sürece, klasik fikri olduğu gibi almakta da). Mad World karmaşıklık-basitlik arasında güzel bir dengedeydi, iki deneyimli programcı olarak oyunu zar zor da olsa yetiştirdik.

Basit ama bütünlük sahibi bir oyun, 4 kat daha karmaşık ama daha çeyreği bitmiş bir oyuna göre çok daha üstündür.

Minimal içerik
Dediğim gibi, 48 saat az bir süre. Hem kaliteli, hem de çok sayıda içeriği üretmek oldukça zor. Nitelik ve nicelik arasında bir seçim yapmak gerekirse niteliği seçin. Oyundaki evde az sayıda eşya olsun. Gerek jüri, gerekse de oradaki oyuncular genel olarak oyununuza 1-2 dakikadan fazla zaman ayırmayacak, o 1-2 dakika kaliteli olsun.

Uzun bir video introyu kimse izlemeyecek.
Oyununuzun güzel bir arkaplan hikayesi olabilir. Ama jürinin/oyuncunun yapmak istediği şey direkt sizin oyununuza dalmak olacak. İlk katıldığım jamlerden birisinde ekibimde gayet güzel bir video hazırlanmıştı, oynayan kimse o videoyu izlemedi. Vaktinizi oyunun kendisine ayırın, introya değil.



"Hikaye anlatımını tamamen es geçin" demiyorum. Eğer sıradışı bir hikayeniz varsa (oyundaki karakterin çılgın bilimadamı tarafından yaratılması sıradışı bir hikaye değil), oyunun mekaniği bu hikayeyle bağlantılıysa bunu KISACA anlatın. Mad World ve Renatus bence güzel örnekler. Mad World'de sadece iki-üç cümleyle hikayeyi anlattık. Renatus'ta 4 tane görsel ve altındaki yazılarla yüm hikayeyi anlattık (biraz Poe edebiyatı oldu, daha sadesi daha kolay okunabilir). Ve dediğim gibi; görselciniz asıl vaktini oyun içine ayırsın, eğer oyunun içi yeterince güzel gözüküyorsa Renatus'taki gibi basit sahneler çizebilir. Ama 1 dakikalık video yapmakla uğraşmayın.

Evrimsel geliştirme süreci
Yazılım geliştirme süreci olarak evrimsel yoldan gidin. Yani ilk önce elinizde o oyunun çok ilkel bir hali olsun (WASD ile etrafta gezinen tavşan), oyuna özellikleri yavaş yavaş ekleyin. Buradaki kritik nokta elinizde oynanabilir bir ürünün erken bir aşamada elinizde olması. Eğer "Ben 40 saat boyunca multiplayer'ı kodlarım, Ahmet 40 saat boyunca fiziği kodlar, Mehmet de animasyonla ilgilenir, sonra son saatlerde tüm oyunu birleştiririz" derseniz başarısızlık büyük ihtimal, o şeyler bir araya zamanında gelemez. Mucize gerçekleştirip son saatte her şeyi gerçekten de birleştirmeyi başarsanız bile, elinizdeki ürünü keyifli bir oyuna dönüştürmeniz için elinizde yeterli vakit kalmayacak. Evrimsel süreçte ise oyunu neyin keyifli kılacağını, neyin sıkıcı olduğunu daha ilk aşamalarda görebilirsiniz.

Her şeyden önemlisi, eğer oyununuzu yetiştiremezseniz, o erken versiyonu halen oyun olarak sunma imkanınız olur. O 40 saat multiplayer modelinde ise görselcinizin çizdiği güzel görsellerin hiç gösterilememesi (çünkü ortada oynanacak bir şey olmaması) yüksek ihtimal. Görselcinizi boşu boşuna uğraştırmış olmayın.

Yüksek seviye dil/teknoloji kullanın.
 Low-level programlamayı seviyorsanız oyununuzu C++ ile yapmak isteyebilirsiniz. Her algoritmayı kendiniz baştan yazmak isteyeceksiniz. Bu sefer, Unity'de veya Flash'ta 1-2 saatte yapılacak işin peşinde 1 gün boyunca koşmanız gerekebilir. Eğer amacınız "ben C++'ı iyice öğreneyim", "önemli olan programcı egom" diyorsanız low-level takılmaya devam edin, ama amacınız bu kısa sürede keyifli bir oyun yapmaksa yüksek seviye bir teknoloji kullanın. Oyun motoru kullanmaktan, öğrenmekten çekinmeyin.

Renatus'u ilk başta C++'la yapıyorduk. Sonra çok zaman aldığını görünce Flash'a (daha doğrusu FlashPunk'a) geçtik, çok daha hızlı ilerlemeye başladık. En başta doğru dil seçimini yapsaydık ortaya daha güzel bir oyun çıkabilirdi. Ben hem Unity'yi, hem de Flash'ı GGJ sayesinde öğrendim, siz de C++'ın dışında yeni bir dili, oyun motoru öğrenmekten korkmayın.

Az sayıda level
 Jüri/oyuncular oyuna 1-2 dakikadan fazla bakmayacak. Eğer öncelikli amacınız jüri ve oradaki oyuncuları etkilemek değil de uzun bir oyun yapmaksa, jam'den sonra zaten bu oyunu geliştirip öyle download'a koyabilirsiniz. Ama yarışma için yapıyorsanız, bu 1-2 dakika sınırını unutmayın. Oynanmayacak, skip edilecek bir level'a değil de, o ilk level'da kaliteli bir deneyim sunmaya ayırın vaktinizi.

Verdiğim tüm tavsiyeler tartışmaya açıktır.

No comments: