0

UBIQUITOUS COMPUTING

Ubiquitous computing dapat didefinisikan sebagai penggunaan komputer yang tersebar di mana user berada. Sejumlah komputer disatukan dalam suatu lingkungan dan tersedia bagi setiap orang yang berada di lokasi tersebut. Setiap komputer dapat melakukan pekerjaan yang dipersiapkan untuk tidak banyak melibatkan intervensi manusia atau bahkan tanpa harus mendeteksi di mana pemakai berada

Ubiquitous Computing (sering disingkat menjadi "ubicomp")  Ubiquitous bisa di artikan dimana-mana sedangkan Computing adalah komputer jadi Ubiquitous Computing adalah suatu sistem yang memungkinkan manusia berinteraksi dengan komputer secara kontinyu, dimana saja, kapan saja dan bagaimana saja. Ubiquitos Computing merupakan teknologi (terutama teknologi komputer) digunakan dan menyatu di dalam objek dan aktivitas manusia, sehingga di manapun kita berada kita bisa memanfaatkannya untuk memenuhi kebutuhan sehari-hari.” Ide ubiquitous computing pertama kali disampaikan oleh Mark Weiser (1998) di Laboratorium Komputer Xerox PARC, yang membayangkan komputer dipasangkan di dinding, di permukaan meja, di setiap benda sehingga seseorang dapat berkomunikasi dengan ratusan komputer pada saat yang sama. Setiap komputer secara tersembunyi diletakkan di lingkungan dan dihubungkan secara nirkabel.
Buxton (1995) menyatakan bahwa ubiquitous computing mempunyai karakteristik utama yaitu:
·         Ubiquity: interaksi tidak dilakukan oleh suatu saluran melalui satu workstation. Akses ke komputer dapat dilakukan di mana saja. Sebagai contoh, di suatu kantor ada puluhan komputer, layar display, dan sebagainya dengan ukuran bervariasi mulai dari tombol seukuran jam tangan, Pads sebesar notebook, sampai papan informasi sebesar papan tulis yang semuanya terhubung ke satu jaringan. Jaringan nirkabel akan tersedia secara luas untuk mendukung akses bergerak dan akses jarak jauh.
·         Transparency: teknologi ini tidak menganggu keberadaan pemakai, tidak terlihat dan terintegrasi dalam suatu ekologi yang mencakup perkantoran, perumahan, supermarket, dan sebagainya.

Karakteristik Lingkungan
Ada banyak jenis layanan yang dapat ditawarkan dalam lingkungan AmI, antara lain layanan-layanan airport, perkantoran, perbankan, transportasi, supermarket, pendidikan, rumah tangga, dan lain-lain yang tercakup dalam suatu area perkotaan. Karakteristik dari lingkungan pelayanan ini adalah sebagai berikut:
  • Personal Device

Pemakai dilengkapi dengan peralatan pribadi yang mudah dibawa (portable) seperti: PDA, smart phone, komputer kecil yang mudah dibawa, atau sejumlah peralatan nirkabel yang saling terhubung membentuk suatu Body Area Network. Peralatan-peralatan tersebut secara dinamis dapat menyesuaikan jenis protokol radio yang berbeda.
  • Network Architecture

Para pemakai bergerak dalam suatu jaringan komunikasi nirkabel heterogen yang membentuk suatu jaringan berkabel yang lebih luas. Peralatan pemakai saling terhubung menggunakan jaringan nirkabel berbasis infrastruktur. Peralatan-peralatan tersebut juga dapat berhubungan dengan peralatan, sensor, dan layanan yang ada di lingkungan.
  • Service Provisioning

Layanan bagi pemakai disediakan di berbagai tempat berbeda dalam lingkungan AmI di mana pemakai dapat menggunakan layanan yang tersedia dengan sumber-sumber daya yang terhubung tanpa kabel. Layanan-layanan ini diberikan oleh suatu sistem layanan gabungan dengan application server yang dapat diakses melalui infrastruktur jaringan.
  • Sensing Architecture

Untuk mendukung pemberian layanan-layanan tersebut, lingkungan AmI dilengkapi berbagai jenis sensor. Sensor ini membuat interaksi antara pemakai dengan jenis layanan yang dibutuhkan menjadi lebih efisien. Sensor ini akan menangkap informasi dari lingkungan secara terus-menerus dan memantau aktivitas yang dilakukan para pemakai. Sensor ini kemudian membawa informasi tersebut ke sebuah modul AmI yang akan memprosesnya dalam suatu aplikasi. Jenis sensor yang digunakan meliputi jenis sensor tradisional seperti: sensor suhu, tekanan, cahaya, kelembaban udara, dan sensor-sensor yang lebih kompleks, seperti kamera yang dihubungkan dengan jaringan kabel. Dengan demikian, infrastruktur AmI harus dapat menangkap informasi-informasi dari peralatan-peralatan sensor tersebut.
  • Modes of Interaction

Pemakai berinteraksi dengan layanan melalui suatu multimodal user interface yang menggunakan peralatan pribadi untuk berkomunikasi. Multimodal  communication memungkinkan pemakai mangakses layanan tidak hanya pada saat mereka duduk di depan PC, tetapi juga pada saat mereka bergerak bebas dalam lingkungan AmI.

Spesifikasi Teknis
Ubiquitous computing mempunyai beberapa spesifikasi teknis sebagai berikut:

1.       Terminal & user interface
Peralatan yang digunakan sebaiknya mempunyai kualitas tampilan yang bagus dan responsif terhadap input dari pemakai. Walaupun dengan ukuran display yang terbatas, penggunaanya harus intuitif dengan tampilan yang bersih menggunakan alat input yang berbeda seperti: pen, handwriting recognition dan speech recognition.
2.       Peralatan yang murah
Jika kita membangun sebuah sistem dengan banyak komputer untuk satu pemakai, biaya satu komputer hendaklah tidak terlalu mahal. Meskipun komputer biasa pada umumnya relatif lebih mahal, kamputer ini tidak dapat digunakan untuk ubiquitous computing. Tidak semua komputer dalam ubiquitous computing memerlukan prosesor dan harddisk dengan spesifikasi seperti dalam komputer biasa.
3.       Bandwidth tinggi
Kebutuhan lain dari ubiquitous computing adalah mempunyai bandwidth jaringan yang cukup untuk melakukan komunikasi
antara peralatan-peralatan yang digunakan. Selain masalah bandwidth, ada beberapa faktor lain yang perlu dipertimbangkan berkaitan dengan transformasi data melalui jaringan, antara lain: lokasi terminal untuk mobile communication, penggunaan frekuensi yang tepat, menjaga kualitas layanan, enkripsi data, dan mengurangi gangguan-gangguan laten terhadap jaringan.
4.       Sistem file tersembunyi
Ketika seorang pemakai menggunakan komputer, dia harus belajar beberapa aspek dasar tentang sistem operasi dan konsep-konsep file serta struktur direktori. Hal ini mengakibatkan pemakai akan lebih terfokus pada bagaimana informasi akan disimpan, bukan pada informasi itu sendiri. Salah satu kebutuhan ubiquitous computing adalah bahwa komputer harus tersembunyi. Komputer harus dapat “memahami” kondisi pemakai. Sebagai contoh, melalui penggunaan voice recognition atau interface lainnya yang memungkinkan pemakai melakukan akses tanpa harus mengetahui nama file tertentu, lokasi atau format file tersebut.
5.       Instalasi otomatis
Ubiquitous computing harus dapat mengeliminasi kebutuhan instalasi program. Dalam sistem konvensional, seringkali diperlukan instalasi program yang dapat menimbulkan masalah, dan dalam beberapa kasus harus melibatkan pemakai. Konsep ini tidak berlaku dalam ubiquitous computing. Program harus dapat berpindah dari sebuah komputer
ke komputer lain tanpa harus mengubah konfigurasi dasar dalam menjalankan suatu program baru. Salah satu alternatif adalah dengan menggunakan bahasa pemrograman Java yang dapat dipindahkan ke komputer lain dengan mudah (platform-independent).
6.       Personalisasi informasi
Akan lebih baik jika ubiquitous computing system dapat menjaga agar informasi yang tersedia dapat digunakan sesuai kebutuhan pemakai. Untuk memenuhi kebutuhan tersebut, salah satu pendekatan yang dapat dilakukan adalah setiap kali ada seseorang yang baru bergabung dalam sebuah komunitas, profil pribadi orang tersebut harus ditambahkan ke setiap peralatan yang ada.
7.       Privasi
Salah satu masalah yang paling penting dalam ubiquitous computing adalah resiko privasi yang serius. Sistem ini dapat menyimpan data-data pemakai dan lokasinya yang mungkin dapat diakses oleh pemakai lain. Teknologi jaringan yang baru seperti infra merah atau komunikasi radio nir kabel menggunakan enkripsi untuk menjaga keamanan data.

Potensi Ambient Intelligence di Indonesia
Dalam paper yang disampaikan pada Seminar dan Pameran Teknologi Informasi, Wawan Wardiana (2002) menyimpulkan bahwa perkembangan teknologi informasi di Indonesia sangat dipengaruhi oleh kemampuan sumber daya manusia dalam memahami komponen teknologi informasi, seperti perangkat keras dan perangkat lunak komputer, sistem jaringan baik berupa LAN maupun WAN dan sistem telekomunikasi yang akan digunakan untuk transfer data.
Pada saat ini kemampuan sumber daya manusia dalam memahami komponen teknologi informasi sudah semakin meningkat. Salah satu bukti pemahaman ini adalah dengan trend teknologi informasi yang tidak saja berpengaruh terhadap gaya hidup para profesional, pelaku bisnis dan pemakai lain di kalangan orang dewasa, tetapi juga berpengaruh terhadap para remaja di tingkat sekolah bahkan anak-anak. Penggunaan teknologi komunikasi seperti SMS, MMS, chatting dan e-mail sudah begitu memasyarakat. Trend penggunaan teknologi informasi ini juga dapat kita jumpai di berbagai bidang, seperti pendidikan, perbankan, perdagangan, pemerintahan dan lain-lain.
Di bidang pendidikan, teknologi informasi sangat berperan dalam menyediakan sarana belajar-mengajar yang lebih efisien seperti trend belajar jarak jauh (distance learning), belajar secara elektronis (e-learning), perpustakaan elektronik (e-library), dan multimedia. Sebagai contoh, Universitas Putra Indonesia “YPTK” Padang memberikan kemudahan bagi seluruh mahasiswa untuk melakukan pembayaran uang kuliah melalui bank tanpa harus datang ke kampus, melihat nilai atau mengecek absensi cukup melalui SMS Kampus. Di bidang perbankan, teknologi informasi memberikan kemudahan-kemudahan dalam bertransaksi. Semakin banyak pelaku ekonomi, khususnya di
kota-kota besar yang tidak lagi menggunakan uang tunai dalam transaksi pembayarannya, tetapi cukup menggunakan kartu elektronik atau smart card. Nasabah pun tidak perlu lagi datang ke lokasi untuk melakukan transfer uang ke bank yang berbeda.
Berdasarkan fakta-fakta yang digambarkan di atas, muncul suatu pemikiran bahwa trend teknologi informasi di Indonesia akan mengarah ke ubiquitous computing yang merupakan konsep dasar dari teknologi Ambient Intelligence. Beberapa faktor yang menjadi pertimbangan akan potensi penggunaan teknologi AmI di Indonesia ini adalah sebagai berikut:

1.      - Semakin berkembangnya teknologi jaringan khususnya jaringan nirkabel yang memungkinkan transfer data dapat dilakukan dengan lebih cepat dengan biaya yang relatif lebih kecil.
2.       Tingkat kemampuan masyarakat dalam menggunakan atau membeli komputer dengan kemampuan tinggi. Walaupun masih terbatas untuk kalangan tertentu, seperti pelajar, mahasiswa, profesional, pelaku bisnis dan sebagainya, namun pemakaiannya sudah semakin menyebar sehingga orang awam pun sudah terbiasa dengan lingkungan di mana komputer merupakan alat bantu dalam kegiatan-kegiatan sehari-hari.
3.      - Cepatnya perkembangan dan penyebaran teknologi komunikasi di kalangan masyarakat luas memenuhi kebutuhan ubiquitous communication yang merupakan salah satu pilar teknologi Ambient Intelligence.
4.       - Kebutuhan sumber daya manusia di bidang teknologi informasi yang sudah semakin banyak tersedia. Ketersediaan sumber daya manusia ini didukung oleh semakin berkembangnya sekolah-sekolah tinggi dan universitas-universitas yang khusus mendalami bidang ilmu komputer dan teknologi informasi.
5.       - Situasi lingkungan yang menuntut tersedianya fasilitas pelayanan yang lebih efisien dan cepat. Jumlah populasi penduduk yang terus meningkat akan menimbulkan masalah kualitas pelayanan dari berbagai instansi yang melayani masyarakat luas. Masalah-masalah tersebut antara lain: antrian yang disebabkan banyaknya orang yang memerlukan layanan yang sama pada saat yang sama, kepadatan lalu-lintas yang juga disebabkan oleh makin banyaknya orang memerlukan layanan. Bukan hanya pelayanan transportasi, tapi juga pelayanan-pelayanan lain yang memerlukan transportasi karena mereka harus datang ke lokasi.


 Artikel-artikel sebelumnya yang membahas mengenai, cloud computing, mobile computing, dan grid computing, dapat disimpulkan bahwa masing-masing teknologi tersebut memiliki persamaan dan perbedaan dengan Ubiquitos Computing ini.

Persamaan :
  •  Metode komputasi untuk mengatasi masalah Membutuhkan alat seperti PC, laptop maupun handphone untuk menjalankannya.
  • Pada Ubiquitos dancloud perangkat perlu tidak terlihat (invisible) secara fisik.
  • Ubiquitousdan mobile computing sejalan dengan benda yang bersifat portable (mudah dibawa).

Perbedaan :
  • Komputasi mobilemenggunakan teknologi komputer yang bekerja seperti handphone, sedangkan komputasi grid menggunakan komputer.
  • Biaya untuk komputasi mobile lebih mahal dibandingkan dengan komputasigrid dan cloud.
  • Komputasi mobile tidak membutuhkan tempat dan mudah dibawa kemana-mana, sedangkan griddan cloud membutuhkan tempat yang khusus karena bersifat portable.
  • Untuk komputasi mobile proses tergantung si pengguna, komputasi gridproses tergantung pengguna mendapatkan server atau tidak, dan komputasi cloud prosesnya membutuhkan jaringan internet sebagai penghubungnya.
  • Lingkungan dari pervasive computingmerupakan kumpulan dari benda-benda yang mudah dipakai, mudah diselipkan dan mudah di bawa ke mana-mana, juga terkoneksi secara wireless(tanpa kebel).

Referensi :


0

GIRD COMPUTING DAN PERSAMAAN DAN PERBEDAAN MOBILE, GIRD DAN CLOUD COMPUTING

Pada artikel ini akan dijelaskan tentang Grid Computing (Komputasi Grid) mulai dari pengertian apa itu Grid Computing, Apa saja kelemahan dan kelebihan Grid Computing dan Implementasi dengan contoh yang sudah menggunakannya


A. Pengertian Grid Computing

Secara definisi Grid Computing (Komputasi Grid) adalah penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis untuk memecahkan persoalan komputasi dalam skala besar.
Dalam buku The Grid: Blue Print for a new computing infrastructure dijelaskan bahwa yang dimaksud dengan komputasi grid adalah infrastruktur perangkat keras dan perangkat lunak yang dapat menyediakan akses yang bisa diandalkan, konsisten, tahan lama dan tidak mahal terhadap kemampuan komputasi mutakhir yang tersedia.




Latar Belakang

Perkembangan kecepatan prosesor berkembang sesuai dengan Hukum Moore, meskipun demikian bandwith jaringan komputer berkembang jauh lebih pesat. Semakin cepatnya jalur komunikasi ini membuka peluang untuk menggabungkan kekuatan komputasi dari sumber-sumber komputasi yang terpisah. Perkembangan ini memungkinkan skala komputasi terdistribusi ditingkatkan lebih jauh lagi secara geografis, melintasi batas-batas domain administrasi yang sudah ada.

Pesatnya perkembangan teknologi komputer di negara-negara maju, membuat para penelitinya semakin haus akan tenaga komputasi yang dapat menjawab tantangan dan permasalahan yang mereka hadapi. Walaupun sudah memiliki supercomputer dengan kapasitas yang sangat tinggi , apa yang sudah ada ini pun dirasa tetap kurang, karena mereka berusaha memecahkan permasalahan yang lebih besar lagi. Setelah semua komputer yg dimiliki seorang "peneliti haus tenaga komputasi" dipergunakan habis-habisan untuk memecahkan masalahnya, setelah berbagai cara untuk memecahkan masalah dicoba, dan dipilih yang paling efisien, tapi tetap masalahnya belum bisa dipecahkan juga, apa yang harus dia lakukan? Komputasi grid adalah salah satu jawaban dari pertanyaan ini.

Definisi

Menurut tulisan singkat Whats Is The Grid yang ditulis oleh Ian Foster ada check-list yang dapat digunakan untuk mengidentifikasi bahwa suatu sistem melakukan komputasi grid yaitu :
  • Sistem tersebut melakukan koordinasi terhadap sumberdaya komputasi yang tidak berada dibawah suatu kendali terpusat. Seandainya sumber daya yang digunakan berada dalam satu cakupan domain administratif, maka komputasi tersebut belum dapat dikatakan komputasi grid.
  • Sistem tersebut menggunakan standard dan protokol yang bersifat terbuka (tidak terpaut pada suatu implementasi atau produk tertentu). Komputasi grid disusun dari kesepakatan-kesepakatan terhadap masalah yang fundamental, dibutuhkan untuk mewujudkan komputasi bersama dalam skala besar. Kesepakatan dan standar yang dibutuhkan adalah dalam bidang autentikasi, otorisasi, pencarian sumberdaya, dan akses terhadap sumber daya.
  • Sistem tersebut berusaha untuk mencapai kualitas layanan yang canggih, (nontrivial quality of service) yang jauh diatas kualitas layanan komponen individu dari komputasi grid tersebut.


Jadi, Apa itu Grid Computing atau Komputasi Grid?
Grid Computing atau Komputasi Grid merupakan salah satu dari tipe Komputasi Paralel, adalah penggunaan sumber daya yang melibatkan banyak komputer terpisah secara geografis namun tersambung via jalur komunikasi (termasuk Internet) untuk memecahkan persoalan komputasi skala besar. Semakin cepat jalur komunikasi terbuka, maka peluang untuk menggabungkan kinerja komputasi dari sumber-sumber komputasi yang terpisah menjadi semakin meningkat. Dengan demikian, skala komputasi terdistribusi dapat ditingkatkan secara geografis lebih jauh lagi, melintasi batas-batas domain administrasi yang ada.
Grid computing dapat diartikan sumber daya (resource) seperti pemrosesan, bandwidth jaringan, dan kapasitas media penyimpan, membentuk sebuah sistem tunggal secara virtual dan penyelesaian masalah terkoordinasi dalam organisasi virtual yang dinamis dan multi-institusional. Grid dapat menghasilkan sistem informasi perusahaan yang berbiaya rendah dan lebih adaptif terhadap bisnis dengan memiliki beban kerja non-interaktif yang melibatkan sejumlah besar file.
Seperti halnya pengguna internet yang mengakses berbagai situs web dan menggunakan berbagai protokol seakan-akan dalam sebuah sistem yang berdiri sendiri, maka pengguna aplikasi Grid computing seolah-olah akan menggunakan sebuah virtual komputer dengan kapasitas pemrosesan data yang sangat besar.
Ide awal komputasi grid dimulai dengan adanya distributed computing, yaitu mempelajari penggunaan komputer terkoordinasi yang secara fisik terpisah atau terdistribusi. Sistem terdistribusi membutuhkan aplikasi yang berbeda dengan sistem terpusat. Kemudian berkembang lagi menjadi parallel computing yang merupakan teknik komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan.
Grid computing menawarkan solusi komputasi yang murah, yaitu dengan memanfaatkan sumber daya yang tersebar dan heterogen serta pengaksesan yang mudah dari mana saja. Globus Toolkit adalah sekumpulan perangkat lunak dan pustaka pembuatan lingkungan komputasi grid yang bersifat open-source. Dengan adanya lingkungan komputasi grid ini diharapkan mempermudah dan mengoptimalkan eksekusi program-program yang menggunakan pustaka paralel.

Secara singkat, grid computing berarti menyatukan seluruh sumberdaya TI ke dalam sekumpulan layanan yang bisa digunakan secara bersama-sama untuk memenuhi kebutuhan komputing perusahaan. Infrastruktur gridcomputing secara kontinyu menganalisa permintaan terhadap sumberdaya dan mengatur suplai untuk disesuaikan terhadap permintaan tersebut. Dimana data disimpan atau computer mana yang memproses permintaan tidak perlu dipikirkan. Sebagaimana arus listrik; untuk memanfaatkannya, tempat pembangkit atau bagaimana pengabelan jaringan listrik tidak perlu diketahui.


Jadi Kesimpulanya

Grid computing adalah model generasi selanjutnya untuk komputasi perusahaan berbasis virtualisasi dan provisioning bagi setiap sumberdaya TI. Grid computing menjanjikan peningkatan utilitas dan fleksibilitas yang lebih besar untuk sumberdaya infrastruktur, aplikasi dan informasi. Oracle 10g telah berbasis grid computing, sehingga perusahaan yang menginginkan kemajuan dan perbaikan kinerja bisnis berbiaya rendah bagi aplikasi transaksional, business intelligence dan knowledge management dapat menggunakan solusi grid computingdari Oracle. Khusus bagi pelanggan Oracle sekarang ini, adopsi gridcomputing hanya berupa adopsi generasi selanjutnya dari software yang telah sukses dijalankan sebelumnya. IDC juga meyakini bahwa Oracle 10g cukup diperhitungkan oleh banyak perusahaan yang berkeinginan yang sama. Pelaku bisnis cukup mengadopsi teknologi grid dengan investasi minimal, kegagalan nol, dan ROI cepat.


Contoh Grid Computing
Oracle 10g
Untuk software Oracle 10g adalah singkatan dari grid. Fokus dari versi baru Oracle ini adalah untuk memudahkan perusahaan menyederhanakan proses implementasi grid computing di luar kerangka kerja komputasi akademik, teknik, riset dan saintifik.

Oracle 10g meliputi:
·         Oracle Database 10g
·         Oracle Aplication Server 10g
·         Oracle Enterprise Manaer 10g


B. Kelemahan dan Kelebihan Grid Computing

Setelah mengetahui apa itu Grid Computing, selanjutnya pada artikel ini akan dijelaskan tentang kelebihan dan kekurang Grid Computing, berikut adalah penjelasannya.

Kelebihan Grid Computing :
Secara generik, kelebihan dasar dari penerapan komputasi Grid, yaitu
·         Lebih hemat biaya dalam penggunaan sejumlah tertentu sumber daya komputer.
  • Sebagai cara untuk memecahkan masalah yang mungkin tidak dapat dipecahkan tanpa sejumlah besar daya komputasi.
  • Sumberdaya dari banyak komputer dapat kooperatif dan dimanfaatkan secara sinergis, serta dikelola sebagai sebuah kolaborasi mencapai tujuan bersama.
  • Perkalian dari sumber daya: Resource pool dari CPU dan storage tersedia ketika idle.
  • Lebih cepat dan lebih besar: Komputasi simulasi dan penyelesaian masalah apat berjalan lebih cepat dan mencakup domain yang lebih luas.
  • Software dan aplikasi: Pool dari aplikasi dan pustaka standard, Akses terhadap model dan perangkat berbeda, Metodologi penelitian yang lebih baik.
  • Data: Akses terhadap sumber data global, dan Hasil penelitian lebih baik.
Kekurangan Grid Computing :
Menurut Myerson (2009), penggunaan grid computing tidak terlepas dari beberapa isu serta resiko yang mungkin dapat terjadi bagi perusahaan.

Beberapa isu yang harus dipertimbangkan dan diperhatikan, antara lain:
  • Tidak adanya interoperabilitas antar sistem. Interoperabilitas adalah kemampuan dari suatu sistem untuk berinteraksi dan berfungsi dengan sistem lain, di masa kini atau di masa mendatang, tanpa batasan  akses atau implementasi.
  • Dalam  grid computing, permasalahan yang paling sering dijumpai adalah perbedaan format data yang dapat menghambat impor dan ekspor data dari komputer satu ke  komputer lainnya. Hal ini menyebabkan tidak terjadinya interperobilitas dalam sistem  grid computingsehingga diperlukan reformat data atau penggunaan suatu aplikasi agar data tersebut bisa diubah dan dipakai dalam suatu format tertentu.
  • Hadirnya biaya tersembunyi. Misal, suatu perusahaan bisa dikenakan biaya yang lebih tinggi dari jaringan penyedia layanan  grid computing untuk penyimpanan dan aplikasi database yang berisi terabyte data. Hal ini mungkin melampaui biaya perusahaan  yang sedang berhemat  untuk  infrastruktur baru,  training bagi karyawan, atau pembiayaan untuk lisensi baru beberapa perangkat lunak.
  • Latency data yang besar. Latency data yang besar seringkali menjadi kendala bagi perusahaan akibat letaknya  yang jauh dari penyedia layanan atau terpisah secara geografis dengan perusahaan penyedia layanan grid computing


C. Implementasi Grid Computing

Setelah mengetahui kelebihan dan keurangan dari Grid Computing ini, selanjutnya adalah tentang Implementasi Grid Computing.
Contoh yang terkenal dari komputasi grid dalam domain publik adalah SETI yang sedang berlangsung (Search for Extraterrestrial Intelligence) @ Home proyek di mana ribuan orang berbagi siklus prosesor yang tidak terpakai dari PC mereka dalam pencarian luas untuk tanda-tanda "rasional" sinyal dari luar angkasa. Menurut John Patrick, IBM wakil presiden untuk strategi Internet, "hal besar berikutnya akan komputasi grid.

Sejumlah perusahaan, kelompok profesional, konsorsium universitas, dan kelompok lain telah mengembangkan atau sedang mengembangkan kerangka kerja dan perangkat lunak untuk mengelola proyek komputasi grid. Masyarakat Eropa (EU) mensponsori sebuah proyek untuk grid untuk fisika energi tinggi, observasi bumi, dan aplikasi biologi. Di Amerika Serikat, Teknologi Grid Nasional prototyping grid komputasi untuk infrastruktur dan akses grid untuk orang-orang. Sun Microsystems menawarkan perangkat lunak Engine Grid. Digambarkan sebagai pengelolaan sumber daya didistribusikan (DRM) alat, Grid Engine memungkinkan insinyur di perusahaan-perusahaan seperti Sony dan Synopsys ke kolam renang siklus komputer hingga 80 workstation pada suatu waktu. (Pada skala ini, komputasi grid dapat dilihat sebagai kasus yang lebih ekstrim load balancing.)
Indonesia juga sudah menggunakan sistem Grid dan diberi nama InGrid (Inherent Grid). Sistem komputasi grid mulai beroperasi pada bulam Maret 2007 dan terus dikembangkan sampai saat ini. InGrid ini menghubungkan beberapa perguruan tinggi negeri dan swasta yang tersebar di seluruh Indonesia dan beberapa instansi pemerintahan seperti Badan Meteorologi dan Geofisika.


D. Persamaan dan Perbedaan Mobile, Grid dan Cloud computing

Perbedaan Mobile, Grid dan Cloud computing
  • Mobile computing menggunakan teknologi mobile untuk menjalankannya seperti handphone, carputer dan ultra mobile PC, sedangkan grid dan cloud computing menggunakan PC pada umumnya untuk menjalankannya.
  • Biaya untuk pengadaan energi bagi mobile computing cenderung lebih mahal dibanding grid dan cloud computing apabila tidak ada sumber daya listrik karena membutuhkan sumber daya pengganti yaitu baterei.
  • Mobile computing tidak terlalu membutuhkan tempat yang besar untuk mengoperasikannya dibanding grid dan cloud computing karena cenderung portable dan mudah dibawa kemana saja.
  • Pada mobile computing, proses komputasi cenderung dilakukan sendiri oleh user. Pada grid computing, proses komputasi dilakukan terpusat maupun tidak terpusat dimana consumer membutuhkan discovery server. Pada cloud computing, proses komputasi membutuhkan ASP dan internet sebagai media penghubung.

Persamaan Mobile, Grid dan Cloud Computing
  • Ketiganya merupakan metode untuk melakukan proses komputasi dan memecahkan sebuah masalah serta menemukan solusinya.
  • Ketiganya membutuhkan alat pengolah data modern seperti PC,laptop maupun handphone untuk menjalankannya.


Referensi :
0

Mobile Computing

Mobile Computing, bisa diartikan sebagai suatu teknologi yang memungkinkan adanya interaksi ,komunikasi, pemrosesan dan transmisi data melalui media komputer atau perangkat lain (yang telah terkomputerisasi) yang saling terkoneksi tanpa adanya koneksi langsung secara fisik.

Konsep Utama dari Mobile Computing

  • Mobile communication, mengacu pada infrastruktur yang menjaminnya komunikasi dan transmisi data seperti protokol, bentuk data, layanan yang disediakan, bandwith, dan jaringan yang menyediakan atau memfasilitasi dan mendukung berjalannya layanan yang disediakan.
  • Mobile hardware, adalah perangkat-perangkat tempat diletakkannya software yang digunakan sebagai media dalam medunukung berjalannya mobile computing. Contoh dari mobile hardware antara lain :
    • Computing Unit (Central Processing Unit)
    • Memory
    • Storage
    • Communication: Wireless (WiFi/Wimax, CDMA/GSM/3G, Bluetooth, dll)
    • Sensing Device: camera dll
    • Displace Devices: LCD Display, dll
  • Mobile software, merupakan software maupun aplikasi-aplikasi yang berjalan diatas hardware yang mendukung mobile computing. Software yang ada biasanya disesuaikan dengan hardware agar dapat berjalan dengan baik dan sesuai tujuan. Contoh dari mobile software antara lain :
    • Operating System:Microsoft Windows Mobile/CE, Symbian, RIM, Palm,
    • Linux, Savale
    • GUI
    • Applications: cell phone applications, calendar, dll
    • Java ME, popular untuk game
    • Symbian, general purpose, didukung Nokia
    • Android adalah berbasis Linux
    • iPhone , hanya pada Mac OS X
    • Palm OS, kuat di US

Fungsi Mobile Computing Harus memenuhi minimal 1 karakteristik :
    • User Mobility
    • Network Mobility
    • Bearer Mobility
    • Device Mobility
    • Session Mobility
    • Service Mobility
    • Host Mobility

Segmen Utama Mobile Computing

    • User with Device
    • Network & Gateways
    • Middle ware (Application Server, Adaptation Frameworks)
    • Content
    • Datastore


Perbedaan Mobile, Grid dan Cloud Computing

  • Mobile computing menggunakan teknologi mobile untuk menjalankannya seperti handphone, carputer dan ultra mobile PC, sedangkan grid dan cloud computing menggunakan PC pada umumnya untuk menjalankannya.
  • Biaya untuk pengadaan energi bagi mobile computing cenderung lebih mahal dibanding grid dan cloud computing apabila tidak ada sumber daya listrik karena membutuhkan sumber daya pengganti yaitu baterei.
  • Mobile computing tidak terlalu membutuhkan tempat yang besar untuk mengoperasikannya dibanding grid dan cloud computing karena cenderung portable dan mudah dibawa kemana saja.
  • Pada mobile computing, proses komputasi cenderung dilakukan sendiri oleh user. Pada grid computing, proses komputasi dilakukan terpusat maupun tidak terpusat dimana consumer membutuhkan discovery server. Pada cloud computing, proses komputasi membutuhkan ASP dan internet sebagai media penghubung.


Keterbatasan Mobile Computing
    • Standard keamanan
    • Konektivitas
    • Interface untuk transmisi
    • User Interface


Perangkat umum yang digunakan pada Mobile computing antara lain :
    • Portable computer
    • Wearable computer
    • Smart cards
    • Mobile phones

Contoh aplikasi yang menerapkan konsep mobile computing

          Salah satu aplikasi berbasis mobile computing adalah aplikasi music streaming, seperti spotify yang merupakan commercial music streaming, podcast dan video service yang menyediakan konten digital rights management–protected terhadap record labels dan media companies. Aplikasi ini tersedia di berbagai belahan benua seperti Amerika, Eropa dan Asia.

Musik yang disediakan dapat diputar dan dicari berdasarkan nama artis, album, genre, playlist dan record label.

Aplikasi ini juga dapat berjalan diberbagai perangkat ataupun media seperti komputer pribadi (PC), website, dan mobile device. Dan dapat tersinkronisasi walaupun dijalankan berbagai perangkat ataupun media.


Contoh perusahan penyedia layanan mobile computing

Spotify Ltd. merupakan kepala perusahaan yang menciptakan sebuah aplikasi music streaming yaitu Spotify. Perusahan tersebut terletak di London, dan Spotify AB sebagai anak perusahaan yang melakukan research dan development di daerah Stockholm, Swedia.


Sumber referensi :
  • http://yukasetiawan.blogspot.co.id/2011/09/pengenalan-dan-arsitektur-mobile_20.html
  • http://vandemegedius.blogspot.co.id/2015/06/perbedaan-cloud-computing-mobile.html
  • http://dokumen.tips/documents/komputasi-mobil-mobile-computing.html
  • https://en.wikipedia.org/wiki/Mobile_computing
  • http://www.tutorialspoint.com/mobile_computing/mobile_computing_quick_guide.htm
  • https://en.wikipedia.org/wiki/Spotify
0

Komputasi Modern dan Cloud Computing

Assalamu’alaikum…

            Dalam pembahasan kali ini saya ingin sharing tentang Pengertian Komputasi Modern dan Cloud Computing serta contoh aplikasi dan perusahaan yang menerapkan Cloud Computing. Ini adalah tugas softskill Pengantar Komputasi Modern. Oke deh langsung saja ya disimak.

Sebelumnya kita harus tau dulu apa itu Pengertian Komputasi ?
Komputasi diartikan sebagai cara untuk menemukan pemecahan masalah dari data input dengan menggunakan suatu algoritma. Secara umum iIlmu komputasi adalah bidang ilmu yang mempunyai perhatian pada penyusunan model matematika dan teknik penyelesaian numerik serta penggunaan komputer untuk menganalisis dan memecahkan masalah-masalah ilmu (sains).

Dalam penggunaan praktis, biasanya berupa penerapan simulasi komputer atau berbagai bentuk komputasi lainnya untuk menyelesaikan masalah-masalah dalam berbagai bidang keilmuan, pendekatan ilmu komputasi dapat memberikan berbagai pemahaman baru, melalui penerapan model-model matematika dalam program komputer berdasarkan landasan teori yang telah berkembang, untuk menyelesaikan masalah-masalah nyata dalam ilmu tersebut.
0

T3 : Bab 4, Bab 5, dan Daftar Pustaka

Bab 4 

PENGGUNAAN ENCHANT.JS

1. Gambaran Enchant.js


      Enchant.js terdiri dari perpustakaan inti dan perpustakaan Plugin. Plugin uta- ma termasuk pada permainan dev dan situs berbagi 9leap.net, sehingga Anda dapat mencoba plugin ini dengan mudah.
Bagi mereka enchant.js belajar, code.9leap.net menyediakan cara mudah un- tuk melakukannya.

1.1 Basic Enchant.js

     Enchant.js adalah perpustakaan yang berjalan di browser HTML5 kompatibel. Hal ini dapat digunakan untuk mengembangkan game dengan mudah, tetapi tentu saja dapat digunakan untuk membuat program selain game.
Contoh program sederhana yang menggunakan enchant.js ditampilkan di bawah.


  • enchant() // declares the use of enchant.js
  • window.onload = function(){ // run this function after the window has been loaded
  • game = new Core(320,320); // create a new game with resolution of 320x320
  • game.preload(' g1.png',' g2.png'); // speci es which image  les should be loaded when the game starts
  • game.onload = function(){ // describes what should be executed when the game starts
  • var bear = new Sprite(32,32); // create a sprite
  • bear.image = game.assets[' g1.png']; // speci es the image  le *this must have been preloaded
  • bear.x = 50; // speci es position on the x-axis
  • bear.y = 50; // speci es position on the y-axis
  • game.rootScene.addChild(bear); // display the image on the screen
  • }
  • game.start(); // begin the game
  • }

Setelah menciptakan sebuah instance dari kelas inti, dari dalam window.onload, dan setelah preloading gambar untuk digunakan oleh permainan, isi game.onload dieksekusi.
Mayoritas pengolahan permainan sebenarnya ditentukan oleh isi game.onload

1.2 Entitas

         Adegan, sprite, label, dan kelompok adalah gambar yang ditampilkan, dan di- sarikan oleh enchant.js menjadi entitas, yang membuat game. Semua entitas mewarisi kelas Entity, dan ditampilkan dengan diberi posisi tertentu pada x dan y sumbu, dan kemudian dengan yang ditambahkan ke adegan tertentu.Langkah-langkah yang membuat sebuah instance dari kelas permainan adalah sebagai berikut. Karena adegan default adalah secara default diatur ke ga- me.rootScene, itu adalah hal yang lumrah untuk menggunakan addChild untuk ini untuk menampilkan sesuatu di layar.
Adegan dapat berisi kelompok. Sejak kelompok juga dapat ditambahkan ke entitas lain (seperti adegan) dengan addChild, ketika menampilkan sesuatu di layar, Anda perlu untuk melacak yang adegan kelompok sedang ditambahkan.
Jika Anda perlu menghapus sebuah entitas dari sebuah adegan, menggunak- an removeChild.
Layar yang sebenarnya ditampilkan tergantung pada sprite dan label. Kata "sprite" awalnya memiliki arti dari "fairy-like creature," dan berarti gambar diharapkan untuk terbang di sekitar layar.

1.3 Events

         Peristiwa terjadi ketika sesuatu menyentuh sesuatu yang lain pada layar, ketika jumlah waktu tertentu telah berlalu, atau beberapa jenis lain dari perubah- an terjadi. Ketika acara berlangsung, fungsi disebut "acara pendengar" dapat dibuat.
Dengan menambahkan pendengar acara untuk entitas, entitas dapat diken- dalikan.. Ketika pendengar acara dipicu, mereka mengeluarkan perintah untuk entitas induk mereka.

  • var bear = new Sprite(32,32); // create a sprite
  • bear.image = game.assets[' g1.png']; // set the image to be displayed
  • bear.x = 50; // set the position on the x-axis
  • bear.y = 50; // set the position on the y-axis
  • bear.addEventListener('enterframe',function(){ // add an event listener
  • // the event listener for the enterframe event
  • this.x+=2; // move two pixels to the right
  • });
  • game.rootScene.addChild(bear); // show the image on the screen

    Dengan melakukan ini, animasi beruang bergerak ke kanan dapat ditampilkan pada layar. Acara enterFrame memanggil semua entitas ditampilkan pada layar satu-per-satu dan dalam interval tetap.

   Contoh lainnya:

  • bear.addEventListener('touchend',function(){ //add an event listener
  • //event listener for the touchend event this.x+=2; //move two dots to the right
  • });

    Dengan mengubah nama acara untuk touchend, kali ini karakter hanya akan bergerak 2 piksel ke kanan ketika diklik oleh pengguna, dan membuat sprite interaktif. Untuk membuat pendengar acara untuk seluruh layar, menambahkan pen- dengar acara untuk adegan itu sendiri.
  • game.rootScene.addEventListener('touchend',function(param){ // scene event listener
  • bear.x = param.x; // move the bear to the clicked location
  • bear.y = param.y; });

Pendengar acara dapat menerima parameter. Di sini, dengan menggunakan param, pendengar acara melewati koordinat yang diklik.
Di sini, dengan menggantikan koordinat beruang dengan posisi diklik di layar, karakter tersebut akan dipindahkan. Acara juga dapat ditambahkan ke entitas beberapa kali.

1.4 Classes

          Ketika Anda terbiasa dengan mengembangkan, membuat game yang lebih rumit akan menjadi lebih mudah dengan menciptakan kelas kustom Anda sendiri. Kelas di enchant.js dapat dibuat dengan fungsi Class.create.

  • Bear = Class.create(Sprite, { // declare a custom class called Bear
  • initialize:function(){ // initialize the class (constructor)
  • Sprite.call(this,32,32); // initialize the
  • sprite this.image = game.assets[' g1.png']; // set the image ga- me.rootScene.addChild(this);
  • }
  • });

Dengan mende nisikan kelas ini, lebih mudah untuk menciptakan karakter ini akan maju.
            bear = new Bear();

Itu dia. Hanya dengan melakukan hal ini, kita membuat sebuah instance dari kebiasaan beruang kelas, yang mewarisi kelas Sprite. Dengan mewarisi kelas, kita dengan mudah membuat kelas beruang yang berisi semua fungsi dari kelas Sprite.
Untuk tidak menggunakan warisan, berikut ini digunakan.

  • hoge = Class.create({
  • initialize:function(){
  • this.x=10;
  • });

Juga, mende nisikan pendengar acara di sini membuatnya lebih mudah maju.

  • Bear = Class.create(Sprite, { // de ne the custom class
  • initialize:function(){ // initialize the class (constructor)
  • Sprite.call(this,32,32); // initialize the sprite
  • this.image = game.assets[' g1.png']; // designate the sprite image
  • game.rootScene.addChild(this);
  • },
  • onenterframe:function(){ // enterframe event listener
  • this.x+=2;
  • },
  • ontouchend:function(){ // the event listener for the touchend event
  • this.y+=10;
  • }
  • });
Ini akan membantu Anda sangat bisa menulis kelas seperti ini. Sebuah kelas yang Anda buat sekali dapat disalin berulang-ulang.

  • bear1 = new Bear();
  • bear1.x=100;
  • bear2 = new Bear();
  • bear2.x=150;

Mampu secara efektif menerapkan kelas-kelas ini akan meningkatkan e siensi dengan yang Anda mengembangkan permainan.

1.5 Collision Detection

         Untuk mengetahui apakah entitas telah berpotongan, atau melakukan kontak dengan, entitas lain, gunakan dalam atau bersinggungan.

  • if(bear1.intersect(bear2)){ // if bear1 hits
  • bear2 bear1.x -= 10;
  • bear2.x += 10; 
  • }

2. Classes Index

2.1 enchant.Action

          Action(tindakan) adalah unit yang membentuk timeline. Ini adalah unit yang digunakan untuk menentukan tindakan yang ingin Anda lakukan. Tindakan yang telah ditambahkan ke timeline dilakukan secara berurutan. Transisi dari satu tindakan ke depan terjadi secara otomatis setelah jumlah frame yang di- tentukan oleh parameter waktu telah berlalu. Sebuah acara actionstart dipecat ketika aksi telah dimulai. Sebuah acara actionend dipecat ketika tindakan te- lah berhenti. Untuk setiap frame yang berlalu, acara actiontick dipecat. Anda dapat menentukan pendengar untuk acara ini untuk melakukan acara tertentu ketika mereka terjadi.
         
            Class Detail
               enchant.Action(param)

             Parameters: {Object} param
               {Number} param.time
               Optional Jumlah frame bahwa tindakan akan bertahan. Untuk jumlah tak terbatas                                  mengatur ini ke null.
               {Function} param.onactionstart Optional Pendengar kejadian untuk saat aksi dimulai.                          {Function} param.onactiontick Optional
                Pendengar kejadian untuk saat aksi telah berlalu satu frame.
               {Function} param.onactionend Optional
                Pendengar acara untuk saat aksi selesai.

2.2 enchant.Map

Sebuah kelas untuk membuat dan menampilkan peta dari satu set ubin.


            Class Detail
              enchant.Map(tileWidth, tileHeight)

            Parameters: {Number} tileWidth
              Lebar ubin.
              {Number} tileHeight
              Tinggi ubin.
       
            Field Detail
              {Number[][]} collisionData Array dua dimensi untuk menyimpan jika tabrakan harus                            dilakukan untuk ubin.
              {enchant.Surface} image   Gambar dengan yang ditetapkan genteng ditampilkan pada peta.
              {Number} tileHeight          Tinggi ubin peta.
              {Number} tileWidth           Lebar ubin peta.

           Method Detail
              {*} checkTile(x, y) Cek apa ubin pada posisi tertentu.

           Parameters: {Number} x
              x koordinat titik pada peta.
             {Number} y
             y koordinat titik pada peta.

          Returns: {*} Data ubin untuk posisi tertentu.

         {Boolean} hitTest(x, y) rintangan berada di atas Peta.

          Parameters: {Number} x
             x koordinat deteksi tempat di peta.
             {Number} y
             y koordinat deteksi tempat di peta.

          Returns: {Boolean} Benar, jika ada kendala.

          loadData(data) Set data peta. Set data genteng, sedangkan data (array dua dimensi dengan indizes mulai dari 0) dipetakan pada gambar mulai dari sudut kiri atas. Bila lebih dari satu peta array data diatur, mereka akan ditampilkan dalam urutan terbalik.

           Parameters: {...Number[][]} data
             Array dua dimensi dari indizes genteng. Beberapa sebutan mungkin.

2.3 enchant.Node

           Kelas dasar untuk objek di pohon layar yang berakar pada adegan sebuah. Tidak digunakan secara langsung.
             
             Class Detail
                enchant.Node()

             Field Detail
                {Number} age Usia (frame) dari node ini yang akan meningkat sebelum node ini menerima                  enchant.Event.ENTER_FRAME.
                {enchant.Group} parentNode Node induk dari Node ini.
                {enchant.Scene} scene Adegan yang dimiliki Node.
                {Number} x x koordinat Node.
                {Number} y y koordinat Node

           Method Detail

           moveBy(x, y) Pindahkan Node relatif terhadap posisi saat ini.

            Parameters: {Number} x sumbu x jarak gerakan. {Number} y
                y jarak sumbu gerakan.

            moveTo(x, y) Pindahkan Node ke lokasi target yang diberikan.

             Parameters: {Number} x Menargetkan x koordinat. {Number} y
                Menargetkan y koordinat.

2.4 enchant.Group

Sebuah kelas yang dapat menampung beberapa enchant.Node.
            Class Detail
               enchant.Group()


  • var stage = new Group(); stage.addChild(player); stage.addChild(enemy); stage.addChild(map);
  • stage.addEventListener('enterframe', function() {
  • // Moves the entire frame in according to the player's coordinates. if (this.x > 64 - player.x) {
  • this.x = 64 - player.x;
  • }
  • });

            Field Detail

               {enchant.Node[]} childNodes Nodes anak.

               {enchant.Node}  rstChild Node yang merupakan anak pertama.

               {enchant.Node} lastChild Node yang merupakan anak terakhir.

               {Number} originX Titik asal rotasi, skala

               {Number} originY Titik asal rotasi, skala

               {Number} rotation Sudut rotasi kelompok (derajat).

               {Number} scaleX Scaling Faktor pada sumbu x dari Grup. See:                                                                    enchant.Group#originX,enchant.Group#originY

               {Number} scaleY Scaling Faktor pada sumbu y dari Grup. See:                                                                    enchant.Group#originX,enchant.Group#originY

                Method Detail

                addChild(node) Menambahkan Node kepada Grup.

                Parameters: {enchant.Node} node
                   Menambahkan Node

                insertBefore(node, reference) Menggabungkan Node ke Group.

                Parameters: {enchant.Node} node Menggambungkan Node {enchant.Node} reference
                    Node dalam posisi sebelum penyisipan.

                 removeChild(node) Menghapus Node dari grup

                 Parameters: {enchant.Node} node
                    Node yang akan dihapus.

3 Membuat Simpel Game dengan enchant.js

3.1 Mempersiapkan Struktur Proyek Anda

          Enchant.js tidak menerapkan struktur direktori untuk proyek-proyek. Anda dapat struktur folder proyek cara apapun yang Anda suka. Jadi dalam tutorial ini, Anda akan struktur hal dengan cara yang masuk akal bagi saya. Mudah- mudahan, itu akan masuk akal untuk Anda, juga. Sebelumnya anda download terebih dahulu asset-aset ini untuk tutorial, dan unzip pada hard drive anda.

Pergi ke direktori yang Anda ingin menjadi ruang kerja Anda dan membuat folder baru bernama penguindive.

Selanjutnya, buatlah subfolder dengan didalamnya terdapat folder penguin- dive kamu jadi folder tersebut akan seperti ini:

             penguindive/
             penguindive/js
             penguindive/js/lib
             penguindive/res

Res dan js folder akan di mana Anda menyimpan  le JavaScript Anda dan aset permainan Anda, masing-masing. Folder lib akan di mana Anda menyimp- an pihak ketiga JavaScript  le / perpustakaan.
Langkah berikutnya adalah untuk menempatkan semua aset permainan An- da download tadi di dalam folder res. Cukup ekstrak  le ZIP dan menyalin  le.






17







Gambar 1: enchant.js

Setelah Anda melakukan itu, Anda harus memiliki  file- file berikut di folder res: BG_Over.png

           BG.png
           bgm.mp3
           Eat.mp3 shSheet.png Hit.mp3 Ice.png
           penguinGameOver.png
           penguinSheet.png

Anda tidak akan menggunakan semua  le- le ini dalam tutorial ini. Namun, jangan ragu untuk menggunakannya untuk memperpanjang permainan Anda sendiri, sebagai tantangan. Ada beberapa saran untuk bagaimana melakukan ini pada akhir tutorial.
Berikutnya, ekstrak enchant.js arsip Anda download dari GitHub. Salin  le enchant.js dan memasukkannya ke dalam js Anda \ folder lib.


Catatan: Anda akan melihat bahwa ada dua versi dari enchant.js dalam arsip - enchant.js dan enchant.min.js. File kedua adalah versi mini ed, di mana ruang ekstra dan tombol kembali telah dihapus untuk membuat versi download terkecil yang mungkin untuk kode.
Sejak versi yang juga menggantikan nama variabel dan metode dengan sing- kat (biasanya dimengerti) alternatif, itu tidak menyebabkan kode yang sangatterbaca-manusia. Jadi yang terbaik untuk menggunakan versi standar kode sela- ma pengembangan dan debugging (enchant.js) dan menggunakan versi mini ed dalam produksi (enchant.min.js).


Anda sekarang siap untuk memulai coding yang sebenarnya!


3.2 Kenapa Hello There, Ocean!

          Mari kita mulai dengan sesuatu yang sederhana: mengatakan Hello word di mana permainan Anda akan berlangsung.
Meluncurkan editor teks favorit Anda dan mulai dengan membuat  le in- dex.html, yang seperti yang saya yakin Anda menyadari, akan menjadi  file per- tama dimuat ketika folder game diakses melalui browser:







Simpan  file (nama itu index.html) dalam folder penguindive.
Kode HTML cukup sederhana. Anda sudah termasuk dua  le JavaScript - perpustakaan enchant.js sendiri, dan main.js, yang akan menjadi  le mana Anda menulis kode untuk permainan Anda.
Berikutnya, buat main.js dan tambahkan kode berikut untuk itu (sebagai  le index.html ditunjukkan,  le main.js masuk dalam subfolder js ketika Anda menyimpannya):

Kode di atas adalah semua yang Anda butuhkan untuk mendapatkan kerja enchant.js game. Mari kita langkah-demi-langkah:

  1. Ekspor semua kelas perpustakaan global. Hal ini memungkinkan Anda un- tuk menggunakan kelas dari enchant.js tanpa harus mengetik namespace setiap kali.
  2. Membuat fungsi yang akan dipanggil sekali dokumen HTML selesai loa- ding. Anda akan menginisialisasi permainan Anda di dalam fungsi ini.
  3. Membuat sebuah instance dari kelas permainan, yang merupakan kelas aplikasi utama permainan enchant.js. Konstruktor untuk kelas Permain- an membutuhkan dua argumen: lebar dan tinggi layar permainan dalam piksel.
  4. Preload gambar latar belakang untuk permainan. Bila Anda memiliki sumber daya yang mengambil banyak waktu untuk memuat (seperti gam- bar besar atau soundtrack latar belakang), itu ide yang baik untuk me- muat mereka sebelum Anda benar-benar perlu untuk menggunakannya.
  5. Mengkon gurasi pengaturan pertandingan. Perhatikan garis pengaturan frame rate game ke 30 fps (frame per detik). Ini tidak berarti bahwa permainan akan selalu dijalankan pada 30 fps. Ini sangat mungkin bahwa fps akan turun pada platform mobile. Pikirkan ini sebagai fps maksimum bahwa permainan akan mencoba yang terbaik untuk mencapai.
  6. Acara onload Game objek akan dipanggil setelah permainan selesai loading segala sesuatu di antrian preload. Ini adalah titik masuk dari permainan Anda.





    18




    Gambar 2: Konsol Browser

  7. Seperti nama metode menyiratkan, ini akan memulai permainan Anda. Memulai permainan Anda akan memulai proses preloading, dan memang- gil metode onload setelah preloading selesai.

Catatan: frame rate game ini dan skala tidak dapat diubah setelah Anda memu- lai permainan. Pastikan untuk mengatur mereka sebelum memanggil game.start ()!

Simpan main.js. Anda Saatnya untuk melihat apakah permainan Anda ber- jalan dengan benar pada browser desktop. Cukup index.html terbuka, atau, jika Anda menggunakan server web, arahkan ke folder game via localhost.

Ketika Anda membuka halaman permainan, seharusnya tidak ada apa-apadi layar - setelah semua, Anda tidak memasukkan apa pun di sana belum! Tetapi jika Anda memeriksa JavaScript konsol browser Anda, Anda akan melihat "Hai, Ocean!" Ditampilkan

3.3 Node, Tema dan Game: The Konsep Dasar

Ketika bekerja dengan enchant.js, ada beberapa konsep dasar yang perlu Anda ketahui:


Scene
enchant.js menggunakan konsep adegan untuk menangani aliran permainan. Sebuah permainan dapat memiliki banyak adegan, tetapi hanya salah satu dari mereka dapat berjalan pada satu waktu. Dengan beralih adegan, Anda dapat mengubah permainan negara / layar.
Misalnya, aliran permainan akan terlihat seperti ini:
Menurut diagram, ada empat adegan dalam permainan. Mulai dari adegan Judul, pemain dapat pergi ke Scene permainan, di mana gameplay utama ber- langsung. Dari sana, mereka dapat beralih antara Scene permainan dan Scene Pilihan untuk menyesuaikan pengaturan permainan.
Setelah pemain adalah kembali Scene permainan dan permainan berakhir, permainan bergerak ke Game Tema Over, sebelum kembali ke Scene Judul lagi, siap untuk sesi game berikutnya.






19






Gambar 3: Scene


Game
Seperti yang dinyatakan sebelumnya, kelas Game kelas aplikasi utama. Salah satu objek permainan merupakan salah satu enchant.js permainan tunggal. Ga- me kelas juga bertindak sebagai adegan Manager. Menyimpan contoh adegan dalam tumpukan, di mana adegan top pada stack adalah adegan aktif.
Dalam enchant.js, permainan selalu datang dengan sebuah adegan yang dise- but Root Scene (yaitu adegan pertama di stack). Dengan memanipulasi adegan stack, Anda dapat mengubah keadaan permainan dengan mudah.
berikut adalah tiga cara Anda dapat memanipulasi adegan tumpukan mela- lui objek permainan:
ˆReplace: ini menggantikan adegan aktif dengan yang baru. Anda tidak bisa kembali ke tempat lama, kecuali jika Anda menyimpan referensi ke suatu tempat sebelum menggantinya.
ˆPop: Ini menghilangkan adegan di atas tumpukan, membuat adegan ber- ikutnya dalam tumpukan adegan aktif.


Node
Adegan di enchant.js diimplementasikan menggunakan struktur data pohon. Oleh karena itu, banyak objek dalam pertandingan enchant.js node. Bahkan, jika Anda sudah familiar dengan perkembangan Cocos2D, konsep ini cukup mirip dengan node di Cocos2D.






20






Gambar 4: Replace






21







Gambar 5: Pop


Ada banyak jenis node di enchant.js. Berikut adalah beberapa contoh, semua yang akan Anda gunakan segera:

  • ˆSprite: node untuk menampilkan gambar statis dan animasi.
  • ˆLabel: node untuk menampilkan teks.
  • ˆGroup: node untuk mengelompokkan banyak node bersama-sama.

Oleh karena itu, adegan sebenarnya pohon node, di mana akar adalah simpul Scene. Ini mungkin memiliki beberapa anak node yang sprite, label, dan seba- gainya.
Apakah Anda "node" apa yang saya maksud? Tidak terlalu? Mari kita menulis beberapa kode untuk membantu Anda memahami hal ini lebih baik!
Tambahkan baris berikut ke main.js setelah Anda mencetak ke konsol "Hai, Ocean!":


  • //1 - Variables var scene, label, bg;
  • //2 - New scene scene = new Scene();
  • //3 - Add label
  • label = new Label("Hi, Ocean!"); // 4 - Background
  • bg = new Sprite(320,440);
  • bg.image = game.assets['res/BG.png'];
  • //5 - Add items scene.addChild(bg); scene.addChild(label);
  • //6 - Start scene game.pushScene(scene);

Mari kita lihat lebih dekat pada setiap bagian:

  1. ˆMende nisikan beberapa variabel yang akan digunakan dalam kode berikut.
  2. Buat adegan kosong. Anda akan menggunakan adegan ini sebagai adegan permainan utama Anda.
  3. Buat simpul Label untuk menampilkan teks "Hai, Samudra!" Di layar. Kelas Label konstruktor mengambil satu argumen, yang merupakan teks yang ingin ditampilkan.
  4. Buat simpul Sprite untuk gambar latar belakang. Konstruktor mengambil dua argumen: lebar dan tinggi gambar yang ingin ditampilkan. Setelah

sprite dibuat, Anda menetapkan gambar yang ingin sprite ini untuk me- nampilkan. Anda dapat mengakses data gambar Anda telah dimuat ke dalam permainan melalui permainan aset kamus. Kamus ini akan meme- takan jalan ke sumber daya dimuat. Karena Anda mengatakan permainan untuk preload  le di path res / BG.png, jalan ini akan digunakan sebagai kunci yang memetakan dengan latar belakang laut.

  • ˆMenambahkan node baru ke TKP. Metode addChild berarti bahwa node Anda tambahkan akan menjadi salah satu node anak adegan itu.

Catatan: Urutan di mana Anda menambahkan node ke sebuah adegan penting. Dalam enchant.js, kerangka akan menarik node baru ditambahkan di atas orang- orang yang ditambahkan sebelumnya.
Jika Anda beralih urutan kode di atas, Anda tidak akan melihat label meskipun sebenarnya dalam adegan. Hal ini karena latar belakang akan berada di atas label.



  • ˆAdegan Anda siap. Saatnya untuk membuat adegan ini adegan aktif An- da. Untuk melakukan ini, Anda hanya mendorong adegan ke adegan per- mainan stack.

Simpan main.js dan kembali halaman browser Anda. Anda akan melihat sesuatu yang mirip dengan berikut:

3.4 Object-Oriented Style dengan enchant.js

          Enchant.js sudah dilengkapi dengan kerangka berorientasi objek sendiri. Tanpa ini, Anda akan harus membuat adegan dan menambahkan segala sesuatu dalam acara onload permainan. Sementara ini sederhana, kerangka OOP yang en- chant.js memberikan membuat lebih mudah bagi Anda untuk memperpanjang kode Anda, dan kode Anda akan menjadi lebih bersih dalam jangka panjang!
OOP di enchant.js menggunakan implementasi yang sama seperti Proto- type.js, dalam kasus Anda akrab dengan Prototype. Jadi, dalam rangka untuk membuat kelas baru, Anda hanya perlu melakukan hal berikut:
initialize adalah fungsi konstruktor. Ini akan dipanggil ketika Anda membuat contoh baru dari kelas.






22







Gambar 6: Hai Ocean


Untuk menambahkan metode, cukup tambahkan koma pada akhir metode terakhir sebelum memulai yang baru.
Jika Anda ingin membuat ClassB yang merupakan subclass dari ClassA, Anda akan menerapkan ClassB seperti ini:
Dilengkapi dengan pengetahuan ini, mari kita refactor kode sebelumnya menggunakan sistem OOP enchant.js.

Pergi ke akhir window.onload di main.js (setelah game.start ();) dan tam- bahkan baris-baris:
Kode di atas menciptakan SceneGame sebagai subclass dari Scene. Mari kita pergi atas kode:


  1. Memanggil konstruktor dari Scene, yang merupakan superclass dari Sce- neGame Anda, untuk melakukan apapun perlu inisialisasi.
  2. Sering kali Anda akan menemukan diri Anda yang membutuhkan mengak- ses objek permainan, terutama ketika Anda ingin mengakses kamus aset. Untungnya, contoh permainan yang tunggal, yang berarti hanya ada satu contoh dari permainan dan dapat diakses dari mana saja. Baris kode akan menetapkan Game contoh tunggal untuk variabel game untuk digunakan nanti.
  3. Buat node anak untuk adegan, seperti sebelumnya.
  4. Tambahkan node anak seperti sebelumnya, tapi kali ini menggunakan ini bukan adegan karena variabel ini mengacu pada contoh saat SceneGame.

Maka garis masih melakukan hal yang sama - yaitu, menambahkan node ke TKP simpul Anda.
Dengan ini, Anda akhirnya menciptakan kelas enchant.js pertama Anda! Saatnya untuk menggunakan SceneGame. Ganti kode di dalam game.onload
dengan berikut:
Onload permainan sekarang jauh lebih bersih. Anda instantiate objek Sce- neGame, dan menambahkannya ke adegan stack.
Simpan perubahan Anda dan kembali browser. Ini harus persis sama seper- ti sebelumnya, kecuali sekarang kode Anda siap untuk diperpanjang menjadi sebuah permainan penuh!

3.5 Memunculkan Penguins

Saatnya untuk memperkenalkan pahlawan air es-mencintai permainan Anda - penguin! Tambahkan res / penguinSheet.png ke daftar sumber daya preload di window.onload di main.js:
Pergi ke konstruktor SceneGame dan menambahkan variabel bernama pe- nguin baru ke baris pertama:

               var game, label, bg, penguin;

Kemudian tambahkan kode berikut tepat setelah Anda menetapkan gambar ke node bg:
Dua baris pertama mirip dengan apa yang Anda lakukan dengan latar be- lakang. Anda membuat Sprite simpul baru berukuran 30 Ö 43 piksel, dan menetapkan  le gambar ke sprite penguin.
Dua baris berikutnya mengatur posisi penguin. Perhatikan bagaimana mu- dahnya untuk mengakses layar dan lebar penguin. Anda dapat mengakses dan memodi kasi ketinggian simpul sama.
Akhirnya, jangan lupa untuk menambahkan penguin ke TKP. Jika tidak, Anda tidak akan melihatnya di layar!
Tambahkan kode berikut tepat setelah baris menambahkan node bg ke tem- pat kejadian. Ingat bahwa urutan di mana Anda menambahkan node penting!






23





Gambar 7: Penguin


           this.addChild(penguin);
Anda ingin penguin untuk berada di atas latar belakang, tetapi di bawah label. Oleh karena itu, Anda harus menambahkan dia setelah latar belakang, tapi sebelum label.

Sekarang menyimpan perubahan dan kembali halaman tersebut di browser Anda untuk melihat keadaan saat permainan Anda:
Anda sekarang harus melihat penguin di layar. Bukti visual Anda pertama kemajuan!

3.6 Pandangan lebih dekat di Sprite

Sementara penguin terlihat seperti itu hanyalah simpul Sprite, itu sedikit ber- beda jika dibandingkan dengan Sprite latar belakang.
Lihatlah bagaimana Anda menciptakan sprite penguin:
              penguin = new Sprite(30,43);



24





Ingat apa artinya ini? Baris ini dibuat sprite dengan ukuran 30 Ö 43. Namun, jika Anda melihat  le penguinSheet.png, Anda akan melihat bahwa
ukuran gambar yang sebenarnya 60 Ö 43. Mengapa, yang pasti tidak 30 Ö 43!
Jadi apa artinya ini? Bila Anda instantiate sprite dengan ukuran 30 Ö 43, tapi menetapkan gambar berukuran 60 Ö 43 untuk itu, ini adalah bagaimana enchant.js melihat gambar:
Sprite node dalam enchant.js memperlakukan gambar yang menetapkan se- bagai lembar sprite. Ini akan menggunakan ukuran yang Anda berikan ukuran frame, dan memberikan nomor indeks untuk setiap frame. Indeks akan mulai dari 0, menghitung dari kiri ke kanan dan atas ke bawah.
Anda dapat mengubah frame animasi dengan menyetel properti bingkai dari Sprite. Ini adalah apa yang Anda akan lakukan selanjutnya!

3.7 Dasar Animasi

          Karena ada akan banyak hal yang terjadi dengan penguin Anda, lebih baik untuk menempatkan dia ke kelas sendiri. Dan itulah bagaimana kaya baru Anda, batu-menantang penguin lebih suka itu.
Tambahkan kode untuk kelas Penguin tepat di bawah SceneGame di main.js, sebagai berikut:
Penguin adalah subclass dari Sprite. Seperti Anda mungkin telah melihat, garis yang memanggil konstruktor superclass sedikit berbeda dari apa yang Anda gunakan ketika Anda subclassed Scene. Hal ini karena konstruktor Sprite membutuhkan dua argumen.
Untuk mengirim argumen untuk konstruktor superclass Anda, Anda mele- wati mereka sebagai array dalam argumen kedua.
Dua baris di bagian # 2 bernyawa penguin Anda. Pada baris pertama, Anda





25






mendeklarasikan variabel contoh, yang akan digunakan sebagai timer untuk animasi Anda. Baris kedua memperkenalkan Anda ke sistem acara di enchant.js. Jika Anda sudah familiar dengan ActionScript atau pengembangan Corona, Anda akan menemukan ini mudah dimengerti.
Sederhananya, benda-benda di enchant.js dapat api peristiwa yang objek lain mungkin akan tertarik. Jika suatu benda tertarik peristiwa tertentu, Anda dapat memberitahu objek yang mendengarkan untuk acara itu dan menentukan fungsi yang harus dipanggil sekali bahwa peristiwa tertentu terjadi.
Oleh karena itu, pada baris di atas, Anda memberitahu penguin untuk men- dengarkan acara ENTER_FRAME, dan memanggil metode bernama update- Animation setiap kali peristiwa ini terjadi.
ENTER_FRAME merupakan acara yang dipecat setiap frame, mirip de- ngan fungsi update dalam lingkaran permainan.
Kelas Penguin Anda tidak memiliki metode updateAnimation belum. Itu benar, Anda akan menambahkan satu!
Menjaga petunjuk sebelumnya untuk menulis kelas dalam pikiran, tambahk- an koma setelah penjepit keriting penutupan untuk initialize di kelas Penguin, dan kemudian tambahkan kode berikut untuk

kelas Penguin:
Karena Anda sudah pindah semua hal-sprite yang berkaitan dengan kelas Penguin, semua yang perlu Anda lakukan adalah instantiating sebuah instance dari kelas Penguin dan posisi itu.
Simpan  le dan refresh browser untuk melihat apa yang telah Anda capai. Penguin Anda sekarang bergerak! Er, setidaknya dia mengepakkan sirip nya.
Dia masih hidup - dan arus air yang memanggil. Mari kita mendapatkan dia dalam perjalanan.

3.8 Mendeteksi Sentuhan

          Sekarang bahwa Anda punya mengepakkan penguin, saatnya untuk mendapatk- an dia merespon sentuhan pemain. Untuk melakukan ini, Anda akan membagi layar menjadi tiga bagian vertikal. Ketika pemain klik atau menyentuh pada bagian manapun, penguin cepat akan bergerak ke bagian dari layar.
Sentuh / klik deteksi di enchant.js adalah yang sederhana seperti mende- ngarkan untuk acara sentuhan. Tambahkan kode berikut ke akhir konstruktor SceneGame:





26







Gambar 8: Penguin


  • TOUCH_START adalah salah satu peristiwa sentuhan Anda dapat mende- teksi. Tiga peristiwa sentuhan yang tersedia adalah:
  • TOUCH_START: kebakaran ketika tombol mouse diklik atau jari me- nyentuh layar
  • ˆTOUCH_MOVE: terus menembak selama pemain menyeret mouse sambil menekan tombol, atau bergerak jari yang terus menyentuh layar.
  • ˆTOUCH_END: kebakaran setelah pemain melepaskan tombol mouse, atau mengangkat jari dari layar.

Karena Anda mendengarkan TOUCH_START, handleTouchControl akan di- panggil segera setelah pemain menyentuh layar.
Tambahkan handleTouchControl ke kelas SceneGame (jangan lupa koma setelah metode sebelumnya):
Anda membagi lebar layar sebesar 3 untuk mendapatkan lebar masing- masing bagian / jalur.
Nilai evt untuk acara sentuhan berisi informasi tentang posisi sentuhan, dan Anda dapat mengaksesnya melalui x dan y properti. Kemudian Anda menggunakan informasi ini untuk menemukan nomor jalur. Setelah Anda telah menentukan yang jalur diklik / menyentuh, Anda memberitahu penguin untuk pindah ke jalur itu.
Menambahkan metode switchToLaneNumber untuk kelas Penguin (perha- tikan bahwa metode baru masuk Penguin dan tidak SceneGame):
Tidak ada yang rumit di sini - Anda hanya menghitung posisi x untuk pe- nguin, mengingat jumlah lajur.
Simpan main.js dan refresh browser lagi. Sekarang coba klik pada layar, dan Anda akan melihat penguin pindah ke jalur yang Anda pilih.






27





Gambar 9: Penguin Bergerak


3.9 Ice Ice Baby

          Penguin Anda sekarang dapat berenang sekitar, tetapi jika ini adalah untuk menjadi permainan yang tepat, harus ada beberapa kendala bagi penguin untuk menghindar. Sudah saatnya Anda menambahkan beberapa - jangan biarkan penguin terlalu mudah!
Mulailah dengan menambahkan kelas Ice akhir main.js:
Kelas Ice juga subclass dari kelas Sprite. The Ice konstruktor mengambil argumen yang menunjukkan jalur mana ia akan muncul.
Perhatikan bahwa kelas Ice Anda hilang dua metode. Yang pertama adalah setLane, yang akan Anda gunakan untuk mengatur posisi objek sesuai dengan jumlah lane. Yang kedua adalah update, yang Anda sebut setiap kali EN- TER_FRAME terjadi.
Tambahkan setLane ke kelas Ice sebagai berikut:
itu metode sederhana. Ini menghitung kecepatan rotasi acak untuk Ice, yang akan Anda gunakan untuk menghidupkan es dalam metode pembaruan. Kemudian posisi Sprite diatur, berdasarkan jalur.
Salah satu metode bawah, satu lagi untuk pergi! Tambahkan metode update sebagai berikut:





28






Sekali lagi, ini adalah cukup sederhana. Anda terus menambahkan kecepatan untuk y posisi es sehingga itu akan bergerak dari atas layar ke bawah. Anda juga menggunakan rotationSpeed untuk menjaga batu es berputar.
Setelah es bergerak melampaui bawah layar, itu dihapus dari node induk, efektif mengeluarkannya dari tempat kejadian.
Anda dapat mengakses node induk setiap node melalui properti parentNode. Dengan itu, Anda dapat memberitahu es induk simpul untuk menghapus es dari struktur pohon setelah bergerak melampaui bagian bawah layar. Ingat node dan adegan hubungan? Jika Anda menambahkan es ke TKP, adegan menjadi node induk es.
Anda menggunakan sumber daya, res / Ice.png, bahwa Anda belum meng- atakan permainan untuk preload. Jadi mari kita kembali ke awal main.js dan menambahkannya ke daftar preload.
Memodi kasi garis preload terlihat seperti ini:
Dan dengan ini, kelas Ice Anda membeku dan siap untuk menyebarkan. Mengapa Anda tidak mengujinya dengan membuat batu es muncul setiap tiga detik!
Untuk melakukan hal ini, pergi ke SceneGame konstruktor. Tambahkan baris berikut setelah baris TOUCH_START pendengar acara:
Menambahkan metode update untuk SceneGame sebagai berikut:




29





Gambar 10: Rintnagan Penguin

Simpan perubahan Anda dan menjalankan game lagi. Sekarang batu-batues akan muncul pada posisi acak setiap 0,5 detik!

3.10 Mendeteksi Tabrakan(Collision)

           Yap, batu-batu es pergi kanan melalui penguin. Anda harus melakukan sesua- tu tentang hal ini, atau penguin Anda akan mendapatkan malas dan sebelum





30




kau tahu itu, dimakan oleh ikan paus pembunuh. Buatlah dia berjuang untuk hidupnya!
Mulailah dengan menambahkan variabel baru ke konstruktor SceneGame, sehingga baris pertama terlihat seperti ini:

                               var game, label, bg, penguin, iceGroup;

Kemudian tambahkan kode ini di konstruktor SceneGame, tepat setelah menciptakan penguin:
Di sini Anda telah membuat simpul Grup yang disebut iceGroup. Masih ingat apa node Group adalah?
Sebuah Group adalah node yang dapat berisi node lain, seperti apa adeg- an lakukan dengan sprite dan label. Anda akan menggunakan grup ini untuk menyimpan semua batu-batu es, sehingga Anda dapat mengatur mereka semua dari satu tempat.
Berikutnya, menambahkan grup baru ke TKP. Pergi ke mana Anda menam- bahkan node ke TKP di konstruktor SceneGame dan tambahkan kode berikut, segera setelah di mana Anda menambahkan node bg:

               this.addChild(iceGroup);

Dengan menambahkan iceGroup setelah latar belakang tapi sebelum pengu- in, Anda memastikan bahwa penguin akan selalu berada di atas es. Menggunak- an node Group, Anda dapat membuat sistem lapisan yang memberikan Anda kontrol lebih besar atas urutan rendering.
Pergi ke metode update SceneGame ini. Ingat di mana Anda menghasilkan batu es? Membuat perubahan berikut:


  • //this.addChild(ice);
  • this.iceGroup.addChild(ice);

Anda tidak menambahkan batu baru langsung ke TKP lagi. Sebaliknya, baru dibuat batu-batu yang ditambahkan ke grup es. Tapi mereka masih ak- an diberikan di tempat kejadian, karena Anda sudah menambahkan kelompok untuk adegan di konstruktor.
Itu semua baik dan bagus, saya mendengar Anda berkata. Tapi apa semua ini harus dilakukan dengan batu-batu memukul penguin? Anda mendapatkan ada. :] Bahkan, saatnya untuk bekerja pada tabrakan sehingga Anda dapat mengetahui kapan batu hits penguin!
Satu hal yang baik tentang node Group adalah bahwa Anda telah mengum- pulkan koleksi node Anda tertarik. Anda akan pergi melalui setiap batu dalam kelompok dan melihat apakah itu bertabrakan dengan penguin Anda.
Masih di dalam metode update SceneGame, tambahkan baris berikut setelah





31





jika blok:
Sebuah node Group memiliki array childNodes yang melacak semua anak- anaknya. Ini blok iterates kode melalui setiap anak dan cek jika bertabrakan dengan penguin.
Sebuah instance dari kelas Sprite memiliki metode berpotongan yang dapat Anda gunakan untuk memeriksa apakah dua sprite yang berpotongan. Sejak Es dan Penguin keduanya subclass dari Sprite, Anda dapat memeriksa apakah ke- dua berbenturan dengan menggunakan metode ini. Jika batu besar bertabrakan dengan penguin, Anda menghapus batu dari grup.
Simpan main.js dan refresh browser Anda. Sekarang, ketika batu besar bertabrakan dengan penguin Anda, itu harus menghilang!
Untuk saat ini, Anda akan meninggalkan penguin untuk membayangkan bahwa dia menghancurkan terpisah mereka batu-batu dengan paruhnya setiap kali ia bertabrakan dengan satu. Anda akan menerapkan realitas suram segera.

3.11 Perhitungan Skor

           Permainan ini bisa menggunakan cara untuk menjaga skor. Jadi, mari kita mengubah "Hi, Ocean" label menjadi sesuatu yang lebih berguna.
Pergi ke mana Anda membuat label di konstruktor SceneGame dan memo- di kasi kode untuk terlihat seperti ini:
Kali ini Anda mengatur teks untuk SCORE<br> 0. <br> antara SCORE dan 0 adalah tag line-break.
Sisa kode set properti label, seperti posisinya, warna, font, dan perataan teks. Ini harus jelas.
Untuk beberapa efek yang menarik, Anda dapat mengedit gaya CSS dari label dengan mengakses properti _style. Sebagai contoh:





32






Gambar 11: Skor Penguin

 label._style.textShadow ="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black";
Baris di atas menggunakan properti text shadow menambahkan perbatasan hitam di sekitar teks.
Akhirnya, Anda tetap referensi ke label dalam hal SceneGame Anda dengan nama scoreLabel. Simpan dan menjalankan permainan lagi. "Hi, Ocean" label sekarang harus di tengah atas layar permainan, dan harus membaca, "SCORE 0".
Tentu saja, saat ini tidak ada mekanisme gol! Anda akan meningkatkan skor seiring berjalannya waktu.
Tambahkan dua variabel berikut pada akhir konstruktor SceneGame ini:
Anda menggunakan scoreTimer sebagai timer untuk meningkatkan skor per- tandingan dengan berjalannya waktu, sedangkan variabel nilai mengandung skor pertandingan (jelas!).






33





Anda ingin label melaporkan skor saat pemain. Setiap kali skor dimodi kasi, teks pada label harus diperbarui juga. Oleh karena itu, itu adalah ide yang baik untuk membungkus modi kasi skor menjadi sebuah metode.
Menambahkan metode yang disebut setScore ke SceneGame:
Metode ini tidak persis apa yang Anda inginkan. Ini perubahan skor, dan update label skor untuk mencerminkan nilai saat ini.
Pergi ke metode update SceneGame dan tambahkan baris berikut di awal:
Anda mungkin akrab dengan pola ini sekarang: setiap 0,5 detik, Anda me- ningkatkan skor dengan 1 poin menggunakan metode setScore.
Simpan dan menjalankan permainan lagi. Sekarang meningkat skor dengan setiap melewati kedua, dan Anda bahkan tidak perlu berpura-purauntuk ber- main! Wow, bisa mendapatkan game ini lebih sulit atau menarik?

3.12 Memberikan Musik

           Sebelum Anda mengkon gurasi permainan akhir Anda, mari kita berhenti seje- nak untuk bertanya: apa permainan yang baik tanpa beberapa efek suara manis dan musik?
enchant.js juga dilengkapi dengan sistem audio yang sederhana. Namun, sementara sistem audio bekerja dengan cukup baik pada browser desktop, ini tidak cukup kasus untuk mobile browser.
Audio pada browser mobile masih merupakan masalah besar pada OS apa- pun. Saat ini, diterima untuk HTML5 mobile game untuk TIDAK memiliki audio sama sekali. Mudah-mudahan, hal ini akan memperbaiki browser mobile segera.
Sistem audio di enchant.js menggunakan Web Audio API dengan Flash mun- dur. Untuk mengaktifkan  ash mundur, Anda harus menambahkan beberapa  le pembantu untuk proyek Anda.
Pergi ke folder enchant.js (satu di mana Anda diekstrak  le dari proyek GitHub) dan copy sound.as dan sound.swf:
Kembali ke folder proyek Anda dan paste  le disalin ke dalam folder root, penguindive. Sekarang, jika browser tidak mendukung Web Audio, ia akan





34





Gambar 12: Penguin poin






35






Gambar 13: Sound

menggunakan Flash untuk memutar  le suara sebagai gantinya.
Sudah waktunya untuk preload lebih banyak barang! Memodi kasi garis preload di main.js menjadi sebagai berikut:
Dalam metode update SceneGame ini, pergi ke jika blok di mana Anda memeriksa tabrakan. Memodi kasi jika blok terlihat seperti ini:
Tidak seperti gambar,  le audio dimuat oleh enchant.js akan disimpan se- bagai objek Suara dalam kamus aset. Anda dapat mengakses objek-objek ini secara langsung dan memanggil metode bermain untuk bermain audio.
Simpan dan menjalankan permainan. Ketika penguin hits batu besar, efek suara memukul harus bermain, yang terdengar agak seperti papan membanting dinding (well, setidaknya jika Anda menggunakan browser yang mendukung itu).




36






Catatan: Pemutaran Audio mungkin atau mungkin tidak bekerja dengan benar, tergantung pada browser. Bekerja dengan baik bagi saya di Safari pada Mac, tetapi tidak akan bekerja dengan benar dengan Firefox beta terbaru jika saya memuat  le secara langsung. Tetapi jika saya dimuat permainan melalui server web lokal, maka itu bekerja dengan baik pada Firefox juga.


Jadi, jika Anda mendapatkan sebuah bar loader (biasanya muncul sangat ce- pat tanpa suara pra-loading, dan sehingga Anda mungkin tidak menyadarinya) dan tidak lengkap, kemudian mencoba browser yang berbeda atau, jika Anda memuat  le langsung, mencoba memuat melalui server web lokal. Jika tidak ada yang berhasil, menghapus suara pra-loading, dan hal yang harus bekerja dengan benar lagi.
Berikutnya, Anda akan menambahkan musik latar belakang untuk permain- an. Pergi ke mana Anda mendeklarasikan variabel misalnya dalam konstruktor SceneGame. Tambahkan berikut setelah variabel misalnya:
Kode di atas menyimpan benda suara musik latar untuk digunakan, dan kemudian memberitahu musik latar belakang untuk bermain.
Karena tidak ada pilihan lingkaran dalam sistem audio enchant.js, Anda harus melaksanakan secara manual. Ini blok kode memeriksa untuk melihat apakah waktu audio saat telah mencapai akhir dari  le audio. Jika memiliki, maka audio dimainkan dari awal lagi.
Simpan dan menjalankan permainan, dan Anda harus mendengar berma- in musik latar belakang - sebuah lagu bahagia dan konyol, sempurna untuk permainan ini!

3.13 Penguin

           Anda hampir ada! Saatnya untuk membuat hidup menantang untuk penguin riang Anda. Dia akan dihukum karena memukul es dengan kematian, dan ketika dia meninggal, Anda akan memungkinkan pemain untuk memulai permainan.
Mulailah dengan menciptakan kelas SceneGameOver. Tambahkan kode ini ke akhir main.js, seperti halnya dengan semua kelas-kelas lain:




37





Seperti SceneGame, SceneGameOver adalah subclass dari kelas Scene. An- da akan menciptakan dua label untuk menunjukkan di layar. Satu label akan berkata "Game Over", dan yang lain akan melaporkan skor akhir.
Anda juga mengatur warna latar belakang dari tempat kejadian saat ini, daripada menggunakan gambar. Saat warna diatur ke hitam, tapi Anda dapat mencoba warna lain jika Anda ingin.


Catatan: Daripada nama warna, Anda juga dapat menggunakan kode hex atau nilai-nilai warna RGB.

 Sebagai contoh:
Tambahkan kode berikut tepat setelah mana Anda mengatur warna latar belakang di SceneGameOver:

Ini sangat mudah: Anda membuat label dan menyesuaikan gaya. Berikutnya membuat label untuk melaporkan skor akhir. Tambahkan kode

berikut tepat setelah kode sebelumnya:
Sama seperti Anda lakukan sebelumnya, ini akan membuat label skor. Va- riabel nilai berasal dari konstruktor SceneGameOver. Ini berarti bahwa ketika Anda membuat sebuah instance dari adegan ini, Anda harus melewati skor akhir untuk itu. Label Anda siap. Saatnya untuk menambahkannya ke scene!

Tambahkan kode berikut setelah blok sebelumnya:




38





Akhirnya, membuat adegan mendengarkan acara TOUCH_START, sehing- ga pemain dapat me-restart permainan dengan menekan pada layar. [TODO: Masukan mana ini?
SceneGameOver hilang metode untuk penangan sentuhan. Memperbaikinya dengan menambahkannya [TODO:? Dimana]:

Metode ini tidak apa-apa tapi ganti adegan saat ini dengan SceneGame, yang berarti bahwa permainan akan kembali ke SceneGame lagi.
Sekarang bahwa Anda memiliki SceneGameOver Anda siap, mari kita meng- gunakannya dalam permainan!
Sejak permainan akan pindah ke SceneGameOver saat penguin terkena oleh batu es, memodi kasi kode tabrakan Anda sebagai berikut:
Kode menghentikan musik latar belakang, dan kemudian memberitahu per- mainan untuk menggantikan adegan saat ini dengan sebuah contoh dari Scene- GameOver, menggunakan nilai saat ini sebagai argumen untuk Instansiasi.
Simpan main.js dan refresh browser Anda lagi. Biarkan penguin tertabrak batu dan menonton layar pergi hitam. Mengklik pada permainan di atas layar harus kembali Anda untuk permainan.
Permainan Anda selesai! Namun, semua sementara Anda telah menguji game ini pada browser desktop Anda





39





Gambar 14: Game over


Bab 5 

Penutup

5.1 Kesimpulan
          Dalam penulisan buku ini telah ditulis beberapa penulisan seperti pengenal- an, proses instalasi dan penggunaan dasar game engine Enchant.js yang dapat meunjang pengguna Enchant.js agar lebih baik lagi.

5.2 Saran
          Penulis menyadari bahwa dalam penulisan buku ini masih banyak kekurang- an seperti kurangnya contoh penggunaan ataupun informasi lain terkait game engine Enchant.js. Penulis menyarankan kepada pembaca agar berkenan mem- berikan saran terhadap penggunaan game engine Turbulenz agar lebih diperda- lam lagi terutama dari segi contoh sempel program yang dibuat dengan game engine Enchant.js agar para pembaca menjadi tertarik untuk menggunakan dan pengguna lebih terbantu.

Daftar Pustaka
[1] Enchant.js, Documentation Enchant.js (http://enchantjs.com/download/, diakses tanggal 20 Oktober 2015)
[2]http://wise9.github.io/enchant.js/doc/plugins/en/index.html, diakses tang- gal 23 Oktober 2015)
[3]http://www.raywenderlich.com/23370/how-to-make-a-simple-html5-game-with-enchant-js, diakses tanggal 26 Oktober 2015)