Archive for Android Oyun Programlama

google-admobArkadaşlarımdan gelen bu yazının konusu, başlıktan da anlaşılacağı üzere android tabanlı uygulama ve oyunlarınızda Google Admob reklam kullanımı olacak. Burak Çimen’ e teşekkürlerimi sunayım ve sizleri yazıyla başbaşa bırakayım.

Bildiğiniz gibi google Türk geliştiricilere uygulama satma veya uygulama içi satış fırsatı sunmuyor. Bu sebepten Türk geliştiricilerin tek gelir kaynağı reklamlar oluyor. Admob dışındaki read more »

Android işletim sisteminin zirvede bulunduğu mobil yazılım sektöründe, yazılımcıların android işletim sistemine olan ilgisi her geçen gün artıyor. Uygulamaların yanında mobil oyun sektörü de bu yükselişten nasibini almış durumda. Aylar süren bir çalışmanın ürünü olan ve bugün satışa çıkan bu kitabın, Türk mobil oyun sektörünün gelişmesi için iyi bir fırsat, bir ön ayak olacağına inanıyorum. Android işletim sisteminin özellikleri ve java programlama dilinin esnekliği sayesinde, bu kitapla geçireceğiniz zamanın eğlenceli ve faydalı bir süreç olacağından gayet eminim.

Bu kitap ile geçireceğiniz sürece değinmek gerekirse; mobil oyun sektöründe, Android alanında ilk ve tek Türkçe kaynak olma özelliğine sahip olan bu kitap ile read more »

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 uygulamaları, bilgisayara kurulan emülatör(Sanal cihaz) aracılığı ile herhangi bir android cihaz olmadan da derlenebilir. Bunun için eclipse’ in derleme butonuna basmanız yeterli. Peki uygulamayı android mobil işletim sistemine sahip fiziksel bir cihazda derlemek ve bizzat test etmek için neler yapılmalıdır, buna değinelim.

Aslında işlem çok basit, samsung cihazlarınız için buradan indirip bilgisayarınıza kuracağınız KİES programı 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 »