• Sonuç bulunamadı

NESNEYE DAYALI YAKLAŞIMLA MOBİL CİHAZLAR ÜZERİNDE ÜÇ BOYUTLU OYUN MOTORU TASARIMI ve

N/A
N/A
Protected

Academic year: 2022

Share "NESNEYE DAYALI YAKLAŞIMLA MOBİL CİHAZLAR ÜZERİNDE ÜÇ BOYUTLU OYUN MOTORU TASARIMI ve"

Copied!
193
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

(YÜKSEK L˙ISANS TEZ˙I)

NESNEYE DAYALI YAKLA ¸SIMLA MOB˙IL C˙IHAZLAR ÜZER˙INDE ÜÇ BOYUTLU

OYUN MOTORU TASARIMI ve GERÇEKLE ¸ST˙IR˙IM˙I

Eray HANGÜL

Bilgisayar Mühendisli˘gi Anabilim Dalı Bilim Dalı Kodu: 619.01.00

Sunu¸s Tarihi: 23.11.2007

Tez Danı¸smanı: Yrd. Doç. Dr. Aybars U ˘GUR

Bornova-˙IZM˙IR

(2)
(3)

Eray HANGÜL tarafından YÜKSEK L˙ISANS tezi olarak sunulan

"NESNEYE DAYALI YAKLA ¸SIMLA MOB˙IL C˙IHAZLAR ÜZE- R˙INDE ÜÇ BOYUTLU OYUN MOTORU TASARIMI ve GERÇEK- LE ¸ST˙IR˙IM˙I" ba¸slıklı bu çalı¸sma E.Ü. Lisansüstü E˘gitim ve Ö˘gretim Yönetmeli˘gi ile E.Ü. Fen Bilimleri Enstitüsü E˘gitim ve Ö˘gretim Yöner- gesi’nin ilgili hükümleri uyarınca tarafımızdan de˘gerlendirilerek savun- maya de˘ger bulunmu¸s ve 23/11/2007 tarihinde yapılan tez savunma sına- vında aday oy birli˘gi/oy çoklu˘gu ile ba¸sarılı bulunmu¸stur.

Jüri Üyeleri: ˙Imza

Jüri Ba¸skanı: Yrd. Doç. Dr. Aybars U ˘GUR . . . .

Raportör Üye: Yrd. Doç. Dr. Aylin KANTARCI . . . .

Üye: Yrd. Doç. Dr. Cengiz GÜNGÖR . . . .

(4)
(5)

ÖZET

NESNEYE DAYALI YAKLA ¸SIMLA MOB˙IL C˙IHAZLAR ÜZER˙INDE ÜÇ BOYUTLU OYUN MOTORU TASARIMI ve GERÇEKLE ¸ST˙IR˙IM˙I

HANGÜL, Eray

YÜKSEK L˙ISANS Tezi, Bilgisayar Mühendisli˘gi Bölümü Tez Yöneticisi: Yrd. Doç. Dr. Aybars U ˘GUR

23/11/2007, 169 sayfa

Günümüzde mobil cihazlar üzerinde grafiksel ö˘geler gün geçtikçe daha gerçekçi ve iyi düzeyde kullanılmaktadır. Kısıtlı kaynaklara sahip olan ürünler donanımsal olarak tatmin edilen düzeye gelmeye ba¸sladıkça yazılım tarafında da beklentiler artmaktadır. Bu sektörün temel e˘glence aracı olan mobil oyunlar da giderek artan talepler do˘grultusunda 3 bo- yutlu grafik deste˘gi ile kullanıcılara sunulmaktadır. Bu tez çalı¸smasında üç boyutlu Java mobil grafik kütüphanelerinden M3G kullanılarak bir oyun motoru geli¸stirilmi¸stir. Bu motor üzerinde gerçekle¸stirimi yapılan bir oyun yardımı ile performans testleri yapılmı¸stır. Özellikle M3G, OBJ ve MD2 formatlı hazır 3 boyutlu modellerin sahneye yüklenme i¸slemi detayları;

i¸slemci maliyeti, bellek ve kullanım kolaylı˘gı parametreleri açısından de-

˘gerlendirilmi¸stir.

Anahtar Sözcükler: M3G, J2ME, 3B Mobil Grafik, OpenGL ES, 3B Oyun Motoru, Mobil Oyun.

(6)
(7)

ABSTRACT

The DESIGN and IMPLEMENTATION of a 3D GAME ENGINE for MOBILE DEVICES using OBJECT

ORIENTED APPROACH

HANGÜL, Eray

MSc. in Computer Engineering Supervisor: Asst. Prof. Dr. Aybars U ˘ GUR

23/11/2007, 169 pages

At the present time, graphical elements on mobile devices are used in a higher level detail through giving more reality. As limited mobile pro- ducts reach a satisfactory state about their hardware structure, the expecta- tions of software side increases. Mobile games which are the sector’s core entertainment equipments started to be served up with 3D Graphics support due to the demands from customers. In this thesis, a mobile game engine is implemented using M3G which is a 3D Java mobile graphics library.

Performance tests are done with the help of the game that is developed on top of this game engine. Especially, loading of 3D models in M3G, OBJ and MD2 formats is examined through looking the CPU cost, memory use and usability in a game scene.

Keywords: M3G, J2ME, Mobile 3D Graphics, OpenGL ES, 3D Game Engine, Mobile Game.

(8)
(9)

TE ¸SEKKÜR

Öncelikle, sıcak yaz günlerinde klimalı; so˘guk kı¸s günlerinde kalo- riferli laboratuarlarıyla mükemmel bir çalı¸sma ortamı sunan Ege Üniversi- tesi Bilgisayar Mühendisli˘gi Bölüm Ba¸skanlı˘gı’na verdi˘gi destekten dolayı te¸sekkür ederim. Bu tezin geli¸stirilmesinde yönlendirmeleriyle güçlü des- te˘gini benden esirgemeyen, sürekli beni motive eden, lisans döneminden ba¸slayarak bana bilgisayar grafiklerini sevdiren danı¸smanım Yrd. Doç. Dr.

Aybars U˘gur’a minnetlerimi sunmayı bir borç bilirim. Yakla¸sık sekiz se- nedir sürdürdü˘güm üniversite ya¸samıma acısıyla tatlısıyla sabırla katlanan aile bireylerime, akrabalarıma ve arkada¸slarıma bana verdikleri destekten dolayı te¸sekkür ederim. Yapay Zeka ve Grafik Grubu’nda geli¸stirdi˘gimiz projelerde ve tezimde bana bir çok konuda yardımcı olan ekip arkada¸s- larımızdan Ara¸s. Gör. Tahir Emre Kalaycı’yı, Ara¸s. Gör. Ahmet Cumhur Kınacı’yı ve Ara¸s. Gör. Do˘gan Aydın’ı burada anmak isterim. Tez met- ninin formatlı yazımı konusunda ¸sablon ve editör kurulum yardımlarını benden esirgemeyen arkada¸sım Ara¸s. Gör. Önder Gürcan’a ve ortak labo- ratuar arkada¸slı˘gımız boyunca ho¸s sohbeti ile güzel bir çalı¸sma ortamı ya- kalamamızı sa˘glayan Ara¸s. Gör. ˙Inanç Seylan’a da te¸sekkürlerimi sunmak istiyorum. Son olarak, geli¸stirdi˘gimiz uygulamayı gerçek bir mobil cihaz üzerinde test etme imkanını sunan Erdem Eser Ekinci’ye de çok te¸sekkür ederim.

(10)
(11)

˙IÇ˙INDEK˙ILER

ÖZET . . . V

ABSTRACT . . . VII

TE ¸SEKKÜR . . . IX

˙IÇ˙INDEK˙ILER . . . XI

¸SEK˙ILLER D˙IZ˙IN˙I . . . XIX

Ç˙IZELGELER D˙IZ˙IN˙I . . . XXI

KISALTMALAR . . . XXIII

1 . G˙IR˙I ¸S . . . 1

2 . JAVA DESTEKL˙I MOB˙IL C˙IHAZLAR M˙IMAR˙IS˙I . . . 7 2.1 Mobil Cihazlar ve Java . . . 7 2.2 Mobil Cihazlarda Uygulamalar Nasıl Çalı¸sıyor? 9 2.3 Mobil Cihazlarda Uygulama Geli¸stirme . . . . 11 2.4 MIDP 2.0 üzerinde Basit Bir Mobil Uygulama

Geli¸stirme . . . 13

3 . MOB˙IL OYUNLAR . . . 17 3.1 Mobil Oyun Geli¸stirme Teknikleri . . . 20

(12)

3.1.1 Nokia S40/S60 serisinde J2ME tabanlı mo- bil oyunlar için 10 temel geli¸stirme kuralı . 22

3.1.1.1 Oyun öncesi geli¸sim . . . 23

3.1.1.2 Oyun deneyimi geli¸sim . . . 25

3.1.1.3 Oyun sonu geli¸sim . . . 27

3.1.2 Mobil oyunlarda kullanılabilirli˘gin sa˘glan- ması . . . 28

3.1.2.1 Oyun öncesi kullanılabilirlik . . . . 28

3.1.2.2 Oyun deneyimi kullanılabilirlik . . . 35

3.1.2.3 Oyun sonu kullanılabilirlik . . . 43

3.2 Mobil Oyunlarda Kullanıcı Deneyiminin Önemi 44 3.3 Mobil Oyunlarda Kullanılabilirlik ve Fiyatland- ırma . . . 48

3.3.1 Kullanılabilirlik nedir ? . . . 48

3.3.2 Kullanılabilirlik çerçevesinde fiyat tahmin- leme . . . 52

4 . 3D MOB˙IL TEKNOLOJ˙IN˙IN BA ¸SLANGICI ve ˙ILERLEMES˙I 57 4.1 3D Mobil Teknolojinin Geli¸simi . . . 57

4.1.1 OpenGL ES . . . 62

4.1.2 jGL ES . . . 64

4.1.3 M3G . . . 65

4.2 Mobil Telefonlar için Kar¸sıla¸stırmalı Ölçüm Ya- zılımları . . . 67

4.3 3D Mobil API Tasarım Amaçları . . . 69

(13)

4.4 Neden 3 Boyutlu Grafik? Ondalıklı Artimeti˘gin

Gücü! . . . 71

4.5 Di˘ger Mobil Grafik Teknolojileri ve Yapılan Ça- lı¸smalar . . . 73

4.5.1 Market segmenti ve standartlar . . . 73

4.5.2 Mobil grafik çerçeveleri . . . 77

5 . OYUN MOTORU DÜNYASI . . . 81

5.1 Oyun Motoru Nedir? . . . 81

5.1.1 Mobil oyun motorları . . . 82

5.2 Oyun Motoru Neleri Sunmalı ? . . . 84

6 . M3G ile ÜÇ BOYUTLU OYUN GEL˙I ¸ST˙IRME ˙INCEL˙IKLER˙I 87 6.1 API’nin Kullanımı . . . 87

6.2 Sahne Çizgesi . . . 87

6.3 Dünya . . . 88

6.4 Yükleyici . . . 89

6.5 Object3D . . . 90

6.6 Animasyon ¸Sekli, Animasyon Kontrolcusu, Anahtar Sahne Sırası . . . 90

6.7 Graphics3D . . . 91

6.8 Arkaplan . . . 93

6.9 Dönü¸sümler ve Sahne Çizgesi Dü˘gümleri . . . 94

6.9.1 Dönü¸süm . . . 94

6.9.2 Sahne çizgesi dü˘gümü . . . 94

6.9.3 Grup . . . 96

(14)

6.9.4 Kamera . . . 96

6.9.5 I¸sık . . . 97

6.9.6 Çok yüzlü poligon . . . 99

6.9.7 Nokta de˘ger dizisi, nokta koordinat dizisi, nokta birle¸sme sırası dizisi, üçgen parça dizisi 101 6.10 Çok Yüzlü Poligon Yüzey Özellikleri . . . 102

6.10.1 Görünüm . . . 102

6.10.2 Materyal . . . 103

6.10.3 Poligon mod . . . 104

6.10.4 Sis . . . 106

6.10.5 Birle¸stirici Mod . . . 106

6.10.6 2 Boyutlu görüntü . . . 108

6.10.7 2 Boyutlu desen kaplama . . . 109

6.11 Özel Efektler . . . 111

6.11.1 Sprite . . . 111

6.11.2 Biçimlendirme . . . 112

6.11.3 Skinning . . . 113

6.11.4 I¸sın izleme . . . 113

7 . GEL˙I ¸ST˙IR˙ILEN UYGULAMALAR . . . 115

7.1 ˙Iki Boyutlu Mobil Oyun Örne˘gi - ’Korsan Ör- deklerin Krallı˘gı’ . . . 115

7.2 Bir Küpün Evrimsel Geli¸simi . . . 117

7.3 M3GE Motoru Tabanlı ’MobileSonic3D’ ˙Isimli Mobil Oyun Motoru Gerçekle¸stirimi . . . 121

(15)

7.4 MobileSonic3D Motoru Destekli FPS Oyunu :

’Monster Hunt’ . . . 135

8 . SONUÇ ve TARTI ¸SMA . . . 139

Kaynakça . . . 143

EKLER . . . 145

Ek A. TER˙IMLER SÖZLÜ ˘GÜ . . . 167

ÖZGEÇM˙I ¸S . . . 169

(16)
(17)

¸SEK˙ILLER D˙IZ˙IN˙I

¸Sekil 2.1 Farklı Java Teknolojilerine Genel Bir Bakı¸s . . . . 8

¸Sekil 2.2 Mobil Cihaz Java Çalı¸sma Mimarisi . . . 10

¸Sekil 2.3 JAR Yapısı Örne˘gi . . . 12

¸Sekil 2.4 Mobil Uygulama Akı¸s Tasarımı (IDE - Netbeans 5.5) 13

¸Sekil 2.5 HelloMidlet Ekran Tasarım Görüntüsü (IDE - Net- beans 5.5) . . . 15

¸Sekil 2.6 HelloMidlet S60 Serisi Cihaz Ekran Görüntüsü . . 15

¸Sekil 3.1 Nokia S40 Serisi Telefon için Mobil Oyun Ekran Gö- rüntü Örnekleri . . . 20

¸Sekil 3.2 Nokia S40 ve S60 serilerini gösteren logo . . . 20

¸Sekil 3.3 Verimli Çalı¸sma ile 3B Mobil Uygulama Geli¸stirme 22

¸Sekil 3.4 Kullanıcı Deneyiminin Elemanları (Mäkelä ve Ful- ton Suri, 2001; Kankainen, 2002) . . . 45

¸Sekil 3.5 Oyun dola¸sımı tasarım örnekleri . . . 48

¸Sekil 3.6 Oynanabilirli˘gin Bile¸senleri (˙Içerik, Kullanılabilir- lik, Hikaye, Etkile¸sim, Teknoloji) . . . 51

¸Sekil 4.1 Mascot-Capsule farklı grafiksel kullanım örnekleri . 60

¸Sekil 4.2 OpenGL ES & M3G birlikte kullanımı . . . 62

¸Sekil 4.3 MEGA 1.1 sürümü mimarisi . . . 64

¸Sekil 4.4 jGL ES Kod Blo˘gu Örne˘gi . . . 65

¸Sekil 4.5 Khronos grubuna ait gömülü cihaz API’lerinin geli¸simi 74

¸Sekil 4.6 OpenKODE katmanının kullanımı . . . 75

(18)

¸Sekil 4.7 OpenKODE’nin içsel i¸sleyi¸s ¸sekli . . . 76

¸Sekil 4.8 Hybrid OpenGL ES çerçevesi . . . 79

¸Sekil 5.1 Mobiola Oyun Motoru Yapısı . . . 84

¸Sekil 6.1 Yönlü I¸sık Kullanımı . . . 97

¸Sekil 6.2 Çok Yönlü I¸sık Kullanımı . . . 98

¸Sekil 6.3 Spot I¸sık Kullanımı . . . 99

¸Sekil 6.4 Materyal ve nokta renklendirme hattı çalı¸sma akı¸sı . 104 ¸Sekil 6.5 Perkspektif düzeltmenin kullanılmadı˘gı (sol taraf) ve kullanıldı˘gı (sa˘g taraf) örnekleri . . . 105

¸Sekil 6.6 Farklı birle¸stirme yöntemlerinin görüntüleme üzer- indeki etkileri . . . 107

¸Sekil 6.7 En yakın kom¸su (sol örnek) ve do˘grusal (sa˘g örnek) filtreleme etkileri . . . 110

¸Sekil 6.8 ’Mipmapping’ yöntemi etkisi (Sol taraftaki görüntü belirgin ¸sekilde a¸sırı piksel hatalı) . . . 111

¸Sekil 6.9 ¸Seffaf 2 boyutlu ’Sprite’ kullanımı ile parçacık pat- lama etkisinin verilmesi . . . 112

¸Sekil 6.10 Biçimlendirme ile farklı yüz ¸sekilleri elde edilmesi 112 ¸Sekil 7.1 KOK S60 Serisi Cihaz Görüntüsü . . . 116

¸Sekil 7.2 Arkaplan resim parça sırası . . . 117

¸Sekil 7.3 Beyaz küp örne˘gi . . . 120

¸Sekil 7.4 Her bir yüzü farklı renk geçi¸s efektleriyle renklendi- rilmi¸s, ı¸sık etkili küp örne˘gi . . . 120

(19)

¸Sekil 7.5 OBJ Modelinin Java3D Deste˘gi ile M3G Tabanlı Kodlarının Elde Edilmesi . . . 123

¸Sekil 7.6 MobileSonic3D Oyun Motoru Anlık Görüntüleme Deste˘gi . . . 124

¸Sekil 7.7 Kar¸sıla¸stırma Amaçlı Olu¸sturulan M3G Sahne Ör- nekleri . . . 126

¸Sekil 7.8 Görsel Özellikleri Farklı / Geometrik Özellikleri Aynı Tank Model Görüntüleri . . . 129

¸Sekil 7.9 M3G Tank Modellerin Yüklenme Süreleri . . . 130

¸Sekil 7.10 Kar¸sıla¸stırma Amaçlı Olu¸sturulan OBJ Model Ör- nekleri . . . 131

¸Sekil 7.11 De˘gi¸stirilebilir ˙Iki Boyutlu Görüntü için Tamsayı - Byte Dönü¸sümü Örneklemesi . . . 133

¸Sekil 7.12 Monster Hunt S60 Emülatör Ekran Görüntüsü . . . 137

˘a

(20)
(21)

Ç˙IZELGELER D˙IZ˙IN˙I

Çizelge 3.1 Mobil oyunların özelliklerinin kar¸sıla¸stırılması . . . 19 Çizelge 3.2 Farklı motivasyon ¸sekillerine göre sınıflandırılmı¸s

ondört e˘glence ¸sekli . . . 46 Çizelge 3.3 Kullanılabilirlik Faktörleri . . . 49 Çizelge 7.1 m3g Formatlı Model Dosyalarının Kar¸sıla¸stırmalı

˙Incelemesi . . . 125 Çizelge 7.2 Görünüm Bilgisinin m3g Formatlı Modellerde Yük-

leme Performansına Etkisinin ˙Incelenmesi . . . 128 Çizelge 7.3 obj Formatlı Model Dosyalarının Kar¸sıla¸stırmalı ˙In-

celemesi . . . 131 Çizelge 7.4 MobileSonic3D Mobil Oyun Motoru Özellikleri ve

Test Durumu Listesi . . . 135 Çizelge A.1 Terimler Sözlü˘gü . . . 168

(22)
(23)

KISALTMALAR

Kısaltma Açılım

M3G Mobile 3D Graphics (3B Mobil Grafik) J2ME Java 2 Micro Edition

OpenGL ES OpenGL Embedded Systems (OpenGL Gömülü Sistemleri) jGL ES Java Graphics Library for Embedded Systems (Gömülü

Sistemler için Java Grafik Kütüphanesi)

MIDP Mobile Information Device Profile (Mobil Cihaz Genel Profili)

J2EE Java 2 Enterprise Edition (Java 2 Geli¸smi¸s Sürümü) J2SE Java 2 Standart Edition (Java 2 Standart Sürümü) CDC Connected Device Configuration (Ba˘glı Cihaz

Konfigürasyonu)

CLDC Connected, Limited Device Configuration (Limitli Ba˘glı Cihaz Konfigürasyonu)

JSR 184 M3G Project Code (M3G API Proje Kodu)

JSR Java Specification Request (Java için Yeni Kütüphane Talebi)

(24)
(25)

1 G˙IR˙I ¸S

Mobil teknolojiler gün geçtikçe daha kararlı çalı¸sabilen donanım ve yazılım seçenekleriyle hayatımızı kolayla¸stırmaya ba¸slamı¸slardır. Mo- bil cihaz üreticilerinin neredeyse ki¸sisel bilgisayar performansında çalı¸sa- bilecek, üzerinde i¸sletim sistemi yüklü olabilen ürünleri piyasaya sürmeleri de beklentilerin artmasına neden olmu¸stur.

Grafiksel ö˘gelerin yüksek kalitede yansıtılmasını sa˘glayan mobil grafik kartlarının kullanımı bu alandaki en son yeniliklerden biridir. Böy- lece mobil cihaz kullanıcılarının daha çok, kısa süreli e˘glence gereksinim- lerini kar¸sılama amacı ile kullandıkları mobil oyunların da kalitesinin artı¸sı sa˘glanmı¸stır. 3 boyutlu grafiklerin donanım deste˘gi ile yansıtılmasında mi- maride temel kütüphane olarak kullanılan OpenGL ES1, mobil oyun geli¸s- tiricilerin önünü açmı¸stır. Khronos2 grubu tarafından belirlenen standart- lardan biri olan OpenGL ES, di˘ger bir çok kütüphanenin de arka planda kendisinden destek aldı˘gı, donanım seviyesinde çalı¸san temel kütüphane özelli˘gine kavu¸smu¸stur. JSR 1843 adı altında geli¸stirilen M3G4 ise Java üzerinden 3 boyutlu grafiklerin mobil cihazlarda kullanımını platform ba-

˘gımsız bir ¸sekilde sa˘glayan uygulama programlama arayüzü olarak sunul- mu¸stur. Görüntülenen sahnenin kayıt ve yüklenme imkanını sunan M3G bir çok mobil oyunun geli¸stirilmesinde kullanılmaktadır.

1http://www.khronos.org/opengles

2http://www.khronos.org

3http://jcp.org/jsr/detail/184.jsp

4http://developers.sun.com/mobility/apis/articles/

3dgraphics/

(26)

Bu çalı¸smada M3G teknolojisi kullanılarak mobil cihazlar üzerinde oyun geli¸stirmeyi daha kolay ve esnek hale getiren bir oyun motorunun ortaya çıkarılması amaçlanmı¸stır. Bir oyun motoru, oyunun hikayesinde anlatılanların grafik detayından ba˘gımsız olarak; etkile¸sim kontrolü, ses efekti, a˘g ba˘glantı kontrolü, karakter model yükleme, harita yükleme, ma- tematiksel ve zamansal hesaplamalar deste˘gi gibi bir çok ortak özelli˘gi su- nabilen genel çerçeveyi tanımlar. Yapılan ara¸stırmalarda mobil platform- lar için geli¸stirilmi¸s bir çok oyun motoru örne˘gi görülmü¸s; hatta Finlan- diya firması olan Hybrid Graphics’in5ve Japon firması olan HI-TECH’in6 sundu˘gu mobil çerçevelerin de mobil cihaz üreticilerine pazarlandı˘gı an- la¸sılmı¸stır. Özellikle HI-TECH’in Mascot-Capsule7 adlı ürünü 3 boyutlu grafiklerin mobil platformda yansıtılmasında ilk olu¸su ile önemli bir yere sahiptir. ¸Su anda da OpenGL ES ve M3G gibi popüler kütüphanelere des- tek verdi˘gi bilinmektedir.

Geli¸stirilmi¸s mobil oyun motorlarından sadece bir tanesinin M3G destekli oldu˘gu görülmü¸stür. LGPL8 lisansı ile da˘gıtılan M3GE9 adlı bu motorun daha çok FPS10tarzı oyunları destekleyecek ¸sekilde tasarlandı˘gı belirlenmi¸stir. Proje sonunda strateji tabanlı bir oyun yapılarak geli¸stirilen oyun motorunun test edilece˘gi planlandı˘gından, M3GE’den yapay zeka ve çarpı¸sma testi bölümü haricindeki kısımları alınarak faydalanılma yoluna gidilmi¸s; hatta projenin yürütücüleri ile ba˘glantıya geçilerek ek modülle-

5http://www.hybrid.fi/

6http://www.hicorp.co.jp/

7http://www.hicorp.com.sg/en/mc/index.html

8http://www.gnu.org/licenses/lgpl.html

9https://m3ge.dev.java.net

10http://en.wikipedia.org/wiki/First-person_shooter

(27)

rin geli¸stirilmesinde katkıda bulunulması yönünde belirtti˘gimiz iste˘gimiz kendilerine iletilmi¸s ve yakla¸sım olumlu kar¸sılanmı¸stır.

Tezin 2. bölümünde genel olarak mobil cihazların donanımsal özel- likleri ve içsel mimarileri incelenmi¸s, üzerlerinde Java destekli uygulama- ların nasıl çalı¸stı˘gı anlatılarak basit bir mobil uygulamanın geli¸stirilmesi kaynak kodu ile örneklenmi¸stir.

3. bölümde mobil Dünya’nın en popüler uygulamalarından olan oyunların geli¸stirilmesinde nelere dikkat edilmesi gerekti˘gi konusu tartı-

¸sılmı¸s, iyi bir oyunda nelerin beklenildi˘gi; oyunun ba¸slangıcı, kendisi ve sona ermesi gibi üç ana evre çerçevesinde irdelenerek oyun geli¸stiricilere tavsiyelerde bulunulmu¸stur.

4. bölümde mobil platform için üç boyutlu grafik kullanımının na- sıl ba¸slandı˘gı ve günümüzde ilerlemenin ne durumda oldu˘gu belirtilerek, üç boyutlu oyunların pazarlanmasındaki market segmenti hakkında bilgi verilmi¸stir.

5. bölümde oyun motoru kavramı açıklanmı¸s ve günümüzde var olan örnekler incelenerek bir oyun motorundan beklenen asgari temel özel- likler belirtilmi¸stir.

6. bölümde ise, tezin uygulama kısmında kullanılacak ana teknoloji olan M3G uygulama programlama arayüzü, içerdi˘gi tüm sınıfların özellik- leri ve nasıl kullanıldıklarına dair örneklerle ayrıntılı olarak anlatılmı¸stır.

7.bölümde geli¸stirilen basit beyaz renkli bir küpün, M3G sınıfları- nın kullanımı ve kullanıcı etkile¸simi katılarak grafiksel detayların olabil- di˘gince çok yansıtıldı˘gı MIDlet11uygulamasının a¸sama a¸sama nasıl geli¸s-

11http://en.wikipedia.org/wiki/Midlet

(28)

tirildi˘gini örnekleyen kod blo˘guna yer verilmi¸stir. Ayrıca MIDP 2.012pro- filinin oyun geli¸stiricilere sundu˘gu yeni paketindeki sınıfların kullanımını örnekleyen; iki boyutlu oyun geli¸stirmenin, üç boyuta göre zorluklarına dikkat çekmek amacıyla geli¸stirilmi¸s basit bir oyun da bu bölümde sadece yönetici sınıfı kod blo˘gu ile yer almaktadır.

8. bölümde ise mobil grafik geli¸stiriciler açısından ileriki çalı¸sma- larda hangi teknolojilerin ne amaçla kullanılabilece˘gi hakkında görü¸sler sunulmu¸s ve bu çalı¸sma sonucunda yapılan katkı belirtilmi¸stir.

Yüksek Lisans E˘gitimi ve Tez Kapsamında Yapılan Yayın- lar ve Çalı¸smalar

1. U˘gur, A., Hangül, E., Kalaycı, T.E., Aydın, D., “Üç Boyutlu Bi- naların Web Üzerinde Otomatik Olarak JOGL ile Modellenmesi”, Akademik Bili¸sim 2007, Bildiri No : 141, Dumlupınar Üniversitesi, Kütahya, 31 Ocak - 2 ¸Subat 2007

2. U˘gur, A., Yapay Zeka Yöntemleri ile Çok Katlı Binalar ˙Içerisinde Sanal Bir Yol Planlama Sistemi Gerçekle¸stirimi, Ege Üniversitesi, Mühendislik Fakültesi, Bilimsel Ara¸stırma Projesi, 2006-MÜH-002, Bornova, ˙Izmir, 2006. (Proje Yöneticisi) Proje Personeli: Do˘gan AY- DIN, Eray HANGÜL, Tahir Emre KALAYCI.

3. U˘gur, A., Kalaycı, T.E., Hangül, E., “Web3D Standartları : VRML ve X3D”, COMPOTEK 2004 Bili¸sim Seminerleri Programı, ˙Izmir, Türkiye, 24-28 Kasım 2004

12http://en.wikipedia.org/wiki/MIDP_2.0

(29)

Devam eden yayın çalı¸smamızda ise, 27-28-29 Mart 2008 tarihlerinde

˙Istanbul Üniversitesi’nde gerçekle¸secek ’Future-Learning 2. Uluslararası Gelecek ˙Için Ö˘grenme Alanında Yenilikler Konferansı 2008: e-Ö˘grenme’

ba¸slıklı konferansa tez çalı¸sması kapsamında geli¸stirdi˘gimiz oyun moto- runu temel alan mobil oyun ile ilgili yazdı˘gımız bildiri özeti, ’m-Learning’

(uzaktan mobil ö˘grenme) çalı¸sma alanına 19 Kasım 2007 tarihinde gönde- rilmi¸stir. Bildiri kabul/ret sonuçları 3 Aralık 2008’de açıklanacaktır.

(30)
(31)

2 JAVA DESTEKL˙I MOB˙IL C˙IHAZLAR M˙IMAR˙IS˙I

2.1 Mobil Cihazlar ve Java

Mobil cihazlar kısıtlı donanım (bellek, i¸slemci, ekran vb.) imkanları ile bizi uygulama geli¸stirirken daha dikkatli olmaya zorlarlar. Tipik bir mobil cihaz en az ¸su özellikleri sa˘glamaktadır (U˘gur, 2003) :

• MIDP için ayrılmı¸s 128 KB silinemeyen bellek

• Çalı¸sma zamanında yı˘gın olarak kullanılabilecek 32 KB bellek

• Silinemeyen temel verileri tutacak 8 KB bellek

• En az 96 x 54 çözünürlüklü bir ekran

Bu tip cihazlar üzerinde çalı¸stırılan yazılımlar, deyim yerinde ise “byte”

hesabı yaparak gereksinimleri kar¸sılamalıdırlar. Dolayısıyla geli¸stirici açı- sından kontrollü yazılım geli¸stirme süreci çok önemlidir.

Java; “J2ME”1 adlı alt teknolojisi ile uygulama geli¸stiricilere gü- venli bir ¸sekilde mobil yazılım geli¸stirebilmeyi sa˘glamaktadır.

“J2ME”; “J2SE” ve “J2EE” ’ yi tam olarak desteklemeyen sınırlı kapasiteye sahip cihazlarda (IP Telefonları, E˘glence Kutuları, PDA, Mo- bil Telefonlar, ’Pager’) çalı¸sabilecek uygulamalar geli¸stirilmesi için ortaya konulmu¸s bir uygulama programlama arayüzüdür.

1http://java.sun.com/javame/downloads/index.jsp

(32)

¸Sekil 2.1. Farklı Java Teknolojilerine Genel Bir Bakı¸s

Java’nın ba¸slangıçta ta¸sınabilir gömülü sistemlerde çalı¸sabilecek

¸sekilde tasarlanmasına ra˘gmen, bu teknolojinin di˘ger teknolojilerden sonra ortaya çıkması bir ironi olarak kar¸sımıza çıkmaktadır.

¸Sekil 2.1’de görüldü˘gü gibi mobil cihazlarda çalı¸sacak Java uygu- lamaları için ’CVM’ ve ’KVM’ tipindeki sanal makineler kullanılmak- tadır. Mobil cihazlar kısıtlı donanımsal imkanlara sahip olduklarından, üzerlerinde çalı¸san sanal makineler de kısıtlı özelliklere sahiptir. Standart JVM’de olup da KVM ve CVM’de olmayan özellikler ¸söyle sıralanabilir :

• ’Weak references’ (Garbage Collection tarafından toplanabilecek nesne kullanımı)

• ’Reflection’ (Çalı¸sma zamanında kod yapısına eri¸silebilmesi)

• ’Thread Groups’ & ’Daemon Threads’ (˙I¸s parçacıkları)

(33)

• JNI (’Java Native Interface’ – ’Native’ metotların yazılabilmesi)

• ’User-defined class loaders’ (Geli¸stiricilerin kendilerine özgü sınıf yükleme yapabilmesi)

2.2 Mobil Cihazlarda Uygulamalar Nasıl Çalı¸sıyor?

Mobil cihazların da kendi donanımsal yapılarına göre ayarlanmı¸s i¸sletim sistemleri vardır. Donanım kaynaklarına ula¸sırken uygulamadan gelen me- sajlar do˘grudan Java sanal makinesine geçirilmez. Bunun yerine konfigü- rasyon isimli bir ara katman kullanılarak; geli¸stiriciye, üzerinde çalı¸stı˘gı cihazın kaynakları güvenli bir ¸sekilde açılmı¸s olur. Konfigürasyon, cihaz için kullanılacak sanal makineyi ve desteklenecek profillerin listesini tuta- rak, yazılımcıyı bu temel üzerinden uygulama geli¸stirmeye zorlar. ˙Iki tip konfigürasyon vardır2:

1. CDC (’Connected Device Configuration’) : E˘glence kutuları (diji- tal TV gibi), yüksek kapasiteli PDA’lar ve 3. nesil mobil telefonlar (2 MB RAM) gibi nispeten daha iyi donanımlı cihazlarda kullanı- lan konfigürasyondur. Bu cihazlarda performanslı çalı¸smayı ’CVM’

sa˘glamaktadır.

2. CLDC (’Connected, Limited Device Configuration’) : Daha çok mikro cihazlar olarak anılan (160 – 512 K RAM) mobil telefonlar ve PDA’lar da kullanılan konfigürasyon türüdür.

2http://www.smackall.com/mobile-game-developer/viewtopic.

php?t=2

(34)

¸Sekil 2.2. Mobil Cihaz Java Çalı¸sma Mimarisi

Profil, bir konfigürasyonu temel alarak yeni sınıf kütüphaneleri ile bunun geni¸sletilerek kullanılabilmesini sa˘glar. ¸Sekil 2.2’de belirtildi˘gi gibi, Java uygulaması profil üzerinden konfigürasyon katmanı ile ili¸ski kurabildi˘gi gibi do˘grudan da konfigürasyon katmanına isteklerin gönderilmesine ola- nak vermektedir. Ayrıca bir profil, i¸slevsel olarak ba¸ska bir profil ile de ili¸skili olabilir.

• MIDP (’Micro Information Device Profile’)

• Foundation Profile/Basic Personal Profile/Personal Profile

• PDA Profile (JSR 75)

• Games Profile (CDC/Foundation Profile [JSR 134])

• RIM Profile (CDC/Foundation Profile [JSR 66])

• MIDP NG (CLDC [JSR 118])

(35)

• USB Profile (JSR 80)

• Bluetooth Profile (JSR 82)

profillere örnek olarak verilebilir.

2.3 Mobil Cihazlarda Uygulama Geli¸stirme

Mobil cihazlar üzerinde (CLDC tipi için) MIDP profili temelinde geli¸sti- rilen uygulamalara ’Midlet’ adı verilmektedir. Bu tip uygulamaları gerçek cihazlar üzerinde çalı¸stırmadan önce test edilmelerini kolayla¸stıran emü- latörler ve yazılım geli¸stirme araçları kullanılabilmektedir. Örne˘gin, Sun firmasının ’Java Wireless Toolkit’ adlı SDK’sı, geli¸stiricilerin yazdıkları Midlet örneklerini çalı¸stırıp deneyebilecekleri geçici bir çalı¸sma ortamı sunmaktadır. Nokia firmasının sundu˘gu ’Developer Suite for J2ME’ adlı SDK da, hızlı ve kolay bir ¸sekilde mobil uygulama geli¸stirilmesine olanak vermektedir.

Günümüzde ’Eclipse’, ’Netbeans’, ’Jbuilder’, ’Sun Java Studio’,

’IBM Web Sphere’, ’Intelli’ gibi bir çok farklı uygulama geli¸stirme editör- leri Java geli¸stiricileri tarafından tercih edilebilmektedir. Örne˘gin, ’Netbe- ans’, kurulumu ile beraber ’CDC’ ve ’CLDC’ tipi konfigürasyona sahip mobil cihazlar için uygulama geli¸stirmeyi destekleyebilirken; ’Eclipse’, kurulumundan sonra kendisine eklenti olarak yüklenecek ’EclipseME’ gibi bir eklenti ile benzer çalı¸sma ortamını sunabilmektedir.

J2ME ile geli¸stirilen uygulamalar ön do˘grulama (’pre-verify’) adı verilen bir i¸slemden geçerek byte-code’a dönü¸stürüldükten sonra sanal ma- kine tarafından yorumlanırlar. Ön do˘grulama i¸slemi, cihazın destekledi˘gi

(36)

özelliklerin kullanıcı tarafından do˘gru bir ¸sekilde kullanımını sa˘glayarak, güvenli programlama yapılmasında kilit rol oynar. Geli¸stirilen her bir Mid- let ayrı bir uygulamayı referans eder. Bir uygulama kendisi ile beraber kul- lanılan di˘ger kaynak kütüphaneleri ile sıkı¸stırılarak bir ar¸siv dosyasında tutulur. Buna ’JAR’ (’Java Archive File’) denir. Ar¸siv dosyalarının içerik bilgilerini tutan tanımlayıcı dosyaya da ’JAD’ (’Java Archive Definiton’) denir. Örnek bir yapı ¸sekil 2.3’de gösterilmektedir:

¸Sekil 2.3. JAR Yapısı Örne˘gi

Uygulama geli¸stirmede en çok kullanılan profil ’MIDP’ profilidir.

Bu profilin ilk sürümü 1.0’dır. ¸Su an 3.0 sürümü olan profilin 1.0 sürü- münde desteklenen standart sınıf paketleri ¸sunlardır:

• java.io

• java.lang

• java.util

• javax.microedition.io

(37)

• javax.microedition.lcdui

• javax.microedition.midlet

• javax.microedition.rms

2.0 sürümünde grafiksel ö˘gelerin kullanımını daha pratikle¸stirmek ama- cıyla oyun geli¸stiricilere yönelik yenilikler yapılmı¸stır. Bu paket, ’ja- vax.microedition.lcdui.game’ adıyla ortaya çıkarılmı¸stır:

• GameCanvas

• Layer

• LayerManager

• Sprite

• TiledLayer

bu paket altında yer alan sınıflardır.

2.4 MIDP 2.0 üzerinde Basit Bir Mobil Uygulama Geli¸s- tirme

¸Sekil 2.4. Mobil Uygulama Akı¸s Tasarımı (IDE - Netbeans 5.5)

(38)

Akı¸s tasarımı ¸Sekil 2.4’de gösterildi˘gi gibi geli¸stirilen uygulama iki adet sayıyı birer metin kutusundan parametre olarak alıp, sonucu üçüncü bir metin kutusuna yazdıran basit bir kod örne˘gidir. ’HelloMidlet’ a¸sa˘gıdaki metotları Midlet sınıfını geni¸sletti˘ginden dolayı içermektedir:

• startApp

• pauseApp

• destroyApp (boolean unconditional)

Bu metotlar Midlet’in ya¸sam döngüsünde rol alırlar. ’startApp’ metotu, ekranda görüntülenebilecek türdeki unsurları (Canvas, Form); görüntüle- meden sorumlu yapıya aktaran kod blo˘gunu içerir.3

Display.getDisplay(this).setCurrent(Displayable);

’setCurrent’ metotu, ’Displayable’ türündeki herhangi bir sınıfı re- ferans edebilmektedir. A¸sa˘gıda, geli¸stirilen uygulamanın Nokia S60 seri- sindeki cihaz ekranında nasıl görüntülenece˘gi emülatör yardımı ile göste- rilmi¸stir:

3bkz. Ek8

(39)

¸Sekil 2.5. HelloMidlet Ekran Tasarım Görüntüsü (IDE - Netbeans 5.5)

¸Sekil 2.6. HelloMidlet S60 Serisi Cihaz Ekran Görüntüsü

(40)
(41)

3 MOB˙IL OYUNLAR

Mobil oyunlar, bügün ula¸sılan teknoloji dikkate alındı˘gında, elde tutulan oyun konsolları, mobil telefonlar ve ki¸sisel dijital yardımcı(PDA)’ lar gibi ta¸sınabilir terminaller üzerinden eri¸silen oyunlar olarak tanımlanmaktadır.

Temel olarak 6 farklı kategoride incelenebilirler1:

• Gömülü

• ˙Indirilip Sonradan yüklenebilir

• Tek kullanıcılı

• Çoklu oyuncu destekli

• ˙Interaktif

• ˙Interaktif olmayan

Mobil teknolojideki hızlı geli¸smeler dikkate alındı˘gında, mobil oyun- ların daha geli¸sme a¸samasının ba¸sında oldu˘gu ve hızla geli¸sen mobil teknolojilerin paralelinde yeniliklere açık oldu˘gu kesindir. Mobil oyunlar, üzerinde çalı¸sacakları donanım ve yazılım çatısı mimarilerine göre bir çok farklı türde geli¸stirilebilmektedir. Örne˘gin grafiksel ö˘gelerin daha az kullanıldı˘gı, dü¸sünme gücüne dayalı, etkile¸simli, çoklu oyuncu modunu destekleyen mobil oyunlar da mevcuttur.

1http://www.javaworld.com/javaworld/jw-11-2003/

jw-1107-wireless.html

(42)

• SMS (’Short Message Service’) – Kısa Mesaj Servisi Oyunları

• Tarayıcı (’Browser’) Oyunları

• J2ME ve Di˘ger Yorumlanmı¸s Dil Oyunları

• C++ Uygulamaları

• ˙I¸sletim Sistemi Oyunları

• Zengin Nokia N-Gage Oyunları

• Çok Kullanıcılı (’Multiplayer’) Oyunları

mobil oyun türlerine örnek olarak verilebilir. Mobil oyunlar, PC veya konsol üzerinde geli¸stirilmi¸s oyunlara göre daha basit ve kısa zaman dilimi içinde e˘glence amaçlı kullanılabilecek türde uygulamalardır. ¸Se- kil 3.1’de bazı mobil oyunların ekran görüntü örnekleri gösterilmektedir.

Tablo 3.1’de mobil oyunların artıları ve eksileri tartı¸sılmı¸stır (U˘gur, 2003) :

(43)

Tablo 3.1. Mobil oyunların özelliklerinin kar¸sıla¸stırılması

Artıları Eksileri

Terminaller her zaman kullanıcının yanında

Farklı yapı ve özellikdeki terminaller, sonuçta oyunların genel yaygınlı˘ga ula¸samaması Farklı donanımlara ihtiyaç yok,

maliyet tasarrufu

Mobil telefonların farklı yapıları ve özelliklerinden dolayı oyun

pazarının her geçen gün biraz daha bölümlenmesi

Yakın zamanda sürekli internete ba˘glı olunacak (Oyunlara etkile¸sim katma imkanı)

Oyunların yüksek fiyatlı uygulamalar olarak görülmesi (Operatörlerin yanlı¸s uygulamaları) Dü¸sük oyun geli¸stirme maliyetleri Oyunların geli¸stirilmesindeki

kısıtlar (Animasyona dayalı macera türü oyunların SMS ve WAP üzerinden gerçekle¸stirilememesi) Operatörlerin fiyatlandırmada etkin

rol almaları

Ekran ve tu¸s takımı kısıtları

Dü¸sük veri ileti¸sim hızı ve

etkile¸simli oyunlara olumsuz etkisi

(44)

¸Sekil 3.1. Nokia S40 Serisi Telefon için Mobil Oyun Ekran Görüntü Ör- nekleri

3.1 Mobil Oyun Geli¸stirme Teknikleri

Mobil oyunlar bir çok farklı tipteki mobil cihaz için geli¸stirilebilir. Bu tez çalı¸smasında, test donanımı Nokia S60 serisi bir telefon olarak belirlendi-

˘ginden ekran tasarımı ve oyunun geli¸sim süreci S60 serisine uygun olarak optimize edilmi¸stir.

¸Sekil 3.2. Nokia S40 ve S60 serilerini gösteren logo

(45)

Bir mobil oyun genel olarak üç a¸samayı barındırır. Bunlar,

• Oyun Ba¸slangıcı (Menü, kar¸sılama ekranı gibi)

• Oyun Deneyimi

• Oyun Sonu (En yüksek skor, yeni puan giri¸si gibi)

¸seklinde ele alınabilir.

Yazılım geli¸stiriciler açısından bakıldı˘gında mobil platforma yöne- lik uygulamalar ortaya koymak; cihazların kısıtlı donanım özelliklerinden dolayı masaüstü platformlara göre nispeten daha çok dikkat ve çalı¸sma gücü gerektirmektedir. Bu nedenle mobil uygulamaların ortaya çıkarılma- sında yazılım geli¸stiricilerin kodlama sürelerinin olabildi˘gince dü¸sürülme- sine yönelik çalı¸smalar yapılmaktadır. Bu çalı¸smalardaki genel mantık, uy- gulama içerisinde kullanılacak grafiksel ö˘gelerin (iki boyutlu resim, üç bo- yutlu model gibi) kodun yazımına ba¸slanmadan önce çe¸sitli grafik editör- leri (GIMP, Adobe Photoshop, Maya, 3DSMax gibi) ile ortaya çıkarılması;

ardından tasarımı yapılan mimariye göre kodun yazılmasına dayanmakta- dır. Geli¸stiricinin zaman kazanması için grafiksel ö˘geler ile ilgili kodların otomatik olarak çıkarılmasını sa˘glayan ara uygulamalar kullanılması; böy- lece oyunun ana mantık kuralları ile geli¸stiricinin daha çok ilgilenebilmesi hedeflenmektedir. (Dimitri et al., 2006)

¸Sekil 3.3’de yukarıda anlatılan çalı¸sma yöntemi özetlenmektedir.

(46)

¸Sekil 3.3. Verimli Çalı¸sma ile 3B Mobil Uygulama Geli¸stirme

Bir sonraki bölümde Nokia S40 ve S60 serisi için iyi bir mobil oyunun geli¸sim süreci oyun ba¸slangıcı, deneyimi ve sonu genel a¸samaları açısından incelenmektedir.

3.1.1 Nokia S40/S60 serisinde J2ME tabanlı mobil oyun- lar için 10 temel geli¸stirme kuralı

(Nokia, 2005a)’da belirtildi˘gi gibi tavsiye edilen genel kurallar ¸söyle açık- lanabilir:

(47)

3.1.1.1 Oyun öncesi geli¸sim

1 – Anla¸sılır bir menü yaratınız.

• S40, bir adet menü kullanır ve menüye sol tu¸s ile eri¸sim sa˘glar.

• Ana menü komutları genelde ¸söyle olur : ’Oyuna Devam Et’, ’Yeni Oyun’, ’Ayarlar’, ’Rekor Puanları’, ’Yardım’, ’Hakkında’. Çıkı¸s için sa˘g tu¸s kullanılırken, menü komut seçimi sol tu¸s ile yapılır.

• Menü olabildi˘gince kısa yapılmalıdır. Uzun menü listesi ’scroll’ ge- rektirdi˘ginden buna dikkat edilmelidir.

• Sol tu¸s için etiket olarak ’Seç’ veya ’Seçenekler’ ifadeleri kullanıl- malıdır. Oyun içinde ise ’Menü’ veya bir üçgen i¸sareti kullanılabilir.

• Sa˘g tu¸s için farklı görevlerine göre; ’Geri’, ’Kapat’, ’Çıkı¸s’, ’˙Iptal’,

’Temizle’ gibi etiketler kullanılabilir.

• Sol tu¸s menülerin seçimi (’Seç’, ’Tamam’ gibi), sa˘g tu¸s ise ’˙Iptal’,

’Geri’ gibi durumlar için kullanılmalıdır.

2 – Basitli˘gi en önemli konu olarak benimseyiniz.

• Zor çözümler de aynı etkiyi yaratsa da her zaman en basit seçilmeli- dir. Karma¸sık yapılar daha çok sorun olu¸stururlar.

• Oyun içerisinde fazla sayıda karakter tipi kullanılmamalıdır. Kulla- nılan karakterlerin her birinin farklı bir yapıyı temsil etti˘gine dair emin olunmalıdır.

(48)

• Farklı oyun modları; bu modların, gerçekten oyunda bir farklılık ya- rattı˘gı dü¸sünülüyorsa kullanılmalıdır.

3 – Oyun içinde yardım gereken yerde gerekli deste˘gi veriniz.

• Yardım metni özet olarak tutulmalıdır. Metinde daha çok kontrolle- rin anlatımına yer verilmelidir.

• Yardım metninin okunması sırasında, sonraki metin bilgisine ula¸sıl- masında aynı anda birden fazla satırın getirilmesine dikkat edilmeli- dir.

• On-line yardım sa˘glanabilir. Oyun karakterleri, bile¸senleri ve genel durumu hakkında kısa bilgiler verilebilir.

• S40 serisinde, özellikle hareketlendirme komutları grafiksel olarak gösterilebilir.

• Oyuncuların yardım metnini okuması zorlanmamalı ve onların mu- hakkak bu metni okuyacakları varsayımı yapılmamalıdır.

4 – Her seviyede tutarlı olunuz.

• Oyun dili olarak, oyuncunun ana dilini kullanılmalıdır.

• Telefon ekran tasarımı, telefon terminolojisi, oyun endüstrisi terim- leri ve oyuncunun kültürel yapısı ile tutarlı olunmalıdır.

• Oyunun kendi yapısı tutarlı bir terminoloji içermelidir.

5 – Kullanıcının zamanının de˘gerli oldu˘gunu unutmayınız.

(49)

• Oyun giri¸s (tanıtım) ekranının istenildi˘gi takdirde geçilebilmesine izin verilmelidir.

• Oyunun veya menünün yapısında kullanıcıya her seferinde veri giri¸si yapması zorlanmamalıdır.

• Kısayollar kullanılmalı ve gerekli yerlerde kabul edilebilir varsayı- lan de˘gerler atanabilmelidir.

3.1.1.2 Oyun deneyimi geli¸sim

6 – Do˘gal tu¸s takımı görevlerini kullanınız.

• 2, 4, 6, 8 tu¸sları yatay ve dikey eksende hareketlenme için kullanıl- malı; ok tu¸sları otomatikmen aktif edilmelidir.

• 1, 3, 7, 9 tu¸sları oyun içinde gerekiyorsa çapraz hareketlenme için kullanılmalıdır.

• 5 tu¸su ana görev tetikleyicisi olarak belirlenmelidir.

• Hareket görevi dı¸sındaki görevler için her bir tu¸s, tek göreve atan- malıdır.

• Oyun içerisinde sol tu¸s, oyunu geçici olarak durdurup (’pause’) me- nüye dönülebilmesini sa˘glayacak ¸sekilde programlanmalıdır. Sa˘g tu¸s genelde aktif edilmez ancak aktif edildi˘gi takdirde oyundan çıkı¸s için onay alınabilecek ¸sekilde görev yapabilir.

• Oyunu tasarlarken aynı anda birden fazla tu¸sa basılacak ¸sekilde kom- binasyon gerçekle¸stiriminden sakınılmalıdır.

(50)

7 – ’Kaydet’ ve ’Durdur’ seçenekleri kullanınız.

• Yılan oyununa benzer özellikte, oyun çıkı¸s veya durdurma durumla- rında arka planda kaydedilmelidir.

• Kaydedilmi¸s bir oyun var ise, kullanıcıya ba¸slangıç menüsü olarak

’Devam Et’ seçene˘gi sunulmalıdır.

• S40 cihazlarında kullanıcının telefon kapama tu¸su olan kırmızı tu¸sa basması sonucu ani oyun sonlandırmak durumları için otomatik kay- detme özelli˘gi mevcuttur. Bu özellikten faydalanabilmek için Mid- let’in ’destroyApp()’ metotu kullanılmalıdır.

• S40 serisinde oyunu durdurmak için (’pause’ durumu) ’hideNot- ify()’ metotu kullanılabilmektedir. Bu durumda sol tu¸s oyun menü- sünü ça˘gırma görevini üstlenmektedir.

• Kullanıcının oyun geçici olarak durduruldu˘gu anda çıkı¸s i¸slemini yapması, oyunun otomatikmen kaydedilmesini gerekli kılar.

8 – Oyun dünyası ile gerçek dünyanın uyumlu olmasına dikkat ediniz.

• Oyun gerçek dünyaya uygun programlanmalıdır. Örne˘gin, bir topun fırlatılması veya atılması sırasında gerçek fizik kurallarına uygun bir atı¸s yapılmalıdır.

• Görünmeyen engeller veya kullanıcının ula¸samayaca˘gı ilginç alanlar yaratılmamalıdır.

• Oyun içindeki oyuncu, kullanıcı herhangi bir ¸sey yapmadan öldürül- memelidir.

(51)

• Oyun içindeki unsurların dı¸s görünümleri ile davranı¸slarının tutarlı olmasına dikkat edilmelidir.

• Kullanıcı daha önceden ö˘grendi˘gi bilgilerden yeni çıkarsamalar yap- maya zorlanmamalıdır. Oyun içinde kullanılan her ¸seyin açık ve fizik kurallarına uygun bir ¸sekilde geli¸stirilmesi önemlidir.

9 – Ses kullanımını olabildi˘gince basite indirgeyiniz.

• S40 serisinde ses geri besleme olarak kullanılabilmektedir ancak oyun ses olmadan da oynanabilmelidir.

• Rahatsız edici a¸sırı yüksek ses seviyesi kullanımından kaçınılmalı- dır.

• Arka plan müzi˘gi kullanılabilir ama kullanımı tavsiye edilmemekte- dir.

• Oyun içerisinde kolay bir ¸sekilde kullanıcının, ses seçene˘gini açıp kapatabilmesi sa˘glanmalıdır.

• Sesler kolay bir ¸sekilde ayırtedilebilmeli ve birbirine karı¸smamalıdır.

• Ses kullanımı da tutarlı bir ¸sekilde yapılmalı; örne˘gin üzgün bir sah- nede yava¸s bir müzik tersi durumda ne¸seli bir sahnede ise hızlı bir müzik kullanılabilir.

3.1.1.3 Oyun sonu geli¸sim

10 – En yüksek puanı kaydedebilmeyi ödül olarak sununuz.

(52)

• Oyunda puan tablosu tutuluyorsa, puan listesinin dü¸sükten yükse˘ge sıralamasının görüntülenebilmesi sa˘glanmalıdır.

• ˙Isim giri¸sinin yapılabilmesi kolayla¸stırılmalıdır.

• Önceden girilen isim bilgisi varsayılan bilgi olarak sunulmalıdır.

• ˙Isim giri¸si seçenekli yapılmalı, kullanıcı zorlanmamalıdır.

• En yüksek ilk 10 puan listelenmelidir. Oyunun de˘gi¸sik modları var ise bunların her biri için de en yüksek ilk 10 puan tutulması yeterlidir.

3.1.2 Mobil oyunlarda kullanılabilirli˘gin sa˘glanması

Mobil oyunlarda ba¸sarılı bir ürün ortaya koymanın temel ¸sartlarından biri kullanılabilirli˘gin iyi bir ¸sekilde sa˘glanmasına ba˘glıdır (Nokia, 2005b).

3.1.2.1 Oyun öncesi kullanılabilirlik

a - ) Yükleme (’Loading’) : Yükleme i¸slemi kabul edilebilir bir zamanda yapılmalıdır. Oyunun açılı¸sının uzun sürmesi kullanıcıyı sıkacak dolayı- sıyla olumsuz bir etki yaratılmı¸s olacaktır. Bunun için,

• Oyunun olabildi˘gince hızlı yüklenmesi

• Yükleme sırasında arka plan resmi, oyun ile ilgili bilgiler, üretici bilgisi. vb. metinsel ifadelere yer verilerek kullanıcının bilgilendiril- mesi

• Yükleme i¸slemini gösteren ilerleme durumu çubu˘gunun kullanılması

(53)

gözönüne alınması gereken önemli kriterlerdir. J2ME tabanlı bir oyun, maksimum 10 sn. gibi bir sürede yüklenebilmelidir.

b - ) Giri¸s (’Intro’) : Giri¸s kısmı 2 - 3 sn. sürecek ¸sekilde ayarlan- malı ve istendi˘gi takdirde atlanarak do˘grudan oyuna giri¸s sa˘glanabilmeli- dir. Ayrıca giri¸s kısmı atlandı˘gında, bu bölüme ait müzik de sonlandırılma- lıdır.

Giri¸s kısmında müzik kullanımı, telefonun sessize alınmı¸s mo- dunda aktif edilmemelidir. Bir çok kullanıcının telefon tonlarını sessize almasına ra˘gmen oyunda müzik çalınması; onların, bu tip oyunlardan so-

˘gumalarına neden olmaktadır.

J2ME için; MIDP 1.0 profilinde, telefon sessiz modunda olsa da, MIDI tipi ses kullanıldı˘gında bu seslerin çalındı˘gı görülmü¸stür. Bu nedenle bu profil için MIDI kullanımı tavsiye edilmemektedir. MIDP 2.0 profilinde ise sessiz modunda ton tipi sesleri oynatılmakta bu nedenle giri¸s kısmında ton tipi ses kullanılmaması tavsiye edilmektedir.

c - ) Ana Menü (’Main Menu’) : Ana menü, kullanıcıya yakın te- rimler içeren; kullanımı kolay bir ¸sekilde tasarlanmalıdır. A¸sa˘gıdaki ba¸s- lıklar bir çok oyun için kullanılabilecek yapıya, örnek verilebilir:

• Devam Et (’Continue Game’) Otomatik kayıt seçene˘gi olan oyun- larda kullanılan bir menüdür. Herhangi bir ba˘glantı üzerinden çoklu oyuncu modunda oynanan bir oyunda ’Yeniden Ba˘glan (Reconnect)’

veya ’Bluetooth Oyununa Devam Et (Continue Blutooth Game)’

¸seklinde isimlendirilebilir.

• Yeni Oyun (’New Game’) Yeni oyun ba¸slangıcını sa˘glar. Oyunun birden fazla modu varsa bunlar arasında bir seçim yapılması gereken

(54)

ekranı getirir.

• Ayarlar (’Settings’) ˙Ikiden fazla ayar bulunmuyorsa ana menü ile birle¸stirilebilir. Örne˘gin ses kullanımında “Ses : Açık” deyimi, “Sesi Aç” deyimine tercih edilerek iç menü tasarımı yapılmalıdır.

• Rekor Puanları (’High Scores’) Sadece puanlama sisteminin kayıt altına alındı˘gı oyunlarda kullanılır. Puan listesi en iyiden, en kötüye do˘gru sıralanacak ¸sekilde gösterilmelidir.

• Yardım (’Help’) Daha çok oyunun kontrolü ve oyunda amaçlanan hedefleri anlatan kısa metinsel ifadeyi içeren bir yapıda olmalıdır.

Tek bir tu¸s basımı ile birden fazla satırın okunabilirli˘gi sa˘glanmalı- dır.

• Hakkında (’About’) Telif hakları, sürüm ve üretici bilgileri ile isten- di˘gi takdirde oyunla ilgili daha fazla bilginin yer aldı˘gı web sitesinin adresi verilebilir.

• Çıkı¸s (’Exit’) Oyun ayarlarının kaydedilip, oyundan çıkı¸sın yapıl- masını sa˘glar.

ç - ) Ana Menü Gerçekle¸stirimi (’Main Menu Implementation’) : Ana menü ortak grafiksel ö˘geler kullanılarak ¸sekillendirilmelidir. Bellek düze- yine dikkat edilerek, görüntü tercihinde ayrı görüntü ö˘geleri yerine gö- rüntü listelerinin kullanımı tercih edilmelidir. Ana menüde kullanılan renk tercihi oyuna da yansıtılmalı, renk düzeni açısından tutarlı bir yapı elde edilmeye çalı¸sılmalıdır. J2ME uygulamalarında oyun içerisinde standart

(55)

arayüz unsurları yerine, özel geli¸stirilen yapıların tercih edilmesi bellek kullanımında performans artı¸sını sa˘glayacaktır.

d - ) Yönlendirme Tu¸sları (’Navigation Keys’) : Oyun için kulla- nılacak tu¸s takımları, alt yapıdaki arayüzde tu¸sların üstlendi˘gi görevlere benzer görevler ta¸sıyacak ¸sekilde programlanmalıdır. ˙Istisna olarak ayar menüsünde kullanılan sa˘g tu¸s (geri gelme fonksiyonu), hem kullanıcıyı üst menüye ta¸sırken; hem de seçili ayarları kaydedebilmelidir.

e - ) Durdurma Menüsü (’Pause Menu’) : Durdurma menüsü içsel olarak ’Devam Et’, ’Ayarlar’, ’Yardım’, ’Geri’, ’Çıkı¸s’ menülerini içer- melidir. E˘ger ’Devam Et’ veya ’Çıkı¸s’ menüleri seçilirse, oyun otomatik olarak kaydedildi˘gi takdirde uyarı verilmeden i¸slem yapılmalıdır. Oyuna geri dönüldü˘günde kullanıcıya hazırlanma fırsatı vermek için, oyun görü- nümü arka planda gösterildikten sonra, ’Ba¸sla’ gibi bir seçenekle oyuna katılması sunulabilir.

f - ) Bluetooth Ba˘glantı Menüsü (’Bluetooth Connection Menu’) : Kullanıcı, varsayılan ayarları ile ba˘glantı kurabilecek ¸sekilde; basit bir menü yapısı ile kar¸sılanmalıdır. ’Sunucu Yarat’, ’Sunucuya Ba˘glan’ gibi teknik terimler yerine; ’Oyun Yarat’, ’Oyuna Katıl’ gibi daha yakın ifade- ler kullanılmalıdır.

g - ) ¸Sifre Do˘grulama Menüsü (’Login Menu’) : Kullanıcıya sürekli kullanıcı adı/¸sifre sorulmamalı, ilk giri¸ste bu bilgi kaydedilmelidir. E˘ger özel grafikler kullanılarak bir menü olu¸sturulduysa, telefonun arayüzü ile uyumlu bir yapıda olmasına dikkat edilmelidir.

˘g - ) Liste Tasarımı (’List Design’) : Menüler açık ve anla¸sılır ol- malıdır. Kullanıcının, hangi menüde oldu˘gu bilgisi gösterilmeli; di˘ger me-

(56)

nülere eri¸simi kolayla¸stırılmalıdır. Menü ba¸slıkları içerikleri ile uyumlu olmalıdır. ”Lütfen seçiniz”, “Ana Menü” gibi ifadeler kullanılmamalıdır.

Birbiriyle ili¸skili eylemlere ait ifadeler beraber kullanılabilir. Ör- ne˘gin, “Yükle” ve “Kaydet” gibi. Herhangi bir sonucun dönmedi˘gi me- nülerde bo¸s ekran göstermek yerine “Kayıt Bulunamadı” gibi ifadelerin kullanımı tercih edilmelidir.

h - ) Ödeme Kontrolü (’Handling Payments’) : Kullanıcının önüne, oyun grafiklerinden ba˘gımsız sadece pozitif de˘gerleri kabul eden bir yapıya sahip diyalog penceresi çıkarılmalıdır. ˙I¸slem sonunda, ödemenin ba¸sarıyla yapılıp yapılmadı˘gı konusunda kullanıcı bilgilendirilmelidir.

ı - ) Yardım (’Help’) : Yardım ba¸slı˘gı ço˘gu zaman, kullanıcılar ta- rafından; oyunda zorlanılmayana kadar kullanılmaz. Genellikle de oyunun kontrolü ile ilgili bilgiler incelenir. Bazen de oyuna ba¸slamadan önce, oyu- nun ana amacının ö˘grenilmesi hedefiyle incelenir. Yardım metni,

• Kısa ve öz olmalıdır.

• ˙Ilk kısmında kontrollerle ilgili bilgileri içermelidir.

• Oyunun ana amacı kontrollerin hemen ardından maksimum 4 cümle ile ifade edilecek ¸sekilde yer almalıdır.

• Oyunun hikayesine yer verilecekse bu kısım oyunun amacı ile bir- likte kontrollerin ardında yer almalıdır.

• 1, 3, 7, 9 tu¸sları kullanılabiliyorsa çapraz hareketlenmeye müsade edilmelidir.

(57)

• Resim kullanılmalıdır. Özellikle hareket kontrollerinde, bir rakam ve bu rakama basılması sonucunda gidilecek yönü gösteren ok i¸sareti güzel bir anlatımı özetleyebilirler.

• Çoklu oyuncu modlu oyunlarda, yeni bir oyun olu¸sturma veya var olan bir oyuna ba˘glanma gibi eylemler hakkında bilgilere yer ve- rilmelidir. Bu bilgilere yardım metni dı¸sında, i¸slemlerin yapılaca˘gı yerde de yer verilmelidir.

• Oyunun aniden sona erdirilmesi durumlarında, son oyun bilgisinin nasıl saklandı˘gı konusu da kullanıcıya açıklanarak, oynanan geçmi¸s oyunların kaybının önüne geçilebilir.

• Ekran arka ı¸sı˘gının belirli bir süre sonra kapanması nedeni ile bu- nun yeniden açılması için hangi tu¸sa basılaca˘gı konusunda kullanıcı bilgilendirilmelidir.

kurallarına uyacak ¸sekilde olu¸sturulmalıdır.

i - ) Kullanıcının Zamanını Düzgün Kullanma (’Save the User’s Time’) : Etkinlik, kullanıcının bakı¸s açısına göre de˘gi¸sen bir kavramdır.

Örne˘gin, kullanıcı oyun oynarken aynı anda 10 sn.’de oynanan oyun kay- dedilebilirken, 5 sn. içerisinde oyun bittikten sonra kayıt yapılabiliyorsa;

ilk yakla¸sım daha etkin görülebilir. Oyunun ayarlanması, yüklenmesi vb.

unsurlar olabildi˘gince kısa zamanda bitirilmeli, kullanıcının oyun oyna- ması için harcayaca˘gı zaman maksimum düzeyde tutulmaya çalı¸sılmalıdır.

Zaman kullanımının etkinli˘gi için ¸su tavsiyeler yapılabilir :

(58)

• Veri ihtiyacında olabildi˘gince varsayılan de˘ger ataması yapılmalıdır.

(Sayısal de˘gerler için sıfır ataması gibi) Ancak fazladan bilgi tutul- ması da kullanıcının zamanından çalaca˘gından bundan kaçınılma- lıdır. Örne˘gin, isim bilgisinin ba¸slangıçta “Misafir” ¸seklinde tutul- ması, sonradan kullanıcının bunu silip yerine kendi belirledi˘gi ismi yazması açısından süre kaybına yol açacaktır.

• Oyun, kullanıcının oyun içerisindeki son durumunu tutabilmelidir.

Bir kaç seviyeden olu¸san bir yapıda kullanıcı belirli bir seviyeye ula¸smı¸ssa her seferinde ba¸slangıç seviyesinden ba¸slanmaya zorlan- mamalı ancak istendi˘gi takdirde de bu seçene˘ge dönebilmelidir.

• Kullanıcının girdi˘gi veriler, belirledi˘gi ayarlar tutulmalıdır.

• ¸Sifre giri¸sleri varsayılan olarak her seferinde yeniden istenilmeli an- cak istenmeme seçene˘gi de unutulmamalıdır.

• Kullanıcılar bir an önce oyunla tanı¸stırılmalıdır. Bunun için “Hızlı Ba¸slat” gibi bir seçenek sunulabilir.

• Mümkün olursa, zaman alıcı eylemler kullanıcı bir ¸seyler yaparken arka planda halledilmelidir.

j - ) Metin Giri¸si (’Text Entry’) : Metin veri giri¸sinde kullanıcı kendisinden beklenen veri ile formatı konusunda az çok tahmin yürütebilecek ¸sekilde bir yapı ile kar¸sılanmalıdır. Arka plandaki standart arayüze hem görüntüsel hem de fonksiyonel olarak yakın bir arayüzün kullanımı tercih edilmelidir.

Kullanıcı yanlı¸s veri giri¸sinde bulunsa bile olabildi˘gince bu bilgi kabul edi-

(59)

lecek ¸sekilde düzenlenme yapılmalıdır. ˙Isim giri¸slerinde ilk girilen de˘ger kabul edilerek i¸slem yapılmalı, her defasında yeni giri¸s istenmemelidir.

3.1.2.2 Oyun deneyimi kullanılabilirlik

a - ) Kullanıcıyı Rahatlatın (’Make the User Comfortable’) : Kullanıcı- nın özel bilgilerine saygı gösterilmelidir. Kullanıcılar bilgilerinin SIM kart veya farklı bir ba˘glantı üzerinden de˘gi¸sik yerlere gönderilebilece˘gini dü¸sü- nerek, özel bilgilerini vermek istemeyebilirler. Bu nedenle bu tip bilgilerin istenmesindeki ana amaç açık bir ¸sekilde kullanıcıya aktarılmalıdır. Ör- ne˘gin, e-posta adresi, kredi kartı bilgisi gibi veriler istendi˘ginde; ¸sifreli bir

¸sekilde tutulmalı, ayrıca seçime göre silinebilecek ¸sekilde kaydedilmelidir.

Oyunun oynandı˘gı sosyal alana göre kullanım ¸sekli kolayca de˘gi¸s- tirilebilmelidir. Örne˘gin, hızlı bir ¸sekilde ses kullanımının açılıp, kapatı- labilmesi; varsa titre¸sim seçene˘ginin açılıp, kapatılabilmesi önemlidir. Ses durumunu belirtmek için “Ses : Açık” ¸seklindeki ifade tarzının veya kont- rol kutucuklarının kullanımı tercih edilmelidir.

Genel bir kural olarak tek seferde oyun oynama zamanı 5 – 15 dk.

olacak ¸sekilde düzenleme yapılması tavsiye edilmektedir. Kullanıcı iste- di˘gi seviyeden oyuna ba¸slayabilmelidir.

b - ) Tu¸slar ve Oyun Kontrolü (’Keys and Game Controls’) : Oyun kontrolünde alı¸sılmı¸s tu¸s takımlarının kullanılması tercih edilmelidir. Kul- lanıcının istedi˘gi takdirde bu kontrollere farklı tu¸sları ataması da sa˘glana- bilir. Genellikle ¸su kurallara uyulması beklenir:

• Yön tu¸sları hareket komutları için kullanılmalı aynı zamanda nüme- rik tu¸slarda aynı görev için aktif hale getirilmelidir.

(60)

• Seçme görevini üstlenen varsayılan tu¸s ana i¸slem görevini 5 tu¸su ile beraber üstlenebilirler.

• Tu¸sların görevleri farklı oyun seviyelerinde farklıla¸smamalı, bir tu¸sa birden fazla görev verilmemeye çalı¸sılmalıdır.

• Karma¸sık kontrollerin gerekti˘gi durumlarda ard arda tu¸s basımı yak- la¸sımı kullanılabilir. Örne˘gin, 2 tu¸su zıplama görevine atandıysa, bu tu¸sa basılma süresi de zıplama miktarının hesaplanmasında kullanı- labilir.

• Genellikle kullanıcılar yön konusunda hareketlenmek için nümerik tu¸sları kullanmazlar ancak hızlı hareket edilmesi gereken oyunlarda nümerik tu¸slarını kullanmak daha ergonomik bir çözüm olarak kar-

¸sımıza çıkmaktadır.

• Nokia S40 ve S60 serisi için;

– Ana seçim tu¸sları (sa˘g, sol i¸saretleme tu¸sları) telefon kullanıcı arabirimine uygun bir ¸sekilde kullanılmalıdır.

– Oyun içerisinde, sol tu¸sa oyunu durdurma görevi atanmalı; se- çime göre bu tu¸sa basıldı˘gında durdurma menüsüne veya oyu- nun ana menüsüne çıkı¸s yapılmalıdır.

– Oyun oynanırken sol tu¸sun üzerinde ’Menü’ ifadesi yer almalı;

hatta üçgenimsi bir i¸saret de koyularak sol tu¸sun bir görevi ol- du˘gu bilgisi kullanıcıya anlatılmalıdır.

– Sa˘g tu¸sa herhangi bir görev atanmayabilir veya bu tu¸s için oyun içerisinde özel bir görev atanabilir.

(61)

• Tüm S60 serisi cihazlarda aynı anda birden fazla tu¸sa basılması al- gılanabilmektedir. Bunun için MIDP 2.0 profili ile gelen ’GameCan- vas’ sınıfının ’getKeyStates()’ metotu kullanılabilir.

• Ço˘gu tu¸s takımı çapraz hareketi desteklemez. Bu nedenle oyunlarda çapraz hareketlenmeden olabildi˘gince kaçınılmalı, kullanılması zo- runlu durumlarda kullanıcı rahat bir ¸sekilde çapraz hareketi uygu- layacak ¸sekilde yönlendirilmelidir. Yardım menüsünde bu konu ile ilgili bilgiler yansıtılmalıdır.

• Oyun giri¸sinde animasyonlar ve yükleme ekranları kullanılıyorsa, tu¸s takımlarının aktivasyonu kaldırılmalıdır. Kullanıcının bu ekran- lar görüntülenirken herhangi bir tu¸sa basması, oyun ba¸slangıcında etkide bulunabilece˘ginden; bu, oyunun ba¸slamadan sona ermesine dahi sebep olabilir.

c - ) Grafikler (’Graphics’) : Uyumlu renklerin kullanımı anla¸sılabilirlik açısından çok önemlidir. Örne˘gin menüde kullanılan renkler ile oyun içe- risindekilerin uyumlu olması kullanıcıya göz alı¸skanlı˘gı kazandırma konu- sunda önemlidir. Ayrıca seçili ö˘gelerin renkleri de˘gi¸stirilerek (’highlight’) seçimin belli edilmesi, dikkat edilmesi gereken hususların ba¸sında gelmek- tedir.

Oyunda yer alan nesnelerin ve karakterlerin anla¸sılabilirli˘gi çok önemlidir. Bu nedenle kullanıcıyı yormayan renk seçimini destekleyici renklerin kullanılması tavsiye edilmektedir. Çoklu kullanıcılı oyunlarda her bir karakterin farklı görünü¸slerde gösterilmesi, ayırtedicili˘gi kolayla¸s- tıracaktır. Ayrıca, takım mantı˘gı ile hareket edilmesi durumunda, grup ka-

(62)

rakterlerinin de belirlenmesini kolayla¸stıracak i¸saretlerin kullanımı öneril- mektedir.

Oyunda bo¸s alanlar olabildi˘gince bırakılmamalı, bu tip durumlarda oyun grafikleriyle dengeleme yolunda gidilmelidir. Arka plan resmi basit ve renk karma¸sıklı˘gı olmayan bir yapıda tasarlanmalıdır. Kullanıcı oyun- daki karakterler ve asıl nesneler ile arka planı karı¸stırmayacak ¸sekilde ra- hatça oyunu oynayabilmelidir.

ç – ) Aydınlatma I¸sı˘gı (’Backlight’) : Birçok cihaz yakla¸sık 15 sn.

gibi bir sürede arka plan ı¸sı˘gını otomatikmen kapatırlar. Bunda amaç ba- tarya süresinde tasarrufa gitmektir. Oyunların yardım metninde kullanıcı bu konuda uyarılmalı, bir tu¸sa arka plan ı¸sı˘gını açma görevi verilerek çö- züme gidilmelidir.

MIDP 2.0 profilini destekleyen ço˘gu cihazda, uygulama üzerinden arka plan ı¸sı˘gını kontrol etmek mümkün de˘gildir.

d - ) Ses (’Sounds’) : Mobil oyunlar için bir çok kullanıcı sesin gereksiz oldu˘gunu belirtmi¸slerdir. Zaten ses kullanımında varsayılan ola- rak oyunun sessiz modda açılması tavsiye edilmektedir. Kullanılan seslerin düzeylerinin olabildi˘gince dü¸sük tutulması ve birbirine karı¸stırılmaması da öneriler arasındadır.

Kullanıcının cihazı sessiz moduna almasına ra˘gmen oyun sesleri- nin aktif olması uygun kar¸sılanmamaktadır. Bu nedenle cihazın ses profil seçene˘ginin uygulamadan kontrol edilerek ba¸slangıçta buna göre konfigüre edilmesi önemlidir. Kullanıcı cihazı sessiz modda kullanmasına ra˘gmen oyun tonları ve sesleri aktif ise, yardım menüsünde oyun seslerinin de ka- patılması gerekti˘gi vurgulanmalıdır.

(63)

Oyun senaryosunda geli¸sen olayların niteli˘gine uygun seslerin kul- lanımına dikkat edilmeli, SMS, zil sesi ve cihaz tonları oyun içerisinde ter- cih edilmemelidir. ’Bluetooth’ üzerinden oynanan oyunlarda çalınan ses bilgisinin senkronize olması önemlidir.

e - ) Gerçek Dünya Kurallarına Uyun (’Match with the Real World’) : Kullanıcı oyun hakkında herhangi bir bilgi sahibi olmadan, oyuna rahatça ba¸slayabilmelidir. Oyuna ba¸slar ba¸slamaz beklemedi˘gi bir anda bir canavar tarafından yutulması pek bir anlam ifade etmedi˘gi gibi, hiç bir ¸sey yapmadı˘gı zaman oyun karakterinin ölece˘gini de pek ala anlaması önem- lidir. Do˘gal olarak oyunda sürprizlerin olması normaldir ancak kullanıcı,

%50 olasılıklı ölüm-ya¸sam arası bir seçim yapmaya zorlanmamalı; her za- man di˘ger alternatifler de sunulabilmelidir.

Fizik kurallarına uyularak gerçekçi bir yakla¸sım sunulması oyun- dan alınan zevki arttıracaktır. Kullanıcı kar¸sısındaki nesnenin hareketine kar¸sılık yaptı˘gı hareketin az çok ne getirece˘gini tahmin edebildi˘ginden, beklentiye yakın etkinin sunulması önem kazanmaktadır. Ancak gerçek Dünya’da verilen etkinin bire bir aynısını da her zaman uygulamak kulla- nıcıyı sıkabilir. Örne˘gin bir araba yarı¸sında kullanıcı belirli engellere çarp- tı˘gında arabaya büyük bir zarar verip, takla attırmak yerine hızında gözle görülür dü¸sü¸sler yapılabilir.

Oyunda gözle görülmeyen engeller kullanılmamalıdır. Eri¸silmesi engellenen alanlar oyun ortamından kolaylıkla ayırtedilebilir nitelikte ol- malıdır. Kullanıcının oyunda seviye atlaması, yaptı˘gı hareketlere göre ödüllendirilmesi gibi unsurlar açıkça belli edilmeli, yapılan eylem ile varı- lan sonuç arasındaki ba˘glantı görsel olarak açıkca ifade edilmelidir. Farklı

(64)

oyun seviyeleri farklı arkaplan, ses, grafik kullanımı ile programlanarak, oyunun oynanabilirli˘gi arttırılabilir.

Oyun içerisinde oyuncunun ölmesi gibi bir durum söz konusu ise, ani ölümle sonuçlanan oyunlardan sonra kullanıcının daha güvenli bir alanda oyuna ba¸slaması, ne ¸sekilde öldü˘günü anlamasına yardımcı olarak;

bir sonraki sefere, daha derli toplu bir oynayı¸s stilini kullanmasını sa˘gla- yacaktır. Çoklu oyuncu modunu destekleyen oyunlarda, her bir oyuncunun son durumu, di˘ger kullanıcılara, oyundaki karakter isimlerinin yanında ba- sit açıklamaları duruma göre farklı renk seçenekleri ile gösterilmelidir.

f - ) Geri Besleme – Bilgilendirme (’Feedback’) : Kullanıcılar oyu- nun her anında bilgilendirilmelidirler. Ses veya de˘gi¸sik renkli efekt kul- lanımı ilgiyi odaklamak için etkili unsurlardır. Örne˘gin, kullanıcının su- nucuya bir mesaj gönderme i¸sleminden sonra mesajın iletilip iletilmedi˘gi bilgisinin geri döndürilmesi önemlidir. Çoklu oyuncu destekli oyunlarda di˘ger oyuncuların ve oyun sunucusunun anlık durumları istendi˘gi takdirde görüntülenebilmeli ve oynayan ki¸siye oyunda, seçti˘gi isim yerine, “Sen”

¸seklinde hitap edilmelidir.

Oyundaki her bir unsurun, çoklu oyuncu modunda di˘ger oyuncular da dahil olmak üzere son durum bilgisinin sunulması önemlidir. Örne˘gin bir araba yarı¸sında di˘ger yarı¸sçıların haritada nerede oldukları, bir bulmaca çözme yarı¸smasında di˘ger oyuncuların anlık puan durumları, bir strateji oyununda oyuncunun kar¸sısındaki karakter ve nesnelerin özelliklerinin ne seviyede oldu˘gu gibi bilgiler rahatlıkla elde edilebilmelidir.

g - ) Kontrolü Kullanıcıya Verin (’Give Control to the User’) : Bir oyun kullanıcının hareketlerine göre uyumlanmalıdır bunun tersi olursa e˘g-

(65)

lence düzeyi dü¸sük bir uygulama ortaya çıkarılmı¸s olacaktır. Dolayısıyla kullanıcı herhangi bir etkide bulundu˘gunda, oyun tarafından buna verilecek tepki 0.5 – 2 sn. arasında bir sürede verilecekse, kullanıcıya tepki verilene dek bunun gerçekle¸sece˘gi hissi verilebilmelidir. Örne˘gin titre¸sim, ses veya yanıp sönen grafiksel efektler kullanılabilir.

Uygulama kullanıcıyı varılması gereken hedefe kesin ve tek bir yoldan ula¸smak konusunda kısıtlamamalı; ona birden fazla seçenek suna- bilmelidir. Ayrıca, kullanıcıyı çözümsüz bırakacak durumlardan kaçınıl- malı ve elindeki imkanları kullanamadan oyunun bitirilmesi engellenmeli- dir.

˘g - ) Oyun Tasarımı (’Game Design’) : Oyun olabildi˘gince basit ol- malı ve bir dakika gibi bir sürede ö˘grenilebilinmelidir. A¸sırı sayıda karak- ter kullanılmamalı, birden fazla karakter kullanımında herbirinin benzer- siz olmasına dikkat edilmelidir. Fazla sayıda kural oyunu sıkıcı ve karma-

¸sık yapabilir. Oyunun farklı seviyeleri olması oynanabilirli˘gini arttıracak- tır ancak seviye atlamanın kullanıcıya gerçekten bir de˘ger ta¸sıdı˘gı izlenimi verilmelidir. Bunun için farklı seviyelerde, oyun görsel yapısında de˘gi¸sik- li˘ge veya belirteçler (ses, titre¸sim, resim, yazı) kullanılarak harici puanlar (’bonus’) ile kullanıcıyı ödüllendirme yoluna gidilebilir.

Oyun seviyesinin dinamik olarak de˘gi¸stirilerek, kullanıcının oyna- yı¸s ¸sekline göre oyunun davranı¸sının farklıla¸stırılması en do˘gru yakla¸sım- lardan biridir. Bir oyuna ba¸slayan kullanıcıların seviyeleri farklı olabildi-

˘ginden genellikle oyunların ba¸slangıç düzeyinde ba¸slatılması ve ödüllerin henüz oyunun ba¸slarında iken erkenden verilmesi önerilmektedir. Bu yak- la¸sım kullanıcının motive olmasını kolayla¸stıracaktır. Ancak a¸sırı basitlik

(66)

de kullanıcıyı sıkabilece˘ginden, oynama ¸sekline göre oyun zorluk derece- sini dinamik olarak de˘gi¸stirebilmelidir. Oyun mantı˘gında sabit hedeflerin belirlenmesi, hem kullanıcıyı zorlaması hem de sabitli˘gin ö˘grenilmesinden sonra oyunun basitle¸smesi gibi olumsuz sonuçlara yol açtı˘gından, kulla- nımlarından kaçınılmalıdır.

h - ) Bitir Tu¸su (’End Key’) : Bu tu¸sa basıldı˘gında oyun otoma- tik olarak son hali ile saklanmalı ve kullanıcı ’Devam Et’ ile ba¸slayan bir menüye döndürülmelidir. Kullanıcı farklı i¸slemler yapıp uygulamayı sonra da açsa; e˘ger kaydedilmi¸s, bekleyen bir oyun var ise ’Devam Et’ seçene˘gi ba¸sta olmak üzere oyun menüsü ile kar¸sılanmalıdır.

Nokia S40 serisinde ’destroyApp()’ metotu yeni cihazlarda kulla- nılarak oyunun son durum bilgisinin tutulması sa˘glanabilir. Çoklu oyuncu modunu destekleyen oyunlarda ise durdurma i¸slemi tavsiye edilmez. Bu- nun yerine o kullanıcı için oyunun bitirilmesi, di˘ger kullanıcıların ise kendi aralarında oyuna devam edebilmeleri gibi bir yakla¸sımın kullanılması öne- rilmektedir.

ı - ) Durdurma (’Pause’) : Oyunlarda üzerinde çalı¸stıkları cihazların di˘ger özellikleri de dü¸sünüldü˘günde (aranma – arama, mesaj atma – alma, alarm çalması, takvim alarmı, kızılötesi alıcı, ’bluetooth’ alıcı gibi) her- hangi bir anda oyunun ani durumlar için o anki durumunun otomatikmen kaydedilmesi önemlidir. Kullanıcı oyuna bir sonraki giri¸sinde ’Devam Et’

ba¸slı˘gıyla kar¸sılanmalıdır. Kullanıcı cihazı sessiz modunda çalı¸stırıyorsa, oyunun menüsüne ani dönü¸slerde arkaplan müzi˘gi ve oyun tonlarının ka- palı olmasına dikkat edilmelidir. Oyunun arka plana atılıp atılmadı˘gı ’hi- deNotify()’ metotu ile belirlenebilir.

Referanslar

Benzer Belgeler

Geliştirilen oyun motorunun en çok kullanılacak olan sınıfı vektör sınıfıdır.. Vektör sınıfı tasarlanırken saflığa çok dikkat

Kodlama kütüphanesinde yer alan kodlarla harici bir video kameradan alınan görsel verinin oyun motorunu içine gerçek zamanlı olarak alınması ve resim sekansı olarak

OTOMATİK OYUN DÜĞMESİ (OTOMATİK OYUN ETKİNKEN) Otomatik oyunu durdurmak için bu düğmeye tıklayın..

OpenLayers gibi açık kaynak kodlu harita araçları, MySQL gibi veritabanı yazılımları ve çeşitli kodlamalar ile birlikte Web CBS sistemlerine uygun web üzerinden

Yap› tarz› 2: Üst dayanak noktas› sabit/alt son s›n›r pozisyonu serbestçe ayarlanabilir Uyar›: Do¤ru ba¤lant›ya dikkat edin.. (Montaj kablosu veya uzaktan

OTOMATİK OYUN DÜĞMESİ (OTOMATİK OYUN ETKİNKEN) Otomatik oyunu durdurmak için bu düğmeye tıklayın.

Özellikle sektörde bulunan hiçbir eğitim paketinin kazandıramayacağı ve sektörde yeni olan bu pozisyonlarda uzmanlaşan personel yetişmesi ve sektöre kazandırılması için

Oyun, çocuğun yaşamının parçasıdır ve hastane ortamında çocuğun oyun oynayabilmesi için fırsatlar tanınmalı, oyun alanları yaratılmalı, oyuncaklar sunulmalı