Minggu, 26 Mei 2013

Chapter 2 Game Architecture


Subbab : Bagian Game Logika (The game Logic Section)

Ini blok pertama yang membuat simulator tetap berjalan. Untuk tujuan global dalam kerangka kerja, kami akan membaginya menjadi tiga blok utama: memperbarui pemain, memperbarui dunia, dan memperbarui karakter nonplaying (NPC).

Laporan Pemain

Sebuah permainan harus menjalankan rutinitas yang membuat snapshot terbaru dari setiap pemain. Sebagai langkah pertama dalam kegiatan, permintaan interaksi oleh pemain harus diperiksa. Hal ini dicapai secara berbeda dari segi mengontrol mekanisme seperti joystick, keyboard, dan mouse. Tapi hasil akhirnya adalah sama yaitu serangkaian nomor yang dapat dimengerti oleh kode permainan yang menunjukkan keadaan dari kontrol pemain. Ini adalah ide baik untuk menggunakan kontroler perangkat abstrak sehingga kode permainan tidak benar-benar berinteraksi dengan fisik. Sebuah device controller abstrak menggunakan joystick dan keyboard sehingga menggunakan antarmuka umum aplikasi tidak diperlukan. Kita akan berbicara tentang pengolahan input dan perangkat abstraksi pada Bab 5, "User Input."

Kami tidak akan langsung memetakan keputusan kontrol untuk tindakan pemain karena ada beberapa item yang dapat membatasi tindakan pemainan. Pemain mungkin menunjukkan bahwa ia ingin bergerak maju, tapi dinding mungkin menghalangi jalannya. Jadi, kegiatan kedua harus dirancang untuk menerapkan dalam membatasi interaksi pemain. Misalnya, pemain dapat menekan tombol "open door" kontrol tetapi karena pengguna tidak memegang kunci yang tepat, pintu tidak akan terbuka. Ingat bahwa kita berbicara tentang prinsip-prinsip umum di sini, itu membutuhkan kode-kode.

Setelah menggunkan controller pemain dan kemudian diperiksa untuk pembatasan pembaruan pemain merupakan kegiatan yang harus diimplementasikan sehingga pemain melihat hasil dari interaksi mereka. Mari kita lihat dua contoh untuk lebih memahami internal dari tiga komponen.

Bayangkan sebuah game seperti Nintendo klasik The Legend of Zelda. Terdapat tiga aturan sebagai berikut:
  1. “Memasukan pemain” merupakan cara yang secara efektif yang akan membaca game controller menggunakan panggilan tertentu, dan kemudian mengkonversi data mentah ke data permainan dunia yang masuk akal. Misalnya, data seperti "kiri adalah mendorong dan tombol A untuk memindahkan karakter kiri.
  2. "Pembatasan pemain" cara ini akan mengakses struktur dunia permainan karena kita perlu tahu tingkatan para pemain dalam dan pemain lain yang berada disekitarnya. Dengan cara ini kita dapat menghitung dengan baik pembatasan geometris, juga dikenal sebagai tabrakan, dan pembatasan logis, yang pada dasarnya kesepakatan antar pemain untuk dapat melakukan interaksi tertentu. Ini  merupakan aturan kedua yang biasanya paling sulit, terutama karena kompleksitas permainan meningkat.
  3.  "Perbarui pemain" aturan ini akan membatasi interaksi dan menghasilkan aturan yang sama di  setiap negara. Jika pemain itu menekan kiri dan tidak ada halangan ke arah itu, kita harus memicu supaya animasi bergerak dan memperbarui posisinya, dan sebagainya.
Beberapa game, seperti Tetris, tidak memiliki karakter yang jelas pada layar, tapi aturan ini masih berlaku. Sebagai aturan sederhana, menggerakan karakter pada layar Anda sebagai sesuatu yang membuat anda dapat berinteraksi hanya dengan menekan kontrol. Di Tetris, hanya mengacu pada batu bata jatuh dari atas layar. Mereka bukan karakter dalam arti kata sebenarnya, tetapi prinsipnya sama. Dimana akan memeriksa masukan pemain di tahap pertama, dalam tahap kedua, kita akan menguji pembatasan bata, dan kemudian kita akan mengeksekusi pembaruan pemain. Pembatasan sangat mudah dilakukan yaitu Batu bata tidak bisa bergerak di luar area layar, tidak dapat jatuh di bawah permukaan tanah, dan tidak bisa terus jatuh jika bata saat ini langsung di atas yang lain sebelumnya jatuh bata. Pada bagian pembaruan pemain, kita hanya memindahkan atau memutar batu bata sesuai dengan input dan pemain dengan menambahkan perilaku default untuk persamaan, yaitu bahwa batu bata dapat terus jatuh terlepas.

Dunia Pembaruan (World Update)

Gagasan tentang dunia permainan yang menampilkan perilaku aktif telah hadir sejak diterbitkan game yang pertama, seperti Pong dan Space Invaders. Selain tindakan pemain, dunia harus menunjukkan aktivitas yang umumnya sehingga pengguna dapat merespon. Sebagai contoh, pengguna mencoba untuk menghindari sebuah batuan yang masuk dalam Asteroid, berusaha mengembalikan bola di Arkanoid, dan sebagainya. Permainan update dunia menerapkan secara efektif gameplay dan membuat permainan menyenangkan. Hal ini tidak mengherankan kemudian bahwa ini bagian dari permainan. Kode merupakan bagian yang sangat penting dalam permainan modern, kompleks.

Untuk memulai harus dibuat menjadi dua entitas yang luas di dunia game. Di satu sisi, kita memiliki entitas pasif, seperti dinding dan sebagian besar item skenario. Untuk memberikan definisi yang lebih formal, ini adalah item yang termasuk ke dalam dunia permainan tetapi tidak memiliki perilaku yang terpasang. Item ini memainkan peran kunci dalam bagian pembatasan pemain, tetapi tidak sangat penting demi memperbarui dunia. Dalam beberapa permainan dengan game skala besar, dunia pembaruan merupakan rutinitas preselect subbagian dari dunia game, sehingga pemain dapat fokus pada elemen-elemen, dan dengan demikian menjadi lebih efisien. Hal inis seperti grafis petualangan. Entah bagaimana, kita harus menyimpan pointer ke ruang pemain dalam, jadi pengguna dapat memeriksa colliders di ruangan itu saja.

Tapi sebagian besar waktu dalam bagian update dunia harus memeriksa jenis lain dari entitas,
Dari unsur-unsur dekoratif seperti burung-burung terbang ke musuh atau pintu yang terbuka dari dekat, ini adalah item yang harus diperiksa untuk menjaga konsisten, makna dalam pengalaman bermain. Beberapa game akan membagi elemen aktif menjadi sederhana logis item-seperti pintu, elevator, atau memindahkan platform dan musuh yang nyata dengan perilaku khas. Berikut berasal dari kompleksitas dari coding. Elemen-elemen logis dapat diselesaikan dalam beberapa baris kode, sedangkan musuh yang nyata membutuhkan kecerdasan buatan dengan kompleksitas yang lebih tinggi dan biaya komputasi.

Dalam kerangka permainan akan menganggap ada sejumlah besar unsur-unsur aktif, baik logika dan AI. Jadi, proses memperbarui mereka akan terdiri dari empat langkah. Pertama, memfilter untuk memilih orang-orang sebagai elemen yang relevan dengan gameplay. Seorang musuh 10 mil jauhnya dari pemain yang tidak tampak merupakan bagian yang sangat penting dari sudut pandang pemain, juga merupakan gerbang ditempatkan dalam tingkat permainan yang berbeda sama sekali. Beberapa game (seperti judul strategi real-time, misalnya) masih akan perlu menghitung perilaku semua entitas. Tapi berkali-kali tingkat-of-detail (LOD) teknik akan digunakan untuk barang-barang jauh, sehingga memiliki mereka diurutkan berdasarkan relevansi yang selalu diinginkan.

Kedua, elemen aktif harus diperbarui. Berikut perbedaan antara logis dan entitas cerdas akan dibuat secara jelas. Yang terakhir akan memerlukan proses yang lebih rumit untuk memperbarui mereka.

Umumnya, dalam kerangka permainan secara keseluruhan, sistem AI akan mengikuti proses empat langkah juga. Pertama, tujuan dan negara saat ini harus dianalisis. Untuk simulator penerbangan, ini berarti mendapatkan posisi dan pos, keadaan sistem senjata, dan berkelanjutan kerusakan untuk kedua AI-dikontrol dan pemain yang dikendalikan pesawat. Tujuan dalam hal ini adalah cukup sederhana: Menembak jatuh pemain. Kedua, pembatasan harus dirasakan. Ini melibatkan kedua pembatasan logis dan geometris untuk pemain. Untuk contoh simulator penerbangan, pembatasan utama adalah menghindari tabrakan dengan pemain dan mengawasi tanah, sehingga kita tidak menabrak bukit di dekatnya. Setelah kedua langkah, kita tahu segala sesuatu tentang kami sebagai entitas AI, negara pemain, tujuan untuk mencapai, dan pembatasan keseluruhan yang berlaku.

Kembali ke kerangka keseluruhan, langkah ketiga mensyaratkan bahwa pengambilan keputusan / rencana harus diimplementasikan secara efektif sehingga menghasilkan aturan perilaku. Pesawat akan membuat giliran, kemudian mencoba untuk menembak, dan seterusnya. Beberapa game melaksanakan rencana sesaat, yang menghitung ulang setiap frame. Ambil kasus sangat sederhana yang mengejar pemain sekitar. Untuk setiap frame, itu harus menghasilkan yang lintasan yang optimal untuk akhirnya meledakkan pemain. Sebuah simulator penerbangan mungkin membuat keputusan yang rentang beberapa detik atau bahkan menit gameplay, dan siklus AI selanjutnya fokus hanya pada memperbaiki rencana untuk beradaptasi dengan perubahan kondisi.

Keempat, kita perlu memperbarui negara dunia sesuai. Kita harus menyimpan data, seperti jika musuh bergerak, atau menghilangkannya dari struktur data jika ditembak jatuh oleh pemain. Seperti yang melihat ketika kita mempelajari AI secara detail, ini proses empat langkah memadukan luar biasa baik dengan sebagian besar permainan AI.

Dalam melengkapi kerangka logika permainan. Sebagai ringkasan dari struktur yang baru di sini adalah pseudocode untuk pendekatan:

Player update
       Sense Player input
       Compute restrictions
       Update player state
World update
       Passive elements
             Pre-select active zone for engine use
       Logic-based elements
            Sort according to relevance
            Execute control mechanism
            Update state
      AI based elements
            Sort according to relevance
            Sense internal state and goals
            Sense restrictions
            Decision engine
            Update world
End

Sumber : Terjemahan dari Core Algorithm In Game Technology

Tidak ada komentar:

Posting Komentar

LABEL

Flash Labels by Way2Blogging