Ders 2 – Bölüm 2
Game Maker’ı Tanımaya Devam
Merhaba. Bu bölümde çok kapsamlı 2 konu olan Obje oluşturma ve Oda oluşturma panellerini inceleyeceğiz. Başlıyoruz :D.
Create Object : Çok önemlidir kendisi. Oyunda gördüğünüz arkaplan haricinde her şey bir objenin kopyasıdır. Burada bu ayrımı kavramak önemlidir. Oyunda diyelim ki bir evdesiniz ve evde 2 tane aynı masa var, ama tıpatıp aynı masa. Bu 2 masa, oyunda; oyun tasarımı terimleri içinde kopya olarak geçer. Kopya derken başkasından çalınmış bir şey değil. Bunlar orijinal objenin kopyası olduğu için kopya denir onlara. Peki orijinal obje nerededir? Güzel soru, orijinal nesne oyunda hiçbir yerde değildir! Orijinal nesne sadece 1 tanedir ve o da oyunu tasarladığımız Game Maker’ın kaynak dosyaları içindedir. Bu kaynak dosyayı oyuna koyduğunuzda oyundaki parça kopya olarak adlandırılır. Ancak bu oyun terminolojisinde bir terimdir, normalde biz o nesneye masa deriz oyunda :D. Fark umarım anlaşılmıştır; Game Maker’daki kaynak dosyasının adı objedir ve bir objenin haritadaki durumu da kopya olarak adlandırılır. İşte Create Object ‘de bu çok meşhur objeleri oluşturmaya yarar. Hemen inceleyelim resmi…
Gördüğünüz üzere burası epey karışık duran ama alıştıkça bebelere balon olan, oyun tasarlarken de en çok ter dökeceğiniz yer (Zorlanmak değil, zaman harcamak ter döktürecek.). Öncelikle her objenin kendisinin ne olduğunu uzaktan yakından belli eden bir adı olmalı, yoksa burada çok gereksiz yere fazladan zaman harcarsınız. Sprite kısmında objemizin alacağı görseli seçiyoruz. Şimdi önemli olan başka bir husus geldi. Sprite ‘ler ile Object ‘ler arasındaki ilişki. Sprite ‘ler Ders 2 – Bölüm 1’de de öğrendiğiniz üzere oyundaki tüm görselliği barındırdığımız dosyalardır. Ancak Sprite ‘leri tek başına bir oyunda hiçbir şekilde kullanamazsınız. Game Maker buna izin vermez. Onun yerine object dediğimiz objeler oluşturur ve sprite ‘leri objelere aktararak onlar vasıtasıyla oyunda gösteririz. Yani bir obje oyunda hiçbir görevde olmasa bile, hiçbir işlevi yerine getirmese bile Sprite ’ler için kullanılır ve böyle boş objeler büyük projelerde bolca vardır. Sprite ’den objemizin görselini de seçtik (Bu görsel Create Sprite ile çoktan oluşturulmuş bir görsel olmalı. Tanımlanmış görsel olmadan objeye direk bir görsel atayamayız bir Windows klasöründen.). Şimdi sırada Visible ve Solid var. Visible tiki objenin oyunda gözüküp gözükmeyeceğini belirtmemizi sağlar ve tik varsa obje oyunda gözükür. Ama bir objenin gözükürlüğü oyun sırasında kodlar yardımıyla değiştirilebilir. Mesela bir büyücüyle savaşırken büyücü büyü yapıp kendini görünmez yapar ve görünmezken bizimle savaşmaya devam eder, biz de kılıcımızı rasgele sallayıp ona vurmaya çalışırız. Bu gelişmiş bir kullanım alanıdır işte. Solid ise objemizin sert ve sabit bir cisim olup olmadığını belirtmemize yarar. Tıpkı bir duvar gibi. Duvarlarda solid seçeneği seçili olmalıdır. Bu o objeye çeşitli aksiyonları eklerken fizik olaylarında gerçekçilik katılmasını sağlar. Depth, derinlik demektir ve oyundaki görevi de aynen böyledir. Büyük derinliğe sahip bir obje daha küçük derinliğe sahip bir objenin arkasında yer alır. Mesela bir araba yarışı oyununda araba ile giderken bir üst geçidin altından geçiyorsunuz. Burada araba üst geçidin altından geçerken gözükmez ve biz üst geçidi görürüz o süre zarfında. İşte burada arabanın derinliği üst geçidin derinliğinden fazladır. Yani arabanın Depth değeri 1 ise üst geçidin ki 0 olabilir, veya -5,-6… Persistant tiki objenin bir Room’dan (Yani mekan; bunlara artık oda diyeceğim.) başka odaya geçince aynen odada kalmasını sağlar ve yok olmasını engeller. Ama genelde çok az ihtiyaç duyulur ve hatalara çok açıktır. Parent ve Mask ise bizim kullanmayacağımız özelliklerdir. Ancak kısaca değinirsek Parent ile seçilen objenin özellikleri bir takım ayarlamalar sonucu objemize aktarılabilir. Mask ise temas yüzeyini elle belirttiğimiz objeleri seçmeye yarar ki bilmeden büyük projelerinizde denemeyin. Show Information’da objenin sahip olduğu tüm özellikleri görmemize yarar. Events kısmı ve Actions kısmı önemli olan kısımlardır. Bunlar objemize belirlediğimiz görevler yüklerler. Events kısmında vereceğimiz bir görevin ne zaman gerçekleşeceğini ayarlarız (Mesela silahımızla ateş etmek için farenin sol tuşuna basıldığında, yukarı hareket etmek için yukarı ok tuşuna basıldığında vb.). Actions kısmında ise Events kısmındaki olay gerçekleştiğinde yapılacak olan işlemleri, aksiyonları belirleriz. Burada önemli olan bir Event ‘de birden çok işlem yapılacaksa yapılacak Action ‘ları sırasıyla dizmeliyiz. İlk yapılacak işlem ilk sırada, son yapılacak işlem son sırada, aradakiler de oluşma sırasına göre dizilmelidir. Bir Event eklemek için Add Event’e tıklarız, silmek için ise Delete’ye. Bir Event’i değiştirmek için de Change kullanılır. Bir aksiyon eklemek için de sağ taraftaki sekmelerden ilgili sekme seçilir ve aksiyon Mouse ile basılı tutularak Actions kısmına sürüklenir. Bu kısımları en iyi oyun tasarlarken öğreneceksiniz, şu an kafanızda kocaman soru işaretleri olması normal :).
Create Room : Oyunumuzun içinde geçeceği mekanları oluşturmaya yarar. Bu mekanlara oda adı verilir ve iyi bir mekan oyuncuyu içine çeken bir oyuna katkı sağlar. Resmi inceleyelim…
Burada sağ tarafta odayı incelememizi sağlayan kısım yer alır. Burada dilediğimizce bölümü gezip dilediğimiz kopyaları (Objelerin haritalardaki halleri) silebiliriz. Önce basit şeylerden başlamak istiyorum. Haritadaki ızgaraların boyutlarını ayarlamak için yukarıdaki Snap X ve Snap Y değerlerini değiştirebilirsiniz. Bu ne işe yarar? Şu işe yarar ki eğer bir obje koyarken ALT tuşuna basılı tutmazsanız obje ızgaraların sol üst köşesinde, orijin noktası (Bkz. Ders2-Bölüm1-Create Sprite) orayı merkez alacak şekilde yerleştirilir. Boyutlarını ayarlamak kopyayı istediğiniz yere koymanızı sağlar. Mevcut bir objeyi hareket ettirmek için CTRL tuşu basılıyken objeye mouse’nin sol tuşuyla basılı tutulur ve obje oynatılır. Eğer bir objeden ardı ardına bir sürü yapacaksanız SHIFT tuşu basılı iken Mouse objenin konacağı yerlerde gezdirilir. Sol altta Delete Underlying tikini fark etmişsinizdir. Bunun anlamı eğer bir objeyi diğerinin üzerine koyarsanız alttakinin silinmesidir. Tiki kaldırırsanız altta kalacak obje silinmez. Yukarıdaki () butonu ızgaraları düz değil de yatay yapmaya yarar.Kilit butonları ise (
) çok kullanışlıdır ve soldaki kilit tüm objeleri kilitler. Yani kilitlemeden önce haritada olan herhangi bir objenin silinemez, taşınamaz, üstüne obje konduğunda yok olamaz olmasını sağlar. Sağdaki kilit ise tüm objelerin tekrar değiştirilebilir, silinebilir olmasını sağlar. (
) butonları sırasıyla o anki haritayı kaydetmeyi, son yapılan işlemi geri almayı, haritadaki tüm objelerin silinmesini ve son olarak da ok işareti de haritadaki tüm objelerin girilen X ve Y koordinatları miktarınca hareket etmesini sağlar. En sağdaki büyüteç ise haritada nelerin gösterilip nelerin gösterilmeyeceğini belirlemeye yarar.
Gelelim Settings sekmesine. Buradan Name kısmıyla odaya isim veriyoruz ve Caption for the Room kısmıyla da oyunda o harita açıkken eğer oyun tam ekran çalışmıyorsa başlıkta yazacak şeyi belirler. Width ve Height ise odanın ebatlarını ayarlamamızı sağlar. Speed ise oda hızı olup normal oda hızı 30 ‘dur. Eğer 15 yaparsanız oyun bu odaya gelince yarı hızda çalışır. Persistant tiki ise odadaki objelerin pozisyonlarının kaydedilmesini sağlar. Yani eğer oyununuzda menü sistemi olacaksa menüden sonra “Devam” butonuna bastığınızda oyundaki her şey en son bıraktığınız gibi devam eder. Eğer tik koymazsanız oda ilk kurulduğu haldeki gibi baştan başlar. Creation Code ise bizim ihtiyacımız olmayan bir şeydir. Oda ilk açıldığında yapılacakları kodla belirtmemizi sağlar.
Tiles sekmesine geçince ise arkaplan dosyalarınız arasında tile arkaplanı olarak adlandırılan özel arkaplan yoksa bir şey anlayamazsınız. Burada işleyişi aşağıdaki örnek Tile arkaplanla açıklayayım.
Bu arkaplan Tiles arkaplan olarak adlandırılan özel bir arkaplandır ve şu haliyle hiçbir anlamı da yoktur. Ancak fark ederseniz resimdeki her parça eşit boyutlarda karelere bölünmüş, her parça. İşte burada kullanım şöyle ki önce Create Background (Bkz. Ders1-Bölüm1) ile bu arkaplanı kaynak dosyalarımıza ekliyoruz. Ardından “Use as Tile Set” seçeneğini seçip oradaki Tile width ve Tile height seçeneklerini ızgaralar arkaplandaki tüm karelere uyacak şekilde ayarlıyoruz. Örneği alttaki resimdedir.
Burada gördüğünüz gibi yukarıda verdiğim Tiles arkaplan yüklenmiş ve Use as tile set tiki işaretlenmiştir. Ardından deneme yanılma yoluyla her karenin 17 X 17 ebatlarında olduğu bulunmuştur. Bundan sonra yapılacak şey OK’a basmak ve oda oluşturma işine geri dönmek. Tekrar oda oluşturma ekranında Tiles sekmesine tıklayınca arkaplanımızın orada gözüktüğünü ve oradaki her bir karenin tek tek seçilip odaya yerleştirilebildiğini göreceksiniz. Ayrıca isterseniz SHIFT basılı iken birden çok kareyi seçebilirsiniz, işte bu işlem bu kadar basittir.
Gelelim backgrounds sekmesine. Burada göreceğiniz üzere bir odada toplam 8 tane farklı arkaplan kullanılabilir. Her birini seçip alttaki Foreground image seçeneğinin altından arkaplanı seçebilirsiniz. Üstteki Draw background color tiki alttaki Color’dan seçtiğiniz rengin arkaplan olmayan yerlerde uygulanmasını sağlar. Böylece boş yerlere dilediğiniz rengi uygulayabilirsiniz. Bir backgroundu seçtiğinizde Visible when room starts tikini kaldırırsanız arkaplan yok olur. Sonradan GML (Game Maker Language) ile tekrar görünür yapmak mümkündür. Foreground image seçeneği ise arkaplanın üzerindeki her şeyin üstüne geçip onları görünmez yapmasını sağlar. Nerede işe yarar? Örneğin arkaplanlarınızdan birisi bir uzay gemisi ise bu tik işaretlendiğinde altından arabayla geçerken arabamız görünmez ve bu da gerçekçilik sağlar. Alttaki X ve Y koordinatları arkaplanın duracağı koordinatları belirtir. Haritadaki herhangi bir noktanın koordinatını öğrenmek için farenizi istediğiniz bir yere getirin ve en alttaki küçük x ve y koordinatlarından o noktanın konumunu öğrenin. Tile Hor. ve Tile Vert. seçenekleri ise arkaplanın yatayda ve dikeyde kendisini sürekli tekrar etmesini sağlar. Ta ki odanın uçlarına ulaşana kadar. Stretch ise seçili arkaplanın odanın tamamını kaplayacak şekilde büyümesini sağlar, ama o arkaplanın kalitesi biraz bozulur. Hor. Speed ve Vert. Speed seçenekleri ise odanın yatayda ve dikeyde hızlarını belirler. Bu çok kullanışlıdır. Bir örnekle açıklayayım. Arabanızla yatay bir yolda giderken mafya sizi arabalarıyla bastı ve arabayı hem sürmek hem de mafyaya ateş etmek zorunda kaldınız. Burada arkaplanda yer alacak olan yol hep yataydır ve yolun ilerlediğimiz izlenimi uyandırması için sürekli sola doğru hareket etmesi gerekir. Bunu Hor. Speed i -1,-5 gibi “-“ li bir değer girerek yaparız. Yok yol sağa doğru gitsin istersek de değeri pozitif bir şey gireriz. Ama aynı zamanda yapmamız gereken şey yolun sürekli kendini tekrar etmesidir ve bu da Tile Hor. seçeneğini seçerek olur. Yoksa yol kendini tekrar etmez ve bir oyun bug’u oluşur (Araba bir süre sonra boşlukta ilerliyor gibi gözükür. Ya da çimende.). Çünkü yol biter. İşte bu yüzden Speed ile Tile seçenekleri genelde beraber kullanılır. Umarım burası da iyice anlaşılmıştır.
Son olarak da gelelim Views seçeneğine. Views bir oyunda birden çok ekranın işlemesini sağlar. Yani nedir bu? Nfs 2 SE oynayanlar bilir, oyun 2 kişilik oynayınca ekran yatayda 2’ye bölünür ve çok zevkli bir yarış oynanır. İşte Views ‘de tam olarak bu görevi görür. Özellikle 2 kişilik oyun yapacaksanız bir view 1. oyuncuyu izlerken, 2. view de 2. oyuncuyu izler. Views ‘in başka kullanım alanı da karakterimizi büyük bir yerde oynatıyorsak ekranın sürekli karakteri izlemesidir. Bir haritada 8 adet view kullanılabilir. Bunları etkinleştirmek için view lerden tekini seçip üstteki Enable of the use of Views’e tıklamak yeterlidir. Bunu kaç farklı ekran istiyorsak o kadar view için tekrarlarız. Yalnız şunu belirteyim, 1’den çok view oyunun hızını olumsuz etkiler ve view sayınız aşırı olursa oyunda bu yavaşlığı çok feci bir şekilde hissedersiniz. Benim tavsiyem en fazla 2 view kullanmanız. View’lerin başka bir kullanım alanı ise MiniMap’dır. Bir view’e tüm haritayı kapsatırsanız minimap elde edersiniz ve oyununuzu yavaşlatırsınız, çünkü tüm haritayı kapsamak sistemi çok zorlar. Ancak küçük haritalarda işleyişli olabilir. Bir view seçili iken Visible when room starts tikini seçerseniz o view’in oyuna dahil olmasını sağlarsınız, ama bunu seçmezseniz sonradan da GML ile bunu açmanız mümkün. View in room kısmında View’in nereyi görüntüleyeceği X ve Y olarak belirlenir ve bu view’in width ve height değerleri ile ebatları belirlenir. Port on Screen ise o view’in ekranınızda tam olarak nerede gözükeceğidir. Yani bir minimap için genelde ekranımızın sol alt kısmı tercih edilir. Görüntünün de ebatlarını değiştirmeniz mümkün. Asıl önemli olan konu ise “Object following” kısmı. Buradan seçtiğiniz bir objeyi view’in takip etmesini sağlarsınız. Hbor ve Vbor ile de ekranın kenarlarından obje ne kadar uzaktayken ekranın objeyi izleyeceği belirlenir. Özellikle views kısmını hızlı anlattım çünkü çok uzatmışım bu konuyu. Ayrıca özellikle views kısmı oyun yaparken kavranacak bir şeydir ve ben de bunu istiyorum. O yüzden burada lafı kesiyorum.
Umarım Ders 2 yararlı olmuştur ve Game Maker’da kaynak dosya oluşturma ekranlarını ve özellikleri az biraz anlamışsınızdır. Bundan sonra artık işin sözde bilgi kısmı kalmadı ve tüm bilgilerimizi pratiğe vuracağız. Ne de olsa oyun yapmak istiyoruz değil mi :D. Şimdi “GM – Your First Game(TR)” isimli yazımı okuyarak Game Maker her açıldığında yan tarafta açılan “Tutorial” kısmındaki İngilizce örneği Türkçe bir şekilde uygulamanızı öneririm. Hepinize iyi eğlenceler!