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



Benzer belgeler
BİT ini Kullanarak Bilgiye Ulaşma ve Biçimlendirme (web tarayıcıları, eklentiler, arama motorları, ansiklopediler, çevrimiçi kütüphaneler ve sanal

Tasarım Raporu. Grup İsmi. Yasemin ÇALIK, Fatih KAÇAK. Kısa Özet

B02.8 Bölüm Değerlendirmeleri ve Özet

Veri Toplama Yöntemleri. Prof.Dr.Besti Üstün

Evrak Ekle. Kurum İçi Giden Evrak Ekleme. Kırmızı renker; doldurulması zorunlu alanları ifade etmektedir. İleri Geri tarihli işlem yapılamamaktadır.

SÜREÇ YÖNETİMİ VE SÜREÇ İYİLEŞTİRME H.Ömer Gülseren > ogulseren@gmail.com

ÖĞRENME FAALĠYETĠ GELĠġMĠġ ÖZELLĠKLER

Bilgisayarla Tasarım I (GRT 207) Ders Detayları

SİİRT ÜNİVERSİTESİ UZAKTAN EĞİTİM UYGULAMA VE ARAŞTIRMA MERKEZİ YÖNETMELİĞİ BİRİNCİ BÖLÜM. Amaç, Kapsam, Dayanak ve Tanımlar. Amaç

KİTAP İNCELEMESİ. Matematiksel Kavram Yanılgıları ve Çözüm Önerileri. Tamer KUTLUCA 1. Editörler. Mehmet Fatih ÖZMANTAR Erhan BİNGÖLBALİ Hatice AKKOÇ

Digifresh Kullanım Kılavuzu

Temel Bilgisayar Programlama

REHBER İLKELERİ VE TS EN ISO EŞLEŞTİRME LİSTESİ

25 Nisan 2016 (Saat 17:00 a kadar) Pazartesi de, postaya veya kargoya o gün verilmiş olan ya da online yapılan başvurular kabul edilecektir.

SÜRE BİLİŞİM TEKNOLOJİLERİ ÜNİTE 1: : BİLGİ VE TEKNOLOJİ DERS SAATİ: 7

BÜRO YÖNETİMİ VE SEKRETERLİK ALANI HIZLI KLAVYE KULLANIMI (F KLAVYE) MODÜLER PROGRAMI (YETERLİĞE DAYALI)

YÜKSEKÖĞRETİM KURUMLARI ENGELLİLER DANIŞMA VE KOORDİNASYON YÖNETMELİĞİ (1) BİRİNCİ BÖLÜM. Amaç, Kapsam, Dayanak ve Tanımlar

Bölgeler kullanarak yer çekimini kaldırabilir, sisli ortamlar yaratabilirsiniz.

BİLGİ TEKNOLOJİLERİ VE İLETİŞİM KURULU KARARI

Karadeniz Teknik Üniversitesi Orman Fakültesi. Orman Endüstri Mühendisliği Bölümü PROJE HAZIRLAMA ESASLARI

Tasarım Psikolojisi (SEÇ356) Ders Detayları

K12NET Eğitim Yönetim Sistemi

Braille Star 40 Başvuru Kitapçığı Sürüm 4.0 Lütfen bu başvuru kitapçığıyla birlikte paketinizde bulunan kullanıcı kılavuzunu da gözden geçirin.

TESİSAT TEKNOLOJİSİ VE İKLİMLENDİRME ÇELİK BORU TESİSATÇISI MODÜLER PROGRAMI (YETERLİĞE DAYALI)

Android Uygulamalarında Güvenlik Testi

BİLİŞİM TEKNOLOJİLERİ ÜÇ BOYUTLU GRAFİK ANİMASYON (3DS MAX) MODÜLER PROGRAMI (YETERLİĞE DAYALI)

MAKÜ YAZ OKULU YARDIM DOKÜMANI 1. Yaz Okulu Ön Hazırlık İşlemleri (Yaz Dönemi Oidb tarafından aktifleştirildikten sonra) Son aktif ders kodlarının

ETKİLEŞİMLİ TAHTA KORUMA SİSTEMİ KURULUM

BQTEK SMS Asistan. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

TS7200 PLATFORMU ÜZERİNDE SERİ PORT-ETHERNET DÖNÜŞTÜRÜCÜ UYGULAMASI

Xerox ConnectKey Teknolojisine sahip Çok Fonksiyonlu Yazıcılarla (MFP'ler) Kullanım İçin

İngilizce Öğretmenlerinin Bilgisayar Beceri, Kullanım ve Pedagojik İçerik Bilgi Özdeğerlendirmeleri: e-inset NET. Betül Arap 1 Fidel Çakmak 2

Analiz aşaması sıralayıcı olurusa proje yapımında daha kolay ilerlemek mümkün olacaktır.

KAHRAMANMARAŞ SÜTÇÜ İMAM ÜNİVERSİTESİ BİLİMSEL DERGİLER YÖNERGESİ BİRİNCİ BÖLÜM Amaç, Kapsam, Dayanak ve Tanımlar

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI YÜZEY DOLDURMA TEKNİKLERİ

BİLGİ TEKNOLOJİLERİ VE İLETİŞİM KURULU KARARI

ULAKBİM Danışma Hizmetlerinde Yeni Uygulamalar: Makale İstek Sistemi ve WOS Atıf İndeksleri Yayın Sayıları Tarama Robotu

BÖLÜM 7 BİLGİSAYAR UYGULAMALARI - 1

VEZNE PROGRAMINDA POSTA ÜCRETİ İLE İLGİLİ YAPILAN DÜZENLEMELER (Vezne Sürüm: )

İÇİNDEKİLER. 1. Projenin Amacı Proje Yönetimi Projenin Değerlendirilmesi Projenin Süresi Projenin Kapsamı...

QR Kodu Tarayıcısı / Okuyucusuna Uygun Uygulamalarda Kullanım İçin

Üniversitelerde Yabancı Dil Öğretimi

KİŞİSEL GELİŞİM VE EĞİTİM İŞ GÜVENLİĞİ VE İŞÇİ SAĞLIĞI MODÜLER PROGRAMI (YETERLİĞE DAYALI)

Q-BIZ VIEWER KULLANIM KILAVUZU

MUŞ ALPARSLAN ÜNİVERSİTESİ UZAKTAN EĞİTİM UYGULAMA VE ARAŞTIRMA MERKEZİ YÖNETMELİĞİ

GİYİM ÜRETİM TEKNOLOJİSİ. GALOŞ ve BONE DİKİMİ MODÜLER PROGRAMI (YETERLİĞE DAYALI)

Windows VISTA Ultimate Kurulumu ve Yönetimi

GİYİM ÜRETİM TEKNOLOJİSİ ÇOCUK DIŞ GİYSİLERİ DİKİMİ (CEKET- MONT- MANTO) MODÜLER PROGRAMI (YETERLİĞE DAYALI)

Yedi Karat Kullanım Klavuzu. Yedi Karat nedir? Neden Karat?

Sound Bar. Başlangıç Kılavuzu HT-CT370

Uzaktan Kumanda (Yalnızca Belirli Modellerde)

Ç.Ü. GÜZEL SANATLAR FAKÜLTESİ İÇ MİMARLIK BÖLÜMÜ GÜZ YARIYILI İÇM PROJE 5 & DİPLOMA PROJESİ

META TRADER 4 MOBİL İŞLEM PLATFORMLARI KULLANMA KILAVUZU 1. KURULUM

Genel bilgiler Windows gezgini Kes Kopyala Yapıştır komutları. 4 Bilinen Dosya Uzantıları

Hackerlar'ın Gözünden Flash Uygulamaları

KAVRAMLAR. Büyüme ve Gelişme. Büyüme. Büyüme ile Gelişme birbirlerinden farklı kavramlardır.

Araştırma Notu 15/177

Danışma Kurulu Tüzüğü

EBYS Eğitimi. Sisteme erişim adresi:

DEĞERLENDİRME NOTU: Mehmet Buğra AHLATCI Mevlana Kalkınma Ajansı, Araştırma Etüt ve Planlama Birimi Uzmanı, Sosyolog

Mimari Anlatım Teknikleri I (MMR 103) Ders Detayları

BIM BUILDING INFORMATION MODELING YAPI BİLGİ MODELİ

Anonim Verilerin Lenovo ile Paylaşılması. İçindekiler. Harmony

BÖLÜM 3 FREKANS DAĞILIMLARI VE FREKANS TABLOLARININ HAZIRLANMASI

Kalite Güvence ve Standartları

EPKAS (ELEKTRONİK PROJE KONTROL ARŞİVLEME SİSTEMİ) WEB KULLANIM KILAVUZU

GRAFİK VE FOTOĞRAF GRAFİKER MODÜLER PROGRAMI (YETERLİĞE DAYALI)

ARAŞTIRMA PROJESİ NEDİR, NASIL HAZIRLANIR, NASIL UYGULANIR? Prof. Dr. Mehmet AY

İZMİR KÂTİP ÇELEBİ ÜNİVERSİTESİ ENGELSİZ ÜNİVERSİTE KOORDİNATÖRLÜĞÜ VE ENGELLİ ÖĞRENCİ BİRİMİ ÇALIŞMA USUL VE ESASLARI BİRİNCİ BÖLÜM

EĞİTİM ÖĞRETİM YILI KASIM AYI VELİ BÜLTENİ ÇOCUĞUNUZLA TEKNOLOJİNİN DOĞRU KULLANIMI

Etkinliklere katılım, ücretli ve kontenjan ile sınırlıdır.

YETİŞKİNLER DİN EĞİTİMİ Akdeniz Müftülüğü

PROJE TEKLİF FORMU. Haydi birlikte harika bir iş çıkartalım.

KAPSAMLI İÇERİK SADELEŞTİRİLMİŞ ARAMA MOTORU YENİLİKÇİ BİLGİ İŞLEME TEKNOLOJİSİ PRATİK GÖRÜNTÜLEME ARAÇLARI MOBİL ERİŞİM

İngilizce İletişim Becerileri II (ENG 102) Ders Detayları

OFİS 365 ÖĞRENCİ MAİL SİSTEMİ KULLANIM KLAVUZU. Office 365

BİREYSEL SES EĞİTİMİ ALAN ÖĞRENCİLERİN GELENEKSEL MÜZİKLERİMİZİN DERSTEKİ KULLANIMINA İLİŞKİN GÖRÜŞ VE BEKLENTİLERİ

1. RESİM DÜZENLEME. Bir resmin piksel yoğunluğu yani PPI (Pixel Per Inches) 1 inç karede (1 inç = 2.54 cm) bulunan piksel sayısıdır.

Bilgisayar Destekli Çizim I (MMR 205) Ders Detayları

1 OCAK 31 ARALIK 2009 ARASI ODAMIZ FUAR TEŞVİKLERİNİN ANALİZİ

İstemci Yönetimi ve Mobile Printing (Mobil Baskı) Çözümleri


Yıllarca bu konuda çalışan görüntü işleme uzmanlarının önerisi. Artık ArcGIS ile entegre

USB KVM Switch. Ses özellikli ve 2 portlu USB KVM switch. Ses özellikli ve 4 portlu USB KVM switch

Topoloji değişik ağ teknolojilerinin yapısını ve çalışma şekillerini anlamada başlangıç noktasıdır.

ÖLÇÜ TRANSFORMATÖRLERİNİN KALİBRASYONU VE DİKKAT EDİLMESİ GEREKEN HUSUSLAR

ÖZEL GÜVEN TIP MERKEZİ

K.S.Ü. MÜHENDİSLİK MİMARLIK FAKÜLTESİ TEKSTİL MÜHENDİSLİĞİ BÖLÜMÜ BİTİRME ÖDEVİ / BİTİRME PROJESİ DERSLERİ İLE İLGİLİ İLKELER

BİLGİSAYAR DONANIMI. *** Gerçekleştirdikleri görev bakımından donanım birimleri ikiye ayrılır.

Farklı Televizyon Yayın Ortamlarında Aynı Anda Farklı Reklam Yayını Bir Koltuğa İki Karpuz Sığar mı?

Kis3 max Cep Telefonu Hızlı Başlangıç Kılavuzu

MÜHENDİSLİK ve MİMARLIK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ ELEKTRONİK DEVRELER LABORATUVARI DENEY FÖYÜ 1

AIMCO AIMCO. Kullanım Kılavuzu. Mayıs 2016

Başbakanlık Mevzuatı Geliştirme ve Yayın Genel Müdürlüğü :18

Şekil 1. Sistem Açılış Sayfası

Autodesk Building Design Suite Sorular ve Cevapları

SANAT VE TASARIM GUAJ BOYA RESĠM MODÜLER PROGRAMI (YETERLĠĞE DAYALI)

BÖLÜM 9. Sayıcılar, S7 200 CPU serilerinde C ile gösterilir. Sayıcılar, S7 200 CPU serilerinde: Yukarı sayıcı (Counter up CTU ),

İMZALAMA ARACI. Kullanım Kılavuzu. Nisan 2016 ANKARA. İmzalama Aracı Kullanım Kılavuzu Nisan 2016 Versiyon : 1.0 1/15

Hızlı Başlangıç Rehberi. Türkçe VTE-1016

Transkript:

EGE ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ (YÜKSEK LİSANS TEZİ) NESNEYE DAYALI YAKLAŞIMLA MOBİL CİHAZLAR ÜZERİNDE ÜÇ BOYUTLU OYUN MOTORU TASARIMI ve GERÇEKLEŞTİRİMİ Eray HANGÜL Bilgisayar Mühendisliği Anabilim Dalı Bilim Dalı Kodu: 619.01.00 Sunuş Tarihi: 23.11.2007 Tez Danışmanı: Yrd. Doç. Dr. Aybars UĞUR Bornova-İZMİR

III Eray HANGÜL tarafından YÜKSEK LİSANS tezi olarak sunulan "NESNEYE DAYALI YAKLAŞIMLA MOBİL CİHAZLAR ÜZE- RİNDE ÜÇ BOYUTLU OYUN MOTORU TASARIMI ve GERÇEK- LEŞTİRİMİ" başlıklı bu çalışma E.Ü. Lisansüstü Eğitim ve Öğretim Yönetmeliği ile E.Ü. Fen Bilimleri Enstitüsü Eğitim ve Öğretim Yönergesi nin ilgili hükümleri uyarınca tarafımızdan değerlendirilerek savunmaya değer bulunmuş ve23/11/2007 tarihinde yapılan tez savunma sınavında aday oy birliği/oy çokluğu ile başarılı bulunmuştur. Jüri Üyeleri: İmza Jüri Başkanı: Yrd. Doç. Dr. Aybars UĞUR... Raportör Üye: Yrd. Doç. Dr. Aylin KANTARCI... Üye: Yrd. Doç. Dr. Cengiz GÜNGÖR...

V ÖZET NESNEYE DAYALI YAKLAŞIMLA MOBİL CİHAZLAR ÜZERİNDE ÜÇ BOYUTLU OYUN MOTORU TASARIMI ve GERÇEKLEŞTİRİMİ HANGÜL, Eray YÜKSEK LİSANS Tezi, Bilgisayar Mühendisliği Bölümü Tez Yöneticisi: Yrd. Doç. Dr. Aybars UĞUR 23/11/2007, 169 sayfa Günümüzde mobil cihazlar üzerinde grafiksel öğeler 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şladıkça yazılım tarafında da beklentiler artmaktadır. Bu sektörün temel eğlence aracı olan mobil oyunlar da giderek artan talepler doğrultusunda 3 boyutlu grafik desteği ile kullanıcılara sunulmaktadır. Bu tez çalışmasında üç boyutlu Java mobil grafik kütüphanelerinden M3G kullanılarak bir oyun motoru geliştirilmiştir. Bu motor üzerinde gerçekleştirimi yapılan bir oyun yardımı ile performans testleri yapılmıştır. Özellikle M3G, OBJ ve MD2 formatlı hazır 3 boyutlu modellerin sahneye yüklenme işlemi detayları; işlemci maliyeti, bellek ve kullanım kolaylığı parametreleri açısından değerlendirilmiştir. Anahtar Sözcükler: M3G, J2ME, 3B Mobil Grafik, OpenGL ES, 3B Oyun Motoru, Mobil Oyun.

VII 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ĞUR 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 products reach a satisfactory state about their hardware structure, the expectations 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.

IX TEŞEKKÜR Öncelikle, sıcak yaz günlerinde klimalı; soğuk kış günlerinde kaloriferli laboratuarlarıyla mükemmel bir çalışma ortamı sunan Ege Üniversitesi Bilgisayar Mühendisliği Bölüm Başkanlığı na verdiği destekten dolayı teşekkür ederim. Bu tezin geliştirilmesinde yönlendirmeleriyle güçlü desteğini benden esirgemeyen, sürekli beni motive eden, lisans döneminden başlayarak bana bilgisayar grafiklerini sevdiren danışmanım Yrd. Doç. Dr. Aybars Uğur a minnetlerimi sunmayı bir borç bilirim. Yaklaşık sekiz senedir sürdürdüğüm üniversite yaşamıma acısıyla tatlısıyla sabırla katlanan aile bireylerime, akrabalarıma ve arkadaşlarıma bana verdikleri destekten dolayı teşekkür ederim. Yapay Zeka ve Grafik Grubu nda geliştirdiğimiz projelerde ve tezimde bana bir çok konuda yardımcı olan ekip arkadaşlarımızdan Araş. Gör. Tahir Emre Kalaycı yı, Araş. Gör. Ahmet Cumhur Kınacı yı ve Araş. Gör. Doğan Aydın ı burada anmak isterim. Tez metninin formatlı yazımı konusunda şablon ve editör kurulum yardımlarını benden esirgemeyen arkadaşım Araş. Gör. Önder Gürcan a ve ortak laboratuar arkadaşlığımız boyunca hoş sohbeti ile güzel bir çalışma ortamı yakalamamızı sağlayan Araş. Gör. İnanç Seylan a da teşekkürlerimi sunmak istiyorum. Son olarak, geliştirdiğimiz uygulamayı gerçek bir mobil cihaz üzerinde test etme imkanını sunan Erdem Eser Ekinci ye de çok teşekkür ederim.

XI İÇİNDEKİLER ÖZET... V ABSTRACT... VII TEŞEKKÜR... IX İÇİNDEKİLER... XI ŞEKİLLER DİZİNİ... XIX ÇİZELGELER DİZİNİ... XXI KISALTMALAR...XXIII 1.GİRİŞ... 1 2. JAVA DESTEKLİ MOBİL CİHAZLAR MİMARİSİ... 7 2.1 Mobil Cihazlar ve Java... 7 2.2 Mobil Cihazlarda Uygulamalar Nasıl Çalışıyor? 9 2.3 Mobil Cihazlarda Uygulama Geliştirme... 11 2.4 MIDP 2.0 üzerinde Basit Bir Mobil Uygulama Geliştirme... 13 3. MOBİL OYUNLAR... 17 3.1 Mobil Oyun Geliştirme Teknikleri... 20

XII 3.1.1 Nokia S40/S60 serisinde J2ME tabanlı mobil oyunlar için 10 temel geliştirme kuralı. 22 3.1.1.1 Oyun öncesi gelişim... 23 3.1.1.2 Oyun deneyimi gelişim... 25 3.1.1.3 Oyun sonu gelişim... 27 3.1.2 Mobil oyunlarda kullanılabilirliğin sağlanması... 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 tahminleme... 52 4. 3D MOBİL TEKNOLOJİNİN BAŞLANGICI ve İLERLEMESİ 57 4.1 3D Mobil Teknolojinin Gelişimi... 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şılaştırmalı Ölçüm Yazılımları... 67 4.3 3D Mobil API Tasarım Amaçları... 69

XIII 4.4 Neden 3 Boyutlu Grafik? Ondalıklı Artimetiğin Gücü!... 71 4.5 Diğer Mobil Grafik Teknolojileri ve Yapılan Çalışmalar... 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İŞTİRME İNCELİKLERİ 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 Şekli, Animasyon Kontrolcusu, Anahtar Sahne Sırası... 90 6.7 Graphics3D... 91 6.8 Arkaplan... 93 6.9 Dönüşümler ve Sahne Çizgesi Düğümleri... 94 6.9.1 Dönüşüm... 94 6.9.2 Sahne çizgesi düğümü... 94 6.9.3 Grup... 96

XIV 6.9.4 Kamera... 96 6.9.5 Işık... 97 6.9.6 Çok yüzlü poligon... 99 6.9.7 Nokta değer dizisi, nokta koordinat dizisi, nokta birleşme 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ştirici 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şın izleme... 113 7. GELİŞTİRİLEN UYGULAMALAR... 115 7.1 İki Boyutlu Mobil Oyun Örneği - Korsan Ördeklerin Krallığı... 115 7.2 Bir Küpün Evrimsel Gelişimi... 117 7.3 M3GE Motoru Tabanlı MobileSonic3D İsimli Mobil Oyun Motoru Gerçekleştirimi... 121

XV 7.4 MobileSonic3D Motoru Destekli FPS Oyunu : Monster Hunt... 135 8. SONUÇ ve TARTIŞMA... 139 Kaynakça... 143 EKLER... 145 Ek A. TERİMLER SÖZLÜĞÜ... 167 ÖZGEÇMİŞ... 169

XVI

XVII ŞEKİLLER DİZİNİ Şekil 2.1 Farklı Java Teknolojilerine Genel Bir Bakış... 8 Şekil 2.2 Mobil Cihaz Java Çalışma Mimarisi... 10 Şekil 2.3 JAR Yapısı Örneği... 12 Şekil 2.4 Mobil Uygulama Akış Tasarımı (IDE - Netbeans 5.5) 13 Şekil 2.5 HelloMidlet Ekran Tasarım Görüntüsü (IDE - Netbeans 5.5)... 15 Şekil 2.6 HelloMidlet S60 Serisi Cihaz Ekran Görüntüsü.. 15 Şekil 3.1 Nokia S40 Serisi Telefon için Mobil Oyun Ekran Görüntü Örnekleri... 20 Şekil 3.2 Nokia S40 ve S60 serilerini gösteren logo... 20 Şekil 3.3 Verimli Çalışma ile 3B Mobil Uygulama Geliştirme 22 Şekil 3.4 Kullanıcı Deneyiminin Elemanları (Mäkelä ve Fulton Suri, 2001; Kankainen, 2002)... 45 Şekil 3.5 Oyun dolaşımı tasarım örnekleri... 48 Şekil 3.6 Oynanabilirliğin Bileşenleri (İçerik, Kullanılabilirlik, Hikaye, Etkileşim, Teknoloji)... 51 Şekil 4.1 Mascot-Capsule farklı grafiksel kullanım örnekleri. 60 Şekil 4.2 OpenGL ES & M3G birlikte kullanımı... 62 Şekil 4.3 MEGA 1.1 sürümü mimarisi... 64 Şekil 4.4 jgl ES Kod Bloğu Örneği... 65 Şekil 4.5 Khronos grubuna ait gömülü cihaz API lerinin gelişimi 74 Şekil 4.6 OpenKODE katmanının kullanımı... 75

XVIII Şekil 4.7 OpenKODE nin içsel işleyiş şekli... 76 Şekil 4.8 Hybrid OpenGL ES çerçevesi... 79 Şekil 5.1 Mobiola Oyun Motoru Yapısı... 84 Şekil 6.1 Yönlü Işık Kullanımı... 97 Şekil 6.2 Çok Yönlü Işık Kullanımı... 98 Şekil 6.3 Spot Işık Kullanımı... 99 Şekil 6.4 Materyal ve nokta renklendirme hattı çalışma akışı. 104 Şekil 6.5 Şekil 6.6 Şekil 6.7 Şekil 6.8 Şekil 6.9 Perkspektif düzeltmenin kullanılmadığı (sol taraf) ve kullanıldığı (sağ taraf) örnekleri... 105 Farklı birleştirme yöntemlerinin görüntüleme üzerindeki etkileri... 107 En yakın komşu (sol örnek) ve doğrusal (sağ örnek) filtreleme etkileri... 110 Mipmapping yöntemi etkisi (Sol taraftaki görüntü belirgin şekilde aşırı piksel hatalı)... 111 Şeffaf 2 boyutlu Sprite kullanımı ile parçacık patlama etkisinin verilmesi... 112 Şekil 6.10 Biçimlendirme ile farklı yüz şekilleri elde edilmesi 112 Şekil 7.1 KOK S60 Serisi Cihaz Görüntüsü... 116 Şekil 7.2 Arkaplan resim parça sırası... 117 Şekil 7.3 Beyaz küp örneği... 120 Şekil 7.4 Her bir yüzü farklı renk geçiş efektleriyle renklendirilmiş, ışık etkili küp örneği... 120

XIX Şekil 7.5 OBJ Modelinin Java3D Desteği ile M3G Tabanlı Kodlarının Elde Edilmesi... 123 Şekil 7.6 MobileSonic3D Oyun Motoru Anlık Görüntüleme Desteği... 124 Şekil 7.7 Karşılaştırma Amaçlı Oluşturulan M3G Sahne Örnekleri... 126 Şekil 7.8 Görsel Özellikleri Farklı / Geometrik Özellikleri Aynı Tank Model Görüntüleri... 129 Şekil 7.9 M3G Tank Modellerin Yüklenme Süreleri... 130 Şekil 7.10 Karşılaştırma Amaçlı Oluşturulan OBJ Model Örnekleri... 131 Şekil 7.11 Değiştirilebilir İki Boyutlu Görüntü için Tamsayı - Byte Dönüşümü Örneklemesi... 133 Şekil 7.12 Monster Hunt S60 Emülatör Ekran Görüntüsü... 137 ă

XX

XXI ÇİZELGELER DİZİNİ Çizelge 3.1 Mobil oyunların özelliklerinin karşılaştırılması... 19 Çizelge 3.2 Farklı motivasyon şekillerine göre sınıflandırılmış ondört eğlence şekli... 46 Çizelge 3.3 Kullanılabilirlik Faktörleri... 49 Çizelge 7.1 Çizelge 7.2 Çizelge 7.3 Çizelge 7.4 m3g Formatlı Model Dosyalarının Karşılaştırmalı İncelemesi... 125 Görünüm Bilgisinin m3g Formatlı Modellerde Yükleme Performansına Etkisinin İncelenmesi... 128 obj Formatlı Model Dosyalarının Karşılaştırmalı İncelemesi... 131 MobileSonic3D Mobil Oyun Motoru Özellikleri ve Test Durumu Listesi... 135 Çizelge A.1 Terimler Sözlüğü... 168

XXII

XXIII KISALTMALAR Kısaltma M3G J2ME OpenGL ES jgl ES MIDP J2EE J2SE CDC CLDC JSR 184 JSR Açılım Mobile 3D Graphics (3B Mobil Grafik) Java 2 Micro Edition OpenGL Embedded Systems (OpenGL Gömülü Sistemleri) Java Graphics Library for Embedded Systems (Gömülü Sistemler için Java Grafik Kütüphanesi) Mobile Information Device Profile (Mobil Cihaz Genel Profili) Java 2 Enterprise Edition (Java 2 Gelişmiş Sürümü) Java 2 Standart Edition (Java 2 Standart Sürümü) Connected Device Configuration (Bağlı Cihaz Konfigürasyonu) Connected, Limited Device Configuration (Limitli Bağlı Cihaz Konfigürasyonu) M3G Project Code (M3G API Proje Kodu) Java Specification Request (Java için Yeni Kütüphane Talebi)

XXIV

1 1 GİRİŞ Mobil teknolojiler gün geçtikçe daha kararlı çalışabilen donanım ve yazılım seçenekleriyle hayatımızı kolaylaştırmaya başlamışlardır. Mobil cihaz üreticilerinin neredeyse kişisel bilgisayar performansında çalışabilecek, üzerinde işletim sistemi yüklü olabilen ürünleri piyasaya sürmeleri de beklentilerin artmasına neden olmuştur. Grafiksel öğelerin yüksek kalitede yansıtılmasını sağlayan mobil grafik kartlarının kullanımı bu alandaki en son yeniliklerden biridir. Böylece mobil cihaz kullanıcılarının daha çok, kısa süreli eğlence gereksinimlerini karşılama amacı ile kullandıkları mobil oyunların da kalitesinin artışı sağlanmıştır. 3 boyutlu grafiklerin donanım desteği ile yansıtılmasında mimaride temel kütüphane olarak kullanılan OpenGL ES 1, mobil oyun geliştiricilerin önünü açmıştır. Khronos 2 grubu tarafından belirlenen standartlardan biri olan OpenGL ES, diğer bir çok kütüphanenin de arka planda kendisinden destek aldığı, donanım seviyesinde çalışan temel kütüphane özelliğine kavuşmuştur. JSR 184 3 adı altında geliştirilen M3G 4 ise Java üzerinden 3 boyutlu grafiklerin mobil cihazlarda kullanımını platform bağımsız bir şekilde sağlayan uygulama programlama arayüzü olarak sunulmuştur. Görüntülenen sahnenin kayıt ve yüklenme imkanını sunan M3G bir çok mobil oyunun geliştirilmesinde kullanılmaktadır. 1 http://www.khronos.org/opengles 2 http://www.khronos.org 3 http://jcp.org/jsr/detail/184.jsp 4 http://developers.sun.com/mobility/apis/articles/ 3dgraphics/

2 Bu çalışmada M3G teknolojisi kullanılarak mobil cihazlar üzerinde oyun geliştirmeyi daha kolay ve esnek hale getiren bir oyun motorunun ortaya çıkarılması amaçlanmıştır. Bir oyun motoru, oyunun hikayesinde anlatılanların grafik detayından bağımsız olarak; etkileşim kontrolü, ses efekti, ağ bağlantı kontrolü, karakter model yükleme, harita yükleme, matematiksel ve zamansal hesaplamalar desteği gibi bir çok ortak özelliği sunabilen genel çerçeveyi tanımlar. Yapılan araştırmalarda mobil platformlar için geliştirilmiş bir çok oyun motoru örneği görülmüş; hatta Finlandiya firması olan Hybrid Graphics in 5 ve Japon firması olan HI-TECH in 6 sunduğu mobil çerçevelerin de mobil cihaz üreticilerine pazarlandığı anlaşılmıştır. Özellikle HI-TECH in Mascot-Capsule 7 adlı ürünü 3 boyutlu grafiklerin mobil platformda yansıtılmasında ilk oluşu ile önemli bir yere sahiptir. Şu anda da OpenGL ES ve M3G gibi popüler kütüphanelere destek verdiği bilinmektedir. Geliştirilmiş mobil oyun motorlarından sadece bir tanesinin M3G destekli olduğu görülmüştür. LGPL 8 lisansı ile dağıtılan M3GE 9 adlı bu motorun daha çok FPS 10 tarzı oyunları destekleyecek şekilde tasarlandığı belirlenmiştir. Proje sonunda strateji tabanlı bir oyun yapılarak geliştirilen oyun motorunun test edileceği planlandığından, M3GE den yapay zeka ve çarpışma testi bölümü haricindeki kısımları alınarak faydalanılma yoluna gidilmiş; hatta projenin yürütücüleri ile bağlantıya geçilerek ek modülle- 5 http://www.hybrid.fi/ 6 http://www.hicorp.co.jp/ 7 http://www.hicorp.com.sg/en/mc/index.html 8 http://www.gnu.org/licenses/lgpl.html 9 https://m3ge.dev.java.net 10 http://en.wikipedia.org/wiki/first-person_shooter

3 rin geliştirilmesinde katkıda bulunulması yönünde belirttiğimiz isteğimiz kendilerine iletilmiş ve yaklaşım olumlu karşılanmıştır. Tezin 2. bölümünde genel olarak mobil cihazların donanımsal özellikleri ve içsel mimarileri incelenmiş, üzerlerinde Java destekli uygulamaların nasıl çalıştığı anlatılarak basit bir mobil uygulamanın geliştirilmesi kaynak kodu ile örneklenmiştir. 3. bölümde mobil Dünya nın en popüler uygulamalarından olan oyunların geliştirilmesinde nelere dikkat edilmesi gerektiği konusu tartışılmış, iyi bir oyunda nelerin beklenildiği; oyunun başlangıcı, kendisi ve sona ermesi gibi üç ana evre çerçevesinde irdelenerek oyun geliştiricilere tavsiyelerde bulunulmuştur. 4. bölümde mobil platform için üç boyutlu grafik kullanımının nasıl başlandığı ve günümüzde ilerlemenin ne durumda olduğu belirtilerek, üç boyutlu oyunların pazarlanmasındaki market segmenti hakkında bilgi verilmiştir. 5. bölümde oyun motoru kavramı açıklanmış ve günümüzde var olan örnekler incelenerek bir oyun motorundan beklenen asgari temel özellikler belirtilmiştir. 6. bölümde ise, tezin uygulama kısmında kullanılacak ana teknoloji olan M3G uygulama programlama arayüzü, içerdiği tüm sınıfların özellikleri ve nasıl kullanıldıklarına dair örneklerle ayrıntılı olarak anlatılmıştır. 7.bölümde geliştirilen basit beyaz renkli bir küpün, M3G sınıflarının kullanımı ve kullanıcı etkileşimi katılarak grafiksel detayların olabildiğince çok yansıtıldığı MIDlet 11 uygulamasının aşama aşama nasıl geliş- 11 http://en.wikipedia.org/wiki/midlet

4 tirildiğini örnekleyen kod bloğuna yer verilmiştir. Ayrıca MIDP 2.0 12 profilinin oyun geliştiricilere sunduğu yeni paketindeki sınıfların kullanımını örnekleyen; iki boyutlu oyun geliştirmenin, üç boyuta göre zorluklarına dikkat çekmek amacıyla geliştirilmiş basit bir oyun da bu bölümde sadece yönetici sınıfı kod bloğu ile yer almaktadır. 8. bölümde ise mobil grafik geliştiriciler açısından ileriki çalışmalarda hangi teknolojilerin ne amaçla kullanılabileceği hakkında görüşler sunulmuş ve bu çalışma sonucunda yapılan katkı belirtilmiştir. Yüksek Lisans Eğitimi ve Tez Kapsamında Yapılan Yayınlar ve Çalışmalar 1. Uğur, A., Hangül, E., Kalaycı, T.E., Aydın, D., Üç Boyutlu Binaların Web Üzerinde Otomatik Olarak JOGL ile Modellenmesi, Akademik Bilişim 2007, Bildiri No : 141, Dumlupınar Üniversitesi, Kütahya, 31 Ocak - 2 Şubat 2007 2. Uğur, A., Yapay Zeka Yöntemleri ile Çok Katlı Binalar İçerisinde Sanal Bir Yol Planlama Sistemi Gerçekleştirimi, Ege Üniversitesi, Mühendislik Fakültesi, Bilimsel Araştırma Projesi, 2006-MÜH-002, Bornova, İzmir, 2006. (Proje Yöneticisi) Proje Personeli: Doğan AY- DIN, Eray HANGÜL, Tahir Emre KALAYCI. 3. Uğur, A., Kalaycı, T.E., Hangül, E., Web3D Standartları : VRML ve X3D, COMPOTEK 2004 Bilişim Seminerleri Programı, İzmir, Türkiye, 24-28 Kasım 2004 12 http://en.wikipedia.org/wiki/midp_2.0

5 Devam eden yayın çalışmamızda ise, 27-28-29 Mart 2008 tarihlerinde İstanbul Üniversitesi nde gerçekleşecek Future-Learning 2. Uluslararası Gelecek İçin Öğrenme Alanında Yenilikler Konferansı 2008: e-öğrenme başlıklı konferansa tez çalışması kapsamında geliştirdiğimiz oyun motorunu temel alan mobil oyun ile ilgili yazdığımız bildiri özeti, m-learning (uzaktan mobil öğrenme) çalışma alanına 19 Kasım 2007 tarihinde gönderilmiştir. Bildiri kabul/ret sonuçları 3 Aralık 2008 de açıklanacaktır.

6

7 2 JAVA DESTEKLİ MOBİL CİHAZLAR MİMARİSİ 2.1 Mobil Cihazlar ve Java Mobil cihazlar kısıtlı donanım (bellek, işlemci, ekran vb.) imkanları ile bizi uygulama geliştirirken daha dikkatli olmaya zorlarlar. Tipik bir mobil cihaz en az şu özellikleri sağlamaktadır (Uğur, 2003) : MIDP için ayrılmış 128 KB silinemeyen bellek Çalışma zamanında yığı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ıştırılan yazılımlar, deyim yerinde ise byte hesabı yaparak gereksinimleri karşılamalıdırlar. Dolayısıyla geliştirici açısından kontrollü yazılım geliştirme süreci çok önemlidir. Java; J2ME 1 adlı alt teknolojisi ile uygulama geliştiricilere güvenli bir şekilde mobil yazılım geliştirebilmeyi sağlamaktadır. J2ME ; J2SE ve J2EE yi tam olarak desteklemeyen sınırlı kapasiteye sahip cihazlarda (IP Telefonları, Eğlence Kutuları, PDA, Mobil Telefonlar, Pager ) çalışabilecek uygulamalar geliştirilmesi için ortaya konulmuş bir uygulama programlama arayüzüdür. 1 http://java.sun.com/javame/downloads/index.jsp

8 Şekil 2.1. Farklı Java Teknolojilerine Genel Bir Bakış Java nın başlangıçta taşınabilir gömülü sistemlerde çalışabilecek şekilde tasarlanmasına rağmen, bu teknolojinin diğer teknolojilerden sonra ortaya çıkması bir ironi olarak karşımıza çıkmaktadır. Şekil 2.1 de görüldüğü gibi mobil cihazlarda çalışacak Java uygulamaları için CVM ve KVM tipindeki sanal makineler kullanılmaktadır. Mobil cihazlar kısıtlı donanımsal imkanlara sahip olduklarından, üzerlerinde çalışan sanal makineler de kısıtlı özelliklere sahiptir. Standart JVM de olup da KVM ve CVM de olmayan özellikler şöyle sıralanabilir : Weak references (Garbage Collection tarafından toplanabilecek nesne kullanımı) Reflection (Çalışma zamanında kod yapısına erişilebilmesi) Thread Groups & Daemon Threads (İş parçacıkları)

9 JNI ( Java Native Interface Native metotların yazılabilmesi) User-defined class loaders (Geliştiricilerin kendilerine özgü sınıf yükleme yapabilmesi) 2.2 Mobil Cihazlarda Uygulamalar Nasıl Çalışıyor? Mobil cihazların da kendi donanımsal yapılarına göre ayarlanmış işletim sistemleri vardır. Donanım kaynaklarına ulaşırken uygulamadan gelen mesajlar doğrudan Java sanal makinesine geçirilmez. Bunun yerine konfigürasyon isimli bir ara katman kullanılarak; geliştiriciye, üzerinde çalıştığı cihazın kaynakları güvenli bir şekilde açılmış olur. Konfigürasyon, cihaz için kullanılacak sanal makineyi ve desteklenecek profillerin listesini tutarak, yazılımcıyı bu temel üzerinden uygulama geliştirmeye zorlar. İki tip konfigürasyon vardır 2 : 1. CDC ( Connected Device Configuration ) : Eğlence kutuları (dijital 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ışmayı CVM sağlamaktadı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. 2 http://www.smackall.com/mobile-game-developer/viewtopic. php?t=2

10 Şekil 2.2. Mobil Cihaz Java Çalışma Mimarisi Profil, bir konfigürasyonu temel alarak yeni sınıf kütüphaneleri ile bunun genişletilerek kullanılabilmesini sağlar. Şekil 2.2 de belirtildiği gibi, Java uygulaması profil üzerinden konfigürasyon katmanı ile ilişki kurabildiği gibi doğrudan da konfigürasyon katmanına isteklerin gönderilmesine olanak vermektedir. Ayrıca bir profil, işlevsel olarak başka bir profil ile de ilişkili 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])

11 USB Profile (JSR 80) Bluetooth Profile (JSR 82) profillere örnek olarak verilebilir. 2.3 Mobil Cihazlarda Uygulama Geliştirme Mobil cihazlar üzerinde (CLDC tipi için) MIDP profili temelinde geliştirilen uygulamalara Midlet adı verilmektedir. Bu tip uygulamaları gerçek cihazlar üzerinde çalıştırmadan önce test edilmelerini kolaylaştıran emülatörler ve yazılım geliştirme araçları kullanılabilmektedir. Örneğin, Sun firmasının Java Wireless Toolkit adlı SDK sı, geliştiricilerin yazdıkları Midlet örneklerini çalıştırıp deneyebilecekleri geçici bir çalışma ortamı sunmaktadır. Nokia firmasının sunduğu Developer Suite for J2ME adlı SDK da, hızlı ve kolay bir şekilde mobil uygulama geliştirilmesine olanak vermektedir. Günümüzde Eclipse, Netbeans, Jbuilder, Sun Java Studio, IBM Web Sphere, Intelli gibi bir çok farklı uygulama geliştirme editörleri Java geliştiricileri tarafından tercih edilebilmektedir. Örneğin, Netbeans, kurulumu ile beraber CDC ve CLDC tipi konfigürasyona sahip mobil cihazlar için uygulama geliştirmeyi destekleyebilirken; Eclipse, kurulumundan sonra kendisine eklenti olarak yüklenecek EclipseME gibi bir eklenti ile benzer çalışma ortamını sunabilmektedir. J2ME ile geliştirilen uygulamalar ön doğrulama ( pre-verify ) adı verilen bir işlemden geçerek byte-code a dönüştürüldükten sonra sanal makine tarafından yorumlanırlar. Ön doğrulama işlemi, cihazın desteklediği

12 özelliklerin kullanıcı tarafından doğru bir şekilde kullanımını sağlayarak, güvenli programlama yapılmasında kilit rol oynar. Geliştirilen her bir Midlet ayrı bir uygulamayı referans eder. Bir uygulama kendisi ile beraber kullanılan diğer kaynak kütüphaneleri ile sıkıştırılarak bir arşiv dosyasında tutulur. Buna JAR ( Java Archive File ) denir. Arşiv dosyalarının içerik bilgilerini tutan tanımlayıcı dosyaya da JAD ( Java Archive Definiton ) denir. Örnek bir yapı şekil 2.3 de gösterilmektedir: Şekil 2.3. JAR Yapısı Örneği Uygulama geliştirmede en çok kullanılan profil MIDP profilidir. Bu profilin ilk sürümü 1.0 dır. Şu an 3.0 sürümü olan profilin 1.0 sürümünde desteklenen standart sınıf paketleri şunlardır: java.io java.lang java.util javax.microedition.io

13 javax.microedition.lcdui javax.microedition.midlet javax.microedition.rms 2.0 sürümünde grafiksel öğelerin kullanımını daha pratikleştirmek amacıyla oyun geliştiricilere yönelik yenilikler yapılmıştır. Bu paket, javax.microedition.lcdui.game adıyla ortaya çıkarılmıştı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ştirme Şekil 2.4. Mobil Uygulama Akış Tasarımı (IDE - Netbeans 5.5)

14 Akış tasarımı Şekil 2.4 de gösterildiği gibi geliştirilen uygulama iki adet sayıyı birer metin kutusundan parametre olarak alıp, sonucu üçüncü bir metin kutusuna yazdıran basit bir kod örneğidir. HelloMidlet aşağıdaki metotları Midlet sınıfını genişlettiğinden dolayı içermektedir: startapp pauseapp destroyapp (boolean unconditional) Bu metotlar Midlet in yaşam döngüsünde rol alırlar. startapp metotu, ekranda görüntülenebilecek türdeki unsurları (Canvas, Form); görüntülemeden sorumlu yapıya aktaran kod bloğunu içerir. 3 Display.getDisplay(this).setCurrent(Displayable); setcurrent metotu, Displayable türündeki herhangi bir sınıfı referans edebilmektedir. Aşağıda, geliştirilen uygulamanın Nokia S60 serisindeki cihaz ekranında nasıl görüntüleneceği emülatör yardımı ile gösterilmiştir: 3 bkz. Ek8

15 Şekil 2.5. HelloMidlet Ekran Tasarım Görüntüsü (IDE - Netbeans 5.5) Şekil 2.6. HelloMidlet S60 Serisi Cihaz Ekran Görüntüsü

16

17 3 MOBİL OYUNLAR Mobil oyunlar, bügün ulaşılan teknoloji dikkate alındığında, elde tutulan oyun konsolları, mobil telefonlar ve kişisel dijital yardımcı(pda) lar gibi taşınabilir terminaller üzerinden erişilen oyunlar olarak tanımlanmaktadır. Temel olarak 6 farklı kategoride incelenebilirler 1 : Gömülü İndirilip Sonradan yüklenebilir Tek kullanıcılı Çoklu oyuncu destekli İnteraktif İnteraktif olmayan Mobil teknolojideki hızlı gelişmeler dikkate alındığında, mobil oyunların daha gelişme aşamasının başında olduğu ve hızla gelişen mobil teknolojilerin paralelinde yeniliklere açık olduğu kesindir. Mobil oyunlar, üzerinde çalışacakları donanım ve yazılım çatısı mimarilerine göre bir çok farklı türde geliştirilebilmektedir. Örneğin grafiksel öğelerin daha az kullanıldığı, düşünme gücüne dayalı, etkileşimli, çoklu oyuncu modunu destekleyen mobil oyunlar da mevcuttur. 1 http://www.javaworld.com/javaworld/jw-11-2003/ jw-1107-wireless.html

18 SMS ( Short Message Service ) Kısa Mesaj Servisi Oyunları Tarayıcı ( Browser ) Oyunları J2ME ve Diğer Yorumlanmış Dil Oyunları C++ Uygulamaları İşletim 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ştirilmiş oyunlara göre daha basit ve kısa zaman dilimi içinde eğlence amaçlı kullanılabilecek türde uygulamalardır. Şekil 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ışılmıştır (Uğur, 2003) :

19 Artıları Tablo 3.1. Mobil oyunların özelliklerinin karşılaştırılması Eksileri Terminaller her zaman kullanıcının yanında Farklı donanımlara ihtiyaç yok, maliyet tasarrufu Yakın zamanda sürekli internete bağlı olunacak (Oyunlara etkileşim katma imkanı) Düşük oyun geliştirme maliyetleri Operatörlerin fiyatlandırmada etkin rol almaları Farklı yapı ve özellikdeki terminaller, sonuçta oyunların genel yaygınlığa ulaşamaması Mobil telefonların farklı yapıları ve özelliklerinden dolayı oyun pazarının her geçen gün biraz daha bölümlenmesi Oyunların yüksek fiyatlı uygulamalar olarak görülmesi (Operatörlerin yanlış uygulamaları) Oyunların geliştirilmesindeki kısıtlar (Animasyona dayalı macera türü oyunların SMS ve WAP üzerinden gerçekleştirilememesi) Ekran ve tuş takımı kısıtları Düşük veri iletişim hızı ve etkileşimli oyunlara olumsuz etkisi

20 Şekil 3.1. Nokia S40 Serisi Telefon için Mobil Oyun Ekran Görüntü Örnekleri 3.1 Mobil Oyun Geliştirme Teknikleri Mobil oyunlar bir çok farklı tipteki mobil cihaz için geliştirilebilir. Bu tez çalışmasında, test donanımı Nokia S60 serisi bir telefon olarak belirlendiğinden ekran tasarımı ve oyunun gelişim süreci S60 serisine uygun olarak optimize edilmiştir. Şekil 3.2. Nokia S40 ve S60 serilerini gösteren logo

21 Bir mobil oyun genel olarak üç aşamayı barındırır. Bunlar, Oyun Başlangıcı (Menü, karşılama ekranı gibi) Oyun Deneyimi Oyun Sonu (En yüksek skor, yeni puan girişi gibi) şeklinde ele alınabilir. Yazılım geliştiriciler açısından bakıldığında mobil platforma yönelik uygulamalar ortaya koymak; cihazların kısıtlı donanım özelliklerinden dolayı masaüstü platformlara göre nispeten daha çok dikkat ve çalışma gücü gerektirmektedir. Bu nedenle mobil uygulamaların ortaya çıkarılmasında yazılım geliştiricilerin kodlama sürelerinin olabildiğince düşürülmesine yönelik çalışmalar yapılmaktadır. Bu çalışmalardaki genel mantık, uygulama içerisinde kullanılacak grafiksel öğelerin (iki boyutlu resim, üç boyutlu model gibi) kodun yazımına başlanmadan önce çeşitli grafik editörleri (GIMP, Adobe Photoshop, Maya, 3DSMax gibi) ile ortaya çıkarılması; ardından tasarımı yapılan mimariye göre kodun yazılmasına dayanmaktadır. Geliştiricinin zaman kazanması için grafiksel öğeler ile ilgili kodların otomatik olarak çıkarılmasını sağlayan ara uygulamalar kullanılması; böylece oyunun ana mantık kuralları ile geliştiricinin daha çok ilgilenebilmesi hedeflenmektedir. (Dimitri et al., 2006) Şekil 3.3 de yukarıda anlatılan çalışma yöntemi özetlenmektedir.

22 Şekil 3.3. Verimli Çalışma ile 3B Mobil Uygulama Geliştirme Bir sonraki bölümde Nokia S40 ve S60 serisi için iyi bir mobil oyunun gelişim süreci oyun başlangıcı, deneyimi ve sonu genel aşamaları açısından incelenmektedir. 3.1.1 Nokia S40/S60 serisinde J2ME tabanlı mobil oyunlar için 10 temel geliştirme kuralı (Nokia, 2005a) da belirtildiği gibi tavsiye edilen genel kurallar şöyle açıklanabilir:

23 3.1.1.1 Oyun öncesi gelişim 1 Anlaşılır bir menü yaratınız. S40, bir adet menü kullanır ve menüye sol tuş ile erişim sağlar. Ana menü komutları genelde şöyle olur : Oyuna Devam Et, Yeni Oyun, Ayarlar, Rekor Puanları, Yardım, Hakkında. Çıkış için sağtuş kullanılırken, menü komut seçimi sol tuş ile yapılır. Menü olabildiğince kısa yapılmalıdır. Uzun menü listesi scroll gerektirdiğinden buna dikkat edilmelidir. Sol tuş için etiket olarak Seç veya Seçenekler ifadeleri kullanılmalıdır. Oyun içinde ise Menü veya bir üçgen işareti kullanılabilir. Sağ tuş için farklı görevlerine göre; Geri, Kapat, Çıkış, İptal, Temizle gibi etiketler kullanılabilir. Sol tuş menülerin seçimi ( Seç, Tamam gibi), sağ tuş ise İptal, Geri gibi durumlar için kullanılmalıdır. 2 Basitliği en önemli konu olarak benimseyiniz. Zor çözümler de aynı etkiyi yaratsa da her zaman en basit seçilmelidir. Karmaşık yapılar daha çok sorun oluştururlar. Oyun içerisinde fazla sayıda karakter tipi kullanılmamalıdır. Kullanılan karakterlerin her birinin farklı bir yapıyı temsil ettiğine dair emin olunmalıdır.

24 Farklı oyun modları; bu modların, gerçekten oyunda bir farklılık yarattığı düşünülüyorsa kullanılmalıdır. 3 Oyun içinde yardım gereken yerde gerekli desteği veriniz. Yardım metni özet olarak tutulmalıdır. Metinde daha çok kontrollerin anlatımına yer verilmelidir. Yardım metninin okunması sırasında, sonraki metin bilgisine ulaşılmasında aynı anda birden fazla satırın getirilmesine dikkat edilmelidir. On-line yardım sağlanabilir. Oyun karakterleri, bileşenleri 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 muhakkak 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 terimleri 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ğerli olduğunu unutmayınız.

25 Oyun giriş (tanıtım) ekranının istenildiği takdirde geçilebilmesine izin verilmelidir. Oyunun veya menünün yapısında kullanıcıya her seferinde veri girişi yapması zorlanmamalıdır. Kısayollar kullanılmalı ve gerekli yerlerde kabul edilebilir varsayılan değerler atanabilmelidir. 3.1.1.2 Oyun deneyimi gelişim 6 Doğal tuş takımı görevlerini kullanınız. 2, 4, 6, 8 tuşları yatay ve dikey eksende hareketlenme için kullanılmalı; ok tuşları otomatikmen aktif edilmelidir. 1, 3, 7, 9 tuşları oyun içinde gerekiyorsa çapraz hareketlenme için kullanılmalıdır. 5tuşu ana görev tetikleyicisi olarak belirlenmelidir. Hareket görevi dışındaki görevler için her bir tuş, tek göreve atanmalıdır. Oyun içerisinde sol tuş, oyunu geçici olarak durdurup ( pause ) menüye dönülebilmesini sağlayacak şekilde programlanmalıdır. Sağ tuş genelde aktif edilmez ancak aktif edildiği takdirde oyundan çıkış için onay alınabilecek şekilde görev yapabilir. Oyunu tasarlarken aynı anda birden fazla tuşa basılacak şekilde kombinasyon gerçekleştiriminden sakınılmalıdır.

26 7 Kaydet ve Durdur seçenekleri kullanınız. Yılan oyununa benzer özellikte, oyun çıkış veya durdurma durumlarında arka planda kaydedilmelidir. Kaydedilmiş bir oyun var ise, kullanıcıya başlangıç menüsü olarak Devam Et seçeneği sunulmalıdır. S40 cihazlarında kullanıcının telefon kapama tuşu olan kırmızı tuşa basması sonucu ani oyun sonlandırmak durumları için otomatik kaydetme özelliği mevcuttur. Bu özellikten faydalanabilmek için Midlet in destroyapp() metotu kullanılmalıdır. S40 serisinde oyunu durdurmak için ( pause durumu) hidenotify() metotu kullanılabilmektedir. Bu durumda sol tuş oyun menüsünü çağırma görevini üstlenmektedir. Kullanıcının oyun geçici olarak durdurulduğu anda çıkış işlemini 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ğin, bir topun fırlatılması veya atılması sırasında gerçek fizik kurallarına uygun bir atış yapılmalıdır. Görünmeyen engeller veya kullanıcının ulaşamayacağı ilginç alanlar yaratılmamalıdır. Oyun içindeki oyuncu, kullanıcı herhangi bir şey yapmadan öldürülmemelidir.

27 Oyun içindeki unsurların dış görünümleri ile davranışlarının tutarlı olmasına dikkat edilmelidir. Kullanıcı daha önceden öğrendiği bilgilerden yeni çıkarsamalar yapmaya zorlanmamalıdır. Oyun içinde kullanılan her şeyin açık ve fizik kurallarına uygun bir şekilde geliştirilmesi önemlidir. 9 Ses kullanımını olabildiğince basite indirgeyiniz. S40 serisinde ses geri besleme olarak kullanılabilmektedir ancak oyun ses olmadan da oynanabilmelidir. Rahatsız edici aşırı yüksek ses seviyesi kullanımından kaçınılmalıdır. Arka plan müziği kullanılabilir ama kullanımı tavsiye edilmemektedir. Oyun içerisinde kolay bir şekilde kullanıcının, ses seçeneğini açıp kapatabilmesi sağlanmalıdır. Sesler kolay bir şekilde ayırtedilebilmeli ve birbirine karışmamalıdır. Ses kullanımı da tutarlı bir şekilde yapılmalı; örneğin üzgün bir sahnede yavaş bir müzik tersi durumda neşeli bir sahnede ise hızlı bir müzik kullanılabilir. 3.1.1.3 Oyun sonu gelişim 10 En yüksek puanı kaydedebilmeyi ödül olarak sununuz.

28 Oyunda puan tablosu tutuluyorsa, puan listesinin düşükten yükseğe sıralamasının görüntülenebilmesi sağlanmalıdır. İsim girişinin yapılabilmesi kolaylaştırılmalıdır. Önceden girilen isim bilgisi varsayılan bilgi olarak sunulmalıdır. İsim girişi seçenekli yapılmalı, kullanıcı zorlanmamalıdır. En yüksek ilk 10 puan listelenmelidir. Oyunun değişik 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ğin sağlanması Mobil oyunlarda başarılı bir ürün ortaya koymanın temel şartlarından biri kullanılabilirliğin iyi bir şekilde sağlanmasına bağlıdır (Nokia, 2005b). 3.1.2.1 Oyun öncesi kullanılabilirlik a - ) Yükleme ( Loading ) : Yükleme işlemi kabul edilebilir bir zamanda yapılmalıdır. Oyunun açılışının uzun sürmesi kullanıcıyı sıkacak dolayısıyla olumsuz bir etki yaratılmış olacaktır. Bunun için, Oyunun olabildiğince 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 bilgilendirilmesi Yükleme işlemini gösteren ilerleme durumu çubuğunun kullanılması

29 gözönüne alınması gereken önemli kriterlerdir. J2ME tabanlı bir oyun, maksimum 10 sn. gibi bir sürede yüklenebilmelidir. b - ) Giriş ( Intro ) : Giriş kısmı 2-3 sn. sürecek şekilde ayarlanmalı ve istendiği takdirde atlanarak doğrudan oyuna giriş sağlanabilmelidir. Ayrıca giriş kısmı atlandığında, bu bölüme ait müzik de sonlandırılmalıdır. Giriş kısmında müzik kullanımı, telefonun sessize alınmış modunda aktif edilmemelidir. Bir çok kullanıcının telefon tonlarını sessize almasına rağmen oyunda müzik çalınması; onların, bu tip oyunlardan soğumalarına neden olmaktadır. J2ME için; MIDP 1.0 profilinde, telefon sessiz modunda olsa da, MIDI tipi ses kullanıldığında bu seslerin çalındığı görülmüştü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ş kısmında ton tipi ses kullanılmaması tavsiye edilmektedir. c - ) Ana Menü ( Main Menu ) : Ana menü, kullanıcıya yakın terimler içeren; kullanımı kolay bir şekilde tasarlanmalıdır. Aşağıdaki başlıklar bir çok oyun için kullanılabilecek yapıya, örnek verilebilir: Devam Et ( Continue Game ) Otomatik kayıt seçeneği olan oyunlarda kullanılan bir menüdür. Herhangi bir bağlantı üzerinden çoklu oyuncu modunda oynanan bir oyunda Yeniden Bağlan (Reconnect) veya Bluetooth Oyununa Devam Et (Continue Blutooth Game) şeklinde isimlendirilebilir. Yeni Oyun ( New Game ) Yeni oyun başlangıcını sağlar. Oyunun birden fazla modu varsa bunlar arasında bir seçim yapılması gereken

30 ekranı getirir. Ayarlar ( Settings ) İkiden fazla ayar bulunmuyorsa ana menü ile birleştirilebilir. Örneğin 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ığı oyunlarda kullanılır. Puan listesi en iyiden, en kötüye doğru sıralanacak şekilde 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ş basımı ile birden fazla satırın okunabilirliği sağlanmalıdır. Hakkında ( About ) Telif hakları, sürüm ve üretici bilgileri ile istendiği takdirde oyunla ilgili daha fazla bilginin yer aldığı web sitesinin adresi verilebilir. Çıkış ( Exit ) Oyun ayarlarının kaydedilip, oyundan çıkışın yapılmasını sağlar. ç - ) Ana Menü Gerçekleştirimi ( Main Menu Implementation ) : Ana menü ortak grafiksel öğeler kullanılarak şekillendirilmelidir. Bellek düzeyine dikkat edilerek, görüntü tercihinde ayrı görüntü öğeleri 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ışılmalıdır. J2ME uygulamalarında oyun içerisinde standart

31 arayüz unsurları yerine, özel geliştirilen yapıların tercih edilmesi bellek kullanımında performans artışını sağlayacaktır. d - ) Yönlendirme Tuşları ( Navigation Keys ) : Oyun için kullanılacak tuş takımları, alt yapıdaki arayüzde tuşların üstlendiği görevlere benzer görevler taşıyacak şekilde programlanmalıdır. İstisna olarak ayar menüsünde kullanılan sağ tuş (geri gelme fonksiyonu), hem kullanıcıyı üst menüye taşı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ış menülerini içermelidir. Eğer Devam Et veya Çıkış menüleri seçilirse, oyun otomatik olarak kaydedildiği takdirde uyarı verilmeden işlem yapılmalıdır. Oyuna geri dönüldüğünde kullanıcıya hazırlanma fırsatı vermek için, oyun görünümü arka planda gösterildikten sonra, Başla gibi bir seçenekle oyuna katılması sunulabilir. f - ) Bluetooth Bağlantı Menüsü ( Bluetooth Connection Menu ) : Kullanıcı, varsayılan ayarları ile bağlantı kurabilecek şekilde; basit bir menü yapısı ile karşılanmalıdır. Sunucu Yarat, Sunucuya Bağlan gibi teknik terimler yerine; Oyun Yarat, Oyuna Katıl gibi daha yakın ifadeler kullanılmalıdır. g-) Şifre Doğrulama Menüsü ( Login Menu ) : Kullanıcıya sürekli kullanıcı adı/şifre sorulmamalı, ilk girişte bu bilgi kaydedilmelidir. Eğer özel grafikler kullanılarak bir menü oluşturulduysa, telefonun arayüzü ile uyumlu bir yapıda olmasına dikkat edilmelidir. ğ - ) Liste Tasarımı ( List Design ) : Menüler açık ve anlaşılır olmalıdır. Kullanıcının, hangi menüde olduğu bilgisi gösterilmeli; diğer me-

32 nülere erişimi kolaylaştırılmalıdır. Menü başlıkları içerikleri ile uyumlu olmalıdır. Lütfen seçiniz, Ana Menü gibi ifadeler kullanılmamalıdır. Birbiriyle ilişkili eylemlere ait ifadeler beraber kullanılabilir. Örneğin, Yükle ve Kaydet gibi. Herhangi bir sonucun dönmediği menülerde boş 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ğımsız sadece pozitif değerleri kabul eden bir yapıya sahip diyalog penceresi çıkarılmalıdır. İşlem sonunda, ödemenin başarıyla yapılıp yapılmadığı konusunda kullanıcı bilgilendirilmelidir. ı - ) Yardım ( Help ) : Yardım başlığı çoğu zaman, kullanıcılar tarafından; oyunda zorlanılmayana kadar kullanılmaz. Genellikle de oyunun kontrolü ile ilgili bilgiler incelenir. Bazen de oyuna başlamadan önce, oyunun ana amacının öğrenilmesi hedefiyle incelenir. Yardım metni, Kısa ve öz olmalıdır. İlk kısmında kontrollerle ilgili bilgileri içermelidir. Oyunun ana amacı kontrollerin hemen ardından maksimum 4 cümle ile ifade edilecek şekilde yer almalıdır. Oyunun hikayesine yer verilecekse bu kısım oyunun amacı ile birlikte kontrollerin ardında yer almalıdır. 1, 3, 7, 9 tuşları kullanılabiliyorsa çapraz hareketlenmeye müsade edilmelidir.

33 Resim kullanılmalıdır. Özellikle hareket kontrollerinde, bir rakam ve bu rakama basılması sonucunda gidilecek yönü gösteren ok işareti güzel bir anlatımı özetleyebilirler. Çoklu oyuncu modlu oyunlarda, yeni bir oyun oluşturma veya var olan bir oyuna bağlanma gibi eylemler hakkında bilgilere yer verilmelidir. Bu bilgilere yardım metni dışında, işlemlerin yapılacağı yerde de yer verilmelidir. Oyunun aniden sona erdirilmesi durumlarında, son oyun bilgisinin nasıl saklandığı konusu da kullanıcıya açıklanarak, oynanan geçmiş oyunların kaybının önüne geçilebilir. Ekran arka ışığının belirli bir süre sonra kapanması nedeni ile bunun yeniden açılması için hangi tuşa basılacağı konusunda kullanıcı bilgilendirilmelidir. kurallarına uyacak şekilde oluşturulmalıdır. i - ) Kullanıcının Zamanını Düzgün Kullanma ( Save the User s Time ) : Etkinlik, kullanıcının bakış açısına göre değişen bir kavramdır. Örneğin, kullanıcı oyun oynarken aynı anda 10 sn. de oynanan oyun kaydedilebilirken, 5 sn. içerisinde oyun bittikten sonra kayıt yapılabiliyorsa; ilk yaklaşım daha etkin görülebilir. Oyunun ayarlanması, yüklenmesi vb. unsurlar olabildiğince kısa zamanda bitirilmeli, kullanıcının oyun oynaması için harcayacağı zaman maksimum düzeyde tutulmaya çalışılmalıdır. Zaman kullanımının etkinliği için şu tavsiyeler yapılabilir :

34 Veri ihtiyacında olabildiğince varsayılan değer ataması yapılmalıdır. (Sayısal değerler için sıfır ataması gibi) Ancak fazladan bilgi tutulması da kullanıcının zamanından çalacağından bundan kaçınılmalıdır. Örneğin, isim bilgisinin başlangıçta Misafir şeklinde tutulması, sonradan kullanıcının bunu silip yerine kendi belirlediği 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şan bir yapıda kullanıcı belirli bir seviyeye ulaşmışsa her seferinde başlangıç seviyesinden başlanmaya zorlanmamalı ancak istendiği takdirde de bu seçeneğe dönebilmelidir. Kullanıcının girdiği veriler, belirlediği ayarlar tutulmalıdır. Şifre girişleri varsayılan olarak her seferinde yeniden istenilmeli ancak istenmeme seçeneği de unutulmamalıdır. Kullanıcılar bir an önce oyunla tanıştırılmalıdır. Bunun için Hızlı Başlat gibi bir seçenek sunulabilir. Mümkün olursa, zaman alıcı eylemler kullanıcı bir şeyler yaparken arka planda halledilmelidir. j - ) Metin Girişi ( Text Entry ) : Metin veri girişinde kullanıcı kendisinden beklenen veri ile formatı konusunda az çok tahmin yürütebilecek şekilde bir yapı ile karşı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ış veri girişinde bulunsa bile olabildiğince bu bilgi kabul edi-

35 lecek şekilde düzenlenme yapılmalıdır. İsim girişlerinde ilk girilen değer kabul edilerek işlem yapılmalı, her defasında yeni giriş 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ğlantı üzerinden değişik yerlere gönderilebileceğini düşünerek, özel bilgilerini vermek istemeyebilirler. Bu nedenle bu tip bilgilerin istenmesindeki ana amaç açık bir şekilde kullanıcıya aktarılmalıdır. Örneğin, e-posta adresi, kredi kartı bilgisi gibi veriler istendiğinde; şifreli bir şekilde tutulmalı, ayrıca seçime göre silinebilecek şekilde kaydedilmelidir. Oyunun oynandığı sosyal alana göre kullanım şekli kolayca değiştirilebilmelidir. Örneğin, hızlı bir şekilde ses kullanımının açılıp, kapatılabilmesi; varsa titreşim seçeneğinin açılıp, kapatılabilmesi önemlidir. Ses durumunu belirtmek için Ses : Açık şeklindeki ifade tarzının veya kontrol kutucuklarının kullanımı tercih edilmelidir. Genel bir kural olarak tek seferde oyun oynama zamanı 5 15dk. olacak şekilde düzenleme yapılması tavsiye edilmektedir. Kullanıcı istediği seviyeden oyuna başlayabilmelidir. b-) Tuşlar ve Oyun Kontrolü ( Keys and Game Controls ) : Oyun kontrolünde alışılmıştuş takımlarının kullanılması tercih edilmelidir. Kullanıcının istediği takdirde bu kontrollere farklı tuşları ataması da sağlanabilir. Genellikle şu kurallara uyulması beklenir: Yön tuşları hareket komutları için kullanılmalı aynı zamanda nümerik tuşlarda aynı görev için aktif hale getirilmelidir.

36 Seçme görevini üstlenen varsayılan tuş ana işlem görevini 5 tuşu ile beraber üstlenebilirler. Tuşların görevleri farklı oyun seviyelerinde farklılaşmamalı, bir tuşa birden fazla görev verilmemeye çalışılmalıdır. Karmaşık kontrollerin gerektiği durumlarda ard arda tuş basımı yaklaşımı kullanılabilir. Örneğin, 2 tuşu zıplama görevine atandıysa, bu tuşa 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şları kullanmazlar ancak hızlı hareket edilmesi gereken oyunlarda nümerik tuşlarını kullanmak daha ergonomik bir çözüm olarak karşımıza çıkmaktadır. Nokia S40 ve S60 serisi için; Ana seçim tuşları (sağ, sol işaretleme tuşları) telefon kullanıcı arabirimine uygun bir şekilde kullanılmalıdır. Oyun içerisinde, sol tuşa oyunu durdurma görevi atanmalı; seçime göre bu tuşa basıldığında durdurma menüsüne veya oyunun ana menüsüne çıkış yapılmalıdır. Oyun oynanırken sol tuşun üzerinde Menü ifadesi yer almalı; hatta üçgenimsi bir işaret de koyularak sol tuşun bir görevi olduğu bilgisi kullanıcıya anlatılmalıdır. Sağ tuşa herhangi bir görev atanmayabilir veya bu tuş için oyun içerisinde özel bir görev atanabilir.

37 Tüm S60 serisi cihazlarda aynı anda birden fazla tuşa basılması algılanabilmektedir. Bunun için MIDP 2.0 profili ile gelen GameCanvas sınıfının getkeystates() metotu kullanılabilir. Çoğu tuş takımı çapraz hareketi desteklemez. Bu nedenle oyunlarda çapraz hareketlenmeden olabildiğince kaçınılmalı, kullanılması zorunlu durumlarda kullanıcı rahat bir şekilde çapraz hareketi uygulayacak şekilde yönlendirilmelidir. Yardım menüsünde bu konu ile ilgili bilgiler yansıtılmalıdır. Oyun girişinde animasyonlar ve yükleme ekranları kullanılıyorsa, tuş takımlarının aktivasyonu kaldırılmalıdır. Kullanıcının bu ekranlar görüntülenirken herhangi bir tuşa basması, oyun başlangıcında etkide bulunabileceğinden; bu, oyunun başlamadan sona ermesine dahi sebep olabilir. c - ) Grafikler ( Graphics ) : Uyumlu renklerin kullanımı anlaşılabilirlik açısından çok önemlidir. Örneğin menüde kullanılan renkler ile oyun içerisindekilerin uyumlu olması kullanıcıya göz alışkanlığı kazandırma konusunda önemlidir. Ayrıca seçili öğelerin renkleri değiştirilerek ( highlight ) seçimin belli edilmesi, dikkat edilmesi gereken hususların başında gelmektedir. Oyunda yer alan nesnelerin ve karakterlerin anlaşılabilirliği ç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üşlerde gösterilmesi, ayırtediciliği kolaylaştıracaktır. Ayrıca, takım mantığı ile hareket edilmesi durumunda, grup ka-

38 rakterlerinin de belirlenmesini kolaylaştıracak işaretlerin kullanımı önerilmektedir. Oyunda boş alanlar olabildiğince bırakılmamalı, bu tip durumlarda oyun grafikleriyle dengeleme yolunda gidilmelidir. Arka plan resmi basit ve renk karmaşıklığı olmayan bir yapıda tasarlanmalıdır. Kullanıcı oyundaki karakterler ve asıl nesneler ile arka planı karıştırmayacak şekilde rahatça oyunu oynayabilmelidir. ç ) Aydınlatma Işığı ( Backlight ) : Birçok cihaz yaklaşık 15 sn. gibi bir sürede arka plan ışığını otomatikmen kapatırlar. Bunda amaç batarya süresinde tasarrufa gitmektir. Oyunların yardım metninde kullanıcı bu konuda uyarılmalı, bir tuşa arka plan ışığını açma görevi verilerek çözüme gidilmelidir. MIDP 2.0 profilini destekleyen çoğu cihazda, uygulama üzerinden arka plan ışığını kontrol etmek mümkün değildir. d - ) Ses ( Sounds ) : Mobil oyunlar için bir çok kullanıcı sesin gereksiz olduğunu belirtmişlerdir. Zaten ses kullanımında varsayılan olarak oyunun sessiz modda açılması tavsiye edilmektedir. Kullanılan seslerin düzeylerinin olabildiğince düşük tutulması ve birbirine karıştırılmaması da öneriler arasındadır. Kullanıcının cihazı sessiz moduna almasına rağmen oyun seslerinin aktif olması uygun karşılanmamaktadır. Bu nedenle cihazın ses profil seçeneğinin uygulamadan kontrol edilerek başlangıçta buna göre konfigüre edilmesi önemlidir. Kullanıcı cihazı sessiz modda kullanmasına rağmen oyun tonları ve sesleri aktif ise, yardım menüsünde oyun seslerinin de kapatılması gerektiği vurgulanmalıdır.