Pages

Subscribe:

Pengikut

Senin, 17 Juni 2013


Game Logika



Blok makro yang pertama ini mengurus serta  menjaga simulator agar tetap berjalan di dunia. Untuk tujuan global kami kerangka kerja, kami akan membaginya menjadi tiga blok utama yaitu : memperbarui pemain, memperbarui tetris, dan memperbarui karakter non playing (NPC).

Laporan Kondisi Pemain
Sebuah permainan harus menjalankan rutinitas yang membuat snapshot terbaru dari negara pemain. Sebagai langkah pertama dalam rutin, permintaan interaksi oleh pemain harus diperiksa. Hal ini dicapai secara berbeda bagi banyak mengontrol mekanisme seperti joystick, keyboard, dan mouse. Tapi hasil akhirnya adalah sama-serangkaian nomor yang dapat dimengerti oleh kode permainan yang menunjukkan keadaan dari kontrol pemain. Ini adalah baik Ide untuk menggunakan kontroler perangkat abstrak sehingga kode permainan tidak benar-benar berinteraksi dengan fisik kontroler. Sebuah device controller abstrak menangani joystick dan keyboard tetapi menggunakan antarmuka umum sehingga aplikasi yang memanggil tidak perlu. Kita akan berbicara tentang pengolahan input dan perangkat abstraksi

 "User Input."

Kami  tidak akan langsung memetakan keputusan kontrol untuk tindakan pemain karena ada beberapa item yang dapat membatasi rentang tindakan pemain. Dia mungkin menunjukkan bahwa ia ingin bergerak maju, tapi dinding mungkin menghalangi jalannya. Jadi, rutinitas kedua harus dirancang yang menerapkan pembatasan interaksi pemain. Pembatasan ini bisa geometris di alam, seperti dalam contoh sebelumnya, atau lebih kompleks, logika berbasis kombinasi. Misalnya, pemain dapat menekan tombol "pintu terbuka" kontrol tetapi karena dia tidak memegang kunci yang tepat, pintu tidak akan terbuka. Ingat bahwa kita berbicara tentang prinsip-prinsip umum di sini, yang akan berlaku untuk setiap permainan yang Anda butuhkan untuk kode. Dengan demikian, kita akan menjuluki rutin ini "pemain pembatasan "handler. Sebuah bagian penting dari rutinitas ini akan dikhususkan untuk deteksi tabrakan, yang dibahas dalam Bab 21, "Teknik Prosedural."

Setelah kami telah merasakan controller pemain dan diperiksa untuk pembatasan, update rutin kecil harus diimplementasikan sehingga pemain melihat hasil dari interaksi mereka, dan permainan negara adalah menghitung ulang. Mari kita lihat dua contoh untuk lebih memahami internal dari tiga komponen. Bayangkan sebuah game seperti Nintendo klasik The Legend of Zelda. Tiga rutinitas disebutkan sebelumnya akan memiliki tanggung jawab berikut:

1.      "Pemain masukan" modul secara efektif 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 aktif juga "harus diterjemahkan ke dalam" permintaan untuk memindahkan karakter kiri saat menggunakan senjata yang sedang aktif. "

2.       "Pembatasan pemain" rutin akan mengakses struktur dunia permainan karena kita perlu tahu tingkat mana pemain dalam dan apa yang mengelilingi dia. Dengan cara ini kita dapat menghitung baik pembatasan geometris, juga dikenal sebagai tabrakan, dan pembatasan logis, yang pada dasarnya kesepakatan dengan negara-negara pemain harus dalam untuk dapat melakukan interaksi tertentu. Ini rutin kedua biasanya paling sulit dari tiga, terutama karena kompleksitas permainan meningkat.

3.      "Pemain update" rutin akan memetakan pembatasan interaksi dan menghasilkan hak tanggapan tingkat dunia. Jika pemain itu menekan kiri dan tidak ada halangan ke arah itu, kita harus memicu animasi bergerak dan memperbarui posisinya, dan sebagainya.

Beberapa game, seperti Tetris, tidak memiliki avatar layar jelas, tapi masih aturan ini berlaku. Sebagai aturan praktis, pertimbangkan karakter pada layar Anda sebagai sesuatu yang Anda dapat berinteraksi dengan menekan kontrol. Di Tetris, jelas, yang mengacu pada batu bata jatuh dari atas layar. Mereka bukan karakter dalam arti ketat dari kata, tetapi prinsipnya sama. Kami akan memeriksa masukan pemain di tahap pertama, dalam tahap kedua, kita akan menguji pembatasan bata, dan kemudian kita akan mengeksekusi pembaruan pemain untuk permainan negara saat ini. Pembatasan sangat mudah untuk menentukan: Bricks 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. Di segmen pembaruan pemain, kita hanya memindahkan atau memutar batu bata sesuai dengan input dan pemain menambahkan perilaku default untuk persamaan, yaitu bahwa batu bata terus jatuh terlepas dari apa yang pemain tidak. Ini semacam menganggur, perilaku noninteractive sangat umum dalam permainan di mana Anda ingin menerapkan rasa urgensi dan kecepatan. Beberapa arcade membatasi waktu permainan Anda (kecuali jika Anda menemukan istimewa "Bermain diperpanjang" token), yang pada dasarnya adalah formula yang sama dalam konteks yang berbeda.

Dunia Pembaruan

Gagasan tentang dunia permainan hidup yang menampilkan perilaku aktif telah hadir sejak pertama game, seperti Pong dan Space Invaders. Selain tindakan pemain, dunia terus sendiri agenda, menunjukkan aktivitas yang umumnya apa yang pengguna 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 ini sangat penting dan, dalam permainan modern, kompleks. Untuk mulai dengan, perbedaan 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 dunia game besar, dunia pembaruan rutinitas preselect subbagian dari dunia game, sehingga pemain

Bagian pembatasan dapat fokus pada elemen-elemen, dan dengan demikian menjadi lebih efisien. Pikirkan sesuatu seperti grafis petualangan. Entah bagaimana, kita harus menyimpan pointer ke ruang pemain dalam, jadi kami memeriksa colliders di ruangan itu saja.

Tapi sebagian besar waktu di bagian update dunia dihabiskan memeriksa jenis lain dari entitas, orang-orang yang memiliki perilaku yang tertanam. Dari unsur-unsur dekoratif seperti burung-burung terbang ke musuh atau pintu yang terbuka dan dekat, ini adalah item yang harus diperiksa untuk menjaga konsisten, pengalaman bermain bermakna.

Beberapa game akan membagi elemen aktif menjadi sederhana logis item-seperti pintu, elevator, atau memindahkan platform dan musuh yang nyata dengan perilaku khas. Berikut diferensiasi 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 generik kami, kami akan menganggap ada sejumlah besar unsur-unsur aktif, baik logika dan AI. Jadi, proses memperbarui mereka akan terdiri dari empat langkah. Pertama, filter akan memilih orang-orang elemen yang relevan dengan gameplay. Seorang musuh 10 mil jauhnya dari pemain tidak tampak seperti barang yang sangat penting dari sudut pandang pemain, juga merupakan gerbang ditempatkan dalam tingkat permainan yang berbeda sama sekali.
Filter ini tidak harus mengesampingkan apa pun. 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 selalu diinginkan.

Kedua, keadaan elemen aktif harus diperbarui. Berikut perbedaan antara logis dan entitas cerdas akan dibuat jelas. Yang terakhir akan memerlukan proses yang lebih rumit untuk memperbarui mereka negara.
Umumnya, dalam kerangka permainan secara keseluruhan, sistem AI akan mengikuti proses empat langkah juga. Pertama, tujuan

http://www.tar.hu/gamealgorithms/ch02lev1sec2.html (2 dari 3) 2/9/2009 05:46:16
http://www.tar.hu/gamealgorithms/ch02lev1sec2.html

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 merasakan. Ini melibatkan kedua pembatasan logis dan geometris kita sudah merasakan untuk pemain. Untuk kami simulator penerbangan contoh, 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 negara sebagai entitas AI, negara pemain, tujuan untuk mencapai, dan pembatasan keseluruhan yang berlaku. Kembali ke kerangka keseluruhan, langkah ketiga mensyaratkan bahwa mesin pengambilan keputusan / rencana harus diimplementasikan secara efektif 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 tambang bergerak yang mengejar pemain sekitar. Untuk setiap frame, itu harus menghasilkan yang optimal lintasan untuk akhirnya meledakkan pemain up. Tapi kebanyakan rutinitas rencana pembuatan menghasilkan taktik yang bertahan selama banyak siklus jam. 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 Anda akan melihat ketika kita mempelajari AI secara detail, ini proses empat langkah memadukan luar biasa baik dengan sebagian besar permainan AI.

Yang melengkapi kerangka logika permainan. Sebagai ringkasan dari struktur yang baru saja terkena, 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


Referensi : Core Algorithm In GameTechnology

Tidak ada komentar:

Posting Komentar