Archive for Android oyun geliştirme

Android oyun geliştirme derslerinin onuncusunda hız kavramına ve nesnelere nasıl hız verilebileceğine değineceğim.
Geride kalan tüm makalelerimde sizleri bir şeyin yanılttığını tahmin ediyorum. Bahsettiğim konu, nesneleri sürükleme konusu. Nesneleri sürükleme uygulamalarında sprite’ları parmağımızla hareket ettirdik ama hız vermedik! Lise yıllarından da hatırlayacağınız üzere hız, fiziksel bir olaydır. Yani bizim sprite’ ları kullanarak sürüklediğimiz nesneler birer görüntüden ibarettir. Fiziksel anlamda bir varlık ifade etmezler ki sürükleme uygulamalarında yaptığımız şey nesneye hız vermek değil, sadece yerini değiştirmekti. A noktasında oluşturulan bir nesneyi oradan silip B noktasında oluşturmaktı yaptığımız. Mantığı oturttuktan sonra – en azından ben öyle düşünüyorum=) – hız hangi ortamda, nasıl ve neye verilir sorularının cevaplarına değineyim.

Hız kavramından bahsedilmesi için tabi ki ortamın fiziksel bir ortam olması gerekir. Yani ilk şart read more »

Android oyun geliştirme derslerinin dokuzuncusunda bir sprite sürükleme uygulaması daha yayınlıyorum takipçilerimden birinin karşılaştığı bir problem üzerine. Öncelikle diğer uygulamada yaptıklarımı ve bu uygulamada nasıl bir yapı kullanacağımı anlatmak istiyorum.
Aslına bakılırsa ilk uygulama da aynı işi yapıyor. Fakat buradan ulaşacağınız diğer uygulamada, sahnenin onSceneTouchEvent metodunu kullandık ki bu metod ekranın her yerinde geçerli olacağından global bir kullanım alanı sunuyor bize. Bu yapıda karşılaşacağımız sorunlardan bir tanesi, sahnede(Scene) kontrol edilmesi ve bir şekilde hareket etmesi gereken ikiden çok nesne varsa, her birinin kontrolünün ayrı ayrı bu yapıda sağlanması çok zor olacaktır. İşte bu makalemin konusu bu problemi çözmeye yöneliktir.
Kodlama kısmına geçmeden önce nesnelerin her birini ayrı ayrı kontrol etmeyi amaçlayan uygulamanın gerçekleştirilmesi sırasında nasıl bir yol izlenmesi gerektiğine kısaca değineyim. Yukarda bahsettiğim sahne nesnesi için yazılmış olan onSceneTouchEvent metoduna eşdeğer onAreaTouched metodunu her bir sprite’ a ayrı ayrı yazmak sorunu çözecektir. Uygulamaya göz attığınızda daha iyi anlayacaksınız, buyrun: read more »

Android oyun geliştirme derslerinin sekizincisinde fizik uygulamalarında kullanılan body kavramının türlerine hem şekil bakımından hem de dinamiklik-statiklik bakımından değineceğim.

Hızlı bir giriş ile şekil bakımından ne tür body şekilleri olduğuna bakalım. Daha önceki örnekten küçük kod alıntıları üzerinden ne tür şekiller olduğuna bakarsak, daha açık ve net bir anlatım olacağı kanaatindeyim. Şekiller ve oluşturulduğu kod bloklarının tamımını verdikten sonra açıklamaları yapmak istiyorum. Öncelikli olarak ilk body şekli, BoxBody‘dir. Oluşturulma kodu aşağıdaki gibidir:

1
body1 = PhysicsFactory.createBoxBody(this.physicsWorld, spriteResim1, BodyType.DynamicBody, FIXTURE_DEF);

İkincisi CircleBody:

1
body1 = PhysicsFactory.createCircleBody(this.physicsWorld, spriteResim1, BodyType.DynamicBody, FIXTURE_DEF);

Üçüncüsü PolygonBody:

1
2
3
Vector2 []vector = new Vector2[5];
//Burada vector dizisine vektörler eklenir
body1 = PhysicsFactory.createPolygonBody(this.physicsWorld, spriteResim1, vector, BodyType.DynamicBody, FIXTURE_DEF);

Dördüncüsü TrianglulatedBody: read more »

Android ile oyun programalama dersinin yedincisinde Daha önce anlattığım PhysicsWorld ve Body kavramlarının kullanımlarını örnek bir uygulama ile açıklayamaya çalışacağım.

Bir önceki yazıda ana mantığı anlatmıştım. Bu yüzden tekrar aynı şeylerden bahsetmenin pek anlamlı olacağını düşünmüyorum. Bu yüzden örnek uygulamayı anlatmak istiyorum. Örnek uygulamada bir PhysicsWorld oluşturdum. Bu PhysicsWorld’ ün özelliklerinin belirtilebileceği bir de FixtureDef nesnesi tanımladım. Bu nesnenin yapıcı metodu sırasıyla yoğunluk, esneklik ve ortamın sürtünme katsayısını içine parametre olarak alır. Aşağıdaki gibi tanımlanır.

1
private final FixtureDef wallFixtureDef = PhysicsFactory.createFixtureDef(1, 0.8f, 0.5f);
1
this.physicsWorld= new PhysicsWorld(new Vector2(SensorManager.GRAVITY_EARTH, 0), false);

Yine yukarda oluşturulan PhysicsWorld nesnesi ise içine parametre olarak bir read more »

Android oyun programlama derslerinin altıncısında daha önce kurulumunu anlattığım fizik motorunun kullanımını, özelliklerini, programcıya sağladığı kolaylıkları ve ne gibi fonksiyonları gerçekleştirdiğine değineceğim. Bir sonraki derste de uygulamalı olarak burada anlattığım işlemleri gerçekleştireceğim.

NOT: Fizik motorunun ne olduğunu, androidde kullandığım fizik motorunun özelliklerini ve kurulumunu buradan öğrenebilirsiniz.

Oyunlarda bildiğiniz üzere nesneler vardır. Bu nesnelerin birbirleriyle etkileşmesi gerekir. Şöyle ki; iki cismin birbiriyle çarpışmasıyla cisimlerin yöneleceği doğrultunun, çarpışmadan önceki hız, yön ve ağırlık bilgilerine göre hesaplanması gerekir. İşte bu gibi olaylarda fizik motorları programcının yapacağından daha iyi performansla read more »

Andrid ile oyun programlama derslerinin beşincisinde, ekrana bir metin yazdırmak için kullanılması gereken 3 nesneye; BuildableTexture, ChangeableText ve Font nesnelerine, oluşturulma aşamalarına ve özelliklerine değineceğim.

BuildableTexture nesnesi, metnin görüntüleneceği alanı oluşturur ve bu alanın boyutlarını belirler. Resimlerle kullanılan texture ile aynı mantıkta kullanılır yani.

1
this.bTexture = new BuildableTexture(512, 512, TextureOptions.BILINEAR_PREMULTIPLYALPHA);

Font nesnesi oluşturulurken yapıcı metoduna(consructor) bir BuildableTexture, bir ttf uzantılı dosya, font büyüklüğü ve renk parametrelerini alır. Bu ttf dosyası, fontun stilini belirler. Örnekte kullandığım “CONTACT.ttf” dosyasını buradan indirebilirsiniz. Bu dosya da diğer örneklerdeki resimlerin olduğu gibi read more »

Android andengine ile oyun geliştirme derslerinin dördüncüsünde AnimatedSprite kavramına ve nasıl oluşturulduğuna bir örnek uygulama eşliğinde değineceğim. Daha önceki derslerde değindiğim sprite kavramından oluşturulma aşamsında pek farkı bulunmayan bir kavram aslında animatedSprite.

Birinci derste değindiğim sprite mantığında çalışır. Tek farkı, tek resimde birleştirilmiş resimlerin sırasıyla gösterilerek bir animasyon havası verilmesidir. Bir diğer önemli nokta ise sprite ile birlikte kullanılan textureRegion yerine TiledTextureRegion kullanılmasıdır.

Biraz daha derinlemesine incelersek;

1
tiledTextRegAnime = TextureRegionFactory.createTiledFromAsset(textureAnime, this, "gfx/face_box_tiled.png", 0, 0, 2, 1);

ifadesindeki ögelerden son ikisi, resmin içindeki küçük resimlerin satır read more »

Android ile oyun geliştirme derslerinin üçüncüsünde ekrana her dokunulduğunda, dokunulan yerde bir sprite(resim) oluşturacağız. Bunun için yine bir önceki derste olduğu gibi ekrana dokunulduğunda koordinatı yakalayan özel bir metodu kullanacağız.

onSceneTouchEvent metodunu, dokunulan koordinatları tespit etmek için kullanıyoruz. Buradan alınan koordinatları resimEkle fonksiyonuna parametre olarak gönderiyoruz. Fonksiyonun içeriğine bakarsak; fonksiyon read more »

Android ile oyun geliştirme derslerinin ikincisinde bir sprite’ı(resmi) sürükleme kodunu anlatacağım. Birinci dersteki örnek üzerinden gitmek sizler için de kodu daha anlaşılır kılacaktır. Yapılacak işlem önceden eklediğimiz iki resimden birini hareket ettirmek olacak. Dokunduğumuz yere resmin gelmesini ve ekrana dokunup sürüklediğimizde parmağımızı takip etmesini sağlayacağız.

Oluşturulan scene nesnesinin onSceneTouchListener fonksiyonu içinde ekrana dokunma kontrolünü oluşturuyoruz. isActionDown touchEvent’ ı ile ekrana dokunulduğunda çalıştırılacak kod bloğunu if içinde yazıyoruz. isActionMove touchEvent’ ı ile de read more »

Resim çizdirme uygulamasına geçmeden önce, android ile oyun geliştirme aşamasında sürekli kullanılacak kavramlardan Texture, TextureRegion ve Sprite kavramlarını açıklamaya çalışacağım. Ardından uygulamaya göz atabilir, yazının son kısmından da uygulamayı indirebilirsiniz.

Texture: Eklenecek resmin kalıbı gibi düşünülebilir. Her resim için tanımlanmak zorundadır. Resmin boyutu texture tanımlaması esnasında belirtilir.

TextureRegion: Texture ile belirtilen kalıplara resmin yerlerştirilmesini sağlayan nesnedir. Resmin texture’ ı ve yolu bu nesnenin oluşturulması sırasında belirtilir.

Sprite: Oluşturulan TextureRegion’ ı kullanarak resmin ekranda çizdirileceği koordinatları belirten nesnedir.

Kavramların ardından uygulamanın kodlarına göz atalım. Uygulamada iki resmi read more »