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