SEARCH
banner the journal
CATEGORIES
RECENT POSTS
CALENDAR
Aralık 2023
P S Ç P C C P
 123
45678910
11121314151617
18192021222324
25262728293031
Text Widget

Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci ac euismod semper, magna diam porttitor mauris, quis sollicitudin sapien justo in libero. Vestibulum mollis mauris enim. Morbi euismod magna ac lorem rutrum elementum. Donec viverra auctor lobortis. Pellentesque eu est a nulla placerat dignissim. Morbi a enim in magna semper bibendum.

About Us
In condimentum facilis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci acerty euismod semper, magna diamert porttitor mauris, quis sollicitudin sapien justo in libero. Mei iriure dignissim ad, prompta.
Genel

Shark…..

By
on
27 Şubat 2021

Bazı bilindik oyunlardan esinlenip, herbirini kendimce yenilikler ekleyerek bir köpekbalığı ve denizaltı grafiklerini kullanarak bir grup alt oyun içeren geliştirmeye çalıştığım oyu. Tam hitap ettiği yer sanırım 7-15 yaş aralığı, ancak farklı kitlelerce de sevilebilir. Küresel kullanıcıları hedeflediği ve oyunun bir arka planda hikayesi olmadığından, grafiksel anlatım önde olarak, İngilizce dilinde.

Bu yazı bu oyunun bir planı, bir karalama çizimi. Bir oyun yapma sürecini burada belgeliyeyim, ve eğlence için bir oyun yazmaya karar veren bir genç programcıya bir ışık tutayım.

Oyun Grafikleri

Bir oyun için en önemli varlıklar kullanılan grafikler ve sesler. Bunları geliştirmek bambaşka bir kabiliyet. Ben bunları satın aldım. Geldiği gibi kullandığım grafikler de var, kendim üzerinde oynadığım. Oyunun baş kahramanı ile sizi tanıştırayım.

Oyun Dünyası Raconu

Bundan sonra oynamaya gayret edeceğim ancak fazla oyun oynamadığım için, oyunun akışında bazı konularda eksikliğim olmakta. Burada Ayşenaz yardımıma koşuyor, ona soruyorum böyle mi olsun şöyle mi olsun diye, ya da bunu nasıl yapmalıyım diye. Doğduğundan beridir bu oyunların içinde olduğundan hemen çok kolay çözümü söylüyor. Bu böyle olmalı, bu böyle olabilir. Pıt pıt, hiç düşünmeden. Oyun da olsa sonuçta her şeyin bir raconu var.

Örneğin ben ilk level’ı bedelsiz yapıp, kullanıcı ilk bedelsizi beğenip te diğer level’ları da oynamak isterse ödeme yapsın diye düşünüyordum. Ayşenaz, “olur mu baba level atlamak için para mı verilir? Level bedelsiz olsun, can veya kristaller gibi bir şeyler satın alsın bu da oyunda işe yarasın” diye hafif dalga geçince anladım. Şimdi artık level demiyorum, hepsi farklı oyun ve ilk açılışta belirli bir canı var. Oyunlardan istediğini bedelsiz canlarla oynasın, canı bitince satın alabilir.

Alt Oyunlar

Şu an için 8 alt oyun düşünüyorum.

  1. Lets Have A Bite
  2. Better Watch Out
  3. Hungry For A Sub?
  4. Magnetic Cave
  5. Find The Other
  6. Catch That Shark
  7. Fireball
  8. SharkMatch

1. Lets Have A Bite

Bir köpekbalığı, denizde ilerliyor, yaşadığı sürece puan alıyor, karşısına gelen yiyebileceği şeyleri yiyecek yeri kaldı ise yiyor, süre geçtikçe acıkıyor, son olarak ta düşmanları ile çarpışıyor.

Bu cümleyi böyle Türkçe yazmak kolay ama içinde neler barındırıyor, yakından bakalım.

a. Denizde İlerleme

İlk olarak denizde “ilerleme konusuna” bakalım. Köpekbalığı ekranın solundan sağına gelebilir en fazla, bu da çok hareket ediyor hissi vermez, bir havuzda, durgun suda yüzmek gibi olur. Bunun için deniz sağdan sola gitmeli hızlıca, böylece köpekbalığı hızlıca yüzüyor görünebilir.

O halde arka planda hareketli bir deniz görmeliyiz. Hatta mümkünse denizin arkaya doğru bir derinliği olmalı, sadece resim soldan sağa gitmemeli.

b. Yaşadığı Sürece Puan Alıyor

Bir yaşamı var, hayatta kalıyor. Bu halde öldüğünde tekrar oyuna devam edebilmesi için “can” mantığı olmalı. Mesela başta 5 canı var, öldükçe düşüyor, bunu mesela sol üstte kalp ile gösterebilirim. 3 canı varsa 3 kalp.

Puan alıyorsa bir puan sistemi olmalı, puanı sürekli hesaplamalı. Puan yaşadığı süreden, yediği balıklardan, öldürdüğü düşmanlarından toplanabilir ve kümüle bir yer de saklanır. Oyunun sonunda, Apple Game Center’a kullanıcının adı ile saklanabilir.

Apple Game Center’da çoklu puan tabloları (Leaderboard) ve Ödül elde etme (Achievement) sistemleri var. Her alt oyun kendi puan tablosuna bir de birleştirilmiş genel oyun puan tablosuna puan verir.

Ödül sisteminde de örneğin ilk 100 balığını yediğinde FishEater, ilk 1000 balığını yediğinde FistEater Master olabilir. O halde yediği balık adedini saklamalı ve ara sonuçlar bildirilmeli. Hadi şu kadar daha yersen Master olacaksın gibi. Bir ödül listesi oluşturmalı.

Yaşadığı sürece kolay, oyuna başladığı zamandan son canını kaybedene dek geçen süre.

c. Karşısına Gelen

Köpekbalığı soldan sağa doğru ilerliyorsa, sağdan sola doğru aksi yönde de balıklar gelebilir. Sürekli her taraf balık olamayacağına göre demek ki köpekbalığı yüzdükçe bir rassal üreteç balık üretmeli ve göndermeli. Balıklar bir fiziki nesne olmalı ve sağdan sola doğru denizin hızından bir tık daha hızlı gitmeliler.

d. Yiyebileceği Şeyler

Karşıdan balıklar gelebilecek dedik, bunlar yiyebileceği şeyler. Sadece yiyecek olmayabilir, bir düşman da olabilir ya da ne yenecek bir şey, ne de bir düşman sadece ortamdaki diğer varlıklar. Örneğin derinliklerden geçen bir denizaltı, ya da arka planda bir dalgıç, mesela Ragıp.

Köpekbalığı, yiyecekler (FOOD), düşmanlar (ENEMY) ve diğer varlıklar (PROP) hep fiziki objeler olmalı ve SpriteKit oyun motoru içerisinde birbirlerine temaları anlaşılmalı. Böylece köpekbalığı yiyecek ile temas ettiğinde açlık değeri azalacak, ancak düşman ile temas ettiğinde canı gitmeli.

e. Yeri Kaldı İse

Köpekbalığı da olsa sürekli yiyemez, bir yerde doyar. Bu halde açlık seviyesi olmalı, yedikçe bu sayı artmalı. Bir üst sınır olmalı, bu üst sınırdan fazla ise artık yememeli.

f. Yiyor

Köpekbalığı bir küçük balığı yiyor ise iki şey olmalı, küçük balık ortadan yok olmalı, köpek balığı biraz doymalı. Balığı yediğine göre gulp diye bir yutma sesi olmalı.

Her balık farklı oranda doyurabilir. Öyle ya bir hamsi ile bir lüfer aynı olur mu?

Az doyuran küçük balık, örneğin bir tokluk puanı veriyor

Çok daha fazla doyuran, örneğin 10 tokluk puanı veren

g. Süre geçtikçe acıkıyor

Köpekbalığı yüzdükçe, zaman geçtikçe enerji harcıyor. Dolayısıyla acıkıyor, tekrar yemesi gerekiyor. Son yediği zamandan belirli bir zaman geçince açlık seviyesi değeri düşüyor.

Açlık seviyesi ekrada bir göstergede görünebilir, çok acıktığında kırmızı bölge, tok olduğunda yeşil bölge gibi. Her balık ta belirli bir puan-tokluk değeri vereceğinden yediği anda o puan görünebilir.

h. Düşmanları ile çarpışıyor

Köpekbalığına karşı savaşanlar mayın ile, torpido ile saldırabilir veya patlayan variller bırakabilir. Bunlar köpekbalığına dokunduklarında patlayabilirler. Patladıklarında bir alevler çıkmalı ve patlama sesi duyulmalı.

Bu düşmanlar da denizden bir tık daha hızlı hareket etmekteler. Ve oynama zevkini arttırmak için rassal, farklı yüksekliklerde yüzmeliler. Her bir silah farklı öldürme düzeyine sahip olabilir.

Köpekbalıklarının doğal radaları vardır, uzaktan her şeyi ses dalgaları ile algılarlar, o halde düşmanlarını da uzaktan ses ile algılamalı.

Mayın

Torpido

Patlayıcı varil

i. Yok Edilemesi Gereken Düşmanlar

Bir önceki maddedeki düşmanlardan kaçabilir, yukarı aşağı hareketlerle mayına, torpidoya veya varile dokunmadığında hiç bir sorun çıkmaz. Ancak bir de dokunmaması mümkün olmayan mutlaka yok etmesi gereken düşmanları olabilir. Örneğin tüm ekranı kaplayan bir elektrik kapanı. altından veya üstünden geçemez.

O halde köpekbalığımızın bir silahı olmalı, o da karşılık verebilmeli.

j. Ateş Etme

Köpekbalığı da ateş edebilmeli, bunun için ekranda herhangi bir yere dokunmalı. Dokunduğu anda köpek balığı bir ateş öncesi hazırlanıyor, ateş ediyor ve tekrar silahının dolmasını bekliyor. Bu evreler çok hızlı oluyor. Ancak gözle görünmekte, bu sayede daha gerçekçi olmakta.

Ateş ettiğinde bir mermi çıkmalı ve bu mermi de fiziki bir nesne olmalı. Mermi hızla soldan sağa doğru gitmeli eğer önüne bir düşman çıkarsa onu patlatmalı.

Silahını sürekli kullanmamalı, kullandıktan sonra örneğin 1 saniye beklemeli ki tekrar dolsun. Bu bekleme anını üstte bir grafik anlatım dili ile görmeli. (Bunlar hep Ayşenaz’dan)

Belki mermi adedine de bir kısıtlama olabilir, örneğin her oyunda X mermisi olabilir, yolda mermi bulup alabilir veya in-app-purchase ile sonsuz mermi alabilir.

k. Açlık

Köpekbalığı da yedikçe doyuyor, peki ya yemez ise. Oyuncumuz balıkları yemeyerek köpekbalığını aç bırakırsa, açlık düzeyi düşecek bir sonunda açlıktan ölecek, yani bir can kaybedecek.

Aynı şekilde can kaybettiğinde de, eğer açlık düzeyi belirli bir orandan fazla ise örneğin 100 tokluk puanı var ise sihir gibi bir can ortaya çıkacak ve o puan silinecek. Sihir olduğu için de ortaya çıkarken sihirli dumanlar olsun mesela.

l. Köpekbalığının hareketleri

Köpekbalığı ileri doğru hamle yapabiliyor, yukarı aşağı çıkıp inebiliyor, ayrıca dünyada yapamadığını yapıp oyunda geri de yüzebiliyor. Tüm bu hareketleri basitçe köpekbalığına dokunarak yapabiliriz, ama parmağımız ekranın her yerinde olacak oyunu tam göremeyeceğiz. Bunun için sol alta bir joystick koyabiliriz, dört tarafa hareket ettikçe köpekbalığı da ona uygun hareket eder. Joystick merkezinden ne kadar uzaklaşırsa köpekbalığı da ekran da o kadar hareket edecektir. Olaya bir trigonometri girecek. Hızını, ne kadar gitmesi gerektiğini hesaplayacağız.

m. Köpekbalığının durumları

Köpekbalıkları gerçekte sürekli yüzmelidir ki su alsın ve bu suyun oksijenini ayırıp nefes alsın, hiç bir zaman durmazlar. Çok özel bazı köpekbalıkları akıntılı sulara yatabilirler ancak yine sürekli su hareket halindedir. Köpekbalığımız da oyunda hep hafif bir yüzme durumunda olmalı. Joystick ile ileri geri hamle yaptığında hızlı yüzmeli, ateş edebilmeli ve tekrar dolana dek beklemeli.

Bu halde Player State ler, yani balığımızın olabileceği durumlar dört tanedir.

  • Idle State; Hafif yüzme, kuyruk sağa sola doğru hafifçe salınıyor
  • Swim Stat; Hızlı yüzme, kuyruk sağa sola çok gidip geliyor
  • Shoot State; Ağzında ateşi oluşturup gönderiyor
  • Recharge State; Bu süre de tekrar ateş edemez, ancak hafifçe yüzer

Sadece Recharge State sürecinde iken balığın üzerinde recharge durumu görülmeli.

Bu cümleyi böyle Türkçe yazmak kolay ama içinde neler barındırıyor, yakından bakalım.

2. Better Watch Out

Oyunu geliştirerek yeni özellikler ekleyebilir ve bir level ya da yeni bir oyun yaratabiliriz.

  • Bir oyunda bir önceki oyuna ilave olarak karşıdan deniz altıları gelsin.
  • Köpekbalığımızın yeni bir silahı olsun ancak ateşi denizaltıya zarar versin ama batıramasın. Denizaltıdan son derece hızla kaçmalı.
  • Ayrıca patlayan variller de işe katılacak. Önceden vurmaz ise varil patladığında bir canı gidecek.
  • Belki bir de sahte balık işe katılabilir, bu balığa dokunduğunda bir canı gider. Balık aynı balık gibi görünür ama metalden olur.

3. Hungry For A Sub?

Bu oyunda artık yeni silahlar ve üstünlükler gelecek.

  • Yeni bir silahı olsun ve füzeleri denizaltıyı batırabilsin.
  • Denizaltıyı batırdığında ödül ve bol puan alsın.
  • Zehirli balık gelebilir, yerse can gider. Zehirli şeyler dünyada çok göz alıcı renklidir, oyunda da öyle olmalı.
  • Bu bölümde yiyeceğe daha kolay erişmeli çünkü düşmanlar çok, bol balık sürüsü veya balık torbası olabilir bir anda 100 puan alabilir.
  • Vurulunca bir şey olmayan sadece bir anahtarla açılıp kapanan elektrik kapanları olabilir, kapanı vurmak yerine levyeyi vurmalı, veya oyuncu dokunmalı.
TAGS
RELATED POSTS

LEAVE A COMMENT